/// <summary>
        /// Junctions the name.
        /// </summary>
        /// <returns>The name.</returns>
        /// <param name="exon1">Exon1.</param>
        /// <param name="exon2">Exon2.</param>
        public static string JunctionName(Location exon1, Location exon2)
        {
            if (exon1.Chromosome != exon2.Chromosome || exon1.Strand != exon2.Strand)
            {
                throw new Exception("Junction crossing chromosomes or strands requested");
            }

            if (exon1.Overlaps(exon2) || exon2.Overlaps(exon1))
            {
                throw new Exception("Overlapping exons");
            }

            if (exon1.Start > exon2.Start)
            {
                var v = exon1;
                exon1 = exon2;
                exon2 = v;
            }

            //if (exon1.Strand == "-")
            //{
            //    return string.Format("{0}:{1}:{2}:{3}", exon1.Chromosome, exon2.End, exon1.Start, exon1.Strand);
            //}
            //else
            //{
            return(JunctionName(exon1.Chromosome, Math.Max(exon1.Start, exon1.End), Math.Min(exon2.Start, exon2.End) - 1, exon1.Strand));
        }
예제 #2
0
 public static bool Overlaps(Location l1, Location l2)
 {
     return(l1.Overlaps(l2));
 }