bool BamRecord::initFromFile(BamFileReader *bamFileReader) { setFileIdx(bamFileReader->getFileIdx()); _bamAlignment = bamFileReader->getAlignment(); bamFileReader->getChrName(_chrName); _bamChromId = bamFileReader->getCurrChromdId(); _startPos = bamFileReader->getStartPos(); int2str(_startPos, _startPosStr); _endPos = bamFileReader->getEndPos(); int2str(_endPos, _endPosStr); bamFileReader->getName(_name); bamFileReader->getScore(_score); char strandChar = bamFileReader->getStrand(); setStrand(strandChar); _isUnmapped = !bamFileReader->getAlignment().IsMapped(); _isMateUnmapped = !bamFileReader->getAlignment().IsMateMapped(); // Get the cigar data into a string. buildCigarStr(); bamFileReader->getMateChrName(_mateChrName); int2str(_bamAlignment.MatePosition, _matePos); int2str(_bamAlignment.InsertSize, _insertSize); _queryBases = _bamAlignment.QueryBases; _qualities = _bamAlignment.Qualities; return true; }
bool VcfRecord::initFromFile(SingleLineDelimTextFileReader *fileReader) { setFileIdx(fileReader->getFileIdx()); fileReader->getField(0, _chrName); _chrId = fileReader->getCurrChromdId(); fileReader->getField(1, _startPosStr); _startPos = str2chrPos(_startPosStr); _startPos--; // VCF is one-based. Here we intentionally don't decrement the string version, //because we'll still want to output the one-based number in the print methods, even though //internally we decrement the integer to comply with the 0-based format common to other records. fileReader->getField(4, _varAlt); fileReader->getField(3, _varRef); if (_varAlt[0] == '<') { //this is a structural variant. Need to parse the tags to find the endpos. _endPos = _startPos + fileReader->getVcfSVlen(); } else { //endPos is just the startPos plus the length of the variant _endPos = _startPos + _varRef.size(); } int2str(_endPos, _endPosStr); fileReader->getField(2, _name); fileReader->getField(5, _score); return initOtherFieldsFromFile(fileReader); }
bool GffRecord::initFromFile(SingleLineDelimTextFileReader *fileReader) { setFileIdx(fileReader->getFileIdx()); fileReader->getField(0, _chrName); fileReader->getField(3, _startPosStr); _startPos = str2chrPos(_startPosStr); _startPos--; // VCF is one-based. Here we intentionally don't decrement the string version, //because we'll still want to output the one-based number in the print methods, even though //internally we decrement the integer to comply with the 0-based format common to other records. fileReader->getField(4, _endPosStr); //endPos is just the startPos plus the length of the variant _endPos = str2chrPos(_endPosStr); fileReader->getField(2, _name); fileReader->getField(1, _source); fileReader->getField(5, _score); //GFF allows a '.' for the strandChar, signifying it is not known. fileReader->getField(6, _strand); adjustStrandVal(); fileReader->getField(7, _frame); _numFields = fileReader->getNumFields(); if (_numFields == 9) { fileReader->getField(8, _group); } return true; }
bool Bed3Interval::initFromFile(SingleLineDelimTextFileReader *fileReader) { setFileIdx(fileReader->getFileIdx()); fileReader->getField(0, _chrName); fileReader->getField(1, _startPosStr); fileReader->getField(2, _endPosStr); _startPos = str2chrPos(_startPosStr); _endPos = str2chrPos(_endPosStr); return true; }