Quickstart ========== Prerequisites ------------- Install `uv `_ for dependency management:: curl -LsSf https://astral.sh/uv/install.sh | sh System packages required before ``uv sync``: * **GSL** (GNU Scientific Library) — required by ``fastemriwaveforms`` at build time * Arch/Manjaro: ``sudo pacman -S gsl`` * Ubuntu/Debian: ``sudo apt install libgsl-dev`` * **CUDA 12 toolkit** — required on the GPU cluster only Installation ------------ Dev machine (CPU only):: uv sync --extra cpu --extra dev GPU cluster (CUDA 12):: uv sync --extra gpu Usage ----- EMRI simulation (generates SNR + Cramér-Rao bounds):: uv run python -m master_thesis_code --simulation_steps N [--simulation_index I] [--log_level DEBUG] Bayesian inference (evaluate Hubble constant posterior):: uv run python -m master_thesis_code --evaluate [--h_value 0.73] SNR analysis only:: uv run python -m master_thesis_code --snr_analysis Running Tests ------------- :: # Dev machine (CPU only) — default uv run pytest -m "not gpu" # Cluster (GPU available) — runs everything uv run pytest # Fast subset only uv run pytest -m "not gpu and not slow" Building the Documentation -------------------------- :: uv run make -C docs html Then open ``docs/build/html/index.html`` in a browser. Development Workflow -------------------- Linting and formatting:: uv run ruff check --fix master_thesis_code/ # lint and auto-fix uv run ruff format master_thesis_code/ # format uv run mypy master_thesis_code/ # type check Pre-commit hooks run ruff and mypy automatically on every ``git commit``. To run all hooks manually:: uv run pre-commit run --all-files