def displace_model(self, model, tls, phase): """Displace the given model by the tls. """ tls_info = tls.model_tls_info cor = tls_info["COR"] for n, Lx_rmsd, Lx_vec, Lx_rho, Lx_pitch in [ (1, "L1_rmsd", "L1_eigen_vec", "L1_rho", "L1_pitch"), (2, "L2_rmsd", "L2_eigen_vec", "L2_rho", "L2_pitch"), (3, "L3_rmsd", "L3_eigen_vec", "L3_rho", "L3_pitch") ]: Lrmsd = tls_info[Lx_rmsd] Lvec = tls_info[Lx_vec] Lrho = tls_info[Lx_rho] Lpitch = tls_info[Lx_pitch] ## pre-calculations for screw displacement Lorigin = cor + Lrho Lrot = Gaussian.GAUSS3C[settings.ADP_PROB] * Lrmsd * phase D = AtomMath.dmatrixu(Lvec, Lrot) d_screw = (Lrot * Lpitch) * Lvec if n == 1: chain_id = self.L1_chain.chain_id elif n == 2: chain_id = self.L2_chain.chain_id elif n == 3: chain_id = self.L3_chain.chain_id chain = model.get_chain(chain_id) for frag_id1, frag_id2 in tls.iter_segment_ranges(): for frag in Structure.iter_fragments(chain.iter_fragments(), frag_id1, frag_id2): for atm in frag.iter_atoms(): d = numpy.dot(D, atm.position - Lorigin) + d_screw atm.position += d
def displace_model(self, model, tls, phase): """Displace the given model by the tls. """ tls_info = tls.model_tls_info cor = tls_info["COR"] for n, Lx_rmsd, Lx_vec, Lx_rho, Lx_pitch in [ (1, "L1_rmsd", "L1_eigen_vec", "L1_rho", "L1_pitch"), (2, "L2_rmsd", "L2_eigen_vec", "L2_rho", "L2_pitch"), (3, "L3_rmsd", "L3_eigen_vec", "L3_rho", "L3_pitch") ]: Lrmsd = tls_info[Lx_rmsd] Lvec = tls_info[Lx_vec] Lrho = tls_info[Lx_rho] Lpitch = tls_info[Lx_pitch] ## pre-calculations for screw displacement Lorigin = cor + Lrho Lrot = Gaussian.GAUSS3C[settings.ADP_PROB] * Lrmsd * phase D = AtomMath.dmatrixu(Lvec, Lrot) d_screw = (Lrot * Lpitch) * Lvec if n==1: chain_id = self.L1_chain.chain_id elif n==2: chain_id = self.L2_chain.chain_id elif n==3: chain_id = self.L3_chain.chain_id chain = model.get_chain(chain_id) for frag_id1, frag_id2 in tls.iter_segment_ranges(): for frag in Structure.iter_fragments(chain.iter_fragments(), frag_id1, frag_id2): for atm in frag.iter_atoms(): d = numpy.dot(D, atm.position - Lorigin) + d_screw atm.position += d
def displace_model(self, model, tls, phase, which_ntls, raw_r3d_file): """Displace the given model by the tls. """ tls_info = tls.model_tls_info cor = tls_info["COR"] ## figure out which libration eigenvalue is the largest and ## use that value in the animation. Christoph Champ, 2008-08-15 L1_val = float(tls_info["L1_eigen_val"]) * Constants.RAD2DEG2 L2_val = float(tls_info["L2_eigen_val"]) * Constants.RAD2DEG2 L3_val = float(tls_info["L3_eigen_val"]) * Constants.RAD2DEG2 max_libration = 0.00 for val in L1_val, L2_val, L3_val: if val >= max_libration: max_libration = val for n, Lx_rmsd, Lx_val, Lx_vec, Lx_rho, Lx_pitch in [ (1, "L1_rmsd", "L1_eigen_val", "L1_eigen_vec", "L1_rho", "L1_pitch"), (2, "L2_rmsd", "L2_eigen_val", "L2_eigen_vec", "L2_rho", "L2_pitch"), (3, "L3_rmsd", "L3_eigen_val", "L3_eigen_vec", "L3_rho", "L3_pitch") ]: Lrmsd = tls_info[Lx_rmsd] Lvec = tls_info[Lx_vec] Lrho = tls_info[Lx_rho] Lpitch = tls_info[Lx_pitch] Lval = tls_info[Lx_val] * Constants.RAD2DEG2 ## pre-calculations for screw displacement Lorigin = cor + Lrho Lrot = Gaussian.GAUSS3C[conf.ADP_PROB] * Lrmsd * phase D = AtomMath.dmatrixu(Lvec, Lrot) d_screw = (Lrot * Lpitch) * Lvec ## TODO: Add max(L) chain_id to ANIMATE.txt, 2009-08-06 if n == 1: chain_id = self.L1_chain.chain_id elif n == 2: chain_id = self.L2_chain.chain_id elif n == 3: chain_id = self.L3_chain.chain_id chain = model.get_chain(chain_id) for frag_id1, frag_id2 in tls.iter_segment_ranges(): for frag in Structure.iter_fragments(chain.iter_fragments(), frag_id1, frag_id2): for atm in frag.iter_atoms(): d = numpy.dot(D, atm.position - Lorigin) + d_screw atm.position += d atm.temp_factor = float(which_ntls) atm.element = str(model.model_id) ## raw input file for tlsanim2r3d->Raster3D ## E.g., "1 0 A 0 0 7.069 -24.991 -2.991" if Lval == max_libration: raw_r3d_file.write("1 ") else: raw_r3d_file.write("0 ") raw_r3d_file.write("%s %s %s %s %.3f %.3f %.3f\n" % ( model.model_id, self.L1_chain.chain_id, which_ntls, n, atm.position[0], atm.position[1], atm.position[2]))