public BamReaderContainer(Stream inStream, string filename) { _bamReader = new BamReader(); _bamReader.Open(inStream); _filename = filename; _currentBamAlignment = new BamAlignment(); _currentSerializedAlignment = new SerializedBamAlignment(); MoveToNextRecord(); }
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); }
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); }
// 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); }