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