Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        //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);
        }
Esempio n. 3
0
        //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)
                {
                }
            }
        }