def _cmp_atm(r0: Residue, r1: Residue, a0: Atom, a1: Atom, verbose: bool, cmpdict: Dict) -> None: cmpdict["aCount"] += 1 if a0 is None: if verbose: print(r1.get_full_id(), "None !=", a1.get_full_id(), a1.parent.resname) elif a1 is None: if verbose: print(r0.get_full_id(), a0.get_full_id(), a0.parent.resname, "!= None") else: if a0.get_full_id() == a1.get_full_id(): cmpdict["aFullIdMatchCount"] += 1 elif verbose: print( r0.get_full_id(), a0.get_full_id(), a0.parent.resname, "!=", a1.get_full_id(), ) a0c = a0.get_coord() a1c = a1.get_coord() if numpy.allclose(a0c, a1c, rtol=1e-05, atol=1e-08): cmpdict["aCoordMatchCount"] += 1 elif verbose: print( "atom coords disagree:", r0.get_full_id(), a0.get_full_id(), a1.get_full_id(), a0c, "!=", a1c, )
def _cmp_atm( r0: Residue, r1: Residue, a0: Atom, a1: Atom, verbose: bool, cmpdict: Dict, rtol: float = None, atol: float = None, ) -> None: cmpdict["aCount"] += 1 if a0 is None: if verbose: print( r1.get_full_id(), "None !=", a1.get_full_id(), a1.parent.resname, ) elif a1 is None: if verbose: print( r0.get_full_id(), a0.get_full_id(), a0.parent.resname, "!= None", ) else: if a0.get_full_id() == a1.get_full_id() or _atmfid_d2h( a0) == a1.get_full_id(): cmpdict["aFullIdMatchCount"] += 1 elif verbose: print( r0.get_full_id(), a0.get_full_id(), a0.parent.resname, "!=", a1.get_full_id(), ) ac_rslt = False if rtol is None and atol is None: a0c = numpy.round(a0.get_coord(), 3) a1c = numpy.round(a1.get_coord(), 3) ac_rslt = numpy.array_equal(a0c, a1c) else: a0c = a0.get_coord() a1c = a1.get_coord() ac_rslt = numpy.allclose(a0c, a1c, rtol=rtol, atol=atol) if ac_rslt: cmpdict["aCoordMatchCount"] += 1 elif verbose: print( "atom coords disagree:", r0.get_full_id(), a0.get_full_id(), a1.get_full_id(), a0c, "!=", a1c, )
def _atmfid_d2h(atm: Atom) -> Tuple: afid = list(atm.get_full_id()) afid4 = list(afid[4]) afid40 = re.sub("D", "H", afid4[0], count=1) new_afid = (afid[0], afid[1], afid[2], afid[3], (afid40, afid4[1])) return tuple(new_afid)