def cross_prediction_residual(self, chain, range1, tlsdict1, range2, tlsdict2): msd1, msd2, msd1_predict2, msd2_predict1 = CrossPrectionResidual( chain, range1, tlsdict1, range2, tlsdict2) return msd1_predict2 + msd2_predict1 IT1, IL1, IS1, IO1 = tls_calcs.isotlsdict2tensors(tlsdict1) IT2, IL2, IS2, IO2 = tls_calcs.isotlsdict2tensors(tlsdict2) return Constants.RAD2DEG2 * symmtensor33diff(IL1, IL2)
def ResidualInfo(chain, range, tlsdict): IT, IL, IS, IO = tls_calcs.isotlsdict2tensors(tlsdict) num_atoms = 0 weight_sum = 0.0 msd_sum = 0.0 atomiter = iter_fragment_atoms(chain.iter_fragments(*range)) for atm, uiso_tls in TLS.iter_itls_uiso(atomiter, IT, IL, IS, IO): num_atoms += 1 delta = atm.temp_factor - (Constants.U2B * uiso_tls) msd_sum += atm.occupancy * delta**2 weight_sum += atm.occupancy msd = msd_sum / weight_sum return msd