Source code for pycif.plugins.obsoperators.standard.transforms.utils.check_datavect
import copy
from ......utils.yml import ordered_dump
from ......utils.check.errclass import CifError
[docs]
def check_datavect(self, all_transforms, backup_comps, mapper):
# Dump required inputs for debugging purposes
with open(f"{self.workdir}/obsoperator/pipe_inputs.txt", "w") as f:
ordered_dump(f, self.required_inputs)
# Dump a detailed log about missing inputs
if self.missing == {}:
return
todump = []
for transform in self.missing:
transf = getattr(all_transforms, transform)
todump.extend([
"##################",
f"{transform} ({transf.plugin.name}/{transf.plugin.version}):",
""
])
for cmp in self.missing[transform]:
todump.extend(
[f" - {cmp}:"] + [
f" - {prm}" for prm in self.missing[transform][cmp]
])
todump_missing = []
for transform in self.init_missing:
transf = getattr(all_transforms, transform)
todump_missing.extend([
"##################",
f"{transform} ({transf.plugin.name}/{transf.plugin.version}):",
""
])
for cmp in self.init_missing[transform]:
todump_missing.extend(
[f" - {cmp}:"] + [
f" - {prm}" for prm in self.init_missing[transform][cmp]
])
todump_missing.append("")
# Dump to file
file_missing = f"{self.workdir}/obsoperator/missing_inputs.txt"
with open(file_missing, "w") as f:
f.write("\n".join(todump))
file_missing_init = f"{self.workdir}/obsoperator/missing_inputs_init.txt"
with open(file_missing_init, "w") as f:
f.write("\n".join(todump_missing))
# Raise exception only if missing inputs for initialization if required
ignore_missing = hasattr(self, "init_inputs")
if ignore_missing and todump_missing == []:
if todump_missing == []:
return
# Otherwise raise exception
raise CifError(f"There are missing elements in your data vector. Only missing elements for initialization ('init_inputs' is switched on) are reported.Please see {file_missing_init} for details")
# Otherwise raise exception
raise CifError(f"There are missing elements in your data vector. Please see {file_missing} for details")