private static int BinOneGenomicInterval(CanvasBinParameters parameters,
Dictionary<string, BitArray> possibleAlignments,
Dictionary<string, HitArray> observedAlignments,
Dictionary<string, Int16[]> fragmentLengths)
{
InitializeAlignmentArrays(parameters.referenceFile, parameters.chromosome, parameters.coverageMode, possibleAlignments, observedAlignments, fragmentLengths);
Console.WriteLine("{0} Initialized alignment arrays", DateTime.Now);
LoadObservedAlignmentsBAM(parameters.bamFile, parameters.isPairedEnd, parameters.chromosome, parameters.coverageMode, observedAlignments[parameters.chromosome], fragmentLengths[parameters.chromosome]);
Console.WriteLine("{0} Loaded observed alignments", DateTime.Now);
// Filter on BED file.
if (parameters.filterFile != null)
ExcludeTagsOverlappingFilterFile(parameters.filterFile, possibleAlignments);
// Make sure we don't have an 'impossible' observed alignment.
ScreenObservedTags(observedAlignments, possibleAlignments);
Console.WriteLine("{0} Serialize intermediate data", DateTime.Now);
//output binary intermediate file
IntermediateData data = new IntermediateData(possibleAlignments, observedAlignments, fragmentLengths, parameters.coverageMode);
Directory.CreateDirectory(Path.GetDirectoryName(parameters.outFile));
using (FileStream stream = new FileStream(parameters.outFile, FileMode.Create, FileAccess.Write))
{
ProtoBuf.Serializer.Serialize<IntermediateData>(stream, data);
}
Console.WriteLine("{0} Intermediate data serialized", DateTime.Now);
return 0;
}