There are 3 ways to use craw: * by install the standalone python scripts * by using docker image * by using singularity image

CRAW installation


For craw_coverage

  • python >= 3.5

  • pysam >= 0.15.2

For craw_htmp

  • python >= 3.5

  • pysam == 0.15.2

  • pandas >= 0.24

  • numpy >= 1.16

  • matplotlib >= 3.0

  • pillow >= 5.4

  • scipy >= 0.16.1


Installation from package

Using pip

pip install craw

Do not forget to configure the matplotlib backend, specially if you use virtualenv. Otherwise on some platform there won’t any output. See matplotlib configuration for more explanation.


On MacOS install python > 3 from image on . Then install craw using pip

pip3 install craw

craw will be installed in /Library/Framework/Python.Framework/Version/3.6/ So if you want to use directly craw_coverage and craw_htmp just create a symbolic linc like this:

ln -s /Library/Framework/Python.Framework/Version/3.6/bin/craw_coverage /usr/local/bin/craw_coverage
ln -s /Library/Framework/Python.Framework/Version/3.6/bin/craw_htmp /usr/local/bin/craw_htmp

The documentation (html and pdf) is located in /Library/Framework/Python.Framework/Version/3.6/share/craw/

Installation from repository

To get the last version, clone the project and install with the

git clone
cd craw
pip install .


Instead of installing craw you can directly use the scripts from the repository. You can also use the package without installing it. To do this, you have to export the CRAW_HOME environment variable. CRAW_HOME must point to the src directory of the project. Then you can use craw_coverage and craw_htmp scripts located in bin directory.

This project is documented using sphinx. So if you use a clone, you have to generate the documentation from the source.

The project come from with some unit and functional tests. to test if everything work fine.

cd $CRAW_HOME python3 tests/ -vvv

matplotlib configuration

matplotlib is a python library to create graphics. craw_htmp use this library to generate heat map. The two parameters to configure for craw is:

  • the backend

  • figure.dpi


matplolib lay on low level graphic library of youre computer. This library will determine the graphical formats manage by matplotlib and then by craw_htmp. Most of backend handle png but some library like Qt can handle ‘jpeg’, ‘eps’, pdf

In your matplolibrc file you must define the backend for instance to use Qt5

backend: qt5agg

An example of matplolibrc file and all supported backend is available here:


It’s not an essential option but matplolib and craw_htmp will produce better graphic (on screen) if you configure matplotlib to the native resolution of your screen. To know the resolution of your screen you can visit the following page and report the resolution (for 1 inch) in matplotlibrc file like:

figure.dpi: 96

For full explanation on how to configure matplotlib read

Using Docker Image

Docker images are available. The two scripts are accessible through the sub-command coverage or htmp. For instance to use the latest version of craw_htmp:

docker pull c3bi/craw
docker run -v$PWD:/root -it c3bi/craw coverage --bam foo.bam --annot foo.annot --ref-col 'Position' --before 3 --after 5 --out foo.cov
docker run -v$PWD:/root -it c3bi/craw htmp --size raw --out foo.png  foo.cov


In docker the interactive htmp output is not available. So you must specify the –out option

Using Singularity Image

Singularity images are available. The two scripts are accessible through the sub-command coverage or htmp. For instance to use the latest version of craw_htmp:

singularity pull --name craw shub://c3bi/craw
./craw coverage --bam foo.bam --annot foo.annot --ref-col 'Position' --before 3 --after 5 --out foo.cov
./craw htmp --size raw --out foo.png  foo.cov


instead of Docker images, in Singularity images the interactive output is available.