Exemple #1
0
def fft_test(self, data, f, phi, size, order=gemmi.AxisOrder.XYZ):
    if numpy is None:
        return
    self.assertTrue(data.data_fits_into(size))
    grid_full = data.get_f_phi_on_grid(f, phi, size, half_l=False, order=order)
    self.assertEqual(grid_full.axis_order, order)
    array_full = numpy.array(grid_full, copy=False)
    map1 = gemmi.transform_f_phi_grid_to_map(grid_full)
    self.assertEqual(map1.axis_order, order)
    map2 = numpy.fft.ifftn(array_full.conj())
    map2 = numpy.real(map2) * (map2.size / grid_full.unit_cell.volume)
    compare_maps(self, map1, map2, atol=6e-7)
    map3 = data.transform_f_phi_to_map(f, phi, size, order=order)
    compare_maps(self, map1, map3, atol=6e-7)

    grid2 = gemmi.transform_map_to_f_phi(map1, half_l=False)
    self.assertFalse(grid2.half_l)
    self.assertEqual(grid2.axis_order, order)
    compare_maps(self, grid2, array_full, atol=1e-4)
    if grid2.axis_order != gemmi.AxisOrder.ZYX:
        compare_asu_data(self, grid2.prepare_asu_data(), data, f, phi)
    grid_half = data.get_f_phi_on_grid(f, phi, size, half_l=True, order=order)
    if order == gemmi.AxisOrder.ZYX:  # half_l+ZYX not supported yet
        return
    grid3 = gemmi.transform_map_to_f_phi(map1, half_l=True)
    self.assertTrue(grid3.half_l)
    self.assertEqual(grid3.axis_order, order)
    compare_maps(self, grid3, grid_half, atol=1e-4)
    compare_asu_data(self, grid3.prepare_asu_data(), data, f, phi)
Exemple #2
0
 def asu_data_test(self, grid):
     asu = grid.prepare_asu_data()
     d = asu.make_d_array()
     asu2 = gemmi.ComplexAsuData(asu.unit_cell, asu.spacegroup,
                                 asu.miller_array[d > 2.5],
                                 asu.value_array[d > 2.5])
     ngrid = asu2.transform_f_phi_to_map(sample_rate=1.5)
     hkl_grid = asu2.get_f_phi_on_grid([ngrid.nu, ngrid.nv, ngrid.nw])
     alt_ngrid = gemmi.transform_f_phi_grid_to_map(hkl_grid)
     compare_maps(self, ngrid, alt_ngrid, atol=1e-6)
Exemple #3
0
def fft_test(self, data, f, phi, size):
    if numpy is None:
        return
    grid_full = data.get_f_phi_on_grid(f, phi, size, half_l=False)
    array_full = numpy.array(grid_full, copy=False)
    map1 = gemmi.transform_f_phi_grid_to_map(grid_full)
    map2 = numpy.fft.ifftn(array_full.conj())
    map2 = numpy.real(map2) * (map2.size / grid_full.unit_cell.volume)
    compare_maps(self, map1, map2, atol=6e-7)
    map3 = data.transform_f_phi_to_map(f, phi, size)
    compare_maps(self, map1, map3, atol=6e-7)

    grid2 = gemmi.transform_map_to_f_phi(map1, half_l=False)
    compare_maps(self, grid2, array_full, atol=1e-4)

    grid_half = data.get_f_phi_on_grid(f, phi, size, half_l=True)
    grid3 = gemmi.transform_map_to_f_phi(map1, half_l=True)
    compare_maps(self, grid3, grid_half, atol=1e-4)