How does the algorithm work?
The program begins by doing quite a bit of postprocessing on the genomic alignments. They are clustered, and each piece is assigned a frame using a recursive frame-scoring function that considers the Grail coding score for each potential frame, the frames of Grail exons that match the alignment pieces, and splicability among the various pieces. The program then uses an elaborate dynamic programming algorithm to build gene models. Each node in the dynamic programming is a Grail exon candidate or an alignment-based exon. Connections between the various nodes are scored, with bonuses for “good” connections and penalties for “bad” connections. Once the maximally scoring dynamic programming model has been calculated, the program takes the preliminary genes and does some further calculations on them. It can join or break genes at this point, as well as manipulate the exon edges to better match splice sites. Alternative splices are then located and added to the gene table. Finally, the progra