From f748558fe498a0c437e5cfc2285e007cfc8e6c89 Mon Sep 17 00:00:00 2001 From: Dawn Date: Wed, 2 Sep 2026 10:02:19 +0200 Subject: [PATCH] update qfit to include missing package --- qfit/README.md | 7 +++++-- qfit/build | 10 +++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/qfit/README.md b/qfit/README.md index 13f6df7..695b555 100644 --- a/qfit/README.md +++ b/qfit/README.md @@ -13,7 +13,10 @@ follows the name/version rule as `qfit/`. - **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 - extras, no CPLEX size cap. + 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 — @@ -54,7 +57,7 @@ module use MX unstable && module load qfit/2025.3 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, pyscipopt, cvxpy; print(qfit.__version__)" +"$QFIT_ENV/bin/python" -c "import qfit, iotbx, pyscipopt, cvxpy; print(qfit.__version__)" ``` The post-refinement scripts (`qfit_final_refine_xray.sh`) call phenix: diff --git a/qfit/build b/qfit/build index 3972e99..36268ba 100755 --- a/qfit/build +++ b/qfit/build @@ -8,7 +8,10 @@ # (>=81 removed pkg_resources entirely). # - 2024.3+ : numpy relaxed to <2 -> Python 3.12; solvers switched to # cvxpy+pyscipopt and moved into install_requires (no CPLEX size cap); -# pkg_resources import removed -> no extras needed at all. +# pkg_resources import removed. BUT structure I/O now imports +# iotbx/scitbx/cctbx/mmtbx, and cctbx-base is only in environment.yml, +# not install_requires (same conda-only trap as the old solvers) +# -> pip cctbx-base explicitly (manylinux_2_28 wheel, Ra RHEL8 = glibc 2.28). # - both eras: use_scm_version needs git metadata the tarball lacks # -> SETUPTOOLS_SCM_PRETEND_VERSION @@ -38,9 +41,14 @@ pbuild::install() { # cplex is the IBM Community Edition pip wheel (problem-size limited); # full CPLEX needs an academic license, see README. 3.*) extras=('setuptools<81' cvxopt cplex) ;; + # cctbx-base: conda-only dep upstream forgot in install_requires; + # PyPI wheel (not conda - anaconda repo is unreachable from Ra) + *) extras=(cctbx-base) ;; esac "$UV" pip install --python "$PREFIX/venv/bin/python" \ "${extras[@]}" "$SRC_DIR" || \ std::die 42 "qfit install failed - check build log above" [[ -x "$PREFIX/venv/bin/qfit_protein" ]] || std::die 42 "qfit_protein missing from venv" + # full import chain (hits iotbx, solvers, ...) - catches forgotten runtime deps at build time + "$PREFIX/venv/bin/python" -c "import qfit" || std::die 42 "qfit import failed - missing runtime dep?" }