Create a representation of SAM/BAM/CRAM file from given filename or File
disallow copying
Write a SAMRecord to disk
import dhtslib.sam; import htslib.hts_log : hts_log_info; import std.path : buildPath,dirName; import std.string : fromStringz; import std.array : array; hts_set_log_level(htsLogLevel.HTS_LOG_TRACE); hts_log_info(__FUNCTION__, "Testing SAMWriter"); hts_log_info(__FUNCTION__, "Loading test file"); auto sam = SAMFile(buildPath(dirName(dirName(dirName(dirName(__FILE__)))),"htslib","test","auxf#values.sam"), 0); auto sam2 = SAMWriter("/tmp/test.bam",sam.header); auto sam3 = SAMWriter("/tmp/test2.bam",sam.header, SAMWriterTypes.DEDUCE, 4); auto sam4 = SAMWriter("/tmp/test3.bam",sam.header, SAMWriterTypes.DEDUCE, 0); hts_log_info(__FUNCTION__, "Getting read 1"); auto readrange = sam.allRecords; assert(readrange.empty == false); auto read = readrange.front(); sam2.write(read); sam3.write(read); sam4.write(read); destroy(sam2); destroy(sam3); destroy(sam4); auto sam5 = SAMFile("/tmp/test.bam"); auto sam6 = SAMFile("/tmp/test2.bam"); auto sam7 = SAMFile("/tmp/test3.bam"); assert(sam5.allRecords.array.length == 1); assert(sam5.allRecords.array.length == sam6.allRecords.array.length); assert(sam5.allRecords.array.length == sam7.allRecords.array.length); assert(sam7.allRecords.array.length == sam6.allRecords.array.length);
Encapsulates a SAM/BAM/CRAM, but as write-only