/// <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); }
/// <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(); }