Source code for pycurves_lib.io.curves_output
"""Public output formatter with DSSR provenance extensions."""
from __future__ import annotations
from pycurves_lib.io import curves_output_core as _core
from pycurves_lib.io.curves_output_core import * # noqa: F401,F403
_to_jsonable = _core._to_jsonable
_json_dumps = _core._json_dumps
[docs]
class CurvesOutputFormatter(_core.CurvesOutputFormatter):
def _build_json_payload(self):
payload = super()._build_json_payload()
provenance = getattr(self.runner, "dssr_provenance", None)
if provenance:
payload["inputs"]["dssr_json"] = getattr(self.runner, "dssr_json", None)
payload["topology_provenance"] = provenance
payload["dssr_source_pairs"] = _to_jsonable(
list(getattr(self.runner, "dssr_source_base_pairs", []) or [])
)
return payload
[docs]
def get_dataframes(self):
frames = super().get_dataframes()
provenance = getattr(self.runner, "dssr_provenance", None)
source_rows = list(getattr(self.runner, "dssr_source_base_pairs", []) or [])
if provenance and source_rows:
import pandas as pd
frames["dssr_source_pairs"] = pd.DataFrame(_to_jsonable(source_rows))
return frames
__all__ = [
name for name in dir(_core)
if not name.startswith("_") and name != "CurvesOutputFormatter"
] + ["CurvesOutputFormatter", "_json_dumps", "_to_jsonable"]