This code provides a library and example scripts to run null tests on the products of a Planck Data eXchange (DX).
This repository provides a library for interactive and serial usage:
differences.py
and a run script that can run either serially or in parallel:
run_null.py
run_null.py
requires a configuration file as argument, for example:
run_dx9_10deg.conf
which includes all the parameter for the run and also the path to the configuration for reading the maps from disk, in this case:
read_dx9.conf
Once the tests have been executed, the user can produce a HTML report using plancknull_generate_html, which is a separate program.
Input maps are read by a class that inherits from reader.BaseMapReader
that implements a __call__
method that given channel, frequency, survey, halfrings and requested polarization returns a map (typically either "I" or "IQU").
Therefore the first step with a new dataset is to implement a new reader.BaseMapReader
child class, or to
use the reader.DXReader with a file patters configuration files, for example read_dx9.conf
.
The differences.py
library provides 3 functions that create specific null tests, they read the maps thanks to the input reader object:
halfrings
: halfring differencessurveydiff
: survey differenceschdiff
: either channels or horn differences
Those functions can be used interactively, see their docstrings and the example script for reference.
In order to run all null tests serially, just set paral=False
and run python run_null.py run_dx9_10deg.conf
, this might take few hours, as about 380 maps are produced, the outputs will be stored in the output_folder
folder.
The code is trivially parallel, parallelization is achieved using ipython
cluster computing features.
See ipython
documentation for installing it, it requires to build libzmq
and install pyzmq
.
Once ipython
is installed, you can just:
- run
ipcontroller
on the login node - submit a pbs job which spawns a number of
ipengines
(seeipython
documentation) - open an
ipython
session on the login node (possibly insidescreen
) and then launchrun run_null.py run_dx9_10deg.conf
after settingparal=True
in the configuration file.