/// <summary> /// Creates UTRs for transcripts and intergenic regions after reading gene model /// </summary> public void CreateIntergenicRegions() { foreach (IntervalTree it in GenomeForest.Forest.Values) { Gene previousPositiveStrandGene = null; Gene previousNegativeStrandGene = null; // Create intergenic regions on each strand foreach (Gene gene in it.Intervals.OfType <Gene>().OrderBy(g => g.OneBasedStart)) { Intergenic intergenic = null; Gene previous = gene.IsStrandPlus() ? previousPositiveStrandGene : previousNegativeStrandGene; if (previous != null) { // if there's a previous gene, create the intergenic region intergenic = new Intergenic(gene.Chromosome, gene.ChromosomeID, gene.Source, gene.Strand, previous.OneBasedEnd + 1, gene.OneBasedStart - 1, null); } // store previous genes on each strand if (gene.IsStrandPlus()) { previousPositiveStrandGene = gene; } if (gene.IsStrandMinus()) { previousNegativeStrandGene = gene; } // add the intergenic region to the genome forest if it was created if (intergenic != null && intergenic.Length() > 0) { GenomeForest.Add(intergenic); } } } }
public Intergenic(Intergenic intergenic) : base(intergenic) { }