/// <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)); }
public static bool Overlaps(Location l1, Location l2) { return(l1.Overlaps(l2)); }