1. A method of identifying an isoform, the method comprising: obtaining from an annotated transcriptome database, using a computer system comprising a processor coupled to a non-transitory memory, a plurality of exons and introns from a genome; using the processor to transform each of the plurality of exons and introns from the annotated transcriptome database into a node; using the processor to create, for each pair of the plurality of exons and introns, an edge connecting the two members of the pair by their proximal ends, thereby transforming the plurality of exons and introns from the annotated transcriptome database into a directed acyclic data structure representing substantially all possible splice variants of the plurality of exons and introns wherein each and every pair of nodes is directly connected by at least one edge with no intervening nodes between that pair of nodes along that edge, wherein the directed acyclic data structure contains at least one pair of nodes connected by an edge that is not supported by evidence from the annotated transcriptome database; storing the nodes and the edges as the directed acyclic data structure in the memory; obtaining a plurality of sequence reads generated by sequencing a transcriptome of an organism; and using the processor to align the plurality of sequence reads from the transcriptome to a path comprising a subset of the exons and introns connected by a subset of the edges, thereby identifying an isoform corresponding to the path as an isoform from the transcriptome of the organism.