Installation
mkprobes lives in its own repository (github.com/gofflab/mkprobes); the in-tree copy inside the fishtools repository is frozen legacy. Two supported setups: uv (Option A) or a conda/mamba environment (Option B). Both need the same external tools; Option B installs them for you from bioconda.
Requirements
OS: Linux/macOS recommended.
Python:
>=3.12(frompyproject.toml).External tools (needed on
PATHfor CLI probe design/prep; all available on bioconda):bowtie2jellyfish(bioconda packagekmer-jellyfish)gffreadRepeatMasker(optional; only used at final manifest assembly)
All commands in this documentation are written bare (mkprobes ...), assuming your environment is activated. Activate once per shell session as shown below.
Option A: install with uv
From the repository root:
uv sync
This creates/updates the project virtual environment and installs mkprobes with all Python dependencies. External tools must already be on PATH (e.g. via Homebrew, module system, or a separate conda env).
Activate the environment, then run commands directly:
source .venv/bin/activate
mkprobes --help
Option B: install with conda/mamba
The repository ships an environment.yml that builds one environment containing the Python package and the external tools (bowtie2, jellyfish, gffread) from bioconda. From the repository root:
mamba env create -f environment.yml
(conda env create -f environment.yml works identically, just slower to solve.) Then:
conda activate mkprobes
mkprobes --help
Notes:
Create the environment from the repository root — the package is installed editable (
pip: -e .), so the path is relative.RepeatMasker is commented out in
environment.yml(it is optional and pulls large repeat libraries); enable it there or add it later:mamba install -n mkprobes -c bioconda repeatmasker
After a
git pullthe editable install picks up code changes automatically; re-runmamba env update -f environment.ymlonly when dependencies change.
Verify installation
With your environment activated:
mkprobes --help
python -c "import mkprobes; print('mkprobes import OK')"
gffread --version && bowtie2 --version | head -1 && jellyfish --version
To run the test suite:
pip install -e ".[dev]"
pytest
HPC/cluster add-on guidance
Recommended pattern for cluster runs:
Build and test one environment interactively.
Freeze/package it for compute nodes.
Keep large intermediate outputs on node-local scratch, then copy final outputs to shared storage.
Practical tips:
Put reference dataset prep (
mkprobes prepareormkprobes ingest) in a shared, versioned location to avoid repeated downloads/indexing.Stage per-job output on local scratch (for high I/O steps) then sync back.
Cap thread/process settings to match scheduler allocation:
mkprobes prepare --threads <N>
Common install failures
ModuleNotFoundError: clickorloguru:You are likely outside the intended environment.
Activate it (
source .venv/bin/activateorconda activate mkprobes) and retry; re-runuv sync/mamba env update -f environment.ymlif it is stale.
mkprobes prepareormkprobes ingestfails on external binaries:Confirm
bowtie2,jellyfish, andgffreadare available inPATHon both login and compute nodes.