Installation

System requirements

Software dependency

  • python >= 3.10 (raised in v1.0.9; 3.9 is EOL and the networkx>=3.3 dependency requires >=3.10)

  • numpy >= 1.22.0

  • gffutils >= 0.10.1

  • biopython>=1.76

  • parasail>=1.2.4

  • intervaltree>=3.1.0

  • networkx>=3.3

  • interlap>=0.2.6

  • miniprot >= 0.10.0 (external binary — see below)

  • minimap2 >= 2.17 (external binary — see below)

  • pyfaidx>=0.5.8

  • pysam>=0.19.1

  • ujson>=3.2.0

  • duckdb>=1.0,!=1.5.3,!=1.5.4

  • pyarrow>=14

  • mappy (optional; install lifton[native] or a prebuilt Conda package)

Pip resolves LiftOn's Python dependencies. It does not install the external minimap2 and miniprot executables. Fresh standard lifts require both on PATH: minimap2 supplies Liftoff's DNA alignment and miniprot supplies protein alignment. LiftOn checks the tools it will use before starting a run. Evaluation and valid precomputed -L/-M inputs do not require the corresponding aligner. Install the executables through Conda as shown below, or follow their upstream minimap2 and miniprot installation guides.

Version warning

LiftOn requires Python >= 3.10 (v1.0.9 raised the floor from 3.6 to 3.10; 3.9 is EOL and the networkx>=3.3 dependency requires >=3.10).

DuckDB 1.5.3 and 1.5.4 have an upstream GEOMETRY append bug that can affect large --stream miniprot results. Pip will avoid those releases. In an existing environment, use DuckDB 1.5.2 or set LIFTON_DISABLE_RTREE=1; LiftOn's results are unchanged because region queries fall back to the standard B-tree index.

A target containing any sequence at least 2^31 bases long requires miniprot >= 0.14. LiftOn v1.0.12 fails preflight for a parseable older version rather than risk the known long-sequence limitation. Other targets retain the general miniprot >= 0.10 minimum.

Check out the scientific python ecosystem coordination guideline SPEC 0 — Minimum Supported Versions to configure the package version compatibility.

Compiled Python dependencies and macOS

Dependencies such as parasail, pysam, duckdb and pyarrow contain compiled code. Wheels are available on common Linux platforms. When a wheel is unavailable, particularly on macOS / Apple Silicon, use prebuilt Conda packages rather than relying on a local source build:

$ conda create -n lifton -y --override-channels -c conda-forge -c bioconda \
      --strict-channel-priority python=3.11 pip numpy biopython \
      parasail-python pysam pyfaidx gffutils intervaltree interlap \
      networkx ujson 'python-duckdb>=1.0,!=1.5.3,!=1.5.4' 'pyarrow>=14' \
      minimap2 miniprot
$ conda activate lifton
$ python -m pip install lifton

The vendored gffbase backend runs pure-Python by default (no pre-built .so ships in the package), so no Rust toolchain is required to install or run LiftOn.


There are three ways that you can install LiftOn:

Install through pip

Install the Python runtime from PyPI, then install the two external aligners. Activate the intended environment first:

$ python -m pip install lifton
$ conda install --override-channels -c conda-forge -c bioconda \
      --strict-channel-priority minimap2 miniprot
$ minimap2 --version
$ miniprot --version
$ lifton -V

Optional experimental mappy binding

Standard runs and --native compatibility hooks do not require mappy. Only --native together with LIFTON_NATIVE_LIFTOFF_ALIGN=1 activates the experimental in-process Liftoff alignment path. To supply its optional binding:

$ python -m pip install 'lifton[native]'

Mappy often builds from source, requiring a C compiler and zlib development headers (for example, build-essential and zlib1g-dev on Debian/Ubuntu). These build tools are unnecessary for a standard LiftOn install on a platform with wheels for its compiled dependencies. A prebuilt alternative is:

$ conda install --override-channels -c conda-forge -c bioconda \
      --strict-channel-priority mappy

Installing mappy does not install the miniprot executable or activate the experimental path. If the binding is absent, an explicitly requested path falls back to subprocess minimap2 with a warning; minimap2 must then be available.


Install through conda

A bioconda recipe for LiftOn has been submitted and is under review. Once it is merged, the command below will install LiftOn together with all of its dependencies:

$ conda create -n lifton --override-channels -c conda-forge -c bioconda \
      --strict-channel-priority python=3.11 lifton
$ conda activate lifton

The recipe includes prebuilt mappy, minimap2 and miniprot. Check the available LiftOn version before relying on this command; a submitted recipe is not yet an installable channel package.


Install from source

You can also install LiftOn from source. Check out the latest version on GitHub !

$ git clone https://github.com/Kuanhao-Chao/LiftOn

$ cd LiftOn
$ python -m pip install .

Seqera Containers / Wave

A pip-only container installs Python packages but lacks the aligner executables. For a complete standard environment, select Conda Python, minimap2 and miniprot, plus pip LiftOn. Pin Python explicitly instead of accepting Wave's latest default. The equivalent environment specification for the packaging release is:

channels:
  - conda-forge
  - bioconda
dependencies:
  - python=3.11
  - pip
  - minimap2
  - miniprot
  - pip:
      - lifton==1.0.14

Use the v1.0.14 pin after its PyPI publication. v1.0.13 already excludes mappy from a standard pip install; v1.0.12 and older can require GCC/zlib headers. Once the updated Bioconda recipe is published, use Conda lifton=1.0.14 instead of the pip subsection. No compiler package is needed to install its prebuilt dependencies.

Check lifton -V, minimap2 --version and miniprot --version in the container, then execute a representative lift. Help output alone does not confirm that an annotation container is ready. Retain Wave's build report, environment lockfile and image digest with workflow results.


Check LiftOn installation

Run the following command to make sure LiftOn is properly installed:

$ lifton -h

Now, you are ready to go !

Please continue to the Quick Start Guide.