/// <summary> /// the intra-chain domain interfaces from chains of the ASU /// </summary> /// <param name="relSeqId"></param> /// <param name="pdbId"></param> /// <returns></returns> private Dictionary <int, DomainInterfaceComponent> GetIntraChainDomainInterfaceContents(int relSeqId, string pdbId) { // int asuRelSeqId = ConvertRelSeqID(relSeqId, BuCompBuilder.BuType, "asu"); string queryString = string.Format("Select * From AsuIntraDomainInterfaces " + " Where RelSeqID = {0} AND PdbID = '{1}';", relSeqId, pdbId); DataTable intraChainDomainInterfaceTable = dbQuery.Query(ProtCidSettings.buCompConnection, queryString); Dictionary <int, DomainInterfaceComponent> domainInterfaceHash = new Dictionary <int, DomainInterfaceComponent> (); if (intraChainDomainInterfaceTable.Rows.Count > 0) { string[] familyCodes = GetRelationFamilyCodes(relSeqId); int domainInterfaceId = -1; int chainInterfaceId = 0; string asymChain = ""; Dictionary <long, Range[]> domainRangeHash = new Dictionary <long, Range[]> (); string isReversed = ""; foreach (DataRow domainInterfaceRow in intraChainDomainInterfaceTable.Rows) { domainInterfaceId = Convert.ToInt32(domainInterfaceRow["DomainInterfaceID"].ToString()); asymChain = domainInterfaceRow["AsymChain"].ToString().TrimEnd(); DomainInterfaceComponent domainInterfaceContent = new DomainInterfaceComponent(); domainInterfaceContent.chainSymOpString1 = asymChain + "_1_555"; domainInterfaceContent.chainSymOpString2 = asymChain + "_1_555"; Range[] domainRange1 = GetDomainRange(pdbId, Convert.ToInt64(domainInterfaceRow["DomainID1"].ToString()), ref domainRangeHash); if (domainRange1 == null) { continue; } Range[] domainRange2 = GetDomainRange(pdbId, Convert.ToInt64(domainInterfaceRow["DomainID2"].ToString()), ref domainRangeHash); if (domainRange2 == null) { continue; } domainInterfaceContent.domainRange1 = domainRange1; domainInterfaceContent.domainRange2 = domainRange2; domainInterfaceContent.chainInterfaceId = chainInterfaceId; domainInterfaceContent.domainId1 = Convert.ToInt64(domainInterfaceRow["DomainID1"].ToString()); domainInterfaceContent.domainId2 = Convert.ToInt64(domainInterfaceRow["DomainID2"].ToString()); isReversed = domainInterfaceRow["IsReversed"].ToString(); if (isReversed == "1") { domainInterfaceContent.familyCode1 = familyCodes[1]; domainInterfaceContent.familyCode2 = familyCodes[0]; } else { domainInterfaceContent.familyCode1 = familyCodes[0]; domainInterfaceContent.familyCode2 = familyCodes[1]; } domainInterfaceHash.Add(domainInterfaceId, domainInterfaceContent); } } return(domainInterfaceHash); }
/// <summary> /// domain-domain interactions with the relation in the BU /// </summary> /// <param name="domainInterfacesHash">domain interfaces for the BU</param> /// <param name="biolUnitHash">the chains and atoms for the BU</param> /// <returns>the domain-domain interfaces in the BU</returns> private DomainInterface[] GetDomainInterfaces(Dictionary <int, DomainInterfaceComponent> domainInterfacesHash, Dictionary <string, AtomInfo[]> biolUnitHash) { List <DomainInterface> domainInterfaceList = new List <DomainInterface> (); foreach (int domainInterfaceId in domainInterfacesHash.Keys) { DomainInterfaceComponent component = (DomainInterfaceComponent)domainInterfacesHash[domainInterfaceId]; AtomInfo[] domainAtoms1 = null; AtomInfo[] domainAtoms2 = null; foreach (string chainSymOpString in biolUnitHash.Keys) { if (component.chainSymOpString1 == chainSymOpString) { domainAtoms1 = GetDomainAtoms((AtomInfo[])biolUnitHash[chainSymOpString], component.domainRange1); } if (component.chainSymOpString2 == chainSymOpString) { domainAtoms2 = GetDomainAtoms((AtomInfo[])biolUnitHash[chainSymOpString], component.domainRange2); } } DomainInterface domainInterface = new DomainInterface(); domainInterface.domainInterfaceId = domainInterfaceId; domainInterface.interfaceId = component.chainInterfaceId; domainInterface.chain1 = domainAtoms1; domainInterface.chain2 = domainAtoms2; domainInterface.firstSymOpString = component.chainSymOpString1; domainInterface.secondSymOpString = component.chainSymOpString2; domainInterface.domainId1 = component.domainId1; domainInterface.domainId2 = component.domainId2; domainInterface.familyCode1 = component.familyCode1; domainInterface.familyCode2 = component.familyCode2; domainInterface.GetInterfaceResidueDist(); domainInterfaceList.Add(domainInterface); } return(domainInterfaceList.ToArray()); }
/// <summary> /// /// </summary> /// <param name="relSeqId"></param> /// <param name="pdbId"></param> /// <param name="domainInterfaceTable"></param> /// <returns></returns> private Dictionary <string, Dictionary <int, DomainInterfaceComponent> > GetDomainInterfaceContents(int relSeqId, string pdbId, DataTable domainInterfaceTable) { string[] familyCodes = GetRelationFamilyCodes(relSeqId); Dictionary <string, Dictionary <int, DomainInterfaceComponent> > buDomainInterfaceHash = new Dictionary <string, Dictionary <int, DomainInterfaceComponent> > (); string buId = ""; int domainInterfaceId = -1; int chainInterfaceId = -1; Dictionary <long, Range[]> domainRangeHash = new Dictionary <long, Range[]> (); string isReversed = ""; foreach (DataRow domainInterfaceRow in domainInterfaceTable.Rows) { buId = domainInterfaceRow["BuID"].ToString().TrimEnd(); domainInterfaceId = Convert.ToInt32(domainInterfaceRow["DomainInterfaceID"].ToString()); chainInterfaceId = Convert.ToInt32(domainInterfaceRow["InterfaceID"].ToString()); string[] chainSymOpStrings = GetChainInterfaceChainComponent(pdbId, buId, chainInterfaceId); if (chainSymOpStrings == null) { continue; } DomainInterfaceComponent domainInterfaceContent = new DomainInterfaceComponent(); domainInterfaceContent.chainSymOpString1 = chainSymOpStrings[0]; domainInterfaceContent.chainSymOpString2 = chainSymOpStrings[1]; Range[] domainRange1 = GetDomainRange(pdbId, Convert.ToInt64(domainInterfaceRow["DomainID1"].ToString()), ref domainRangeHash); if (domainRange1 == null) { continue; } Range[] domainRange2 = GetDomainRange(pdbId, Convert.ToInt64(domainInterfaceRow["DomainID2"].ToString()), ref domainRangeHash); if (domainRange2 == null) { continue; } domainInterfaceContent.domainRange1 = domainRange1; domainInterfaceContent.domainRange2 = domainRange2; domainInterfaceContent.chainInterfaceId = chainInterfaceId; domainInterfaceContent.domainId1 = Convert.ToInt64(domainInterfaceRow["DomainID1"].ToString()); domainInterfaceContent.domainId2 = Convert.ToInt64(domainInterfaceRow["DomainID2"].ToString()); isReversed = domainInterfaceRow["IsReversed"].ToString(); if (isReversed == "1") { domainInterfaceContent.familyCode1 = familyCodes[1]; domainInterfaceContent.familyCode2 = familyCodes[0]; } else { domainInterfaceContent.familyCode1 = familyCodes[0]; domainInterfaceContent.familyCode2 = familyCodes[1]; } if (buDomainInterfaceHash.ContainsKey(buId)) { buDomainInterfaceHash[buId].Add(domainInterfaceId, domainInterfaceContent); } else { Dictionary <int, DomainInterfaceComponent> domainInterfaceHash = new Dictionary <int, DomainInterfaceComponent> (); domainInterfaceHash.Add(domainInterfaceId, domainInterfaceContent); buDomainInterfaceHash.Add(buId, domainInterfaceHash); } } return(buDomainInterfaceHash); }