当前位置: 首页>>代码示例>>C++>>正文


C++ BamAlignment::getMD方法代码示例

本文整理汇总了C++中BamAlignment::getMD方法的典型用法代码示例。如果您正苦于以下问题:C++ BamAlignment::getMD方法的具体用法?C++ BamAlignment::getMD怎么用?C++ BamAlignment::getMD使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BamAlignment的用法示例。


在下文中一共展示了BamAlignment::getMD方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: update

// Can be either unique or multi-mapping reads
inline void PROBerReadModel_iCLIP::update(AlignmentGroup& ag) {
	int size = ag.size();
	BamAlignment *ba = NULL;
	char dir;

	if (size > 1) {
		assert(model_type >= 2);
		double frac = 1.0 / size;
		for (int i = 0; i < size; ++i) {
			ba = ag.getAlignment(i);
			fld->update(ba->getInsertSize(), frac);
		}
		return;
	}

	assert(ag.getSEQ(seq));
	if (model_type & 1) assert(ag.getQUAL(qual));
	for (int i = 0; i < size; ++i) {
		ba = ag.getAlignment(i);
		dir = ba->getMateDir();
		assert(ba->getCIGAR(cigar));
		assert(ba->getMD(mdstr));
		refseq.setUp(dir, cigar, mdstr, seq);
		seqmodel->update(1.0, dir, 0, &refseq, &cigar, &seq, ((model_type & 1) ? &qual : NULL));
	}

	if (model_type >= 2) {
		assert(ag.getSEQ(seq, 2));
		if (model_type & 1) assert(ag.getQUAL(qual, 2));
		for (int i = 0; i < size; ++i) {
			ba = ag.getAlignment(i);
			dir = ba->getMateDir(2);
			assert(ba->getCIGAR(cigar, 2));
			assert(ba->getMD(mdstr, 2));
			refseq.setUp(dir, cigar, mdstr, seq);
			seqmodel->update(1.0, dir, 0, &refseq, &cigar, &seq, ((model_type & 1) ? &qual : NULL));
		}
	}
}
开发者ID:pachterlab,项目名称:PROBer,代码行数:40,代码来源:PROBerReadModel_iCLIP.hpp

示例2: calcProbs

inline void PROBerReadModel_iCLIP::calcProbs(AlignmentGroup& ag, double* conprbs) {
	int size = ag.size();
	BamAlignment *ba = NULL;
	char dir;

	assert(ag.getSEQ(seq));
	if (model_type & 1) assert(ag.getQUAL(qual));
	for (int i = 0; i < size; ++i) {
		ba = ag.getAlignment(i);
		dir = ba->getMateDir();
		assert(ba->getCIGAR(cigar));
		assert(ba->getMD(mdstr));
		refseq.setUp(dir, cigar, mdstr, seq);
		conprbs[i] = seqmodel->getProb(dir, 0, &refseq, &cigar, &seq, ((model_type & 1) ? &qual : NULL));
	}

	if (model_type >= 2) {
		assert(ag.getSEQ(seq, 2));
		if (model_type & 1) assert(ag.getQUAL(qual, 2));
		for (int i = 0; i < size; ++i) {
			ba = ag.getAlignment(i);
			dir = ba->getMateDir(2);
			assert(ba->getCIGAR(cigar, 2));
			assert(ba->getMD(mdstr, 2));
			refseq.setUp(dir, cigar, mdstr, seq);
			conprbs[i] *= seqmodel->getProb(dir, 0, &refseq, &cigar, &seq, ((model_type & 1) ? &qual : NULL));

			conprbs[i] *= fld->getProb(ba->getInsertSize()); // fragment length distribution
		}
	}

	double sum = 0.0;
	for (int i = 0; i < size; ++i) sum += conprbs[i];

	//assert(sum > 0.0);
	if (sum <= 0.0) sum = 1.0;
	
	for (int i = 0; i < size; ++i) conprbs[i] /= sum;  
}
开发者ID:pachterlab,项目名称:PROBer,代码行数:39,代码来源:PROBerReadModel_iCLIP.hpp


注:本文中的BamAlignment::getMD方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。