本文整理汇总了C++中BamReader::GetReferenceID方法的典型用法代码示例。如果您正苦于以下问题:C++ BamReader::GetReferenceID方法的具体用法?C++ BamReader::GetReferenceID怎么用?C++ BamReader::GetReferenceID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BamReader
的用法示例。
在下文中一共展示了BamReader::GetReferenceID方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: read_region_depth
int read_region_depth(const char* fn_tgt, BamReader& reader, vector<BamRegion>& regions, vector<unsigned int>& src_depths, vector<unsigned int>& tgt_depths) {
ifstream ifs;
string line, chr;
int chr_id, begin, end, src_dp, tgt_dp;
ifs.open(fn_tgt);
if (!ifs.is_open()) {
cerr << "ERROR: failed to open [" << fn_tgt << "]\n";
return 1;
}
while (getline(ifs, line)) {
stringstream linestream(line);
linestream >> chr >> begin >> end >> src_dp >> tgt_dp;
chr_id = reader.GetReferenceID(chr);
if (chr_id == -1) {
cerr << "WARNING: sequence [" << chr << "] not found in header, region [" << chr << ':' << begin << '-' << end << "] skipped\n";
}
else {
regions.push_back(BamRegion(chr_id, begin, chr_id, end));
src_depths.push_back(src_dp);
tgt_depths.push_back(tgt_dp);
}
}
cerr << "INFO: [" << regions.size() << "] regions read\n";
return 0;
}
示例2: main
int main (int argc, char *argv[]) {
int minBaseQuality = 0;
string usage=string(""+string(argv[0])+" [in BAM file] [in VCF file] [chr name] [deam out BAM] [not deam out BAM]"+
"\nThis program divides aligned single end reads into potentially deaminated\n"+
"\nreads and the puts the rest into another bam file if the deaminated positions are not called as the alternative base in the VCF.\n"+
"\nTip: if you do not need one of them, use /dev/null as your output\n"+
"arguments:\n"+
"\t"+"--bq [base qual] : Minimum base quality to flag a deaminated site (Default: "+stringify(minBaseQuality)+")\n"+
"\n");
if(argc == 1 ||
argc < 4 ||
(argc == 2 && (string(argv[0]) == "-h" || string(argv[0]) == "--help") )
){
cerr << "Usage "<<usage<<endl;
return 1;
}
for(int i=1;i<(argc-2);i++){
if(string(argv[i]) == "--bq"){
minBaseQuality=destringify<int>(argv[i+1]);
i++;
continue;
}
}
string bamfiletopen = string( argv[ argc-5 ] );
string vcffiletopen = string( argv[ argc-4 ] );
string chrname = string( argv[ argc-3 ] );
string deambam = string( argv[ argc-2 ] );
string nondeambam = string( argv[ argc-1 ] );
//dummy reader, will need to reposition anyway
VCFreader vcfr (vcffiletopen,
vcffiletopen+".tbi",
chrname,
1,
1,
0);
BamReader reader;
if ( !reader.Open(bamfiletopen) ) {
cerr << "Could not open input BAM file"<< bamfiletopen << endl;
return 1;
}
// if ( !reader.LocateIndex() ) {
// cerr << "The index for the BAM file cannot be located" << endl;
// return 1;
// }
// if ( !reader.HasIndex() ) {
// cerr << "The BAM file has not been indexed." << endl;
// return 1;
// }
//positioning the bam file
int refid=reader.GetReferenceID(chrname);
if(refid < 0){
cerr << "Cannot retrieve the reference ID for "<< chrname << endl;
return 1;
}
//cout<<"redif "<<refid<<endl;
//setting the BAM reader at that position
reader.SetRegion(refid,
0,
refid,
-1);
vector<RefData> testRefData=reader.GetReferenceData();
const SamHeader header = reader.GetHeader();
const RefVector references = reader.GetReferenceData();
BamWriter writerDeam;
if ( !writerDeam.Open(deambam, header, references) ) {
cerr << "Could not open output BAM file" << endl;
return 1;
}
BamWriter writerNoDeam;
if ( !writerNoDeam.Open(nondeambam, header, references) ) {
cerr << "Could not open output BAM file" << endl;
return 1;
}
unsigned int totalReads =0;
unsigned int deaminatedReads =0;
unsigned int ndeaminatedReads =0;
//.........这里部分代码省略.........
示例3: ParseRegionString
// Same as ParseRegionString() above, but accepts a BamMultiReader
bool ParseRegionString(const string& regionString,
const BamReader& reader,
BamRegion& region)
{
// -------------------------------
// parse region string
// check first for empty string
if ( regionString.empty() )
return false;
//cerr << "ParseRegionString Input: " << regionString << endl;
// non-empty string, look for a colom
size_t foundFirstColon = regionString.find(':');
// store chrom strings, and numeric positions
string startChrom;
string stopChrom;
int startPos;
int stopPos;
// no colon found
// going to use entire contents of requested chromosome
// just store entire region string as startChrom name
// use BamReader methods to check if its valid for current BAM file
if ( foundFirstColon == string::npos ) {
startChrom = regionString;
startPos = 0;
stopChrom = regionString;
stopPos = -1;
}
// colon found, so we at least have some sort of startPos requested
else {
// store start chrom from beginning to first colon
startChrom = regionString.substr(0,foundFirstColon);
// look for ".." after the colon
size_t foundRangeDots = regionString.find("..", foundFirstColon+1);
// no dots found
// so we have a startPos but no range
// store contents before colon as startChrom, after as startPos
if ( foundRangeDots == string::npos )
{
startPos = atoi( regionString.substr(foundFirstColon+1).c_str() );
stopChrom = startChrom;
stopPos = -1;
}
// ".." found, so we have some sort of range selected
else {
// store startPos between first colon and range dots ".."
startPos = atoi( regionString.substr(foundFirstColon+1, foundRangeDots-foundFirstColon-1).c_str() );
// look for second colon
size_t foundSecondColon = regionString.find(':', foundRangeDots+1);
// no second colon found
// so we have a "standard" chrom:start..stop input format (on single chrom)
if ( foundSecondColon == string::npos ) {
stopChrom = startChrom;
stopPos = atoi( regionString.substr(foundRangeDots+2).c_str() );
}
// second colon found
// so we have a range requested across 2 chrom's
else {
stopChrom = regionString.substr(foundRangeDots+2, foundSecondColon-(foundRangeDots+2));
stopPos = atoi( regionString.substr(foundSecondColon+1).c_str() );
}
}
}
// -------------------------------
// validate reference IDs & genomic positions
const RefVector references = reader.GetReferenceData();
// if startRefID not found, return false
int startRefID = reader.GetReferenceID(startChrom);
if ( startRefID == -1 ) return false;
// startPos cannot be greater than or equal to reference length
const RefData& startReference = references.at(startRefID);
if ( startPos >= startReference.RefLength ) return false;
// if stopRefID not found, return false
int stopRefID = reader.GetReferenceID(stopChrom);
if ( stopRefID == -1 ) return false;
// stopPosition cannot be larger than reference length
const RefData& stopReference = references.at(stopRefID);
if ( stopPos > stopReference.RefLength ) return false;
// if no stopPosition specified, set to reference end
if ( stopPos == -1 ) stopPos = stopReference.RefLength;
// -------------------------------
//.........这里部分代码省略.........
示例4: main
//.........这里部分代码省略.........
thousandGenomesHasA[ pos ] = ( (ref=='A') || (alt=='A') );
thousandGenomesHasT[ pos ] = ( (ref=='T') || (alt=='T') );
}
myFile1000g.close();
}else{
cerr <<"Unable to open file "<<vcf1000g<<endl;
return 1;
}
cerr<<"done reading 1000g VCF"<<endl;
BamReader reader;
if ( !reader.Open(bamfiletopen) ) {
cerr << "Could not open input BAM file"<< bamfiletopen << endl;
return 1;
}
//positioning the bam file
int refid=reader.GetReferenceID(chrname);
if(refid < 0){
cerr << "Cannot retrieve the reference ID for "<< chrname << endl;
return 1;
}
//cout<<"redif "<<refid<<endl;
//setting the BAM reader at that position
reader.SetRegion(refid,
0,
refid,
-1);
vector<RefData> testRefData=reader.GetReferenceData();
const SamHeader header = reader.GetHeader();
const RefVector references = reader.GetReferenceData();
BamWriter writerDeam;
if ( !writerDeam.Open(deambam, header, references) ) {
cerr << "Could not open output BAM file" << endl;
return 1;
}
BamWriter writerNoDeam;
if ( !writerNoDeam.Open(nondeambam, header, references) ) {
cerr << "Could not open output BAM file" << endl;
return 1;
}