Minimal bootstrap package for BSCCM image-to-image experiments.
Dependency model:
pyproject.tomldefines dependency intent.requirements*.lockpins exact versions and hashes for reproducible installs.
python3 -m venv .venv
. .venv/bin/activate
python -m pip install pip-tools
pip-sync requirements-dev.lock
bsccm-i2i --helpUse this path for normal setup. Do not run pip-compile unless you are updating dependencies.
If requirements-dev.lock is not present yet, use the editable install path below.
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[dev]"
# Verifies installed console entrypoint wiring
bsccm-i2i --help
# Verifies direct module execution/import path
python -m bsccm_i2i.cli.main --helpcd /Users/jignasupathak/Documents/job-search-2026-lol/bsccm-i2i
. .venv/bin/activatepython -m pip install build
python -m buildruff check src testsLint rules are configured in pyproject.toml under [tool.ruff.lint] and currently include:
E,F(pycodestyle/pyflakes basics)I(import sorting)UP(pyupgrade)B(bugbear)
If lint fails, first try auto-fixes:
ruff check src tests --fixpytest -qFor dataset auto-download via bsccm.download_dataset, Dryad may require a token.
- Create a local env file:
cp .env.example .env- Set your token in
.env:
BSCCM_DRYAD_TOKEN=your_token_herebsccm-i2i loads .env automatically at CLI startup.
Split-first workflow (required before train):
bsccm-i2i split
# Copy SPLIT_ID from command outputExample smoke run using auto-download:
bsccm-i2i train experiment=baseline_unet split.id=<SPLIT_ID> trainer=smoke data.num_workers=0Enable datamodule progress logs during setup/loading:
bsccm-i2i train experiment=baseline_unet split.id=<SPLIT_ID> trainer=smoke logging.data_progress=true data.num_workers=0Example smoke run with an existing local dataset path (no download):
bsccm-i2i train experiment=baseline_unet split.id=<SPLIT_ID> trainer=smoke data.root_dir=/ABS/PATH/TO/BSCCM-tiny data.num_workers=0python -m pip install pip-tools
pip-compile pyproject.toml --generate-hashes -o requirements.lockRun these only when dependencies change in pyproject.toml, then commit updated lock files.