public static int FindBestBin(List<GenomicBin> bins, int binIndexStart, int fragmentStart, int fragmentStop)
{
int bestBinIndex = -1;
int bestOverlap = 0;
for (int binIndex = binIndexStart; binIndex < bins.Count; binIndex++)
{
int overlapStart = Math.Max(bins[binIndex].Start, fragmentStart);
int overlapStop = Math.Min(bins[binIndex].Stop, fragmentStop);
int overlap = overlapStop - overlapStart;
if (overlap <= 0) { break; }
if (overlap > bestOverlap)
{
bestOverlap = overlap;
bestBinIndex = binIndex;
}
}
return bestBinIndex;
}