This is meant to be a first step towards reproducible calibration. Specifically, given the work directory (containing the parameterised ipynb files) from a previous calibration run, we can re-run the notebooks with a specified target Python, optionally directing output to a new location. I think this will also be useful for testing, because it will be easy to prepare the plan of what work is to be done without launching it.
There are two main limitations in terms of reproducibility, which I hope to address in later MRs:
pip freeze
), but for now you have to create a suitable environment manually, and tell the 'repeat' machinery to use it.Open questions:
JobArgs
, Step
, JobGroup
classes for describing different levels of work to be done.--prepare
to do everything up to submitting the jobs, then you could be using the same thing to run it for the first time.steps.json
describing how to run the notebooks in the directory.requirements.txt
calibration_metadata.yml
Running commands on Maxwell. Run a correction:
xfel-calibrate AGIPD CORRECT \
--in-folder /gpfs/exfel/exp/SPB/202131/p900230/raw --run 174 \
--out-folder /gpfs/exfel/data/scratch/kluyvert/agipd-calib-900230-174-repro \
--karabo-id SPB_DET_AGIPD1M-1 --karabo-id-control SPB_IRU_AGIPD1M1 --karabo-da-control AGIPD1MCTRL00 \
--modules 0-4
Repeat it:
python3 -m xfel_calibrate.repeat \
/gpfs/exfel/data/scratch/kluyvert/agipd-calib-900230-174-repro/slurm_out_AGIPDOfflineCorrection \
--out-folder /gpfs/exfel/data/scratch/kluyvert/agipd-calib-900230-174-repro2