예제 #1
0
    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")
예제 #2
0
    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")
예제 #3
0
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
예제 #4
0
    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")
예제 #5
0
    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")
예제 #6
0
파일: rms.py 프로젝트: zouyel/mdanalysis
 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)
예제 #7
0
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)
예제 #8
0
    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")
예제 #9
0
    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."
예제 #10
0
    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")
예제 #11
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")
예제 #12
0
파일: calc_rmsf.py 프로젝트: JHP4911/script
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
예제 #13
0
    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.")
예제 #14
0
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
예제 #15
0
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
예제 #16
0
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!")
예제 #17
0
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)