httk.io.cif.cif_parser ====================== .. py:module:: httk.io.cif.cif_parser Classes ------- .. autoapisummary:: httk.io.cif.cif_parser.CifMeta Functions --------- .. autoapisummary:: httk.io.cif.cif_parser.parse_cif_float httk.io.cif.cif_parser.parse_cif_int httk.io.cif.cif_parser.parse_linear_expr httk.io.cif.cif_parser.parse_xyz_op httk.io.cif.cif_parser.xyz_symops_to_matrix httk.io.cif.cif_parser.parse_asu_cell httk.io.cif.cif_parser.parse_structural_modulation httk.io.cif.cif_parser.cifblock_to_asu httk.io.cif.cif_parser.asus_from_cif_file httk.io.cif.cif_parser.single_asu_from_cif_file Module Contents --------------- .. py:class:: CifMeta Bases: :py:obj:`TypedDict` Metadata returned by :func:`parse_cif_float` when ``meta=True``. .. py:attribute:: esd :type: float | None .. py:attribute:: resolution :type: float .. py:function:: parse_cif_float(token: str, *, meta: Literal[False] = ..., pragmatic: bool = ...) -> float | None parse_cif_float(token: str, *, meta: Literal[True], pragmatic: bool = ...) -> tuple[float | None, CifMeta] Parse a CIF numeric field. If meta=False: return float_value or None. If meta=True: return (float_value_or_None, {'esd': esd_or_None, 'resolution': float_resolution}). .. py:function:: parse_cif_int(token: str, *, strict: bool = True, allow_round: bool = False) -> int Convert a CIF numeric token (e.g., '123(4)', '3E2', '1.0E3') to an int using the central value. - strict=True: require the value to be exactly integral; otherwise raise ValueError. - allow_round=True (only if strict=False): round half-even to the nearest int. .. py:function:: parse_linear_expr(expr, use_fractions=False) expr: e.g. 'x-y', '-z+1/2', 'x', 'y', 'z-1', 'x-2y', '3x+1/2' Returns (row, const) where row is [ax, ay, az] (integers or Fractions), and const is a float or Fraction depending on use_fractions. .. py:function:: parse_xyz_op(op, use_fractions=False) op: e.g. 'x-y,x,-z+1/2' Returns (R, t) where R is 3x3 (list of rows), t is length-3 float list .. py:function:: xyz_symops_to_matrix(symops_xyz, use_fractions=False) .. py:function:: parse_asu_cell(cifblock) .. py:function:: parse_structural_modulation(cifblock) Extract structural superspace modulation information from a standard CIF. Returns a tuple ``(structural_q, mod_dim, has_struct_mod, struct_mod_atoms)`` where ``structural_q`` is a list of q-vectors or ``None``, ``mod_dim`` is the modulation dimension (0 if absent), ``has_struct_mod`` is a bool, and ``struct_mod_atoms`` is a sorted list of atom-site labels. .. py:function:: cifblock_to_asu(cifblock, *, return_single=False) .. py:function:: asus_from_cif_file(fs) .. py:function:: single_asu_from_cif_file(fs)