Files
MX_Pmodule/qfit/README.md
T
2026-09-01 11:11:03 +02:00

2.1 KiB

qfit

qFit 3 — automated multiconformer model building for X-ray crystallography and cryo-EM (qfit_protein, qfit_ligand, qfit_covalent_ligand, edia, ...). Repo is named qfit-3.0; module follows the name/version rule as qfit/<version>.

How it is built

uv route (careless-style) from the sha-pinned GitHub tag tarball into $PREFIX/venv, Python 3.10 (upstream pins numpy<1.22, which has no 3.11+ wheels). The small C extension builds with the gcc/12.3.0 module (plain C, no gcc runtime dep). Upstream quirks the recipe handles:

  • use_scm_version=True but the tarball has no .gitSETUPTOOLS_SCM_PRETEND_VERSION=<version> is exported for the build.
  • MIQP solvers are only listed in upstream's conda environment.yml, not in install_requirescvxopt and cplex are pip-installed explicitly.

CPLEX caveat: the pip cplex wheel is the IBM Community Edition, limited to 1000 variables/constraints. Large residues/ligands may hit the cap; the fix is a full academic CPLEX install into the venv (https://www.ibm.com/academic/) — documented by upstream.

uv must be on the build host (default ~/.local/bin/uv, override with UV=/path/to/uv).

Building on Ra

module use unstable && module load modbuild/2.1.3
cd qfit
modbuild build \
    --tmpdir=/das/work/p21/p21515/.cache/Pmodules \
    --distdir=/das/work/p21/p21515/.cache/Pmodules \
    3.2.2
module use MX unstable && module load qfit/3.2.2

Verifying the install

which qfit_protein                     # -> .../qfit/3.2.2/venv/bin/qfit_protein
qfit_protein --help                    # argparse usage, no traceback
"$QFIT_ENV/bin/python" -c "import qfit, cplex, cvxopt; print(qfit.__version__)"

The post-refinement scripts (qfit_final_refine_xray.sh) call phenix: module load phenix before using them.

Adding a new version

Add version + tarball sha256 in files/config.yaml (sha256sum the downloaded v<ver>.tar.gz), check whether upstream unpinned numpy/pandas (a newer pin may allow a newer venv Python), then build as above.