//public void calculateFinalDuplication() //{ // foreach (Quartet q in ListOfInconsistent) // { // foreach (WrongTaxa tx in wrongPositionedTaxaList) // { // PartStatus pp = fromwhichPart(tx.Taxa._Taxa_Value); // } // } //} public WrongPositionStatusClass getWrongPositionStatusClass(WrongPositionStatus status, int aStart, string taStart, int aEnd, string taEnd, int bStart, string tbStart, int bEnd, string tbEnd) { WrongPositionStatusClass obj = new WrongPositionStatusClass(); obj.WrongPositionStatus = status; obj.aStart = aStart; obj.taStart = taStart; obj.aEnd = aEnd; obj.taEnd = taEnd; obj.bStart = bStart; obj.tbStart = tbStart; obj.bEnd = bEnd; obj.tbEnd = tbEnd; return(obj); }
//Main Method for calculating Wrong Position public WrongPositionStatusClass CalculateWrongPosition(int p1, string t1, int p2, string t2, int p3, string t3, int p4, string t4, Quartet q) { WrongPositionStatusClass statusClass = new WrongPositionStatusClass(); WrongPositionStatus status = WrongPositionStatus.None; if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p1, t1, p2, t2, p3, t3, p4, t4, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p1, t1, p2, t2, p3, t3, p4, t4); //return status; return(statusClass); } if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p2, t2, p1, t1, p3, t3, p4, t4, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p2, t2, p1, t1, p3, t3, p4, t4); //return status; return(statusClass); } //----- if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p1, t1, p2, t2, p4, t4, p3, t3, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p1, t1, p2, t2, p4, t4, p3, t3); //return status; return(statusClass); } if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p2, t2, p1, t1, p4, t4, p3, t3, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p2, t2, p1, t1, p4, t4, p3, t3); //return status; return(statusClass); } //----- if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p3, t3, p4, t4, p1, t1, p2, t2, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p3, t3, p4, t4, p1, t1, p2, t2); //return status; return(statusClass); } if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p3, t3, p4, t4, p2, t2, p1, t1, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p3, t3, p4, t4, p2, t2, p1, t1); // return status; return(statusClass); } //-- if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p4, t4, p3, t3, p1, t1, p2, t2, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p4, t4, p3, t3, p1, t1, p2, t2); // return status; return(statusClass); } if (status == WrongPositionStatus.None) { status = whoisInWrongPosition(p4, t4, p3, t3, p2, t2, p1, t1, q); } if (status != WrongPositionStatus.None) { statusClass = getWrongPositionStatusClass(status, p4, t4, p3, t3, p2, t2, p1, t1); // return status; return(statusClass); } // return status; return(statusClass); }
//Main Method to Calculate Wrong Taxa public void CalculateWrongTaxa() { WrongPositionStatusClass obj; WrongTaxa wrongTaxa; Quartet qQuartet; Pair pairWithWrongTaxa; foreach (Quartet q in ListOfInconsistent) { try { #region Calculate Wrong Taxa Taxa t1 = getTaxa(q._First_Taxa_Value); Taxa t2 = getTaxa(q._Second_Taxa_Value); Taxa t3 = getTaxa(q._Third_Taxa_Value); Taxa t4 = getTaxa(q._Fourth_Taxa_Value); int p1 = getPosition(t1); int p2 = getPosition(t2); int p3 = getPosition(t3); int p4 = getPosition(t4); obj = new WrongPositionStatusClass(); obj = CalculateWrongPosition(p1, t1._Taxa_Value, p2, t2._Taxa_Value, p3, t3._Taxa_Value, p4, t4._Taxa_Value, q); if (obj.WrongPositionStatus != WrongPositionStatus.None) { wrongTaxa = new WrongTaxa(); pairWithWrongTaxa = new Pair(); pairWithWrongTaxa.Quatret = q._Quartet_Input.Trim(); if (obj.WrongPositionStatus == WrongPositionStatus.aStartLeft) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.aStartLeft; wrongTaxa.Taxa = getTaxa(obj.taStart); wrongTaxa._PositionIntheDepthOne = obj.aStart; } else if (obj.WrongPositionStatus == WrongPositionStatus.aStartRight) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.aStartRight; wrongTaxa.Taxa = getTaxa(obj.taStart); wrongTaxa._PositionIntheDepthOne = obj.aStart; } else if (obj.WrongPositionStatus == WrongPositionStatus.aEndLeft) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.aEndLeft; wrongTaxa.Taxa = getTaxa(obj.taEnd); wrongTaxa._PositionIntheDepthOne = obj.aEnd; } else if (obj.WrongPositionStatus == WrongPositionStatus.aEndRight) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.aEndRight; wrongTaxa.Taxa = getTaxa(obj.taEnd); wrongTaxa._PositionIntheDepthOne = obj.aEnd; } else if (obj.WrongPositionStatus == WrongPositionStatus.bStartLeft) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.bStartLeft; wrongTaxa.Taxa = getTaxa(obj.tbStart); wrongTaxa._PositionIntheDepthOne = obj.bStart; } else if (obj.WrongPositionStatus == WrongPositionStatus.bStartRight) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.bStartRight; wrongTaxa.Taxa = getTaxa(obj.tbStart); wrongTaxa._PositionIntheDepthOne = obj.bStart; } else if (obj.WrongPositionStatus == WrongPositionStatus.bEndLeft) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.bEndLeft; wrongTaxa.Taxa = getTaxa(obj.tbEnd); wrongTaxa._PositionIntheDepthOne = obj.bEnd; } else if (obj.WrongPositionStatus == WrongPositionStatus.bEndRight) { wrongTaxa.wrongPositionStatus = WrongPositionStatus.bEndRight; wrongTaxa.Taxa = getTaxa(obj.tbEnd); wrongTaxa._PositionIntheDepthOne = obj.bEnd; } qQuartet = new Quartet(); qQuartet._First_Taxa_Value = obj.taStart; qQuartet._Second_Taxa_Value = obj.taEnd; qQuartet._Third_Taxa_Value = obj.tbStart; qQuartet._Fourth_Taxa_Value = obj.tbEnd; wrongTaxa.Quartet = qQuartet; //if (!isInWrongTaxaWithoutStatus(wrongTaxa.Taxa._Taxa_Value)) //{ wrongPositionedTaxaList.Add(wrongTaxa); if (qQuartet == null) { } if (wrongTaxa == null) { } if (qQuartet._First_Taxa_Value == wrongTaxa.Taxa._Taxa_Value || qQuartet._Second_Taxa_Value == wrongTaxa.Taxa._Taxa_Value) { pairWithWrongTaxa.tx1 = qQuartet._First_Taxa_Value; pairWithWrongTaxa.tx2 = qQuartet._Second_Taxa_Value; pairWithWrongTaxa.wrongTaxa = wrongTaxa.Taxa._Taxa_Value; } else { pairWithWrongTaxa.tx1 = qQuartet._Third_Taxa_Value; pairWithWrongTaxa.tx2 = qQuartet._Fourth_Taxa_Value; pairWithWrongTaxa.wrongTaxa = wrongTaxa.Taxa._Taxa_Value; } Taxa w1 = getTaxa(pairWithWrongTaxa.tx1); int d1 = getPosition(w1); Taxa w2 = getTaxa(pairWithWrongTaxa.tx2); int d2 = getPosition(w2); int distance = -1; if (d1 > d2) { distance = d1 - d2; } else { distance = d2 - d1; } pairWithWrongTaxa.diff = distance; var maxDifferencedPair = ListOfPairWithWrongTaxa.Where(x => x.wrongTaxa == pairWithWrongTaxa.wrongTaxa).FirstOrDefault(); if (maxDifferencedPair != null) { if (maxDifferencedPair.diff < pairWithWrongTaxa.diff) { ListOfPairWithWrongTaxa.RemoveAll(x => x.wrongTaxa == pairWithWrongTaxa.wrongTaxa); ListOfPairWithWrongTaxa.Add(pairWithWrongTaxa); } } else { ListOfPairWithWrongTaxa.Add(pairWithWrongTaxa); } } #endregion } catch (Exception ex) { } } }