requirements:
  expression:
  - ((exon_num.multi and (cdna_length.multi or selected_cds_length.multi)
  - and
  - max_intron_length and min_intron_length and proportion_verified_introns_inlocus)
  - or
  - (exon_num.mono and ((snowy_blast_score and selected_cds_length.zero) or selected_cds_length.mono)))
  parameters:
    snowy_blast_score: {operator: gt, value: 0} # 0.2
    selected_cds_length.mono: {operator: gt, value: 300} # 600
    selected_cds_length.zero: {operator: gt, value: 0}
    cdna_length.multi: {operator: ge, value: 400}
    selected_cds_length.multi: {operator: gt, value: 200}
    exon_num.mono: {operator: eq, value: 1}
    exon_num.multi: {operator: gt, value: 1}
    max_intron_length: {operator: le, value: 150000}
    min_intron_length: {operator: ge, value: 20}
    proportion_verified_introns_inlocus: {operator: gt, value: 0}
as_requirements:
  expression: [cdna_length and three_utr_length and five_utr_length and utr_length and suspicious_splicing]
  parameters:
    cdna_length: {operator: ge, value: 200}
    utr_length: {operator: le, value: 2500}
    five_utr_length: {operator: le, value: 2500}
    three_utr_length: {operator: le, value: 2500}
    suspicious_splicing: {operator: ne, value: true}
not_fragmentary:
 expression: [((exon_num.multi and (cdna_length.multi or selected_cds_length.multi)), or, (exon_num.mono and ((snowy_blast_score and selected_cds_length.zero)  or selected_cds_length.mono)))]
 parameters:
   selected_cds_length.zero: {operator: gt, value: 300} # 600
   exon_num.multi: {operator: gt, value: 2}
   cdna_length.multi: {operator: ge, value: 300}
   selected_cds_length.multi: {operator: gt, value: 250}
   exon_num.mono: {operator: eq, value: 1}
   snowy_blast_score: {operator: gt, value: 0}  # 0.3
   selected_cds_length.mono: {operator: gt, value: 600} # 900
   exon_num.mono: {operator: le, value: 2}
scoring:
  snowy_blast_score: {rescaling: max}
  cdna_length: {rescaling: max}
  cds_not_maximal: {rescaling: min}
  cds_not_maximal_fraction: {rescaling: min}
  # exon_fraction: {rescaling: max}
  exon_num: {
    rescaling: max,
    filter: {
    operator: ge,
    value: 3}
  }
  five_utr_length:
    filter: {operator: le, value: 2500}
    rescaling: target
    value: 100
  five_utr_num:
    filter: {operator: lt, value: 4}
    rescaling: target
    value: 2
  end_distance_from_junction:
    filter: {operator: lt, value: 55}
    rescaling: min
  highest_cds_exon_number: {rescaling: max}
  intron_fraction: {rescaling: max}
  is_complete: {rescaling: target, value: true}
  # num_introns_smaller_than_min: {rescaling: target, value: 0}
  # num_introns_greater_than_max: {rescaling: target, value: 0}
  number_internal_orfs: {rescaling: target, value: 1}
  # proportion_verified_introns: {rescaling: max}
  proportion_verified_introns_inlocus: {rescaling: max}
  retained_fraction: {rescaling: min}
  retained_intron_num: {rescaling: min}
  selected_cds_fraction: {rescaling: target, value: 0.85}
  selected_cds_intron_fraction: {rescaling: max}
  selected_cds_length: {rescaling: max}
  selected_cds_num: {rescaling: max}
  three_utr_length:
    filter: {operator: le, value: 2500}
    rescaling: target
    value: 200
  three_utr_num:
    filter: {operator: lt, value: 3}
    rescaling: target
    value: 1
  combined_cds_locus_fraction: {rescaling: max}
