pyampp.geometry.contract ======================== .. py:module:: pyampp.geometry.contract .. autoapi-nested-parse:: Geometry contract completion for model box metadata. Contract policy: - Tier 1 (intrinsic box): inferred from coronal cube and corona.dr only. - Tier 2 (world embedding + time): inferred from base/index. base/index is treated as canonical. For backward compatibility, this module also parses legacy tuple-style base/index payloads produced by older converters. Attributes ---------- .. autoapisummary:: pyampp.geometry.contract.RSUN_HMI_METERS Classes ------- .. autoapisummary:: pyampp.geometry.contract.GeometryContract Functions --------- .. autoapisummary:: pyampp.geometry.contract.world_corners_from_geometry_contract pyampp.geometry.contract.infer_box_dims pyampp.geometry.contract.infer_voxel_resolution pyampp.geometry.contract.infer_obstime pyampp.geometry.contract.infer_world_anchor_from_index pyampp.geometry.contract.complete_geometry_contract Module Contents --------------- .. py:data:: RSUN_HMI_METERS :value: 695700000.0 .. py:class:: GeometryContract .. py:attribute:: nx :type: int .. py:attribute:: ny :type: int .. py:attribute:: nz :type: int .. py:attribute:: dr_x :type: float .. py:attribute:: dr_y :type: float .. py:attribute:: dr_z :type: float .. py:attribute:: rsun_m :type: float .. py:attribute:: anchor_lon_deg :type: float .. py:attribute:: anchor_lat_deg :type: float .. py:attribute:: anchor_radius_rsun :type: float .. py:attribute:: frame :type: str .. py:attribute:: obstime :type: str .. py:attribute:: inferred_from :type: str | None :value: None .. py:method:: to_dict() -> dict[str, Any] .. py:method:: from_dict(data: dict[str, Any]) -> GeometryContract :classmethod: .. py:function:: world_corners_from_geometry_contract(contract: GeometryContract, *, obstime: str | astropy.time.Time | None = None, observer: str | astropy.coordinates.SkyCoord | None = 'earth') -> astropy.coordinates.SkyCoord | None Build red-box world corners from a completed geometry contract. .. py:function:: infer_box_dims(model_dict: dict[str, Any]) -> tuple[int, int, int] | None Infer (nx, ny, nz) from coronal cube components only. .. py:function:: infer_voxel_resolution(model_dict: dict[str, Any]) -> tuple[float, float, float] | None Infer (dr_x, dr_y, dr_z) from corona.dr only (never from chromo). .. py:function:: infer_obstime(model_dict: dict[str, Any]) -> str | None Infer model observation time from canonical base/index payload. .. py:function:: infer_world_anchor_from_index(model_dict: dict[str, Any]) -> tuple[float, float, float, str] | None Infer world anchor from canonical base/index payload. .. py:function:: complete_geometry_contract(model_dict: dict[str, Any], *, strict: bool = False) -> GeometryContract | None Complete a geometry contract. Policy: base/index is canonical for time and anchor metadata. If observation time or anchor cannot be inferred, the contract is incomplete.