示例#1
0
        /// <summary>
        /// superpose domain interfaces
        /// </summary>
        /// <param name="domainInterface1"></param>
        /// <param name="domainInterface2"></param>
        /// <param name="alignInfoTable"></param>
        public double SuperposeDomainInterfaces(DomainInterface domainInterface1, DomainInterface domainInterface2, DataTable alignInfoTable)
        {
            long   domainID11 = domainInterface1.domainId1;
            long   domainID12 = domainInterface1.domainId2;
            long   domainID21 = domainInterface2.domainId1;
            long   domainID22 = domainInterface2.domainId2;
            double identity1  = 100;
            double identity2  = 100;

            DataRow alignRow1 = null;
            DataRow alignRow2 = null;

            if (domainID11 != domainID21)
            {
                alignRow1 = GetAlignRow(domainID11, domainID21, alignInfoTable);
                if (alignRow1 != null)
                {
                    SuperposeChain(domainInterface2.chain1, alignRow1);
                    identity1 = Convert.ToDouble(alignRow1["Identity"].ToString());
                }
            }

            if (domainID12 != domainID22)
            {
                alignRow2 = GetAlignRow(domainID12, domainID22, alignInfoTable);
                if (alignRow2 != null)
                {
                    SuperposeChain(domainInterface2.chain2, alignRow2);
                    identity2 = Convert.ToDouble(alignRow2["Identity"].ToString());
                }
            }
            if (alignRow1 != null && alignRow2 != null)
            {
                domainInterface2.seqDistHash = SuperposeInterface(domainInterface2.seqDistHash, alignRow1, alignRow2);
                domainInterface2.ResetSeqResidueHash();
            }

            if (identity1 < 0)
            {
                identity1 = 0;
            }
            if (identity2 < 0)
            {
                identity2 = 0;
            }
            if (identity1 > 0 && identity2 > 0)
            {
                return(Math.Sqrt(identity1 * identity2));
            }
            else if (identity1 > 0)
            {
                return(identity1);
            }
            else if (identity2 > 0)
            {
                return(identity2);
            }
            return(-1.0);
        }
示例#2
0
        /// <summary>
        /// reverse the superposed interfaces
        /// </summary>
        /// <param name="domainInterface1"></param>
        /// <param name="domainInterface2"></param>
        /// <param name="alignInfoTable"></param>
        public void ReverseSupDomainInterfaces(DomainInterface domainInterface1,
                                               DomainInterface domainInterface2, DataTable alignInfoTable)
        {
            long domainID11 = domainInterface1.domainId1;
            long domainID12 = domainInterface1.domainId2;
            long domainID21 = domainInterface2.domainId1;
            long domainID22 = domainInterface2.domainId2;

            DataRow alignRow1 = GetAlignRow(domainID11, domainID21, alignInfoTable);

            ReverseSupChain(domainInterface2.chain1, alignRow1);

            DataRow alignRow2 = GetAlignRow(domainID12, domainID22, alignInfoTable);

            ReverseSupChain(domainInterface2.chain2, alignRow2);

            domainInterface2.seqDistHash = ReverseSupInterface(domainInterface2.seqDistHash, alignRow1, alignRow2);
            domainInterface2.ResetSeqResidueHash();
        }