View job log here
UserWarning: depends_on chain DependsOn(parent='/entry/instrument/elastic_monitor', value='/entry/instrument/elastic_monitor/transformations/elastic_monitor_r0') references missing node 'Unable to synchronously open object (component not found)'
In provider ess.reduce.nexus.workflow.load_nexus_component(
location: ess.reduce.nexus.types.NeXusComponentLocationSpec[ess.spectroscopy.types.ElasticMonitor, ess.reduce.nexus.types.SampleRun],
nx_class: ess.reduce.nexus.types.NeXusClass[ess.spectroscopy.types.ElasticMonitor],
) -> ess.reduce.nexus.types.NeXusComponent[ess.spectroscopy.types.ElasticMonitor, ess.reduce.nexus.types.SampleRun]
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/nxtransformations.py:331: UserWarning
Full output
parent = <scippnexus.base.Group object at 0x7f39481d8710>
depends_on = DependsOn(parent='/entry/instrument/elastic_monitor', value='/entry/instrument/elastic_monitor/transformations/elastic_monitor_r0')
def parse_depends_on_chain(
parent: Field | Group, depends_on: DependsOn
) -> TransformationChain | None:
"""Follow a depends_on chain and return the transformations."""
chain = TransformationChain(depends_on.parent, depends_on.value)
# Use raw h5py objects to follow the chain because that avoids constructing
# expensive intermediate snx.Group objects.
file = parent.underlying.file
visited = [depends_on.absolute_path()]
try:
while not depends_on.is_terminal:
> transform, base = _locate_depends_on_target(
file, depends_on, parent.definitions
)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/nxtransformations.py:319:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/nxtransformations.py:296: in _locate_depends_on_target
target = file[target_path]
^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/h5py/_hl/group.py:407: in __getitem__
return self._get(name)
^^^^^^^^^^^^^^^
h5py/_objects.pyx:54: in h5py._objects.with_phil.wrapper
???
h5py/_objects.pyx:55: in h5py._objects.with_phil.wrapper
???
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/h5py/_hl/group.py:421: in _get
oid = h5o.open(self.id, self._e(name), lapl=lapl)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
h5py/_objects.pyx:54: in h5py._objects.with_phil.wrapper
???
h5py/_objects.pyx:55: in h5py._objects.with_phil.wrapper
???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E KeyError: 'Unable to synchronously open object (component not found)'
h5py/h5o.pyx:255: KeyError
During handling of the above exception, another exception occurred:
workflow = <sciline.pipeline.Pipeline object at 0x7f39543c69c0>
coda_nexus_file_path = PosixPath('/ess/data/coda/999999/raw/coda_bifrost_999999_00022378.hdf')
monitor_type = ess.spectroscopy.types.ElasticMonitor
@pytest.mark.parametrize(
"monitor_type",
[
ElasticMonitor,
NormalizationMonitor,
PSCMonitor,
OverlapMonitor,
],
ids=["elastic", "normalization", "psc", "overlap"],
)
def test_can_compute_wavelength__monitor_(
workflow: sciline.Pipeline, coda_nexus_file_path: Path, monitor_type: type
) -> None:
workflow[Filename[SampleRun]] = coda_nexus_file_path
workflow[LookupTableFilename] = lookup_table_simulation()
> result = workflow.compute(WavelengthMonitor[SampleRun, monitor_type])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/nexusfiles-scipp/bifrost/bifrost_reduction_test.py:57:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/pipeline.py:191: in compute
return self.get(tp, **kwargs).compute(reporter=reporter)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/task_graph.py:122: in compute
return self._scheduler.get(self._graph, [targets], reporter=reporter)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/scheduler.py:140: in get
return self._dask_get(dsk, list(map(_to_dask_key, keys)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/threaded.py:115: in get
results = get_async(
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:547: in get_async
raise_exception(exc, tb)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:351: in reraise
raise exc
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/local.py:256: in execute_task
result = task(data)
^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/_task_spec.py:768: in __call__
return self.func(*new_argspec)
^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/dask/utils.py:81: in apply
return func(*args)
^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/sciline/_provider.py:145: in __call__
return self._func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:242: in load_nexus_component
nexus.load_component(location, nx_class=nx_class, definitions=definitions)
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/ess/reduce/nexus/_nexus_loader.py:105: in load_component
loaded = cast(sc.DataGroup, group[selection])
^^^^^^^^^^^^^^^^
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/base.py:399: in __getitem__
if (chain := parse_depends_on_chain(self, dg['depends_on'])) is not None:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
parent = <scippnexus.base.Group object at 0x7f39481d8710>
depends_on = DependsOn(parent='/entry/instrument/elastic_monitor', value='/entry/instrument/elastic_monitor/transformations/elastic_monitor_r0')
def parse_depends_on_chain(
parent: Field | Group, depends_on: DependsOn
) -> TransformationChain | None:
"""Follow a depends_on chain and return the transformations."""
chain = TransformationChain(depends_on.parent, depends_on.value)
# Use raw h5py objects to follow the chain because that avoids constructing
# expensive intermediate snx.Group objects.
file = parent.underlying.file
visited = [depends_on.absolute_path()]
try:
while not depends_on.is_terminal:
transform, base = _locate_depends_on_target(
file, depends_on, parent.definitions
)
depends_on = DependsOn(parent=base, value=transform.attrs['depends_on'])
chain.transformations[transform.name] = transform[()]
if depends_on.absolute_path() in visited:
raise ValueError(
'Circular depends_on chain detected: '
f'{[*visited, depends_on.absolute_path()]}'
)
visited.append(depends_on.absolute_path())
except KeyError as e:
> warnings.warn(
UserWarning(
f'depends_on chain {depends_on} references missing node {e}'.replace(
'\n', ''
)
),
stacklevel=2,
)
E UserWarning: depends_on chain DependsOn(parent='/entry/instrument/elastic_monitor', value='/entry/instrument/elastic_monitor/transformations/elastic_monitor_r0') references missing node 'Unable to synchronously open object (component not found)'
E In provider ess.reduce.nexus.workflow.load_nexus_component(
E location: ess.reduce.nexus.types.NeXusComponentLocationSpec[ess.spectroscopy.types.ElasticMonitor, ess.reduce.nexus.types.SampleRun],
E nx_class: ess.reduce.nexus.types.NeXusClass[ess.spectroscopy.types.ElasticMonitor],
E ) -> ess.reduce.nexus.types.NeXusComponent[ess.spectroscopy.types.ElasticMonitor, ess.reduce.nexus.types.SampleRun]
.tox/nexusfiles-scipp-bifrost/lib/python3.12/site-packages/scippnexus/nxtransformations.py:331: UserWarning