72 lines
2.7 KiB
Markdown
72 lines
2.7 KiB
Markdown
# qfit
|
|
|
|
qFit 3 — automated multiconformer model building for X-ray
|
|
crystallography and cryo-EM (`qfit_protein`, `qfit_ligand`,
|
|
`qfit_covalent_ligand`, ...). 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
|
|
|
|
## Versions
|
|
|
|
- **2025.3** (Dec 2025) — current. Post-2024-paper qFit-ligand
|
|
(RDKit `-sm SMILES` route, `-em` flag). Python 3.12, solvers
|
|
cvxpy + pyscipopt (SCIP) declared in `install_requires` — no
|
|
CPLEX size cap. One extra: `cctbx-base` (structure I/O imports
|
|
iotbx/scitbx/cctbx/mmtbx but upstream lists it only in conda's
|
|
`environment.yml`; the PyPI manylinux_2_28 wheel works on Ra
|
|
RHEL8 — no conda involved, anaconda repo is unreachable from Ra).
|
|
- **3.2.2** (Aug 2022) — legacy, pre-paper qfit_ligand algorithm.
|
|
Python 3.10 (`numpy<1.22`), cvxopt + CPLEX Community Edition
|
|
pip-installed as extras. Last upstream tag with the `v` prefix —
|
|
its `urls:` is overridden per-version in `config.yaml`.
|
|
|
|
## How it is built
|
|
|
|
uv route (careless-style) from the sha-pinned GitHub tag tarball into
|
|
`$PREFIX/venv`. The small C extension (`_extensions.c`) builds with
|
|
the gcc/12.3.0 module (plain C, no gcc runtime dep). Both eras need
|
|
`SETUPTOOLS_SCM_PRETEND_VERSION` (`use_scm_version=True` but the
|
|
tarball has no `.git`). 3.x-only quirks (solver extras, `setuptools<81`
|
|
for the runtime `pkg_resources` import) are branched on `V_PKG` in
|
|
`build`; upstream fixed both by 2024.3.
|
|
|
|
**CPLEX caveat (3.x only)**: the pip `cplex` wheel is the IBM Community
|
|
Edition, limited to 1000 variables/constraints. 2024.3+ uses SCIP and
|
|
has no such cap.
|
|
|
|
`uv` must be on the build host (default `~/.local/bin/uv`, override
|
|
with `UV=/path/to/uv`).
|
|
|
|
## Building on Ra
|
|
|
|
```sh
|
|
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 \
|
|
2025.3
|
|
module use MX unstable && module load qfit/2025.3
|
|
```
|
|
|
|
## Verifying the install
|
|
|
|
```sh
|
|
which qfit_protein # -> .../qfit/2025.3/venv/bin/qfit_protein
|
|
qfit_protein --help # argparse usage, no traceback
|
|
qfit_ligand --help # should list -sm/--smiles (2024.3+)
|
|
"$QFIT_ENV/bin/python" -c "import qfit, iotbx, pyscipopt, cvxpy; 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 `<ver>.tar.gz` — tags have no `v` prefix since 2024), check
|
|
whether upstream relaxed the numpy pin further (may allow a newer venv
|
|
Python), then build as above.
|