//-------------------------------------------------------------------------------------- private bool ChaeckCurrentPart() { //DifferenceElement elementFromOrigine = _originePairwiseDifferences.FirstOrDefault(e => e.Data == _pairwiseDifferences[fCurrentSet[fCurrentPosition]] && !e.IsIncluded); //if (elementFromOrigine.Data == 0) // throw new Exception("Logical error in EnumerateDNAMappingBranchBoundary.ChaeckCurrentPart (search current diff in _originePairwiseDifferences)"); //elementFromOrigine.IsIncluded = true; for (int i = 0; i < _fCurrentPosition; i++) { int d = _pairwiseDifferences[_fCurrentSet[_fCurrentPosition]] - _pairwiseDifferences[_fCurrentSet[i]]; DifferenceElement element = _originePairwiseDifferences.FirstOrDefault(e => e.Data == d && !e.IsIncluded); if (element == null) { for (int j = 0; j < i; j++) { int revValue = _pairwiseDifferences[_fCurrentSet[_fCurrentPosition]] - _pairwiseDifferences[_fCurrentSet[j]]; DifferenceElement revElement = _originePairwiseDifferences.FirstOrDefault(e => e.Data == revValue && e.IsIncluded); if (revElement == null) { throw new Exception("Logical error in EnumerateDNAMappingBranchBoundary.ChaeckCurrentPart (Restore state)"); } revElement.IsIncluded = false; } StatisticAccumulator.ElemenationCountInc(); return(false); } element.IsIncluded = true; } return(true); }
//-------------------------------------------------------------------------------------- protected override void RemoveAction(int p) { if (_fCurrentPosition == 0) { return; } if (_fCurrentSet[0] > 0) { return; } int d = _pairwiseDifferences[_fCurrentSet[_fCurrentPosition]]; DifferenceElement element = _originePairwiseDifferences.FirstOrDefault(e => e.Data == d && e.IsIncluded); if (element == null) { return; } element.IsIncluded = false; for (int i = 1; i < _fCurrentPosition; i++) { d = _pairwiseDifferences[_fCurrentSet[_fCurrentPosition]] - _pairwiseDifferences[_fCurrentSet[i]]; element = _originePairwiseDifferences.FirstOrDefault(e => e.Data == d && e.IsIncluded); if (element == null) { throw new Exception("Logical error in EnumerateDNAMappingBranchBoundary.BackAction"); } element.IsIncluded = false; } //DifferenceElement elementFromOrigine = _originePairwiseDifferences.FirstOrDefault(e => e.Data == _pairwiseDifferences[fCurrentSet[fCurrentPosition]] && e.IsIncluded); //elementFromOrigine.IsIncluded = false; }