RapidNJ is an algorithmic engineered implementation of canonical neighbour-joining. It uses an efficient search heuristic to speed-up the core computations of the neighbour-joining method that enables RapidNJ to outperform other state-of-the-art neighbour-joining implementations. The RapidNJ method was originally presented in:

  • Rapid Neighbour Joining. Martin Simonsen, Thomas Mailund and Christian N. S. Pedersen. In Proceedings of the 8th Workshop in Algorithms in Bioinformatics (WABI), LNBI 5251, 113-122, Springer Verlag, October 2008. doi:10.1007/978-3-540-87361-7_10

Further development of RapidNJ has improved the search heuristic, decreased memory consumption and enabled the utilization of external memory. It also includes an efficient computation of distance estimators from input alignments. These improvements allow the current implementation of RapidNJ to handle very large datasets (50,000+ taxa) efficiently on a normal desktop computer. Papers describing these improvements are:


The latest version of RapidNJ is 2.3.2 (released on March 4, 2016). 

rapidnj-src-2.3.2.zip (distributed under the GPL v2 license)

The are also precompiled versions of the latest RapidNJ available for Linux, Windows and Mac (all in 32 and 64 bit versions). All contained in the zip-archive (released on March 4, 2016).


RapidNJ is also available as a plugin for CLC Workbench (can also be downloaded as RapidNJ.cpa).


RapidNJ has been developed and tested on Linux (Ubuntu version 8.10) running on an Intel Pentium compatible CPU. It has also been tested on OS X and Windows. Compiling RapidNJ requires gcc version 2.1 (or higher).


Unpack the source code:

$ unzip rapidnj-src-2.3.2.zip

Compile the program using the included Makefile (on some older systems it might be necessary to remove the flag '-flax-vector-conversions' from the makefile):

$ cd rapidNJ

$ make

After a succesful compilation the binary 'rapidnj' can be found in the subdirectory 'bin'. You can e.g. copy this binary to a directory in your search path for easier access.


Executing the binary 'rapidnj' with no arguments will produce a help message containing the syntaxt and a list of options. RapidNJ will accept two different input formats. Distance matrices in phylip format and alignments in stockholm format. The program can usually guess the input format, otherwise the -i option can be used to choose between different formats. Support for phylip formatted multiple alignments is also included but might not work with all methods for computation of distance matrices.

To infer a tree from an alignment in Stockholm format use the following command

$ rapidnj FILENAME -i sth

where FILENAME is the name of the file with the alignment.

The program will automatically switch between three different versions of the rapidNJ algorithm depending on the size of the tree and the amount of available memory. Several options are available to force a specific algorithm to be used.


Martin Simonsen, Bioinformatics Research Centre, Aarhus University