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>.
- Upstream: https://github.com/ExcitedStates/qfit-3.0
- License: MIT
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=Truebut the tarball has no.git→SETUPTOOLS_SCM_PRETEND_VERSION=<version>is exported for the build.- MIQP solvers are only listed in upstream's conda
environment.yml, not ininstall_requires→cvxoptandcplexare pip-installed explicitly. logtools.pyimportspkg_resourcesat runtime but upstream never declares setuptools (conda/virtualenv always shipped it, uv venvs don't) — and setuptools ≥81 removedpkg_resourcesentirely →setuptools<81is 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.