def test_sf_from_map(self): hmax, kmax, lmax = self.reflections.maxHKL() density_map = ElectronDensityMap.fromUniverse(self.reflections.cell, 4 * hmax, 4 * kmax, 4 * lmax, self.universe, self.adps) sf_from_map = StructureFactor.fromElectronDensityMap( self.reflections, density_map) sf_from_universe = StructureFactor.fromUniverse( self.reflections, self.universe, self.adps) self.assert_(sf_from_universe.rFactor(sf_from_map) < 1.e-3) d = N.absolute(sf_from_universe.array - sf_from_map.array) self.assert_(N.maximum.reduce(d) < 0.13) self.assert_(N.average(d) < 0.02) map_from_sf = ElectronDensityMap.fromStructureFactor( self.reflections.cell, 4 * hmax, 4 * kmax, 4 * lmax, sf_from_universe) sf_from_test_map = StructureFactor.fromElectronDensityMap( self.reflections, map_from_sf) d = N.absolute(sf_from_universe.array - sf_from_test_map.array) self.assert_(sf_from_universe.rFactor(sf_from_test_map) < 1.e-15) self.assert_(N.maximum.reduce(d) < 1.e-13)
def test_sf_from_map(self): asu_atoms = sum(([atom for atom in residue] for residue in self.s), []) unit_cell_atom_data = [] for tr in self.s.cs_transformations: for atom in asu_atoms: unit_cell_atom_data.append( (atom, atom['element'], tr(atom['position']) * Units.Ang, atom['temperature_factor'] * Units.Ang**2 / (8. * N.pi**2), atom['occupancy'])) hmax, kmax, lmax = self.reflections.maxHKL() density_map = ElectronDensityMap.fromUnitCellAtoms( self.reflections.cell, 4 * hmax, 4 * kmax, 4 * lmax, unit_cell_atom_data) sf_from_map = StructureFactor.fromElectronDensityMap( self.reflections, density_map) sf_from_unit_cell = StructureFactor.fromUnitCellAtoms( self.reflections, unit_cell_atom_data) self.assert_(sf_from_unit_cell.rFactor(sf_from_map) < 1.e-3) d = N.absolute(sf_from_unit_cell.array - sf_from_map.array) self.assert_(N.maximum.reduce(d) < 0.13) self.assert_(N.average(d) < 0.02) map_from_sf = ElectronDensityMap.fromStructureFactor( self.reflections.cell, 4 * hmax, 4 * kmax, 4 * lmax, sf_from_unit_cell) sf_from_test_map = StructureFactor.fromElectronDensityMap( self.reflections, map_from_sf) d = N.absolute(sf_from_unit_cell.array - sf_from_test_map.array) self.assert_(sf_from_unit_cell.rFactor(sf_from_test_map) < 1.e-15) self.assert_(N.maximum.reduce(d) < 1.e-13)