/** @param family family info */ public SegregationBlock(final FamilyGt family) { mSeq = family.seq(); mStart = family.posn(); mEnd = family.posn(); mPatterns = family.pattern(); mIsXlike = family.isXLike(); assert integrity(); }
/** * Extend the block if it can be done and keep consistent phasing. Update the block phasing * pattern if successful. * * @param family containing a set of calls. * @return true iff the block was successfully extended. */ boolean extend(final FamilyGt family) { final int length = family.length(); assert length == mPatterns.length(); assert family.posn() > mEnd; assert mSeq.equals(family.seq()); final PatternArray pattern = family.pattern(); for (int f = 0; f < Pattern.NUMBER_FLIPS; f++) { final PatternArray pat = mPatterns.flipIntersect(pattern, f); if (pat != null) { mPatterns = pat; mEnd = family.posn(); mCount++; return true; } } return false; }