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


C++ Constraint::IsBackbone方法代码示例

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


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

示例1: MakeJointMask

//this function does 2 things
//1. Fills this bipartition with the bitwise intersection of a backbone mask and a mask
//representing a subset of taxa in a growing tree.  Note that it is safe to call this when the
//constraint is not a backbone and/or when the partialMask is NULL.  In that case it will fill
//the bipartition with one or the other, or with all bits on if their if neither 
//2. Checks if there is a meaningful intersection between the created joint mask and 
//the constraint.  That means at least 2 bits are "on" on each site of the constrained bipartition
bool Bipartition::MakeJointMask(const Constraint &constr, const Bipartition *partialMask){
	if(constr.IsBackbone()){
		//this just uses Bipartition::Operator=()
		*this = *(constr.GetBackboneMask());
		if(partialMask != NULL)//in this case we'll need to test for meaningful intersection below
			this->AndEquals(*partialMask);
		else//here we don't need to check, since a backbone constraint and its own mask must be meaningful
			return true;
		}
	else if(partialMask != NULL){
		//in this case we'll need to test for meaningful intersection below
		*this = *(partialMask);
		}
	else{
		FillAllBits();
		return true;
		}

	Bipartition temp;
	temp = constr.GetBipartition();
	temp.AndEquals(*this);
	if(temp.MoreThanOneBitSet() == false)
		return false;

	temp = constr.GetBipartition();
	temp.Complement();
	temp.AndEquals(*this);
	if(temp.MoreThanOneBitSet() == false)
		return false;

	return true;
	}
开发者ID:rekepalli,项目名称:garli,代码行数:39,代码来源:bipartition.cpp

示例2: MakeJointMask

//this function does 2 things
//1. Fills this bipartition with the bitwise intersection of a backbone mask and a mask
//representing a subset of taxa in a growing tree.  Note that it is safe to call this when the
//constraint is not a backbone and/or when the partialMask is NULL.  In that case it will fill
//the bipartition with one or the other, or with all bits on if their if neither
//2. Checks if there is a meaningful intersection between the created joint mask and
//the constraint.  That means at least 2 bits are "on" on each site of the constrained bipartition
bool Bipartition::MakeJointMask(const Constraint &constr, const Bipartition *partialMask) {
    if(constr.IsBackbone()) {
        //this just uses Bipartition::Operator=()
        *this = *(constr.GetBackboneMask());
        if(partialMask != NULL)
            this->AndEquals(*partialMask);
    }
    else if(partialMask != NULL) {
        *this = *(partialMask);
    }
    else FillAllBits();

    Bipartition temp;
    temp = constr.GetBipartition();
    temp.AndEquals(*this);
    if(temp.CountOnBits() < 2) return false;
    temp = constr.GetBipartition();
    temp.Complement();
    temp.AndEquals(*this);
    if(temp.CountOnBits() < 2) return false;
    return true;
}
开发者ID:rekepalli,项目名称:garli,代码行数:29,代码来源:bipartition.cpp


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