Exemplo n.º 1
0
 public BamReaderContainer(Stream inStream, string filename)
 {
     _bamReader = new BamReader();
     _bamReader.Open(inStream);
     _filename                   = filename;
     _currentBamAlignment        = new BamAlignment();
     _currentSerializedAlignment = new SerializedBamAlignment();
     MoveToNextRecord();
 }
Exemplo n.º 2
0
            public void write(BamWriter writer,
                              int index)
            {
                SerializedBamAlignment alignment = _bamAlignmentList[index];

                byte[] byteArray   = null;
                int    smallOffset = 0;

                _serializedAlignments.GetByteArrayAndOffset(alignment.SerializedOffset, ref byteArray, ref smallOffset);
                writer.Write(byteArray, (uint)alignment.SerializedSize, smallOffset);
            }
Exemplo n.º 3
0
            public override bool Equals(Object obj)
            {
                // Check for null values and compare run-time types.
                if (obj == null || GetType() != obj.GetType())
                {
                    return(false);
                }

                SerializedBamAlignment other = (SerializedBamAlignment)obj;

                return(this == other);
            }
Exemplo n.º 4
0
            // Avoid string allocations by iterating over the internal byte array.
            public static int CompareNames(SerializedBamAlignment alignment1,
                                           SerializedBamAlignment alignment2,
                                           SerializedAlignmentContainer alignmentContainer1,
                                           SerializedAlignmentContainer alignmentContainer2)
            {
                byte[] byteArray1 = null;
                int    offset1    = 0;

                alignmentContainer1._serializedAlignments.GetByteArrayAndOffset(
                    alignment1.SerializedOffset,
                    ref byteArray1,
                    ref offset1);

                byte[] byteArray2 = null;
                int    offset2    = 0;

                alignmentContainer2._serializedAlignments.GetByteArrayAndOffset(
                    alignment2.SerializedOffset,
                    ref byteArray2,
                    ref offset2);

                // The name starts at the 36th byte
                UInt32 alignmentNamePos = 36;

                offset1 += (int)alignmentNamePos;
                offset2 += (int)alignmentNamePos;

                int initOffset1 = offset1;

                while (byteArray1[offset1] != '\0' && byteArray1[offset1] == byteArray2[offset2])
                {
                    ++offset1;
                    ++offset2;
                }

                if (byteArray1[offset1] < byteArray2[offset2])
                {
                    return(-1);
                }

                if (byteArray1[offset1] > byteArray2[offset2])
                {
                    return(1);
                }

                return(0);
            }