DMSC Integration Testing

Last updated: October 15, 2026 07:40:10

Test: codeshelf|odin|run_notebooks|bragg-edge-1-reduction

View job log here


nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
------------------
sample_wavs = wf.compute(WavelengthDetector[SampleRun])

sample_wavs.bins.concat().hist(wavelength=300).plot()
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mKeyError#x1B[39m                                  Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m sample_wavs = wf.compute(WavelengthDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m sample_wavs.bins.concat().hist(wavelength=#x1B[32m300#x1B[39m).plot()

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/pipeline.py:191#x1B[39m, in #x1B[36mPipeline.compute#x1B[39m#x1B[34m(self, tp, reporter, **kwargs)#x1B[39m
#x1B[32m    170#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mcompute#x1B[39m(
#x1B[32m    171#x1B[39m     #x1B[38;5;28mself#x1B[39m,
#x1B[32m    172#x1B[39m     tp: #x1B[38;5;28mtype#x1B[39m | Iterable[#x1B[38;5;28mtype#x1B[39m] | #x1B[33m"#x1B[39m#x1B[33mUnionType#x1B[39m#x1B[33m"#x1B[39m,  #x1B[38;5;66;03m# noqa: UP037 (needed by Sphinx)#x1B[39;00m
#x1B[32m    173#x1B[39m     reporter: Reporter | #x1B[38;5;28;01mNone#x1B[39;00m = #x1B[38;5;28;01mNone#x1B[39;00m,
#x1B[32m    174#x1B[39m     **kwargs: Any,
#x1B[32m    175#x1B[39m ) -> Any:
#x1B[32m    176#x1B[39m #x1B[38;5;250m    #x1B[39m#x1B[33;03m"""#x1B[39;00m
#x1B[32m    177#x1B[39m #x1B[33;03m    Compute result for the given keys.#x1B[39;00m
#x1B[32m    178#x1B[39m 
#x1B[32m   (...)#x1B[39m#x1B[32m    189#x1B[39m #x1B[33;03m        Keyword arguments passed to the ``.get()`` method.#x1B[39;00m
#x1B[32m    190#x1B[39m #x1B[33;03m    """#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m191#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mtp#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcompute#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m)#x1B[39;49m

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/task_graph.py:122#x1B[39m, in #x1B[36mTaskGraph.compute#x1B[39m#x1B[34m(self, targets, reporter)#x1B[39m
#x1B[32m    120#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[38;5;28mdict#x1B[39m(#x1B[38;5;28mzip#x1B[39m(targets, results, strict=#x1B[38;5;28;01mTrue#x1B[39;00m))
#x1B[32m    121#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m122#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_scheduler#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_graph#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m[#x1B[39;49m#x1B[30;43mtargets#x1B[39;49m#x1B[30;43m]#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m)#x1B[39;49m[#x1B[32m0#x1B[39m]

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:149#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    147#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    148#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m149#x1B[39m         #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_dask_get#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mdsk#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mlist#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mmap#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m_to_dask_key#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mkeys#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    150#x1B[39m     #x1B[38;5;28;01mexcept#x1B[39;00m #x1B[38;5;167;01mRuntimeError#x1B[39;00m #x1B[38;5;28;01mas#x1B[39;00m e:
#x1B[32m    151#x1B[39m         #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mstr#x1B[39m(e).startswith(#x1B[33m"#x1B[39m#x1B[33mCycle detected#x1B[39m#x1B[33m"#x1B[39m):

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/threaded.py:115#x1B[39m, in #x1B[36mget#x1B[39m#x1B[34m(dsk, keys, cache, num_workers, pool, **kwargs)#x1B[39m
#x1B[32m    112#x1B[39m     #x1B[38;5;28;01melif#x1B[39;00m #x1B[38;5;28misinstance#x1B[39m(pool, multiprocessing.pool.Pool):
#x1B[32m    113#x1B[39m         pool = MultiprocessingPoolExecutor(pool)
#x1B[32m--> #x1B[39m#x1B[32m115#x1B[39m results = #x1B[30;43mget_async#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    116#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mpool#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43msubmit#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    117#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mpool#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_max_workers#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    118#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mdsk#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    119#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mkeys#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    120#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mcache#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcache#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    121#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mget_id#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m_thread_get_id#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    122#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mpack_exception#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mpack_exception#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    123#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
#x1B[32m    124#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    126#x1B[39m #x1B[38;5;66;03m# Cleanup pools associated to dead threads#x1B[39;00m
#x1B[32m    127#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m pools_lock:

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/local.py:547#x1B[39m, in #x1B[36mget_async#x1B[39m#x1B[34m(submit, num_workers, dsk, result, cache, get_id, rerun_exceptions_locally, pack_exception, raise_exception, callbacks, dumps, loads, chunksize, **kwargs)#x1B[39m
#x1B[32m    545#x1B[39m         task(data)  #x1B[38;5;66;03m# Re-execute locally#x1B[39;00m
#x1B[32m    546#x1B[39m     #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m547#x1B[39m         #x1B[30;43mraise_exception#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mexc#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mtb#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    548#x1B[39m res, worker_id = loads(res_info)
#x1B[32m    549#x1B[39m state[#x1B[33m"#x1B[39m#x1B[33mcache#x1B[39m#x1B[33m"#x1B[39m][key] = res

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/local.py:351#x1B[39m, in #x1B[36mreraise#x1B[39m#x1B[34m(exc, tb)#x1B[39m
#x1B[32m    349#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m exc.__traceback__ #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m tb:
#x1B[32m    350#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m exc.with_traceback(tb)
#x1B[32m--> #x1B[39m#x1B[32m351#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m exc

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/local.py:256#x1B[39m, in #x1B[36mexecute_task#x1B[39m#x1B[34m(key, task_info, dumps, loads, get_id, pack_exception)#x1B[39m
#x1B[32m    254#x1B[39m #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m    255#x1B[39m     task, data = loads(task_info)
#x1B[32m--> #x1B[39m#x1B[32m256#x1B[39m     result = #x1B[30;43mtask#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mdata#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    257#x1B[39m     #x1B[38;5;28mid#x1B[39m = get_id()
#x1B[32m    258#x1B[39m     result = dumps((result, #x1B[38;5;28mid#x1B[39m))

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/_task_spec.py:768#x1B[39m, in #x1B[36mTask.__call__#x1B[39m#x1B[34m(self, values)#x1B[39m
#x1B[32m    766#x1B[39m     kwargs = {k: _eval(kw) #x1B[38;5;28;01mfor#x1B[39;00m k, kw #x1B[38;5;129;01min#x1B[39;00m #x1B[38;5;28mself#x1B[39m.kwargs.items()}
#x1B[32m    767#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[38;5;28mself#x1B[39m.func(*new_argspec, **kwargs)
#x1B[32m--> #x1B[39m#x1B[32m768#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfunc#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnew_argspec#x1B[39;49m#x1B[30;43m)#x1B[39;49m

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/utils.py:81#x1B[39m, in #x1B[36mapply#x1B[39m#x1B[34m(func, args, kwargs)#x1B[39m
#x1B[32m     79#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m func(*args, **kwargs)
#x1B[32m     80#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m---> #x1B[39m#x1B[32m81#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mfunc#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43margs#x1B[39;49m#x1B[30;43m)#x1B[39;49m

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/_provider.py:145#x1B[39m, in #x1B[36mProvider.__call__#x1B[39m#x1B[34m(self, *args, **kwargs)#x1B[39m
#x1B[32m    143#x1B[39m #x1B[38;5;250m#x1B[39m#x1B[33;03m"""Call the provider."""#x1B[39;00m
#x1B[32m    144#x1B[39m #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m145#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_func#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43margs#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    146#x1B[39m #x1B[38;5;28;01mexcept#x1B[39;00m #x1B[38;5;167;01mException#x1B[39;00m #x1B[38;5;28;01mas#x1B[39;00m e:
#x1B[32m    147#x1B[39m     name = #x1B[33mf#x1B[39m#x1B[33m"#x1B[39m#x1B[38;5;132;01m{#x1B[39;00m#x1B[38;5;28mself#x1B[39m.location.module#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m.#x1B[39m#x1B[38;5;132;01m{#x1B[39;00m#x1B[38;5;28mself#x1B[39m.location.name#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m"#x1B[39m

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/unwrap/to_wavelength.py:510#x1B[39m, in #x1B[36mmask_large_uncertainty_in_lut#x1B[39m#x1B[34m(table, error_threshold, component_name)#x1B[39m
#x1B[32m    508#x1B[39m da = table.array
#x1B[32m    509#x1B[39m relative_error = sc.stddevs(da.data) / sc.values(da.data)
#x1B[32m--> #x1B[39m#x1B[32m510#x1B[39m mask = relative_error > sc.scalar(#x1B[30;43merror_threshold#x1B[39;49m#x1B[30;43m[#x1B[39;49m#x1B[30;43mcomponent_name#x1B[39;49m#x1B[30;43m]#x1B[39;49m)
#x1B[32m    511#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m ErrorLimitedLookupTable[RunType, Component](
#x1B[32m    512#x1B[39m     **{
#x1B[32m    513#x1B[39m         **asdict(table),
#x1B[32m    514#x1B[39m         #x1B[33m"#x1B[39m#x1B[33marray#x1B[39m#x1B[33m"#x1B[39m: sc.where(mask, sc.scalar(np.nan, unit=da.unit), da),
#x1B[32m    515#x1B[39m     }
#x1B[32m    516#x1B[39m )

#x1B[31mKeyError#x1B[39m: 'event_mode_detectors/timepix3'
In provider ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut(
    table: ess.reduce.unwrap.types.LookupTable[ess.imaging.types.SampleRun, scippnexus.nxdetector.NXdetector],
    error_threshold: ess.reduce.unwrap.types.LookupTableRelativeErrorThreshold,
    component_name: ess.reduce.nexus.types.NeXusName[scippnexus.nxdetector.NXdetector],
) -> ess.reduce.unwrap.types.ErrorLimitedLookupTable[ess.imaging.types.SampleRun, scippnexus.nxdetector.NXdetector]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-789/codeshelf/src/odin/notebooks/bragg-edge-1-reduction.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7f7f2a1d9d00>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-789/test_run_notebooks_bragg_edge_0')

    def test_run_notebooks(
        notebook: Path, run_codeshelf_notebook: Callable, tmp_path: Path
    ):
>       run_codeshelf_notebook(notebook_path=notebook, run_path=tmp_path)

tests/codeshelf/codeshelf_test.py:10: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/codeshelf/conftest.py:131: in _run_codeshelf_notebook
    ep.preprocess(nb, {"metadata": {"path": run_path}})
.tox/codeshelf-odin/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:103: in preprocess
    self.preprocess_cell(cell, resources, index)
.tox/codeshelf-odin/lib/python3.12/site-packages/nbconvert/preprocessors/execute.py:124: in preprocess_cell
    cell = self.execute_cell(cell, index, store_history=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.tox/codeshelf-odin/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
    return loop.run_until_complete(inner)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniforge/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:1062: in async_execute_cell
    await self._check_raise_for_error(cell, cell_index, exec_reply)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <nbconvert.preprocessors.execute.ExecutePreprocessor object at 0x7f7f2a213b60>
cell = {'cell_type': 'code', 'execution_count': 6, 'id': '8', 'metadata': {'editable': True, 'slideshow': {'slide_type': ''},...e': 'sample_wavs = wf.compute(WavelengthDetector[SampleRun])\n\nsample_wavs.bins.concat().hist(wavelength=300).plot()'}
cell_index = 8
exec_reply = {'header': {'msg_id': '1be92572-d34fa2f1a0bacdda32366a86_3982769_38', 'msg_type': 'execute_reply', 'username': 'userna...1_9', 'msg_type': 'execute_request', 'username': 'username', 'session': '942d023f-b458ce1644da5699e4bb631a', ...}, ...}

    async def _check_raise_for_error(
        self, cell: NotebookNode, cell_index: int, exec_reply: dict[str, t.Any] | None
    ) -> None:
        if exec_reply is None:
            return None
    
        exec_reply_content = exec_reply["content"]
        if exec_reply_content["status"] != "error":
            return None
    
        cell_allows_errors = (not self.force_raise_errors) and (
            self.allow_errors
            or exec_reply_content.get("ename") in self.allow_error_names
            or "raises-exception" in cell.metadata.get("tags", [])
        )
        await run_hook(
            self.on_cell_error, cell=cell, cell_index=cell_index, execute_reply=exec_reply
        )
        if not cell_allows_errors:
>           raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content)
E           nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell:
E           ------------------
E           sample_wavs = wf.compute(WavelengthDetector[SampleRun])
E           
E           sample_wavs.bins.concat().hist(wavelength=300).plot()
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mKeyError#x1B[39m                                  Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[6]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m sample_wavs = wf.compute(WavelengthDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m sample_wavs.bins.concat().hist(wavelength=#x1B[32m300#x1B[39m).plot()
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/pipeline.py:191#x1B[39m, in #x1B[36mPipeline.compute#x1B[39m#x1B[34m(self, tp, reporter, **kwargs)#x1B[39m
E           #x1B[32m    170#x1B[39m #x1B[38;5;28;01mdef#x1B[39;00m#x1B[38;5;250m #x1B[39m#x1B[34mcompute#x1B[39m(
E           #x1B[32m    171#x1B[39m     #x1B[38;5;28mself#x1B[39m,
E           #x1B[32m    172#x1B[39m     tp: #x1B[38;5;28mtype#x1B[39m | Iterable[#x1B[38;5;28mtype#x1B[39m] | #x1B[33m"#x1B[39m#x1B[33mUnionType#x1B[39m#x1B[33m"#x1B[39m,  #x1B[38;5;66;03m# noqa: UP037 (needed by Sphinx)#x1B[39;00m
E           #x1B[32m    173#x1B[39m     reporter: Reporter | #x1B[38;5;28;01mNone#x1B[39;00m = #x1B[38;5;28;01mNone#x1B[39;00m,
E           #x1B[32m    174#x1B[39m     **kwargs: Any,
E           #x1B[32m    175#x1B[39m ) -> Any:
E           #x1B[32m    176#x1B[39m #x1B[38;5;250m    #x1B[39m#x1B[33;03m"""#x1B[39;00m
E           #x1B[32m    177#x1B[39m #x1B[33;03m    Compute result for the given keys.#x1B[39;00m
E           #x1B[32m    178#x1B[39m 
E           #x1B[32m   (...)#x1B[39m#x1B[32m    189#x1B[39m #x1B[33;03m        Keyword arguments passed to the ``.get()`` method.#x1B[39;00m
E           #x1B[32m    190#x1B[39m #x1B[33;03m    """#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m191#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mtp#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mcompute#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/task_graph.py:122#x1B[39m, in #x1B[36mTaskGraph.compute#x1B[39m#x1B[34m(self, targets, reporter)#x1B[39m
E           #x1B[32m    120#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[38;5;28mdict#x1B[39m(#x1B[38;5;28mzip#x1B[39m(targets, results, strict=#x1B[38;5;28;01mTrue#x1B[39;00m))
E           #x1B[32m    121#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m122#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_scheduler#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mget#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_graph#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m[#x1B[39;49m#x1B[30;43mtargets#x1B[39;49m#x1B[30;43m]#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mreporter#x1B[39;49m#x1B[30;43m)#x1B[39;49m[#x1B[32m0#x1B[39m]
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:149#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    147#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    148#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m149#x1B[39m         #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_dask_get#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mdsk#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mlist#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mmap#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m_to_dask_key#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mkeys#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m)#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    150#x1B[39m     #x1B[38;5;28;01mexcept#x1B[39;00m #x1B[38;5;167;01mRuntimeError#x1B[39;00m #x1B[38;5;28;01mas#x1B[39;00m e:
E           #x1B[32m    151#x1B[39m         #x1B[38;5;28;01mif#x1B[39;00m #x1B[38;5;28mstr#x1B[39m(e).startswith(#x1B[33m"#x1B[39m#x1B[33mCycle detected#x1B[39m#x1B[33m"#x1B[39m):
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/threaded.py:115#x1B[39m, in #x1B[36mget#x1B[39m#x1B[34m(dsk, keys, cache, num_workers, pool, **kwargs)#x1B[39m
E           #x1B[32m    112#x1B[39m     #x1B[38;5;28;01melif#x1B[39;00m #x1B[38;5;28misinstance#x1B[39m(pool, multiprocessing.pool.Pool):
E           #x1B[32m    113#x1B[39m         pool = MultiprocessingPoolExecutor(pool)
E           #x1B[32m--> #x1B[39m#x1B[32m115#x1B[39m results = #x1B[30;43mget_async#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    116#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mpool#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43msubmit#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    117#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mpool#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_max_workers#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    118#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mdsk#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    119#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mkeys#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    120#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mcache#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mcache#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    121#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mget_id#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m_thread_get_id#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    122#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43mpack_exception#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43mpack_exception#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    123#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m,#x1B[39;49m
E           #x1B[32m    124#x1B[39m #x1B[30;43m#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    126#x1B[39m #x1B[38;5;66;03m# Cleanup pools associated to dead threads#x1B[39;00m
E           #x1B[32m    127#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m pools_lock:
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/local.py:547#x1B[39m, in #x1B[36mget_async#x1B[39m#x1B[34m(submit, num_workers, dsk, result, cache, get_id, rerun_exceptions_locally, pack_exception, raise_exception, callbacks, dumps, loads, chunksize, **kwargs)#x1B[39m
E           #x1B[32m    545#x1B[39m         task(data)  #x1B[38;5;66;03m# Re-execute locally#x1B[39;00m
E           #x1B[32m    546#x1B[39m     #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m547#x1B[39m         #x1B[30;43mraise_exception#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mexc#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43mtb#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    548#x1B[39m res, worker_id = loads(res_info)
E           #x1B[32m    549#x1B[39m state[#x1B[33m"#x1B[39m#x1B[33mcache#x1B[39m#x1B[33m"#x1B[39m][key] = res
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/local.py:351#x1B[39m, in #x1B[36mreraise#x1B[39m#x1B[34m(exc, tb)#x1B[39m
E           #x1B[32m    349#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m exc.__traceback__ #x1B[38;5;129;01mis#x1B[39;00m #x1B[38;5;129;01mnot#x1B[39;00m tb:
E           #x1B[32m    350#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m exc.with_traceback(tb)
E           #x1B[32m--> #x1B[39m#x1B[32m351#x1B[39m #x1B[38;5;28;01mraise#x1B[39;00m exc
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/local.py:256#x1B[39m, in #x1B[36mexecute_task#x1B[39m#x1B[34m(key, task_info, dumps, loads, get_id, pack_exception)#x1B[39m
E           #x1B[32m    254#x1B[39m #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m    255#x1B[39m     task, data = loads(task_info)
E           #x1B[32m--> #x1B[39m#x1B[32m256#x1B[39m     result = #x1B[30;43mtask#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mdata#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    257#x1B[39m     #x1B[38;5;28mid#x1B[39m = get_id()
E           #x1B[32m    258#x1B[39m     result = dumps((result, #x1B[38;5;28mid#x1B[39m))
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/_task_spec.py:768#x1B[39m, in #x1B[36mTask.__call__#x1B[39m#x1B[34m(self, values)#x1B[39m
E           #x1B[32m    766#x1B[39m     kwargs = {k: _eval(kw) #x1B[38;5;28;01mfor#x1B[39;00m k, kw #x1B[38;5;129;01min#x1B[39;00m #x1B[38;5;28mself#x1B[39m.kwargs.items()}
E           #x1B[32m    767#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[38;5;28mself#x1B[39m.func(*new_argspec, **kwargs)
E           #x1B[32m--> #x1B[39m#x1B[32m768#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfunc#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mnew_argspec#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/dask/utils.py:81#x1B[39m, in #x1B[36mapply#x1B[39m#x1B[34m(func, args, kwargs)#x1B[39m
E           #x1B[32m     79#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m func(*args, **kwargs)
E           #x1B[32m     80#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m---> #x1B[39m#x1B[32m81#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mfunc#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43margs#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/_provider.py:145#x1B[39m, in #x1B[36mProvider.__call__#x1B[39m#x1B[34m(self, *args, **kwargs)#x1B[39m
E           #x1B[32m    143#x1B[39m #x1B[38;5;250m#x1B[39m#x1B[33;03m"""Call the provider."""#x1B[39;00m
E           #x1B[32m    144#x1B[39m #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m145#x1B[39m     #x1B[38;5;28;01mreturn#x1B[39;00m #x1B[30;43mself#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43m_func#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43margs#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mkwargs#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    146#x1B[39m #x1B[38;5;28;01mexcept#x1B[39;00m #x1B[38;5;167;01mException#x1B[39;00m #x1B[38;5;28;01mas#x1B[39;00m e:
E           #x1B[32m    147#x1B[39m     name = #x1B[33mf#x1B[39m#x1B[33m"#x1B[39m#x1B[38;5;132;01m{#x1B[39;00m#x1B[38;5;28mself#x1B[39m.location.module#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m.#x1B[39m#x1B[38;5;132;01m{#x1B[39;00m#x1B[38;5;28mself#x1B[39m.location.name#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m"#x1B[39m
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/unwrap/to_wavelength.py:510#x1B[39m, in #x1B[36mmask_large_uncertainty_in_lut#x1B[39m#x1B[34m(table, error_threshold, component_name)#x1B[39m
E           #x1B[32m    508#x1B[39m da = table.array
E           #x1B[32m    509#x1B[39m relative_error = sc.stddevs(da.data) / sc.values(da.data)
E           #x1B[32m--> #x1B[39m#x1B[32m510#x1B[39m mask = relative_error > sc.scalar(#x1B[30;43merror_threshold#x1B[39;49m#x1B[30;43m[#x1B[39;49m#x1B[30;43mcomponent_name#x1B[39;49m#x1B[30;43m]#x1B[39;49m)
E           #x1B[32m    511#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m ErrorLimitedLookupTable[RunType, Component](
E           #x1B[32m    512#x1B[39m     **{
E           #x1B[32m    513#x1B[39m         **asdict(table),
E           #x1B[32m    514#x1B[39m         #x1B[33m"#x1B[39m#x1B[33marray#x1B[39m#x1B[33m"#x1B[39m: sc.where(mask, sc.scalar(np.nan, unit=da.unit), da),
E           #x1B[32m    515#x1B[39m     }
E           #x1B[32m    516#x1B[39m )
E           
E           #x1B[31mKeyError#x1B[39m: 'event_mode_detectors/timepix3'
E           In provider ess.reduce.unwrap.to_wavelength.mask_large_uncertainty_in_lut(
E               table: ess.reduce.unwrap.types.LookupTable[ess.imaging.types.SampleRun, scippnexus.nxdetector.NXdetector],
E               error_threshold: ess.reduce.unwrap.types.LookupTableRelativeErrorThreshold,
E               component_name: ess.reduce.nexus.types.NeXusName[scippnexus.nxdetector.NXdetector],
E           ) -> ess.reduce.unwrap.types.ErrorLimitedLookupTable[ess.imaging.types.SampleRun, scippnexus.nxdetector.NXdetector]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report

View job log here


Test passed, nothing to report