Ejemplo n.º 1
0
def test_gridcenter(u1):
    gridcenter = np.array([10, 10, 10])
    xdim = 190
    ydim = 200
    zdim = 210
    ag = u1.select_atoms('name OD1', updating=True)
    serial = serial_density.DensityAnalysis(ag,
                                            gridcenter=gridcenter,
                                            xdim=xdim,
                                            ydim=ydim,
                                            zdim=zdim).run()
    parallel = DensityAnalysis(u1.atoms,
                               atomselection='name OD1',
                               updating=True,
                               gridcenter=gridcenter,
                               xdim=xdim,
                               ydim=ydim,
                               zdim=zdim)
    core_number = 4
    parallel.run(n_blocks=core_number, n_jobs=core_number)
    assert_almost_equal(serial.density.grid, parallel.density.grid)
    assert_almost_equal(parallel._gridcenter, gridcenter)
    assert len(parallel.density.edges[0]) == xdim + 1
    assert len(parallel.density.edges[1]) == ydim + 1
    assert len(parallel.density.edges[2]) == zdim + 1
Ejemplo n.º 2
0
 def test_userdefn_boxshape(self, universe):
     D = density.DensityAnalysis(
         universe.select_atoms(self.selections['static']),
         delta=1.0,
         xdim=8.0,
         ydim=12.0,
         zdim=17.0,
         gridcenter=self.gridcenters['static_defined']).run()
     assert D.density.grid.shape == (8, 12, 17)
Ejemplo n.º 3
0
 def test_ValueError_userdefn_xdim_type(self, universe):
     # Test xdim != int or float
     with pytest.raises(ValueError,
                        match="xdim, ydim, and zdim must be numbers"):
         D = density.DensityAnalysis(
             universe.select_atoms(self.selections['static']),
             delta=self.delta,
             xdim="MDAnalysis",
             ydim=10.0,
             zdim=10.0,
             gridcenter=self.gridcenters['static_defined']).run(step=5)
Ejemplo n.º 4
0
 def test_ValueError_userdefn_gridcenter_type(self, universe):
     # Test gridcenter includes non-numeric strings
     with pytest.raises(ValueError,
                        match="Non-number values assigned to gridcenter"):
         D = density.DensityAnalysis(
             universe.select_atoms(self.selections['static']),
             delta=self.delta,
             xdim=10.0,
             ydim=10.0,
             zdim=10.0,
             gridcenter=self.gridcenters['error2']).run(step=5)
Ejemplo n.º 5
0
 def test_ValueError_userdefn_gridcenter_shape(self, universe):
     # Test len(gridcenter) != 3
     with pytest.raises(ValueError,
                        match="gridcenter must be a 3D coordinate"):
         D = density.DensityAnalysis(
             universe.select_atoms(self.selections['static']),
             delta=self.delta,
             xdim=10.0,
             ydim=10.0,
             zdim=10.0,
             gridcenter=self.gridcenters['error1']).run(step=5)
Ejemplo n.º 6
0
 def test_warn_userdefn_smallgrid(self, universe):
     regex = ("Atom selection does not fit grid --- "
              "you may want to define a larger box")
     with pytest.warns(UserWarning, match=regex):
         D = density.DensityAnalysis(
             universe.select_atoms(self.selections['static']),
             delta=self.delta,
             xdim=1.0,
             ydim=2.0,
             zdim=2.0,
             padding=0.0,
             gridcenter=self.gridcenters['static_defined']).run(step=5)
Ejemplo n.º 7
0
 def test_warn_userdefn_padding(self, universe):
     regex = ("Box padding \(currently set at 1\.0\) is not used "
              "in user defined grids\.")
     with pytest.warns(UserWarning, match=regex):
         D = density.DensityAnalysis(
             universe.select_atoms(self.selections['static']),
             delta=self.delta,
             xdim=100.0,
             ydim=100.0,
             zdim=100.0,
             padding=1.0,
             gridcenter=self.gridcenters['static_defined']).run(step=5)
Ejemplo n.º 8
0
def test_density_values(u1, n_blocks, stop, step):
    parallel = DensityAnalysis(u1.atoms,
                               atomselection='name OD1',
                               updating=True)
    parallel.run(n_blocks=n_blocks,
                 n_jobs=n_blocks,
                 start=0,
                 stop=stop,
                 step=step)
    ag = u1.select_atoms('name OD1', updating=True)
    serial = serial_density.DensityAnalysis(ag).run(start=0,
                                                    stop=stop,
                                                    step=step)
    assert np.sum(serial.density.grid) == np.sum(parallel.density.grid)
    assert_almost_equal(serial.density.grid, parallel.density.grid, decimal=16)
Ejemplo n.º 9
0
    def check_DensityAnalysis(self,
                              ag,
                              ref_meandensity,
                              tmpdir,
                              runargs=None,
                              **kwargs):
        runargs = runargs if runargs else {}
        with tmpdir.as_cwd():
            D = density.DensityAnalysis(ag, delta=self.delta,
                                        **kwargs).run(**runargs)
            assert_almost_equal(D.density.grid.mean(),
                                ref_meandensity,
                                err_msg="mean density does not match")
            D.density.export(self.outfile)

            D2 = density.Density(self.outfile)
            assert_almost_equal(
                D.density.grid,
                D2.grid,
                decimal=self.precision,
                err_msg="DX export failed: different grid sizes")