public double GetKnownClonalityForSegment(CanvasSegment segment)
{
// Handle switched chromosome naming convention transparently:
string chr = segment.Chr;
if (!this.KnownCN.ContainsKey(segment.Chr))
{
chr = segment.Chr.Replace("chr", "");
if (!this.KnownCN.ContainsKey(chr))
{
chr = "chr" + segment.Chr;
if (!this.KnownCN.ContainsKey(chr)) return -1;
}
}
double Clonality = -1;
foreach (CNInterval interval in this.KnownCN[chr])
{
if (interval.End < segment.Begin) continue;
if (interval.Start > segment.End) continue;
int start = Math.Max(segment.Begin, interval.Start);
int end = Math.Min(segment.End, interval.End);
if ((end - start) * 2 >= (segment.End - segment.Begin))
{
Clonality = interval.Heterogeneity;
break;
}
}
return Clonality;
}