DMSC Integration Testing

Last updated: September 25, 2026 08:04:50

Test: codeshelf|odin|run_notebooks|flight_path_calibration

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


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/5/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/5/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/5/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/5/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/5/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/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-417/codeshelf/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7f106add9d00>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-417/test_run_notebooks_flight_path0')

    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 0x7f106a2019a0>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T14... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': '72b1f668-402dfa97891c3bc9484d410c_1123748_93', 'msg_type': 'execute_reply', 'username': 'userna..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': '6d2e06c7-0cbb14e9c87c149ce91e3d66', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/5/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/5/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/5/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/5/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/5/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/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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

View job log here


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/3/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/3/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/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/3/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/3/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/3/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/3/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/3/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/3/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/3/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/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-406/codeshelf/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7f64158d1d00>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-406/test_run_notebooks_flight_path0')

    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:128: 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 0x7f6414c4e9f0>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T14... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': '5a1ed1db-9b6abe35ca49fe2ae2c314a7_1081104_93', 'msg_type': 'execute_reply', 'username': 'userna..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': '4d4a73bc-3c9a0c2e6dc6223fbd0b5af3', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/3/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/3/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/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/3/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/3/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/3/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/3/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/3/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/3/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/3/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/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/3/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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

View job log here


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/6/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/6/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/6/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/6/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/6/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/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-395/codeshelf/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7f4a2e6f9d00>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-395/test_run_notebooks_flight_path0')

    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:128: 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 0x7f4a2dafcfe0>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T13... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': 'f7f210d1-367b9b63984a69dd025cac5d_1039250_93', 'msg_type': 'execute_reply', 'username': 'userna..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': '836f0c49-c4e24ea963ebb1d2a15a63e9', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/6/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/6/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/6/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/6/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/6/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/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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

View job log here


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/1/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/1/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/1/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/1/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/1/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/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-383/codeshelf/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7fcb8a979d00>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-383/test_run_notebooks_flight_path0')

    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:104: 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 0x7fcb89d45a90>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T09... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': '3d1ebd51-378caf639b2d90fa57a82162_930815_97', 'msg_type': 'execute_reply', 'username': 'usernam..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': '8e67202d-1901d32653b5a8902173b3de', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/1/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/1/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/1/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/1/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/1/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/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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

View job log here


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/6/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/6/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/6/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/6/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/6/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/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-372/codeshelf/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7fc8c72ddd00>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-372/test_run_notebooks_flight_path0')

    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:104: 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 0x7fc8c66f97f0>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T09... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': 'aa99c806-dd4c4bdaba14ff2201fd2610_891531_97', 'msg_type': 'execute_reply', 'username': 'usernam..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': 'ade3efef-6c3591d7639f27b481ff373b', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/6/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/6/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/6/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/6/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/6/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/6/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/6/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/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/6/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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

View job log here


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#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:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#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/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/home/gitlab-runner/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/.pytest_cache/codeshelf/repo/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7ff03e87a2a0>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-361/test_run_notebooks_flight_path0')

    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:144: 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 0x7ff03e8ba3f0>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T07... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': '6c85b6ea-a10f897cca71b78864273ba1_847261_97', 'msg_type': 'execute_reply', 'username': 'usernam..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': '8b54a29c-b70392fe0e844d97f9bf9b90', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
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:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/0/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#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/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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

View job log here


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/5/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/5/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/5/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/5/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/5/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/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/home/gitlab-runner/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/.pytest_cache/codeshelf/repo/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7f06cc1322a0>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-355/test_run_notebooks_flight_path0')

    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:138: 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 0x7f06cbc43a10>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T07... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': '74dad220-1a7907c8af8c255579bcff46_807658_97', 'msg_type': 'execute_reply', 'username': 'usernam..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': 'a5e399fe-e84ca417063e0981ee1fc1bd', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/5/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/5/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/5/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/5/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/5/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/5/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/5/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/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/5/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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

View job log here


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

masked.hist().plot(aspect='equal', ignore_size=True)
------------------


#x1B[31m---------------------------------------------------------------------------#x1B[39m
#x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
#x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
#x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
#x1B[32m      2#x1B[39m 
#x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
#x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
#x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
#x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/1/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/1/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/1/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/1/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/1/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/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
#x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
#x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
#x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
#x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
#x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
#x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
#x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
#x1B[32m    348#x1B[39m     )
#x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
#x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
#x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
#x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
#x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
#x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)

#x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
#x1B[32m    684#x1B[39m val = val.squeeze()
#x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
#x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
#x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
#x1B[32m    688#x1B[39m     )
#x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val

#x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
In provider ess.reduce.nexus.workflow.to_disk_choppers(
    choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

.tox/codeshelf-odin/lib/python3.12/site-packages/nbclient/client.py:918: CellExecutionError
Full output
notebook = PosixPath('/home/gitlab-runner/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/.pytest_cache/codeshelf/repo/src/odin/notebooks/flight_path_calibration.ipynb')
run_codeshelf_notebook = <function _run_codeshelf_notebook at 0x7ffb53e28220>
tmp_path = PosixPath('/tmp/pytest-of-gitlab-runner/pytest-348/test_run_notebooks_flight_path0')

    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:138: 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 0x7ffb53e58260>
cell = {'cell_type': 'code', 'execution_count': 9, 'id': '13', 'metadata': {'execution': {'iopub.status.busy': '2026-09-22T07... 'source': "masked = wf.compute(CorrectedDetector[SampleRun])\n\nmasked.hist().plot(aspect='equal', ignore_size=True)"}
cell_index = 13
exec_reply = {'header': {'msg_id': '4b4f2b38-6d574e123e2c87da9fddd9f8_766560_97', 'msg_type': 'execute_reply', 'username': 'usernam..._10', 'msg_type': 'execute_request', 'username': 'username', 'session': 'bcca13f8-731c17b387e2449f591b6c71', ...}, ...}

    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           masked = wf.compute(CorrectedDetector[SampleRun])
E           
E           masked.hist().plot(aspect='equal', ignore_size=True)
E           ------------------
E           
E           
E           #x1B[31m---------------------------------------------------------------------------#x1B[39m
E           #x1B[31mDimensionError#x1B[39m                            Traceback (most recent call last)
E           #x1B[36mCell#x1B[39m#x1B[36m #x1B[39m#x1B[32mIn[9]#x1B[39m#x1B[32m, line 1#x1B[39m
E           #x1B[32m----> #x1B[39m#x1B[32m1#x1B[39m masked = wf.compute(CorrectedDetector[SampleRun])
E           #x1B[32m      2#x1B[39m 
E           #x1B[32m      3#x1B[39m masked.hist().plot(aspect=#x1B[33m'equal'#x1B[39m, ignore_size=#x1B[38;5;28;01mTrue#x1B[39;00m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/sciline/scheduler.py:140#x1B[39m, in #x1B[36mDaskScheduler.get#x1B[39m#x1B[34m(self, graph, keys, reporter)#x1B[39m
E           #x1B[32m    138#x1B[39m #x1B[38;5;28;01mwith#x1B[39;00m reporter.run_computation(graph.values()):
E           #x1B[32m    139#x1B[39m     #x1B[38;5;28;01mtry#x1B[39;00m:
E           #x1B[32m--> #x1B[39m#x1B[32m140#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    141#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    142#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/1/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/1/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/1/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/1/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/1/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/1/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/1/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/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/ess/reduce/nexus/workflow.py:588#x1B[39m, in #x1B[36mto_disk_choppers#x1B[39m#x1B[34m(choppers)#x1B[39m
E           #x1B[32m    585#x1B[39m         #x1B[38;5;28;01mcontinue#x1B[39;00m
E           #x1B[32m    587#x1B[39m     #x1B[38;5;66;03m# If there is no beam_position, we set it to 0 by default.#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m588#x1B[39m     disk_choppers[key] = #x1B[30;43mDiskChopper#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mfrom_nexus#x1B[39;49m#x1B[30;43m(#x1B[39;49m
E           #x1B[32m    589#x1B[39m #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;43m{#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mbeam_position#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m:#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43msc#x1B[39;49m#x1B[30;43m.#x1B[39;49m#x1B[30;43mscalar#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43m0.0#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43munit#x1B[39;49m#x1B[30;43m=#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mdeg#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;43m #x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43m*#x1B[39;49m#x1B[30;43mch#x1B[39;49m#x1B[30;43m}#x1B[39;49m
E           #x1B[32m    590#x1B[39m #x1B[30;43m    #x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    592#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m DiskChoppers[RunType](disk_choppers)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:352#x1B[39m, in #x1B[36mDiskChopper.from_nexus#x1B[39m#x1B[34m(cls, chopper)#x1B[39m
E           #x1B[32m    345#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m #x1B[38;5;167;01mNotImplementedError#x1B[39;00m(
E           #x1B[32m    346#x1B[39m         #x1B[33m'#x1B[39m#x1B[33mClass DiskChopper only supports single choppers,#x1B[39m#x1B[33m'#x1B[39m
E           #x1B[32m    347#x1B[39m         #x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot chopper type #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mtyp#x1B[38;5;132;01m}#x1B[39;00m#x1B[33m'#x1B[39m
E           #x1B[32m    348#x1B[39m     )
E           #x1B[32m    350#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m #x1B[33m"#x1B[39m#x1B[33mrotation_speed_setpoint#x1B[39m#x1B[33m"#x1B[39m #x1B[38;5;129;01min#x1B[39;00m chopper:
E           #x1B[32m    351#x1B[39m     #x1B[38;5;66;03m# `rotation_speed_setpoint` is preferred if available (ESS files)#x1B[39;00m
E           #x1B[32m--> #x1B[39m#x1B[32m352#x1B[39m     frequency = #x1B[30;43m_get_0d_variable#x1B[39;49m#x1B[30;43m(#x1B[39;49m#x1B[30;43mchopper#x1B[39;49m#x1B[30;43m,#x1B[39;49m#x1B[30;43m #x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43mrotation_speed_setpoint#x1B[39;49m#x1B[30;43m'#x1B[39;49m#x1B[30;43m)#x1B[39;49m
E           #x1B[32m    353#x1B[39m #x1B[38;5;28;01melse#x1B[39;00m:
E           #x1B[32m    354#x1B[39m     #x1B[38;5;66;03m# Fallback to `rotation_speed` (standard NeXus)#x1B[39;00m
E           #x1B[32m    355#x1B[39m     frequency = _get_0d_variable(chopper, #x1B[33m'#x1B[39m#x1B[33mrotation_speed#x1B[39m#x1B[33m'#x1B[39m)
E           
E           #x1B[36mFile #x1B[39m#x1B[32m~/builds/sr_srNBdt/1/dmsc-nightly/dmsc-nightly/.tox/codeshelf-odin/lib/python3.12/site-packages/scippneutron/chopper/disk_chopper.py:686#x1B[39m, in #x1B[36m_get_0d_variable#x1B[39m#x1B[34m(dg, name)#x1B[39m
E           #x1B[32m    684#x1B[39m val = val.squeeze()
E           #x1B[32m    685#x1B[39m #x1B[38;5;28;01mif#x1B[39;00m val.ndim != #x1B[32m0#x1B[39m:
E           #x1B[32m--> #x1B[39m#x1B[32m686#x1B[39m     #x1B[38;5;28;01mraise#x1B[39;00m sc.DimensionError(
E           #x1B[32m    687#x1B[39m         msg.format(name=name, got=#x1B[33mf#x1B[39m#x1B[33m'#x1B[39m#x1B[33mgot a #x1B[39m#x1B[38;5;132;01m{#x1B[39;00mval.ndim#x1B[38;5;132;01m}#x1B[39;00m#x1B[33md variable#x1B[39m#x1B[33m'#x1B[39m)
E           #x1B[32m    688#x1B[39m     )
E           #x1B[32m    689#x1B[39m #x1B[38;5;28;01mreturn#x1B[39;00m val
E           
E           #x1B[31mDimensionError#x1B[39m: Chopper field 'rotation_speed_setpoint' must be a scalar variable, got a 1d variable. See the chopper user-guide for more information: https://scipp.github.io/scippneutron/user-guide/chopper/processing-nexus-choppers.html
E           In provider ess.reduce.nexus.workflow.to_disk_choppers(
E               choppers: ess.reduce.nexus.types.RawChoppers[ess.imaging.types.SampleRun],
E           ) -> ess.reduce.nexus.types.DiskChoppers[ess.imaging.types.SampleRun]

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