Skip to content
Snippets Groups Projects
README.rst 4.51 KiB
Newer Older
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
================================

Karim Ahmed's avatar
Karim Ahmed committed
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 .

Karim Ahmed's avatar
Karim Ahmed committed
++++++++++++++++++++++++++++++++++++++++++++++++++
Setting an ipython kernel for virtual environments
++++++++++++++++++++++++++++++++++++++++++++++++++
Karim Ahmed's avatar
Karim Ahmed committed

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
------------------------

Karim Ahmed's avatar
Karim Ahmed committed
For a development installation, which automatically
picks up (most) changes, first install the dependencies as above,
Karim Ahmed's avatar
Karim Ahmed committed
but then install the tool-chain separately in development mode (install in home directory using --user, in case of using Anaconda/3)::
Karim Ahmed's avatar
Karim Ahmed committed
   pip install -e .

Activate Offline calibration
============================

For using pycalibration package one needs to activate it through::

    source activate

Karim Ahmed's avatar
Karim Ahmed committed
from inside of the pycalibration directory. This will automatically load 
all needed modules and export the $PATH for the home directory.

Karim Ahmed's avatar
Karim Ahmed committed

Steffen Hauf's avatar
Steffen Hauf committed
Python Scripted Calibration
===========================

First: do not run this on the Maxwell gateway. Rather, `salloc`
Steffen Hauf's avatar
Steffen Hauf committed
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::

Steffen Hauf's avatar
Steffen Hauf committed
   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::
Steffen Hauf's avatar
Steffen Hauf committed

   export MPLBACKEND=Agg

Steffen Hauf's avatar
Steffen Hauf committed
Then start an `ipcluster`. If you followed the steps above this can be done
via::

   ~/.local/bin/ipcluster start --n=32
Steffen Hauf's avatar
Steffen Hauf committed


Run the script::

Steffen Hauf's avatar
Steffen Hauf committed
    python3 calibrate.py --input /gpfs/exfel/exp/SPB/201701/p002012/raw/r0100 \
Steffen Hauf's avatar
Steffen Hauf committed
       --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.

Steffen Hauf's avatar
Steffen Hauf committed
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.

Steffen Hauf's avatar
Steffen Hauf committed
You'll get a series of plots in the output directory as well.