https://github.com/zonca/plancknull
https://github.com/zonca/plancknull
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/zonca/plancknull
- Owner: zonca
- Created: 2012-08-14T21:06:22.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2014-08-01T02:04:26.000Z (almost 12 years ago)
- Last Synced: 2025-03-02T23:41:27.951Z (over 1 year ago)
- Language: Python
- Size: 1.94 MB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Null tests library for Planck
=============================
This code provides a library and example scripts to run
null tests on the products of a Planck Data eXchange (DX).
Overview
--------
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](https://github.com/ziotom78/plancknull_generate_html),
which is a separate program.
Library
-------
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 differences
* `surveydiff`: survey differences
* `chdiff`: either channels or horn differences
Those functions can be used interactively, see their docstrings and the example script for reference.
Serial usage
------------
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.
Parallelization
---------------
The code is trivially parallel, parallelization is achieved using `ipython` cluster computing features.
See [`ipython` documentation](http://ipython.org/ipython-doc/stable/install/install.html#dependencies-for-ipython-parallel-parallel-computing) 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` (see `ipython` documentation)
* open an `ipython` session on the login node (possibly inside `screen`) and then launch `run run_null.py run_dx9_10deg.conf` after setting `paral=True` in the configuration file.