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 BedPlusInterval::initFromFile(SingleLineDelimTextFileReader *fileReader) { return (Bed6Interval::initFromFile(fileReader) && initOtherFieldsFromFile(fileReader)); }