The inverse tandem duplication random loss (iTDRL) genome rearrangement duplicates and inverts a continuous segment of a given gene order followed by the random loss of one of the redundant copies of each gene. The iTDRL rearrangement has currently been proposed by several authors suggesting it to be an possible mechanisms of mitochondrial gene order evolution.

Here we present the algorithm SBiTDRL that calculates a shortest rearrangement scenario that transforms one given gene order into another given gene order. In addition, it calculates the minimum number of iTDRLs in such a transformation. The algorithm runs in quasilinear time with respect to the total number of genes in the given gene orders.

Algorithm SBiTDRL is implemented in C++ and does not have any dependency.


Tom Hartmann, Max Bannach, Martin Middendorf
Sorting Signed Permutations by Inverse Tandem Duplication Random Losses
IEEE/ACM Trans Comput Biol Bioinform. 2021 Nov-Dec;18(6):2177-2188.

SPiTDRL Downloads

SPiTDRL can be downloaded here.


  1. Download SPiTDRL
  2. Extract SPiTDRL.tar.gz (tar -zxvf SPiTDRL.tar.gz)
  3. If no Linux distribution is used compile the SPiTDRL source code using the given Makefile. Otherwise, no further installation is needed.

SPiTDRL is executed from the command line using:

./SPiTDRL -f <input file> [options]

Use -h for more information.

The options of SPiTDRL are:

  • -f: fasta file containing (possibly multiple) gene orders,
  • -d: print only a table with iTDRL distances,
  • -h: prints help message, where -f is a required argument.

For testing whether or not SPiTDRL is installed correctly enter:

  1. ./SPiTDRL -f example.fas or
  2. ./SPiTDRL -f example.fas -d.

The first command produces two minimum length scenarios of iTDRL rearrangements that transform the given gene orders Start and Target (see example.fas) into each other.
The second command produces a table illustrating the iTDRL distances of the given gene orders Start and Target, i. e., the minimum numbers of iTDRLs necessary for such transformations.
The expected output is given in the README file.

Feel free to send bug reports or any other kind of impressions or suggestions on SPiTDRL to

[enable JavaScript]