petitRADTRANS.sbi.posterior_base
================================

.. py:module:: petitRADTRANS.sbi.posterior_base

.. autoapi-nested-parse::

   Posterior estimator interfaces and shared persistence base classes.



Attributes
----------

.. autoapisummary::

   petitRADTRANS.sbi.posterior_base.POSTERIOR_METADATA_SCHEMA_VERSION


Classes
-------

.. autoapisummary::

   petitRADTRANS.sbi.posterior_base.TrainingArtifacts
   petitRADTRANS.sbi.posterior_base.PosteriorSamples
   petitRADTRANS.sbi.posterior_base.PosteriorBatch
   petitRADTRANS.sbi.posterior_base.PosteriorEstimator
   petitRADTRANS.sbi.posterior_base.PersistentPosteriorEstimator


Module Contents
---------------

.. py:data:: POSTERIOR_METADATA_SCHEMA_VERSION
   :value: '0.2.0'


.. py:class:: TrainingArtifacts

   Structured outputs of a posterior training run.


   .. py:attribute:: history
      :type:  Mapping[str, Any]


   .. py:attribute:: validation_metrics
      :type:  Mapping[str, Any]


   .. py:attribute:: metadata
      :type:  Mapping[str, Any]


.. py:class:: PosteriorSamples

   Posterior samples and optional per-sample diagnostics.


   .. py:attribute:: samples
      :type:  Any


   .. py:attribute:: log_probabilities
      :type:  Any
      :value: None



   .. py:attribute:: weights
      :type:  Any
      :value: None



   .. py:attribute:: metadata
      :type:  Mapping[str, Any]


.. py:class:: PosteriorBatch

   Training batch passed to amortized posterior estimators.


   .. py:attribute:: parameters
      :type:  Any


   .. py:attribute:: observations
      :type:  Any


   .. py:attribute:: metadata
      :type:  Mapping[str, Any]


.. py:class:: PosteriorEstimator

   Bases: :py:obj:`abc.ABC`


   Backend-agnostic interface for amortized posterior models.


   .. py:method:: fit(dataset: Any) -> TrainingArtifacts
      :abstractmethod:


      Train the posterior estimator on a simulation dataset.



   .. py:method:: encode_observation(blocks: list[petitRADTRANS.sbi.observation.ObservationBlock]) -> petitRADTRANS.sbi.observation.EncodedObservation
      :abstractmethod:


      Encode a structured observation into the estimator input space.



   .. py:method:: sample_posterior(observation: petitRADTRANS.sbi.observation.EncodedObservation, n_samples: int, seed: int | None = None) -> PosteriorSamples
      :abstractmethod:


      Sample the amortized posterior for one encoded observation.



   .. py:method:: log_prob(observation: petitRADTRANS.sbi.observation.EncodedObservation, parameters: Any) -> Any
      :abstractmethod:


      Evaluate posterior log-density when supported by the backend.



   .. py:method:: save(output_directory: str) -> None
      :abstractmethod:


      Persist trained model weights and metadata.



   .. py:method:: load(input_directory: str) -> PosteriorEstimator
      :classmethod:

      :abstractmethod:


      Restore a saved estimator from disk.



.. py:class:: PersistentPosteriorEstimator(parameter_dim: int, parameter_space: str = 'unconstrained', seed: int = 0, task_metadata: Mapping[str, Any] | None = None)

   Bases: :py:obj:`PosteriorEstimator`


   Shared persistence helper for estimator backends with on-disk artifacts.


   .. py:attribute:: estimator_family
      :value: 'persistent_estimator'



   .. py:attribute:: metadata_schema_version
      :value: '0.2.0'



   .. py:attribute:: parameter_dim


   .. py:attribute:: parameter_space
      :value: 'unconstrained'



   .. py:attribute:: seed
      :value: 0



   .. py:attribute:: task_metadata


   .. py:attribute:: training_artifacts
      :type:  TrainingArtifacts | None
      :value: None



   .. py:attribute:: task_name
      :type:  str | None


   .. py:attribute:: task_version
      :type:  str | None
      :value: None



   .. py:attribute:: task_fingerprint
      :type:  str | None
      :value: None



   .. py:attribute:: observation_schema
      :type:  Mapping[str, Any]


   .. py:attribute:: preprocessing_metadata_payload
      :type:  Mapping[str, Any]


   .. py:attribute:: artifact_metadata
      :type:  petitRADTRANS.sbi.artifacts.ArtifactMetadata | None
      :value: None



   .. py:method:: _build_estimator_config() -> dict[str, Any]
      :abstractmethod:


      Return backend-specific configuration for metadata persistence.



   .. py:method:: from_serialized_metadata(metadata: Mapping[str, Any]) -> PersistentPosteriorEstimator
      :classmethod:

      :abstractmethod:


      Rebuild an estimator instance from persisted metadata only.



   .. py:method:: save_backend_state(output_path: pathlib.Path) -> None
      :abstractmethod:


      Persist backend-specific model state into the output directory.



   .. py:method:: load_backend_state(input_path: pathlib.Path) -> None
      :abstractmethod:


      Restore backend-specific model state from the input directory.



   .. py:method:: _load_training_artifacts(metadata: Mapping[str, Any]) -> TrainingArtifacts | None
      :staticmethod:



   .. py:method:: hydrate_loaded_metadata(metadata: Mapping[str, Any]) -> None


   .. py:method:: _build_artifact_metadata_payload() -> dict[str, Any]


   .. py:method:: build_artifact_metadata(version: str) -> petitRADTRANS.sbi.artifacts.ArtifactMetadata

      Assemble registry metadata for the currently trained estimator.



   .. py:method:: _build_serialized_metadata(artifact_metadata: petitRADTRANS.sbi.artifacts.ArtifactMetadata) -> dict[str, Any]


   .. py:method:: save(output_directory: str, artifact_registry: petitRADTRANS.sbi.artifacts.ArtifactRegistry | None = None, artifact_version: str = '0.1.0') -> None

      Persist model weights, metadata, and optional artifact registration.



   .. py:method:: load(input_directory: str) -> PersistentPosteriorEstimator
      :classmethod:


      Restore a saved persistent estimator from disk.



