Bio.IO.BAM.BAMFormatter.WriteUncompressedSortedBAM C# (CSharp) Method

WriteUncompressedSortedBAM() private method

Writes specified sequence alignment to stream according to the specified sorted order. The output is formatted according to the BAM structure.
private WriteUncompressedSortedBAM ( Bio.IO.SAM.SequenceAlignmentMap sequenceAlignmentMap, Stream writer ) : void
sequenceAlignmentMap Bio.IO.SAM.SequenceAlignmentMap SequenceAlignmentMap object.
writer Stream Stream to write.
return void
        private void WriteUncompressedSortedBAM(SequenceAlignmentMap sequenceAlignmentMap, Stream writer)
        {
            if (SortType != BAMSortByFields.ReadNames)
            {
                List<IGrouping<string, SAMAlignedSequence>> groups =
                    sequenceAlignmentMap.QuerySequences.GroupBy(Q => Q.RName).OrderBy(G => G.Key).ToList();

                foreach (SequenceRange range in this.refSequences)
                {
                    IGrouping<string, SAMAlignedSequence> group = groups.FirstOrDefault(G => G.Key.Equals(range.ID));
                    if (group == null)
                    {
                        continue;
                    }

                    // sort aligned sequence on left co-ordinate.
                    List<SAMAlignedSequence> alignedSeqs = group.OrderBy(A => A.Pos).ToList();

                    foreach (SAMAlignedSequence alignedSeq in alignedSeqs)
                    {
                        ValidateSQHeader(alignedSeq.RName);
                        WriteAlignedSequence(alignedSeq, writer);
                        writer.Flush();
                    }
                }
            }
            else
            {
                List<SAMAlignedSequence> alignedSeqs =
                        sequenceAlignmentMap.QuerySequences.OrderBy(Q => Q.QName).ToList();

                foreach (SAMAlignedSequence alignedSeq in alignedSeqs)
                {
                    ValidateSQHeader(alignedSeq.RName);
                    WriteAlignedSequence(alignedSeq, writer);
                    writer.Flush();
                }
            }
        }