%{ #include "gwlitemodel.h" #include "geneparser4.h" #include "genewisemodeldb.h" %} type GWLITE real GwLiteScore* dbtype GeneWiseDB* init init_GwLite_GeneWiseDB reload reload_GwLite_GeneWiseDB close close_GwLite_GeneWiseDB addentry dataentry_add_GwLite_GeneWiseDB hardlink hard_link_GwLiteScore free free_GwLiteScore threadsafe endtype matrix GeneLiteModel query type="GWLITE" name="query" field:len="len" target type="GENOMIC" name="target" resource type="GeneParser4Score *" name="gp" extern name="GW_*" type="int" extern name="GP4_*" type="int" state MATCH offi="1" offj="3" source MATCH calc="query->seg[i]->transition[GW_MATCH2MATCH] + query->seg[i]->match[GENOMIC_CODON(target,j)]" endsource source INSERT calc="query->seg[i]->transition[GW_INSERT2MATCH] + query->seg[i]->match[GENOMIC_CODON(target,j)]" endsource source DELETE calc="query->seg[i]->transition[GW_DELETE2MATCH] + query->seg[i]->match[GENOMIC_CODON(target,j)]" endsource source START calc="query->seg[i]->transition[GW_START2MATCH] + query->seg[i]->match[GENOMIC_CODON(target,j)]" endsource # # phase 0,1,2 introns can calculate whole amino acid for 0. # source INTRON_0 offi="1" offj="3" calc="query->seg[i]->transition[GW_MATCH2MATCH] + gp->transition[GP4_INTRON2CDS] +GENOMIC_3SS(target,j-3)" target_label 3SS_PHASE_0 endsource source INTRON_1 offi="1" offj="2" calc="query->seg[i]->transition[GW_MATCH2MATCH] + gp->transition[GP4_INTRON2CDS] + GENOMIC_3SS(target,j-2)" target_label 3SS_PHASE_1 endsource source INTRON_2 offi="1" offj="1" calc="query->seg[i]->transition[GW_MATCH2MATCH] + gp->transition[GP4_INTRON2CDS] + GENOMIC_3SS(target,j-1)" target_label 3SS_PHASE_2 endsource # # Sequencing error transitions, at offsets 1,2,4,5 for delete 1,2 or insert 1,2 # source MATCH offi="1" offj="2" calc="gp->transition[GP4_DELETE_1_BASE]" target_label SEQUENCE_DELETION endsource source MATCH offi="1" offj="1" calc="gp->transition[GP4_DELETE_1_BASE]" target_label SEQUENCE_DELETION endsource query_label MATCH_STATE target_label CODON endstate # # Insert state: does not move along model, produces DNA sequence... # state INSERT offi="0" offj="3" source MATCH calc="query->seg[i]->transition[GW_MATCH2INSERT] + query->seg[i]->insert[GENOMIC_CODON(target,j)]" endsource source INSERT calc="query->seg[i]->transition[GW_INSERT2INSERT] + query->seg[i]->insert[GENOMIC_CODON(target,j)]" endsource source START calc="query->seg[i]->transition[GW_START2INSERT] + query->seg[i]->insert[GENOMIC_CODON(target,j)]" endsource # # phase 0,1,2 introns can calculate whole amino acid for 0. # source INTRON_0 offi="0" offj="3" calc="query->seg[i]->transition[GW_INSERT2INSERT] + gp->transition[GP4_INTRON2CDS] + query->seg[i]->match[GENOMIC_CODON(target,j)]+GENOMIC_3SS(target,j-3)" target_label 3SS_PHASE_0 endsource source INTRON_1 offi="0" offj="2" calc="query->seg[i]->transition[GW_INSERT2INSERT] + gp->transition[GP4_INTRON2CDS] + GENOMIC_3SS(target,j-2)" target_label 3SS_PHASE_1 endsource source INTRON_2 offi="0" offj="1" calc="query->seg[i]->transition[GW_INSERT2INSERT] + gp->transition[GP4_INTRON2CDS] + GENOMIC_3SS(target,j-1)" target_label 3SS_PHASE_2 endsource # # Sequencing error transitions: because insertions are "for free" usually, we will # only model sequence deletion here. Could produce odd results though! # source INSERT offi="0" offj="2" calc="gp->transition[GP4_DELETE_1_BASE]" target_label SEQUENCE_DELETION endsource source INSERT offi="0" offj="1" calc="gp->transition[GP4_DELETE_1_BASE]" target_label SEQUENCE_DELETION endsource query_label INSERT_STATE target_label CODON endstate state DELETE offi="1" offj="0" source MATCH calc="query->seg[i]->transition[GW_MATCH2DELETE]" endsource source DELETE calc="query->seg[i]->transition[GW_DELETE2DELETE]" endsource source START calc="query->seg[i]->transition[GW_START2DELETE]" endsource query_label DELETE_STATE target_label INSERT endstate # # Intron state: 3 separate phases, and merge INSERT/MATCH information # state INTRON_0 offi="0" offj="1" source MATCH offj="1" calc="gp->intron[GENOMIC_BASE(target,j)]+GENOMIC_5SS(target,j)" target_label 5SS_PHASE_0 endsource source INSERT offj="1" calc="gp->intron[GENOMIC_BASE(target,j)]+GENOMIC_5SS(target,j)" target_label 5SS_PHASE_0 endsource source INTRON_0 offj="1" calc="gp->intron[GENOMIC_BASE(target,j)] + gp->transition[GP4_INTRON2INTRON]" target_label CENTRAL_INTRON endsource query_label INTRON_STATE endstate state INTRON_1 offi="0" offj="1" source MATCH offj="2" offi="0" calc="gp->intron[GENOMIC_BASE(target,j)]+GENOMIC_5SS(target,j)" target_label 5SS_PHASE_1 endsource source INSERT offj="2" offi="0" calc="gp->intron[GENOMIC_BASE(target,j)]+GENOMIC_5SS(target,j)" target_label 5SS_PHASE_1 endsource source INTRON_1 offj="1" calc="gp->intron[GENOMIC_BASE(target,j)] + gp->transition[GP4_INTRON2INTRON]" target_label CENTRAL_INTRON endsource query_label INTRON_STATE endstate state INTRON_2 offi="0" offj="1" source MATCH offj="3" offi="0" calc="gp->intron[GENOMIC_BASE(target,j)]+GENOMIC_5SS(target,j)" target_label 5SS_PHASE_2 endsource source INSERT offj="3" offi="0" calc="gp->intron[GENOMIC_BASE(target,j)]+GENOMIC_5SS(target,j)" target_label 5SS_PHASE_2 endsource source INTRON_2 offj="1" calc="gp->intron[GENOMIC_BASE(target,j)] + gp->transition[GP4_INTRON2INTRON]" target_label CENTRAL_INTRON endsource query_label INTRON_STATE endstate state START !start !special endstate state END !end !special source MATCH calc="query->seg[i]->transition[GW_MATCH2END]" endsource source INSERT calc="query->seg[i]->transition[GW_INSERT2END]" endsource source DELETE calc="query->seg[i]->transition[GW_DELETE2END]" endsource target_label END query_label END endstate # # collapse Intron labels! # collapse INTRON_STATE CENTRAL_INTRON endmatrix