Module meteor.testing

used during testing

Functions

def assert_phases_allclose(array1: np.ndarray, array2: np.ndarray, atol: float = 0.001) ‑> None
Expand source code
def assert_phases_allclose(array1: np.ndarray, array2: np.ndarray, atol: float = 1e-3) -> None:
    diff = array2 - array1
    diff = (diff + 180) % 360 - 180
    absolute_difference = np.sum(np.abs(diff)) / float(np.prod(diff.shape))
    if not absolute_difference < atol:
        msg = f"per element diff {absolute_difference} > tolerance {atol}"
        raise AssertionError(msg)
def check_test_file_exists(path: Path) ‑> None
Expand source code
def check_test_file_exists(path: Path) -> None:
    if not path.exists():
        msg = f"cannot find {path}, use github LFS to retrieve this file from the parent repo"
        raise OSError(msg)
def diffmap_realspace_rms(map1: Map, map2: Map) ‑> float
Expand source code
def diffmap_realspace_rms(map1: Map, map2: Map) -> float:
    map1_array = np.array(map1.to_ccp4_map(map_sampling=MAP_SAMPLING).grid)
    map2_array = np.array(map2.to_ccp4_map(map_sampling=MAP_SAMPLING).grid)

    # standardize
    map1_array /= map1_array.std()
    map2_array /= map2_array.std()

    return float(np.linalg.norm(map2_array - map1_array))
def single_carbon_density(carbon_position: tuple[float, float, float],
space_group: gemmi.SpaceGroup,
unit_cell: gemmi.UnitCell,
high_resolution_limit: float) ‑> gemmi.Ccp4Map
Expand source code
def single_carbon_density(
    carbon_position: tuple[float, float, float],
    space_group: gemmi.SpaceGroup,
    unit_cell: gemmi.UnitCell,
    high_resolution_limit: float,
) -> gemmi.Ccp4Map:
    structure = single_carbon_structure(carbon_position, space_group, unit_cell)

    density_map = gemmi.DensityCalculatorX()
    density_map.d_min = high_resolution_limit
    density_map.grid.setup_from(structure)
    density_map.put_model_density_on_grid(structure[0])

    ccp4_map = gemmi.Ccp4Map()
    ccp4_map.grid = density_map.grid
    ccp4_map.update_ccp4_header()

    return ccp4_map
def single_carbon_structure(carbon_position: tuple[float, float, float],
space_group: gemmi.SpaceGroup,
unit_cell: gemmi.UnitCell) ‑> gemmi.Structure
Expand source code
def single_carbon_structure(
    carbon_position: tuple[float, float, float],
    space_group: gemmi.SpaceGroup,
    unit_cell: gemmi.UnitCell,
) -> gemmi.Structure:
    model = gemmi.Model("single_atom")
    chain = gemmi.Chain("A")

    residue = gemmi.Residue()
    residue.name = "X"
    residue.seqid = gemmi.SeqId("1")

    atom = gemmi.Atom()
    atom.name = "C"
    atom.element = gemmi.Element("C")
    atom.pos = gemmi.Position(*carbon_position)

    residue.add_atom(atom)
    chain.add_residue(residue)
    model.add_chain(chain)

    structure = gemmi.Structure()
    structure.add_model(model)
    structure.cell = unit_cell
    structure.spacegroup_hm = space_group.hm

    return structure

Classes

class MapColumns (amplitude: str, phase: str, uncertainty: str | None = None)
Expand source code
@dataclass
class MapColumns:
    amplitude: str
    phase: str
    uncertainty: str | None = None

MapColumns(amplitude: 'str', phase: 'str', uncertainty: 'str | None' = None)

Class variables

var amplitude : str
var phase : str
var uncertainty : str | None