Skip to content

NickRoz1/cBAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 

Repository files navigation

cBAM

Tools for writing/reading cBAM files.

Usage

Writer

import source.writer;

auto bamReader = BamReadBlobStream(".../file.bam"); 
File file = File(".../file.cbam", "w");
auto fileWriter = new FileWriter(file, bamReader.header);

while(!bamReader.empty()){
        // Add record in writing buffer
        fileWriter.addRecord(bamReader.front());
        bamReader.popFront();
}
fileWriter.addRecord(bamReader.front());

fileWriter.close();

Reader

import std.stdio;
import source.reader;

File file = File(".../file.cbam", "r");
auto fileReader = new FileReader(file);

// Choose desired field using bamFields enum
auto bamField = FileReader.bamFields.flag;
// Get corresponding column
auto flagColumn = FileReader.getColumn(bamField);
auto dupFlag = 0x400;
bool noDups = true;

// Iterate through column
foreach(flag; flagColumn){
    if(flag & dupFlag){
        noDups = false;
        break;
    }
}

short[] flagStorage;
flagStorage.length = flagColumn.size;

// Iterate through column with index
foreach(i, flag; flagColumn){
    flagStorage[i++] = flag;
}

// Get whole column
auto checkStorage = flagColumn.fullColumn();

assert(equal(flagStorage, checkStorage));

// Choose desired row group number
auto groupNumber = 1;
RawReadBlob[] rowGroup;

// Get rowgroup
rowGroup = fileReader.readRowGroup(groupNumber);

fileReader.close();

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages