コード例 #1
0
ファイル: DomainInterfaceComp.cs プロジェクト: ijlab/ProtCID
        /// <summary>
        /// compare two domain interfaces
        /// </summary>
        /// <param name="domainInterface1"></param>
        /// <param name="domainInterface2"></param>
        /// <returns></returns>
        public DomainInterfacePairInfo CompareEntryDomainInterfaces(DomainInterface domainInterface1,
                                                                    DomainInterface domainInterface2)
        {
            double qScore            = qFunc.WeightQFunc(domainInterface1, domainInterface2);
            bool   interfaceReversed = false;

            if (qScore < AppSettings.parameters.simInteractParam.interfaceSimCutoff &&
                domainInterface1.familyCode1 == domainInterface2.familyCode2)
            {
                domainInterface2.Reverse();
                double reversedQScore = qFunc.WeightQFunc(domainInterface1, domainInterface2);
                if (qScore < reversedQScore)
                {
                    qScore            = reversedQScore;
                    interfaceReversed = true;
                }
                else
                {
                    domainInterface2.Reverse();
                }
            }

            DomainInterfacePairInfo interfacePairInfo = new DomainInterfacePairInfo
                                                            (new DomainInterfaceInfo(domainInterface1), new DomainInterfaceInfo(domainInterface2));

            interfacePairInfo.qScore = qScore;
            interfacePairInfo.isInterface2Reversed = interfaceReversed;
            return(interfacePairInfo);
        }
コード例 #2
0
ファイル: DomainInterfaceComp.cs プロジェクト: ijlab/ProtCID
        /// <summary>
        /// compare two domain interfaces of same entry
        /// </summary>
        /// <param name="domainInterfaces1"></param>
        /// <param name="domainInterfaces2"></param>
        public DomainInterfacePairInfo[] CompareEntryDomainInterfaces(DomainInterface[] domainInterfaces1, DomainInterface[] domainInterfaces2)
        {
            Dictionary <string, long[]> familyDomainHash = GetFamilyDomainHash(domainInterfaces1, domainInterfaces2);
            DataTable domainAlignInfoTable = GetDomainAlignmentTable(familyDomainHash);
            List <DomainInterfacePairInfo> interfaceCompList = new List <DomainInterfacePairInfo>();

            foreach (DomainInterface domainInterface1 in domainInterfaces1)
            {
                foreach (DomainInterface domainInterface2 in domainInterfaces2)
                {
                    try
                    {
                        DomainInterfacePairInfo compInfo =
                            CompareTwoDomainInterfaces(domainInterface1, domainInterface2, domainAlignInfoTable);
                        if (compInfo != null && // compInfo.qScore > -1)
                            compInfo.qScore >= AppSettings.parameters.contactParams.minQScore)
                        {
                            interfaceCompList.Add(compInfo);
                        }
                    }
                    catch (Exception ex)
                    {
                        nonAlignDomainWriter.WriteLine(domainInterface1.pdbId + " " + domainInterface1.domainInterfaceId +
                                                       " " + domainInterface2.pdbId + " " + domainInterface2.domainInterfaceId + " : " + ex.Message);
                    }
                }
            }
            nonAlignDomainWriter.Flush();
            DomainInterfacePairInfo[] pairCompInfos = new DomainInterfacePairInfo[interfaceCompList.Count];
            interfaceCompList.CopyTo(pairCompInfos);
            return(pairCompInfos);
        }
コード例 #3
0
ファイル: DomainInterfaceComp.cs プロジェクト: ijlab/ProtCID
        /// <summary>
        /// compare domain interfaces for one entry
        /// </summary>
        /// <param name="domainInterfaces1"></param>
        /// <param name="domainInterfaces2"></param>
        public DomainInterfacePairInfo[] CompareEntryDomainInterfaces(DomainInterface[] domainInterfaces)
        {
            Dictionary <string, long[]> familyDomainHash = GetFamilyDomainHash(domainInterfaces);
            DataTable domainAlignInfoTable = GetDomainAlignmentTable(familyDomainHash);
            List <DomainInterfacePairInfo> interfaceCompList = new List <DomainInterfacePairInfo> ();

            foreach (DomainInterface domainInterface1 in domainInterfaces)
            {
                foreach (DomainInterface domainInterface2 in domainInterfaces)
                {
                    if (domainInterface1.domainInterfaceId != domainInterface2.domainInterfaceId)
                    {
                        if (!IsDomainInterfaceAlignmentExist(domainInterface1, domainInterface2, domainAlignInfoTable))
                        {
                            nonAlignDomainWriter.WriteLine(domainInterface1.pdbId + " " + domainInterface1.domainInterfaceId + " " +
                                                           domainInterface1.domainId1 + " " + domainInterface1.domainId2 + " " +
                                                           " " + domainInterface2.pdbId + " " + domainInterface2.domainInterfaceId + " " +
                                                           domainInterface2.domainId1 + " " + domainInterface2.domainId2);
                            continue;
                        }
                        DomainInterfacePairInfo compInfo =
                            CompareTwoDomainInterfaces(domainInterface1, domainInterface2, domainAlignInfoTable);
                        if (compInfo != null && compInfo.qScore > -1)
                        //       compInfo.qScore >= AppSettings.parameters.contactParams.minQScore)
                        {
                            interfaceCompList.Add(compInfo);
                        }
                    }
                }
            }
            nonAlignDomainWriter.Flush();
            return(interfaceCompList.ToArray());
        }
コード例 #4
0
ファイル: DomainInterfaceComp.cs プロジェクト: ijlab/ProtCID
        /// <summary>
        /// same domain interfaces means two domain interfaces with same domain id components
        /// and Q score >= unique interface q score which is defined to 0.90
        /// </summary>
        /// <param name="domainInterface1"></param>
        /// <param name="domainInterface2"></param>
        /// <returns></returns>
        public bool AreSameDomainInterfaces(DomainInterface domainInterface1, DomainInterface domainInterface2)
        {
            DomainInterfacePairInfo pairInfo =
                CompareEntryDomainInterfaces(domainInterface1, domainInterface2);

            if (pairInfo.qScore >= AppSettings.parameters.simInteractParam.uniqueInterfaceCutoff &&
                AreDomainInterfacesSameDomainIds(domainInterface1, domainInterface2))
            {
                return(true);
            }
            return(false);
        }
コード例 #5
0
ファイル: DomainInterfaceComp.cs プロジェクト: ijlab/ProtCID
        /// <summary>
        /// compare two domain interfaces
        /// </summary>
        /// <param name="domainInterfaces1"></param>
        /// <param name="domainInterfaces2"></param>
        public DomainInterfacePairInfo CompareDomainInterfaces(DomainInterface domainInterface1, DomainInterface domainInterface2)
        {
            Dictionary <string, long[]> familyDomainHash = GetFamilyDomainHash(domainInterface1, domainInterface2);
            DataTable domainAlignmentTable = GetDomainAlignmentTable(familyDomainHash);

            /*    if (domainAlignInfoTable == null || domainAlignInfoTable.Rows.Count == 0)
             *  {
             *      return null;
             *  }*/
            DomainInterfacePairInfo compInfo =
                CompareTwoDomainInterfaces(domainInterface1, domainInterface2, domainAlignmentTable);

            domainAlignmentTable.Clear();

            return(compInfo);
        }
コード例 #6
0
ファイル: DomainInterfaceComp.cs プロジェクト: ijlab/ProtCID
        /// <summary>
        /// compare two domain interfaces
        /// </summary>
        /// <param name="domainInterface1"></param>
        /// <param name="domainInterface2"></param>
        /// <param name="domainAlignInfoTable"></param>
        /// <returns></returns>
        public DomainInterfacePairInfo CompareTwoDomainInterfaces(DomainInterface domainInterface1,
                                                                  DomainInterface domainInterface2, DataTable domainAlignInfoTable)
        {
            DomainInterface domainInterface2Copy = new DomainInterface(domainInterface2, true); // keep a deep copy
            double          identity             = supDomainInterface.SuperposeDomainInterfaces(domainInterface1, domainInterface2Copy, domainAlignInfoTable);
            double          qScore = qFunc.WeightQFunc(domainInterface1, domainInterface2Copy);
            //    domainInterface2 = domainInterface2Copy; // shadow copy
            //      supDomainInterface.ReverseSupDomainInterfaces(domainInterface1, domainInterface2, domainAlignInfoTable);

            bool interfaceReversed = false;

            if (qScore < AppSettings.parameters.simInteractParam.interfaceSimCutoff &&
                domainInterface1.familyCode1 == domainInterface2.familyCode2)
            {
                domainInterface2Copy = new DomainInterface(domainInterface2, true);

                domainInterface2Copy.Reverse();
                // keep deep copy
                double reversedIdentity =
                    supDomainInterface.SuperposeDomainInterfaces(domainInterface1, domainInterface2Copy, domainAlignInfoTable);
                double reversedQScore = qFunc.WeightQFunc(domainInterface1, domainInterface2Copy);
                //        domainInterface2 = domainInterface2Copy;
                //        supDomainInterface.ReverseSupDomainInterfaces(domainInterface1, domainInterface2, domainAlignInfoTable);
                if (qScore < reversedQScore)
                {
                    qScore            = reversedQScore;
                    identity          = reversedIdentity;
                    interfaceReversed = true;
                }
            }

            DomainInterfacePairInfo interfacePairInfo = new DomainInterfacePairInfo
                                                            (new DomainInterfaceInfo(domainInterface1), new DomainInterfaceInfo(domainInterface2));

            interfacePairInfo.qScore = qScore;
            if (identity <= 0)
            {
                interfacePairInfo.identity = -1.0;
            }
            else
            {
                interfacePairInfo.identity = identity;
            }
            interfacePairInfo.isInterface2Reversed = interfaceReversed;

            return(interfacePairInfo);
        }
コード例 #7
0
ファイル: DomainInterfaceComp.cs プロジェクト: ijlab/ProtCID
        /// <summary>
        /// compare two domain interfaces
        /// </summary>
        /// <param name="domainInterfaces1"></param>
        /// <param name="domainInterfaces2"></param>
        public DomainInterfacePairInfo[] CompareDifRelationDomainInterfaces(DomainInterface[] domainInterfaces1, DomainInterface[] domainInterfaces2)
        {
            Dictionary <string, long[]> familyDomainHash1 = GetFamilyDomainHash(domainInterfaces1);
            Dictionary <string, long[]> familyDomainHash2 = GetFamilyDomainHash(domainInterfaces2);
            DataTable domainAlignInfoTable = GetDomainAlignmentTable(familyDomainHash1, familyDomainHash2);

            List <DomainInterfacePairInfo> interfaceCompList = new List <DomainInterfacePairInfo> ();

            foreach (DomainInterface domainInterface1 in domainInterfaces1)
            {
                foreach (DomainInterface domainInterface2 in domainInterfaces2)
                {
                    if (!IsDomainInterfaceAlignmentExist(domainInterface1, domainInterface2, domainAlignInfoTable))
                    {
                        nonAlignDomainWriter.WriteLine(domainInterface1.pdbId + " " + domainInterface1.domainInterfaceId + " " +
                                                       domainInterface1.domainId1 + " " + domainInterface1.domainId2 + " " +
                                                       " " + domainInterface2.pdbId + " " + domainInterface2.domainInterfaceId + " " +
                                                       domainInterface2.domainId1 + " " + domainInterface2.domainId2);

                        //      continue;
                    }
                    try
                    {
                        DomainInterfacePairInfo compInfo =
                            CompareTwoDomainInterfaces(domainInterface1, domainInterface2, domainAlignInfoTable);
                        if (compInfo != null && // compInfo.qScore > -1)
                            compInfo.qScore >= AppSettings.parameters.contactParams.minQScore)
                        {
                            interfaceCompList.Add(compInfo);
                        }
                    }
                    catch (Exception ex)
                    {
                        nonAlignDomainWriter.WriteLine(domainInterface1.pdbId + " " + domainInterface1.domainInterfaceId +
                                                       " " + domainInterface2.pdbId + " " + domainInterface2.domainInterfaceId + " : " + ex.Message);
                    }
                }
            }
            nonAlignDomainWriter.Flush();
            return(interfaceCompList.ToArray());
        }