Ejemplo n.º 1
0
        public bool isInWrongTaxa(string taxa, WrongPositionStatus status)
        {
            bool isExist = false;

            foreach (WrongTaxa tx in wrongPositionedTaxaList)
            {
                if (tx.Taxa._Taxa_Value == taxa && tx.wrongPositionStatus == status)
                {
                    isExist = true;
                    break;
                }
            }

            return(isExist);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        public WrongPositionStatus whoisInWrongPosition(int aStart, string taStart, int aEnd, string taEnd, int bStart, string tbStart, int bEnd, string tbEnd, Quartet q)
        {
            WrongPositionStatus status = WrongPositionStatus.None;


            //Case 1
            if (inBetween(aStart, bStart, aEnd) && inBetween(aStart, bEnd, aEnd) && bStart < bEnd)
            {
                if (isInWrongTaxa(taStart, WrongPositionStatus.aStartRight))
                {
                    status = WrongPositionStatus.aStartRight;
                }
                else if (isInWrongTaxa(taEnd, WrongPositionStatus.aEndLeft))
                {
                    status = WrongPositionStatus.aEndLeft;
                }
                else
                {
                    // aStart or aEnd in wrong position
                    status = WrongPositionStatus.aEndLeft;
                }
            }
            //Case 2
            else if (inBetween(aStart, bStart, aEnd) && inBetween(bStart, aEnd, bEnd) && bStart < bEnd && aStart < bEnd)
            {
                if (isInWrongTaxa(tbStart, WrongPositionStatus.bStartRight))
                {
                    // bStart in wrong position
                    status = WrongPositionStatus.bStartRight;
                }
                else
                {
                    status = WrongPositionStatus.aEndLeft;
                }
            }
            //Case 3
            else if (inBetween(bStart, aStart, bEnd) && inBetween(aStart, bEnd, aEnd) && bStart < bEnd && bStart < aEnd)
            {
                if (isInWrongTaxa(taStart, WrongPositionStatus.aStartRight))
                {
                    status = WrongPositionStatus.aStartRight;
                }
                else
                {
                    // bEnd in wrong position
                    status = WrongPositionStatus.bEndLeft;
                }
            }
            //Case 4
            else if (aStart == bStart && aEnd == bEnd && aStart < aEnd)
            {
                if (isInWrongTaxa(taStart, WrongPositionStatus.aStartLeft))
                {
                    status = WrongPositionStatus.aStartLeft;
                }
                else if (isInWrongTaxa(taStart, WrongPositionStatus.aStartRight))
                {
                    status = WrongPositionStatus.aStartRight;
                }
                else if (isInWrongTaxa(taEnd, WrongPositionStatus.aEndLeft))
                {
                    status = WrongPositionStatus.aEndLeft;
                }
                else if (isInWrongTaxa(taEnd, WrongPositionStatus.aEndRight))
                {
                    status = WrongPositionStatus.aEndRight;
                }

                else if (isInWrongTaxa(tbStart, WrongPositionStatus.bStartLeft))
                {
                    status = WrongPositionStatus.bStartLeft;
                }
                else if (isInWrongTaxa(tbStart, WrongPositionStatus.bStartRight))
                {
                    status = WrongPositionStatus.bStartRight;
                }
                else if (isInWrongTaxa(tbEnd, WrongPositionStatus.bEndLeft))
                {
                    status = WrongPositionStatus.bEndLeft;
                }
                else if (isInWrongTaxa(tbEnd, WrongPositionStatus.bEndRight))
                {
                    status = WrongPositionStatus.bEndRight;
                }
                else
                {
                    //bStart and bEnd both
                    status = WrongPositionStatus.bStartRight;
                }
            }
            //Case 5
            else if (inBetween(aStart, bStart, aEnd) && aEnd == bEnd && aStart < aEnd)
            {
                if (isInWrongTaxa(taEnd, WrongPositionStatus.aEndLeft))
                {
                    status = WrongPositionStatus.aEndLeft;
                }
                else
                {
                    // aEnd in wrong position
                    status = WrongPositionStatus.aEndLeft;
                }
            }
            //Case 6
            else if (inBetween(aStart, bEnd, aEnd) && aStart == bStart && aStart < aEnd)
            {
                if (isInWrongTaxa(taStart, WrongPositionStatus.aStartRight))
                {
                    status = WrongPositionStatus.aStartRight;
                }
                else
                {
                    // aStart in wrong position
                    status = WrongPositionStatus.aStartRight;
                }
            }

            //Case 7
            else if (aStart < aEnd && aEnd == bStart && bStart < bEnd && aStart < bEnd)
            {
                if (isInWrongTaxa(taEnd, WrongPositionStatus.aEndLeft))
                {
                    status = WrongPositionStatus.aEndLeft;
                }
                else
                {
                    // aStart in wrong position
                    status = WrongPositionStatus.bStartRight;
                }
            }
            return(status);
        }
Ejemplo n.º 4
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);
        }