Example #1
0
        /// <summary>
        /// assign data to a table
        /// </summary>
        private void AssignDomainInterfaceToTable(string pdbId, string chain,
                                                  string DomainID1, string DomainID2, ref int dInterfaceId)
        {
            DataRow domainInterfaceRow =
                DomainInterfaceTables.domainInterfaceTables[DomainInterfaceTables.DomainInterfaces].NewRow();

            DataRow[] rangeRows = multDomainTable.Select(string.Format("DomainID = '{0}'", DomainID1));
            //		domainInterfaceRow["DomainRange1"] = rangeRows[0]["DomainRanges"];
            string family1 = rangeRows[0]["FamilyCode"].ToString().Trim();

            rangeRows = multDomainTable.Select(string.Format("DomainID = '{0}'", DomainID2));
            //	domainInterfaceRow["DomainRange2"] = rangeRows[0]["DomainRanges"];
            string family2    = rangeRows[0]["FamilyCode"].ToString().Trim();
            char   isReversed = '0';
            int    relSeqId   = DomainClassifier.GetRelSeqId(family1, family2, out isReversed);

            domainInterfaceRow["RelSeqID"] = relSeqId;
            //		domainInterfaceRow["GroupSeqID"] = groupId;
            domainInterfaceRow["PdbID"]             = pdbId;
            domainInterfaceRow["InterfaceID"]       = 0;
            domainInterfaceRow["DomainInterfaceId"] = dInterfaceId;
            domainInterfaceRow["DomainID1"]         = DomainID1;
            domainInterfaceRow["DomainID2"]         = DomainID2;
            dInterfaceId++;
            //		domainInterfaceRow["NumOfSg"] = 1;
            //		domainInterfaceRow["NumOfSg_Identity"] = 1;
            domainInterfaceRow["AsymChain1"]  = chain;
            domainInterfaceRow["AsymChain2"]  = chain;
            domainInterfaceRow["IsReversed"]  = isReversed;
            domainInterfaceRow["SurfaceArea"] = -1;

            DomainInterfaceTables.domainInterfaceTables[DomainInterfaceTables.DomainInterfaces].Rows.Add(domainInterfaceRow);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stepNum"></param>
        public void BuildDomainInterfaces(int stepNum)
        {
            InitializeThread();

            DomainInterfaceTables.InitializeTables();
            ProtCidSettings.progressInfo.Reset();
            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Retrieving domain-domain interactions.");

            /*    ProtCidSettings.progressInfo.progStrQueue.Enqueue("Creating database tables.");
             *  DomainInterfaceTables.InitializeDbTables();
             *  ProtCidSettings.progressInfo.progStrQueue.Enqueue("Done.");
             */
            switch (stepNum)
            {
            case 1:
                ProtCidSettings.progressInfo.progStrQueue.Enqueue("Detecting domain-domain interactions from cryst chain interfaces.");
                DomainClassifier domainClassifier = new DomainClassifier();
                domainClassifier.RetrieveDomainInterfaces();
                ProtCidSettings.progressInfo.currentOperationIndex++;
                //	goto case 1;
                break;

            case 2:
                ProtCidSettings.progressInfo.progStrQueue.Enqueue("Write domain interface files.");
                DomainInterfaceWriter domainInterfaceWriter = new DomainInterfaceWriter();
                domainInterfaceWriter.WriteDomainInterfaceFiles();
                //      domainInterfaceWriter.UpdateDomainInterfaceFiles();
                //        domainInterfaceWriter.WriteMultiChainDomainInterfaces();
                ProtCidSettings.progressInfo.currentOperationIndex++;

                ProtCidSettings.progressInfo.progStrQueue.Enqueue("Calculate SAs of domain interface files.");
                DomainInterfaceSA interfaceSa = new DomainInterfaceSA();
                //   interfaceSa.UpdateDomainInterfaceSAs();
                interfaceSa.CalculateDomainInterfaceSAs();
                ProtCidSettings.progressInfo.currentOperationIndex++;
                //   goto case 2;
                break;

            case 3:
                ProtCidSettings.progressInfo.progStrQueue.Enqueue("Comparing domain interfaces.");
                PfamDomainInterfaceComp domainComp = new PfamDomainInterfaceComp();
                domainComp.CompareDomainInterfaces();

                /*   domainComp.SynchronizeDomainChainInterfaceComp();
                 *  domainComp.CompareSpecificDomainInterfaces ();
                 *  domainComp.UpdateMultiChainDomainInterfaces();
                 */
                ProtCidSettings.progressInfo.currentOperationIndex++;
                break;

            case 4:
                ProtCidSettings.progressInfo.progStrQueue.Enqueue("Comparing entry domain interfaces.");
                DomainInterfaceBuComp.CrystBuDomainInterfaceComp domainInterfaceComp =
                    new InterfaceClusterLib.DomainInterfaces.DomainInterfaceBuComp.CrystBuDomainInterfaceComp();
                //    int[] relSeqIds = {10515 };
                //     domainInterfaceComp.UpdateCrystBuDomainInterfaceComp(relSeqIds);
                domainInterfaceComp.CompareCrystBuDomainInterfaces();
                ProtCidSettings.progressInfo.currentOperationIndex++;
                break;


            case 5:
                ProtCidSettings.progressInfo.progStrQueue.Enqueue("Cluster domain interfaces.");
                DomainInterfaceCluster interfaceCluster = new DomainInterfaceCluster();
                int[] relSeqIds = { 2 };
                interfaceCluster.UpdateDomainInterfaceClusters(relSeqIds);
//                    interfaceCluster.ClusterDomainInterfaces();
                // interfaceCluster.ClusterLeftRelations();
                break;
            //    goto case 4;

            case 6:
                ProtCidSettings.progressInfo.progStrQueue.Enqueue("Print Domain Interface Cluster Info.");
                DomainClusterStat clusterStat     = new DomainClusterStat();
                int[]             updateRelSeqIds = { 2 };
                clusterStat.UpdateDomainClusterInfo(updateRelSeqIds);
                //                   clusterStat.PrintDomainClusterInfo();
                //            clusterStat.PrintDomainDbSumInfo("PfamDomain");
                //           clusterStat.AddNumCFsToIPfamInPdbMetaData();



                //      clusterStat.PrintPartialDomainClusterInfo();
                //      clusterStat.GetPfamDomainSumInfo();

                /*                  DomainInterfaceStatInfo statInfo = new DomainInterfaceStatInfo();
                 *          //      statInfo.PrintPepInteractingHmmSites();
                 *                //     statInfo.GetPfamPepInterfaceClusterInfo();
                 *                //    statInfo.PrintPepLigandHmmSites ();
                 *                    statInfo.PrintPfamDomainRelationInfo();
                 *                //    statInfo.GetGenAsymChainDomainInterfaces();*/
                break;
            //    goto case 7;

            case 7:
                PfamClusterFilesCompress clusterFileCompress = new PfamClusterFilesCompress();
                clusterFileCompress.CompressPfamClusterChainInterfaceFiles();
                clusterFileCompress.RetrieveCrystInterfaceFilesNotInClusters(true);

                DomainSeqFasta seqFasta = new DomainSeqFasta();
                seqFasta.PrintClusterDomainSequences();

                DomainInterfaceImageGen imageGen = new DomainInterfaceImageGen();
                imageGen.GenerateDomainInterfaceImages();

                PfamRelNetwork pfamNetWriter = new PfamRelNetwork();
                pfamNetWriter.GeneratePfamNetworkGraphmlFiles();

                // build the unp-unp interaction table based on pdb domain interfaces
                UnpInteractionStr unpInteract = new UnpInteractionStr();
                unpInteract.BuildUnpInteractionNetTable();
                break;

            case 8:      // about peptide interfaces
                PfamPeptideInterfaces pepInterfaces = new PfamPeptideInterfaces();
                pepInterfaceBuilder.BuildPfamPeptideInterfaces();
                break;

            case 9:
                //          ligandInteractBuilder.AddClusterInfoToPfamDomainAlign();

                ligandInteractBuilder.BuildPfamLigandInteractions();
                break;

            default:
                break;
            }
            ProtCidSettings.logWriter.Close();

            ProtCidSettings.progressInfo.threadFinished = true;
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        public void UpdateDomainInterfacesDb(string[] updateEntries)
        {
            Dictionary <int, string[]> updateRelEntryDict = new Dictionary <int, string[]>();
            string updateRelEntryFile = "UpdateRelationEntries_missing.txt";
            //  string updateRelEntryFile = "NoCompRepHomoEntriesRel1.txt";
            string line = "";

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Detecting domain-domain interactions from cryst chain interfaces.");
            ProtCidSettings.logWriter.WriteLine("Detecting domain-domain interactions from cryst chain interfaces.");
            DomainClassifier domainClassifier = new DomainClassifier();

            updateRelEntryDict = domainClassifier.UpdateDomainInterfaces(updateEntries);
            ProtCidSettings.progressInfo.currentOperationIndex++;

            if (updateRelEntryDict.Count == 0)
            {
                if (File.Exists(updateRelEntryFile))
                {
                    List <string> updateEntryList = new List <string>();

                    StreamReader dataReader = new StreamReader(updateRelEntryFile);
                    while ((line = dataReader.ReadLine()) != null)
                    {
                        string[] fields  = line.Split(' ');
                        string[] entries = new string[fields.Length - 1];
                        Array.Copy(fields, 1, entries, 0, entries.Length);
                        updateRelEntryDict.Add(Convert.ToInt32(fields[0]), entries);

                        for (int i = 1; i < fields.Length; i++)
                        {
                            if (!updateEntryList.Contains(fields[i]))
                            {
                                updateEntryList.Add(fields[i]);
                            }
                        }
                    }
                    dataReader.Close();
                    if (updateEntries == null)
                    {
                        updateEntries = updateEntryList.ToArray();
                    }
                }
            }

            if (updateRelEntryDict.Count == 0)
            {
                ProtCidSettings.progressInfo.progStrQueue.Enqueue("No relations need to be updated, program terminated, and return.");
                return;
            }
            List <int> updateRelationList = new List <int>(updateRelEntryDict.Keys);

            updateRelationList.Sort();
            int[] updateRelSeqIds = updateRelationList.ToArray();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Updating domain interface files.");
            ProtCidSettings.logWriter.WriteLine("Updating domain interface files.");
            DomainInterfaceWriter domainInterfaceFileGen = new DomainInterfaceWriter();

            domainInterfaceFileGen.UpdateDomainInterfaceFiles(updateRelEntryDict);
            //            domainInterfaceFileGen.WriteMissingDomainInterfaceFiles();
            ProtCidSettings.progressInfo.currentOperationIndex++;
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update the surface areas for the domain interfaces.");
            ProtCidSettings.logWriter.WriteLine("Update the surfacea areas for the domain interfaces");
            DomainInterfaceSA interfaceSa = new DomainInterfaceSA();

            interfaceSa.UpdateDomainInterfaceSAs(updateEntries);
            //            interfaceSa.CalculateDomainInterfaceSAs ();
            ProtCidSettings.progressInfo.currentOperationIndex++;
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Updating the comparison of domain interfaces in each relation.");
            ProtCidSettings.logWriter.WriteLine("Updating the comparison of domain interfaces in each relation.");
            PfamDomainInterfaceComp domainComp = new PfamDomainInterfaceComp();

            domainComp.UpdateEntryDomainInterfaceComp(updateRelEntryDict);
            //            domainComp.SynchronizeDomainChainInterfaceComp(updateEntries);
            //       domainComp.CompareRepHomoEntryDomainInterfaces();
            ProtCidSettings.progressInfo.currentOperationIndex++;
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Updating the comparison between cryst and BU entry domain interfaces.");
            ProtCidSettings.logWriter.WriteLine("Updating the comparison between cryst and BU entry domain interfaces.");
            DomainInterfaceBuComp.CrystBuDomainInterfaceComp domainInterfaceComp =
                new InterfaceClusterLib.DomainInterfaces.DomainInterfaceBuComp.CrystBuDomainInterfaceComp();
            domainInterfaceComp.UpdateCrystBuDomainInterfaceComp(updateEntries);

            //           string[] buUpdateEntries = GetOtherUpdateEntries(@"D:\Qifang\ProjectData\DbProjectData\PDB\newls-pdb_bucomp.txt");
            //           domainInterfaceComp.UpdateCrystBuDomainInterfaceComp(buUpdateEntries);

            ProtCidSettings.progressInfo.currentOperationIndex++;
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update domain interface clusters.");
            ProtCidSettings.logWriter.WriteLine("Update domain interface clusters.");
            DomainInterfaceCluster domainInterfaceCluster = new DomainInterfaceCluster();

            domainInterfaceCluster.UpdateDomainInterfaceClusters(updateRelSeqIds);
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update Domain Interface Cluster Info.");
            ProtCidSettings.logWriter.WriteLine("Update Domain Interface Cluster Info.");
            DomainClusterStat clusterStat = new DomainClusterStat();

            clusterStat.UpdateDomainClusterInfo(updateRelEntryDict);
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update cluster file compressing.");
            ProtCidSettings.logWriter.WriteLine("Update compressing cluster interface files.");
            PfamClusterFilesCompress clusterFileCompress = new PfamClusterFilesCompress();

            clusterFileCompress.UpdateRelationClusterChainInterfaceFiles(updateRelSeqIds);
            ProtCidSettings.logWriter.WriteLine("Copy interfaces not in any clusters");
            clusterFileCompress.UpdateCrystInterfaceFilesNotInClusters(updateRelSeqIds, true);
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update domain cluster interface images.");
            ProtCidSettings.logWriter.WriteLine("Update domain cluster interface images");
            DomainInterfaceImageGen imageGen = new DomainInterfaceImageGen();

            imageGen.UpdateDomainInterfaceImages(updateRelSeqIds);
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update domain cluster sequence files.");
            ProtCidSettings.logWriter.WriteLine("Update domain cluster sequence files.");
            DomainSeqFasta seqFasta = new DomainSeqFasta();

            seqFasta.UpdateClusterDomainSequences(updateRelSeqIds);
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update Pfam-Pfam network files.");
            ProtCidSettings.logWriter.WriteLine("Update Pfam-Pfam network files.");
            PfamRelNetwork pfamNetWriter = new PfamRelNetwork();

            pfamNetWriter.UpdatePfamNetworkGraphmlFiles(updateEntries);
            ProtCidSettings.logWriter.Flush();

            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update Uniprot-uniprot domain interactions.");
            ProtCidSettings.logWriter.WriteLine("Update Uniprot-uniprot domain interactions.");
            // build the unp-unp interaction table based on pdb domain interfaces
            UnpInteractionStr unpInteract = new UnpInteractionStr();

            unpInteract.UpdateUnpInteractionNetTable(updateEntries);
            ProtCidSettings.logWriter.Flush();

            // update the domain alignment pymol session files
            // move the code after clustering ligands on May 2, 2017, so the cluster info can be included in the Pfam-ligands file

            /*            ProtCidSettings.progressInfo.progStrQueue.Enqueue("Update compiling domain alignment pymol sessions");
             *          PfamDomainFileCompress domainFileCompress = new PfamDomainFileCompress();
             *          domainFileCompress.UpdatePfamDomainFiles(updateEntries);*/
            ProtCidSettings.logWriter.WriteLine("Done!");
            ProtCidSettings.logWriter.Flush();
        }