Offline Calibration =================== The offline calibration is a package that consists of different services, responsible for applying most of the offline calibration and characterization for the detectors. Offline calibration installation ================================ It's recommended to install the offline calibration (pycalibration) package over maxwell, using anaconda/3 environment. Installation using Anaconda --------------------------- First you need to load the anaconda/3 environment through:: 1. module load anaconda/3 If installing into other python enviroments, this step can be skipped. Then the package for the offline calibration can be obtained from the git repository:: 2. git clone https://git.xfel.eu/gitlab/detectors/pycalibration.git You can then install all requirements of this tool chain in your home directory by running:: 3. pip install -r requirements.txt . --user in pycalibration's root directory. After installation, you should make sure that the home directory is in the PATH environment variable:: 4. export PATH=$HOME/.local/bin:$PATH Installation using virtual python environment --------------------------------------------- Create virtual environment:: module load anaconda/3 python -m venv /path/to/new/virtual/environment source /path/to/new/virtual/environment/bin/activate Clone from git:: cd /path/to/packages git clone https://git.xfel.eu/gitlab/detectors/pycalibration.git cd pycalibration Install the package:: pip install -r requirements.txt In additional install pyDetLib package, which is required for many notebooks:: cd /path/to/packages git clone https://git.xfel.eu/gitlab/karaboDevices/pyDetLib.git cd pyDetLib/lib pip install -r requirements.txt pip install . ++++++++++++++++++++++++++++++++++++++++++++++++++ Setting an ipython kernel for virtual environments ++++++++++++++++++++++++++++++++++++++++++++++++++ To set a kernel for your virtual environment:: source /path/to/new/virtual/environment/bin/activate pip install ipykernel python -m ipykernel install --user --name <virtenv-name> --display-name "virtenv-display-name" This can be useful for Jupyter notebook tools as "max-jhub.desy.de". Development Installation ------------------------ For a development installation, which automatically picks up (most) changes, first install the dependencies as above, but then install the tool-chain separately in development mode (install in home directory using --user, in case of using Anaconda/3):: pip install -e . Activate Offline calibration ============================ For using pycalibration package one needs to activate it through:: source activate from inside of the pycalibration directory. This will automatically load all needed modules and export the $PATH for the home directory. Python Scripted Calibration =========================== First: do not run this on the Maxwell gateway. Rather, `salloc` a node for yourself first:: salloc -p exfel/upex -t 01:00:00 where `-p` gives the partition to use: exfel or upex and `-t` the duration the node should be allocated. Then `ssh` onto that node. (optionally) Set up the environment:: module load python3 pip install --user ipython --upgrade pip install --user ipyparallel --upgrade pip install --user dill If running headless (i.e. without X forwarding), be sure to set `MPLBACKEND=Agg`, via:: export MPLBACKEND=Agg Then start an `ipcluster`. If you followed the steps above this can be done via:: ~/.local/bin/ipcluster start --n=32 Run the script:: python3 calibrate.py --input /gpfs/exfel/exp/SPB/201701/p002012/raw/r0100 \ --output ../../test_out --mem-cells 30 --detector AGIPD --sequences 0,1 Here `--input` should point to a directory of `RAW` files for the detector you are calibrating. They will be output into the folder specified by `--output`, which will have the run number or the last folder in the hiearchy of the input appended. Additionally, you need to specify the number of `--mem-cells` used for the run, as well as the `--detector`. Finally, you can optionally specify to only process certain `--sequences` of files, matching the sequence numbers of the `RAW` input. These should be given as a comma-separated list. Finally, there is a `--no-relgain` option, which disables relative gain correction. This can be useful while we still further characterize the detectors to provid accurate relative gain correction constants. You'll get a series of plots in the output directory as well.