SAMWriter

Encapsulates a SAM/BAM/CRAM, but as write-only

Constructors

this
this(T f, SAMHeader header, SAMWriterTypes t, int extra_threads)

Create a representation of SAM/BAM/CRAM file from given filename or File

Postblit

this(this)
this(this)

disallow copying

Members

Functions

write
void write(SAMRecord rec)

Write a SAMRecord to disk

Variables

filename
string filename;

filename; as usable from D

header
SAMHeader header;

header struct

Examples

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);

Meta