Пример #1
0
    def write_frame(self, frame, subset=None, **kwargs):
        '''
        Write a frame into the opened XTC file

        Parameters
        ----------
        frame : Frame
        subset : list of int, optional
        kwargs : dict
            Ignored
        '''
        import chemfiles

        if subset is None:
            positions = frame.positions
        else:
            positions = frame.positions[subset]

        cf_frame = chemfiles.Frame()
        cf_frame.resize(len(positions))
        cf_frame.positions[:] = positions * 10
        cf_frame.cell = chemfiles.UnitCell(frame.cell.lengths * 10,
                                           frame.cell.angles)
        cf_frame.step = frame.step

        self._xtc.write(cf_frame)
Пример #2
0
    def test_cell(self):
        frame = chemfiles.Frame()

        system = ChemfilesSystem(frame)
        self.assertTrue(np.all(system.cell() == 0))

        frame.cell = chemfiles.UnitCell((3, 3, 3))
        self.assertTrue(np.allclose(system.cell(), np.diag([3, 3, 3])))

        frame.cell = chemfiles.UnitCell((3, 3, 3), (60, 60, 60))
        expected = [
            [3.0, 0.0, 0.0],
            [1.5, 2.59807621, 0.0],
            [1.5, 0.8660254, 2.44948974],
        ]
        self.assertTrue(np.allclose(system.cell(), expected))
Пример #3
0
 def _timestep_to_chemfiles(self, ts):
     """
     Convert a Timestep to a chemfiles Frame
     """
     # TODO: CONVERTERS?
     frame = chemfiles.Frame()
     frame.resize(ts.n_atoms)
     if ts.has_positions:
         frame.positions[:] = ts.positions[:]
     if ts.has_velocities:
         frame.add_velocities()
         frame.velocities[:] = ts.velocities[:]
     frame.cell = chemfiles.UnitCell(*ts.dimensions)
     return frame