# careless Scaling and merging of X-ray diffraction data with approximate Bayesian inference (variational merging), built on TensorFlow. - Upstream: https://github.com/rs-station/careless - License: MIT ## How it is built Upstream recommends a fresh conda env, but repo.anaconda.com is not reachable from Ra, so the build uses uv instead: it fetches a standalone Python 3.12 into `$PREFIX/python` (upstream supports >=3.9,<3.13), creates `$PREFIX/venv`, and runs `uv pip install careless[cuda]==` into it. The `[cuda]` extra pulls the NVIDIA libraries as pip wheels, so the same install works on GPU and CPU-only Ra nodes. `uv` must be on PATH on the build host (e.g. `pip install --user uv`). Loading the module puts the venv's `bin/` on `PATH` (the `careless` command is directly available, no activation needed) and sets `CARELESS_ENV` to the venv path. ## Verifying the install Run on a Ra login node after building (in order, cheap to expensive): ```sh # 1. module is visible and loads module search careless module load careless/ # 2. modulefile wiring: PATH + CARELESS_ENV which careless # -> .../careless//venv/bin/careless echo $CARELESS_ENV # -> .../venv # 3. venv is self-contained: must resolve inside the module PREFIX, # not the builder's home cache (which may be cleaned later) readlink -f "$CARELESS_ENV/bin/python" # 4. CLI entry point; imports the full TensorFlow stack careless --help # usage text, no traceback # 5. installed version matches the one requested "$CARELESS_ENV/bin/python" -c "import careless; print(careless.__version__)" # 6. GPU pickup (GPU node only; [] on a CPU node is fine) "$CARELESS_ENV/bin/python" -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))" ``` Optional end-to-end smoke test with a small unmerged mtz (a few seconds; proves the TF graph builds and the optimizer steps): ```sh careless mono dHKL /tmp/careless_test --iterations 10 ``` ## Adding a new version Add the version under `versions:` in `files/config.yaml`, then on a Ra login node: `modbuild build ` (modbuild/2.1.3).