def test_rmsf_weights(self): CA = self.universe.atoms.CA rmsfs_mass = rms.RMSF(CA, weights='mass') rmsfs_mass.run() rmsfs_custom = rms.RMSF(CA, weights=CA.masses) rmsfs_custom.run() assert_almost_equal(rmsfs_mass.rmsf, rmsfs_custom.rmsf, 5, err_msg="error: rmsf profile should match test " "values")
def test_rmsf_single_frame(self, universe): rmsfs = rms.RMSF(universe.select_atoms('name CA')).run(start=5, stop=6) assert_almost_equal(rmsfs.rmsf, 0, 5, err_msg="error: rmsfs should all be zero")
def rmsf_plot(trajectories, title, structure=False): fig, ax = plt.subplots(len(trajectories), 1, sharex=True, figsize=(15, 4 * len(trajectories)), squeeze=False) for i in range(len(trajectories)): protein = trajectories[i].select_atoms("protein") calphas = protein.select_atoms("name CA") rmsfer = rms.RMSF(calphas).run() ax[i, 0].plot(calphas.resnums, rmsfer.rmsf, color='green') if structure: for j, k, in enumerate(structure['helix']): ax[i, 0].axvline(k, color='#3b3b3b', alpha=0.1) # for j, k, in enumerate(structure['pi_helix']): # ax[i,0].axvline(k, color='grey', alpha=0.2) ax[i, 0].set_ylabel('RMSF ($\AA$)') ax[i, 0].set_title(title.format(i + 1)) ax[len(trajectories) - 1, 0].set_xlabel('residue ID') plt.tight_layout() plt.show() return fig, calphas.resnums, rmsfer.rmsf
def test_rmsf(self, universe): rmsfs = rms.RMSF(universe.select_atoms('name CA')) rmsfs.run() test_rmsfs = np.load(rmsfArray) assert_almost_equal(rmsfs.rmsf, test_rmsfs, 5, err_msg="error: rmsf profile should match test " "values")
def test_rmsf_old_run(self, universe): # start/stop arguments should be given at class initialization with pytest.deprecated_call(): rmsfs = rms.RMSF(universe.select_atoms('name CA')).run(start=5, stop=6) assert_almost_equal(rmsfs.rmsf, 0, 5, err_msg="error: rmsfs should all be zero")
def setup(self, n_atoms, step, weights): self.u = MDAnalysis.Universe(PSF, DCD) self.ag = self.u.atoms[:n_atoms] self.RMSF_inst = rms.RMSF(atomgroup=self.ag, start=None, stop=None, step=step, weights=weights)
def time_series_rmsf(u, sel=STANDARD_SELECTION) -> List[float]: """Extract RMSF timeseries from an Universe.""" align_universe(u, AlignType.MEAN_FRAME) rmsf = rms.RMSF(u.select_atoms(sel=sel)).run().rmsf return cast(List[float], rmsf)
def test_rmsf_old_run(self): rmsfs = rms.RMSF(self.universe.select_atoms('name CA')) rmsfs.run(start=5, stop=6) assert_almost_equal(rmsfs.rmsf, 0, 5, err_msg="error: rmsfs should all be zero")
def test_ensemble_superimposition_to_reference_non_weighted(self): aligned_ensemble1 = mda.Universe(PSF, DCD) align.AlignTraj(aligned_ensemble1, aligned_ensemble1, select="name CA", in_memory=True).run() aligned_ensemble2 = mda.Universe(PSF, DCD) align.AlignTraj(aligned_ensemble2, aligned_ensemble2, select="name *", in_memory=True).run() rmsfs1 = rms.RMSF(aligned_ensemble1.select_atoms('name *')) rmsfs1.run() rmsfs2 = rms.RMSF(aligned_ensemble2.select_atoms('name *')) rmsfs2.run() assert sum(rmsfs1.rmsf) > sum(rmsfs2.rmsf), "Ensemble aligned on all " \ "atoms should have lower full-atom RMSF than ensemble aligned on only CAs."
def test_rmsf_identical_frames(self): # write a dummy trajectory of all the same frame with mda.Writer(self.outfile, self.universe.atoms.n_atoms) as W: for _ in range(self.universe.trajectory.n_frames): W.write(self.universe) self.universe = mda.Universe(GRO, self.outfile) rmsfs = rms.RMSF(self.universe.select_atoms('name CA')) rmsfs.run() assert_almost_equal(rmsfs.rmsf, 0, 5, err_msg="error: rmsfs should all be 0")
def test_rmsf_identical_frames(self, universe, tmpdir): outfile = os.path.join(str(tmpdir), 'rmsf.xtc') # write a dummy trajectory of all the same frame with mda.Writer(outfile, universe.atoms.n_atoms) as W: for _ in range(universe.trajectory.n_frames): W.write(universe) universe = mda.Universe(GRO, outfile) rmsfs = rms.RMSF(universe.select_atoms('name CA')) rmsfs.run() assert_almost_equal(rmsfs.rmsf, 0, 5, err_msg="error: rmsfs should all be 0")
def run_rmsf(universe): prot = universe.select_atoms("protein") R = rms.RMSF(prot) R.run() CA = prot.select_atoms("name CA") CA_rmsf = R.rmsf[np.in1d(prot.ids, CA.ids)] print(CA.resids) print(CA_rmsf) return CA, CA_rmsf
def test_ensemble_superimposition(): aligned_ensemble1 = mda.Universe(PSF, DCD) align.AlignTraj(aligned_ensemble1, aligned_ensemble1, select="name CA", in_memory=True).run() aligned_ensemble2 = mda.Universe(PSF, DCD) align.AlignTraj(aligned_ensemble2, aligned_ensemble2, select="name *", in_memory=True).run() rmsfs1 = rms.RMSF(aligned_ensemble1.select_atoms('name *')) rmsfs1.run() rmsfs2 = rms.RMSF(aligned_ensemble2.select_atoms('name *')) rmsfs2.run() assert_equal( sum(rmsfs1.rmsf) > sum(rmsfs2.rmsf), True, err_msg= "Ensemble aligned on all atoms should have lower full-atom RMSF " "than ensemble aligned on only CAs.")
def test_rmsf_xtc(run): """Align multiple times + RMSF""" u = mda.Universe(TPR, XTC) u2 = u.copy() average = align.AverageStructure(u2, u2, select='protein and name CA', ref_frame=0).run() ref = average.universe aligner = align.AlignTraj(u2, ref, select='protein and name CA', in_memory=True).run() c_alphas = u2.select_atoms('protein and name CA') R = rms.RMSF(c_alphas).run() assert 1 == 1
def rmsf_selected_residues(trajectories, residues, title): fig, ax = plt.subplots(len(trajectories), 1, sharex=True, figsize=(15, 4 * len(trajectories)), squeeze=False) for i in range(len(trajectories)): protein = trajectories[i].select_atoms("protein") # calphas = protein.select_atoms("name CA and ( resid 3:32 or resid 39:67 or resid 73:105 or resid 116:142 or resid 165:205 or resid 213:245 or resid 255:279 )") calphas = protein.select_atoms( "name CA and ( resid 4:29 or resid 39:67 or resid 73:115 or resid 118:142 or resid 168:201 or resid 210:245 or resid 252:279 )" ) rmsfer = rms.RMSF(calphas).run() ax[i, 0].plot(list(range(len(calphas))), rmsfer.rmsf) ax[i, 0].set_ylabel('RMSF ($\AA$)') ax[i, 0].set_title(title.format(i + 1)) ax[len(trajectories) - 1, 0].set_xlabel('residue') plt.tight_layout() plt.show() return fig
def RMSF(u, PU_directory_output): # calcule le RMSF de la PU print("Processing RMSF...") average = align.AverageStructure(u, u, select='protein and name CA', ref_frame=0).run() ref = average.universe aligner = align.AlignTraj(u, ref, select='protein and name CA', in_memory=True).run() c_alphas = u.select_atoms('protein and name CA') R = rms.RMSF(c_alphas).run() plt.figure() ax3 = plt.subplot(111) ax3.plot(c_alphas.resids, R.rmsf, 'b-', label="RMSF") ax3.legend(loc="best") ax3.set_title("RMSF") ax3.set_xlabel("Residue") ax3.set_ylabel(r"RMSF ($\AA$)") ax3.figure.savefig(PU_directory_output + "RMSF.png") print("Done!")
local_rmsf = np.zeros((local_n, N_atoms), dtype=np.float) #folder = 'data/charmm36m/2us/' folder = 'data/amber/T3/' for i, j in enumerate(range(ind_start, ind_end)): struct = folder + 'chain.pdb' traj = folder + 'chain_{}.xtc'.format(j + 1) print(j, traj) sys.stdout.flush() system = md.Universe(struct, traj) reference = md.Universe(struct) aligner = align.AlignTraj(system, reference, select="all", in_memory=True).run() R = rms.RMSF(system.select_atoms('not name H*')) R.run(start=start, verbose=True) local_rmsf[i, :] = R.rmsf comm.barrier() ## Gather data comm.Gather(local_rmsf, rmsf, root=0) ## save or print if rank == 0: print(rmsf.shape) #npy_file = '6_rmsf/charmm36m/rmsf_2us' npy_file = '6_rmsf/amber/T3_rmsf_800ns' np.save(npy_file, rmsf) print('RMSF are saved to ' + npy_file)