PolyA may be consumed as an ordinary Python package and installed using the Pip tool:

pip install polyA

# Outside of a Virtual Environment, install as a user
# package, which doesn't require root.
pip install -U polyA


It is possible to run PolyA as a Docker container. This is simpler to install as it includes all required Python code and runtime dependencies.

The container image is on Docker Hub. See the README there for instructions on running it.

Runtime Dependencies


PolyA internally adjusts alignment scores to account for the scale multiplier implicit to each score matrix (the so-called lambda` value). Unless the lambda value is given in the matrix file, PolyA must compute it; this is done using the esl_scorematrix utility found in the Easel software package.

To prepare that tool, follow these steps:

# get source code
cd $HOME/git  # or wherever you like to place repositories
git clone
cd easel
gcc -g -Wall -I. -L. \
    -o esl_scorematrix \
    esl_scorematrix.c \
    -leasel -lm

# add the easel directory to your path, e.g.
export PATH=$HOME/git/easel:$PATH
# you may wish to add this to your path permanently, e.g.

# alternatively, you can set the --easel-path argument to $HOME/git/easel


PolyA can optionally include tandem repeat annotations from ULTRA as competitors in the adjudication process. Options are:

(i) If you have an ultra annotation output on hand for the sequence being annotated, reference the ultra output file with the –ultra-data flag. For example:

polyA --ultra-data ultra.file ALIGNMENTS MATRICES

(ii) If you wish to run ULTRA on the fly, you’ll need the software:

cd $HOME/git  # or wherever you like to place repositories
git clone ultra
cd ultra
cmake .

After that, you’ll reference the ultra binary in the PolyA command:

polyA --ultra-path $HOME/git/ultra/ultra \
      --sequences seq.fasta  ALIGNMENTS MATRICES