Source code for pycif.plugins.obsoperators.standard.transforms.utils.dump_transform_description
import copy
from ......utils.yml import ordered_dump
[docs]
def dump_transform_description(self, all_transforms, mapper):
towrite = []
for transform in all_transforms.attributes:
transf = getattr(all_transforms, transform)
transf_name = transf.plugin.name
transf_version = transf.plugin.version
transf_mapper = mapper[transform]
precursors = transf_mapper["precursors"]
successors = transf_mapper["successors"]
inputs = transf_mapper["inputs"]
outputs = transf_mapper["outputs"]
towrite.extend([
"######################################",
f"{transform} ({transf_name}/{transf_version}):",
"",
])
if inputs != {}:
towrite.append("--------")
towrite.append("Inputs:")
for key in inputs:
towrite.append(f" - {key}")
towrite.append("")
if outputs != {}:
towrite.append("--------")
towrite.append("Outputs:")
for key in outputs:
towrite.append(f" - {key}")
if precursors != {}:
towrite.append("--------")
towrite.append("Precursors:")
for key in precursors:
towrite.append(f" - {key}:")
for tr in precursors[key]:
towrite.append(f" - {tr}")
if successors != {}:
towrite.append("--------")
towrite.append("Successors:")
for key in successors:
towrite.append(f" - {key}:")
for tr in successors[key]:
towrite.append(f" - {tr}")
# Dump required inputs for debugging purposes
with open(f"{self.workdir}/obsoperator/transform_description.txt", "w") as f:
f.write("\n".join(towrite))
# Now dump the transform pipe
if self.use_dask:
return
for mode, order_pipe in zip(
["forward", "adjoint"],
[self.period_order_fwd, self.period_order_adj]
):
towrite = []
for ddi, transform, direction in order_pipe:
transf_mapper = mapper[transform]
inputs = transf_mapper["inputs"]
name = getattr(all_transforms, transform).plugin.name
version = getattr(all_transforms, transform).plugin.version
towrite.append(f"{transform:15} ({name:25} / {version:15}) "
f"{ddi} / {direction:8} / {list(inputs.keys())}")
with open(f"{self.workdir}/obsoperator/"
f"transform_pipe_{mode}.txt", "w") as f:
f.write("\n".join(towrite))