Exemple #1
0
    def test_save_SaveTrajs_multipass(self):

        # Without the "inmemory" option, i.e. multipass
        __ = save_trajs(self.reader, self.sets, outfiles=self.n_pass_files)

        sets_frag = []
        for i in range(len(self.sets)):
            sets_frag.append([])
            for traj_ix, frame_ix in self.sets[i]:
                sets_frag[-1].append([0, traj_ix * 33 + frame_ix])

        save_trajs(self.frag_reader,
                   [np.array(sets_frag[0]),
                    np.array(sets_frag[1])],
                   outfiles=self.frag_pass_files)
        # Reload the object to memory
        traj_n_pass = single_traj_from_n_files(self.n_pass_files,
                                               top=self.pdbfile)
        traj_frag = single_traj_from_n_files(self.frag_pass_files,
                                             top=self.pdbfile)

        # Check for diffs
        (found_diff,
         errmsg) = compare_coords_md_trajectory_objects(traj_n_pass,
                                                        self.traj_ref,
                                                        atom=0)
        self.assertFalse(found_diff, errmsg)
        (found_diff,
         errmsg) = compare_coords_md_trajectory_objects(traj_frag,
                                                        self.traj_ref,
                                                        atom=0)
        self.assertFalse(found_diff, errmsg)
Exemple #2
0
 def test_save_SaveTrajs_IO(self):
     # Test that we're saving to disk alright
     flist = save_trajs(self.reader, self.sets, prefix=self.subdir)
     exist = True
     for f in flist:
         exist = exist and os.stat(f)
     self.assertTrue(exist, "Could not write to disk")
Exemple #3
0
    def test_save_SaveTrajs_multipass_with_stride(self):
        # With the inmemory option = True

        for stride in self.strides[:]:
            # Since none of the trajfiles have more than 30 frames, the frames have to be re-drawn for every stride
            sets = np.copy(self.sets)
            sets[0][:, 1] = np.random.randint(0,
                                              high=30 / stride,
                                              size=np.shape(sets[0])[0])
            sets[1][:, 1] = np.random.randint(0,
                                              high=30 / stride,
                                              size=np.shape(sets[1])[0])

            __ = save_trajs(self.reader,
                            sets,
                            outfiles=self.one_pass_files,
                            inmemory=False,
                            stride=stride)

            traj_1_pass = single_traj_from_n_files(self.one_pass_files,
                                                   top=self.pdbfile)

            # Also the reference has to be re-drawn using the stride. For this, we use the re-scale the strided
            # frame-indexes to the unstrided value
            sets[0][:, 1] *= stride
            sets[1][:, 1] *= stride
            traj_ref = save_traj_w_md_load_frame(self.reader, sets)

            # Check for diffs
            (found_diff,
             errmsg) = compare_coords_md_trajectory_objects(traj_1_pass,
                                                            traj_ref,
                                                            atom=0)
            self.assertFalse(found_diff, errmsg)
Exemple #4
0
 def test_save_SaveDtrajs_IO(self):
     # Test that we're saving to disk alright
     flist = save_trajs(self.reader, self.sets, prefix=self.subdir)
     exist = True
     for f in flist:
         exist = exist and os.stat(f)
     self.assertTrue(exist, "Could not write to disk")
Exemple #5
0
    def test_save_SaveDtrajs_precision(self):

        # Test without the "inmemory" option
        __ = save_trajs(self.reader, self.sets,
                        outfiles=self.n_pass_files)

        # Test with the inmemory option = True
        __ = save_trajs(self.reader, self.sets,
                        outfiles=self.one_pass_files, inmemory=True)

        # Reload the objects to memory
        traj_n_pass = single_traj_from_n_files(self.n_pass_files, top=self.pdbfile)
        traj_1_pass = single_traj_from_n_files(self.one_pass_files, top=self.pdbfile)

        R = np.zeros((2, traj_1_pass.n_frames, 3))
        atom_index = 0

        # Artificially mess the the coordinates
        # traj_1_pass.xyz [0, atom_index, 2] +=1e-5

        for ii, traj in enumerate([traj_n_pass, traj_1_pass]):
            R[ii, :] = traj.xyz[:, atom_index]

        # Compare the R-trajectories among themselves
        found_diff = False
        first_diff = None
        errmsg = ''

        for ii, iR in enumerate(R):
            # Norm of the difference vector

            norm_diff = np.sqrt(((iR - R) ** 2).sum(2))

            # Any differences?
            if (norm_diff > self.eps).any():
                first_diff = np.argwhere(norm_diff > self.eps)[0]
                found_diff = True
                errmsg = "Delta R_%u at frame %u: [%2.1e, %2.1e]" % (atom_index, first_diff[1],
                                                                     norm_diff[0, first_diff[1]],
                                                                     norm_diff[1, first_diff[1]])
                errmsg2 = "\nThe position of atom %u differs by > %2.1e for the same frame between trajectories" % (
                atom_index, self.eps)
                errmsg += errmsg2
                break

        self.assertFalse(found_diff, errmsg)
Exemple #6
0
    def test_save_SaveTrajs_onepass(self):

        # With the inmemory option = True
        __ = save_trajs(self.reader, self.sets,
                        outfiles=self.one_pass_files, inmemory=True)

        traj_1_pass = single_traj_from_n_files(self.one_pass_files, top=self.pdbfile)

        # Check for diffs
        (found_diff, errmsg) = compare_coords_md_trajectory_objects(traj_1_pass, self.traj_ref, atom=0)
        self.assertFalse(found_diff, errmsg)
Exemple #7
0
    def test_save_SaveTrajs_multipass(self):

        # Without the "inmemory" option, i.e. multipass
        __ = save_trajs(self.reader, self.sets,
                        outfiles=self.n_pass_files)

        # Reload the object to memory
        traj_n_pass = single_traj_from_n_files(self.n_pass_files, top=self.pdbfile)

        # Check for diffs
        (found_diff, errmsg) = compare_coords_md_trajectory_objects(traj_n_pass, self.traj_ref, atom=0)

        self.assertFalse(found_diff, errmsg)
Exemple #8
0
 def test_out_of_bound_indexes(self):
     # assert ValueError with index info is raised for faulty input
     self.sets[0][:,1] *= 100000
     with self.assertRaises(ValueError) as raised:
         save_trajs(self.reader, self.sets, outfiles=self.one_pass_files)