public void InitializePloidies()
{
Console.WriteLine("{0} Initialize ploidy models...", DateTime.Now);
this.AllPloidies = new List<SegmentPloidy>();
double diploidPredictedMAF = CanvasCommon.Utilities.EstimateDiploidMAF(2, this.MeanCoverage);
for (int copyNumber = 0; copyNumber <= MaximumCopyNumber; copyNumber++)
{
for (int majorCount = copyNumber; majorCount * 2 >= copyNumber; majorCount--)
{
SegmentPloidy ploidy = new SegmentPloidy();
ploidy.CopyNumber = copyNumber;
ploidy.MajorChromosomeCount = majorCount;
ploidy.ID = AllPloidies.Count;
AllPloidies.Add(ploidy);
if (copyNumber == 0)
{
ploidy.MinorAlleleFrequency = 0.01; // should reflect sequencing error rate
continue;
}
float VF = majorCount / (float)copyNumber;
ploidy.MinorAlleleFrequency = (VF < 0.5 ? VF : 1 - VF);
if (majorCount * 2 == copyNumber)
{
ploidy.MinorAlleleFrequency = CanvasCommon.Utilities.EstimateDiploidMAF(copyNumber, this.MeanCoverage);
}
}
}
Console.WriteLine("{0} Ploidy models prepared.", DateTime.Now);
}