Installation

PyCCAPT requires Python >=3.9.

PyPI Installation (Online)

Default installation (core dependencies only):

pip install pyccapt

Install optional dependency groups:

pip install "pyccapt[calibration]"
pip install "pyccapt[control]"
pip install "pyccapt[full]"

[full] installs both control and calibration dependency sets.

Local Development Installation

From the project root:

pip install -e ".[full]"

Module-specific editable installs:

pip install -e ".[control]"
pip install -e ".[calibration]"

Faster Local Installs

The editable (-e) step itself is fast; the time goes into resolving and downloading dependencies. A few of the scientific dependencies are heavy to resolve or build:

  • numba pulls in llvmlite (a large binary). If your Python is newer than the latest numba supports, pip backtracks through many versions or tries to build llvmlite from source.

  • tables (PyTables) and h5py depend on the HDF5 C library and build from source when no matching wheel is available.

  • The dependencies are unpinned, so pip downloads metadata for many candidate versions to find a set that satisfies the numpy ranges that numba, tables, and h5py each require.

Options to speed this up:

  • Use uv, which resolves and downloads in parallel:

    uv pip install -e ".[full]"
    
  • Let conda provide the binaries, then install PyCCAPT without re-resolving them:

    conda install -c conda-forge numpy scipy pandas h5py pytables numba matplotlib
    pip install -e . --no-deps
    
  • Skip dependency resolution during iterative development, once the environment already has the dependencies:

    pip install -e . --no-deps
    
  • Keep pip current (older resolvers backtrack more slowly):

    python -m pip install --upgrade pip
    

Conda Installation

If PyCCAPT is available on your selected conda channel:

conda install -c conda-forge pyccapt

Build and install locally from this repository:

conda install -c conda-forge conda-build
conda build conda-recipe
conda install --use-local pyccapt

If you need both optional dependency sets in that environment:

pip install "pyccapt[full]"

You can also create predefined environments:

conda env create -f environment.yml
conda env create -f environment.full.yml

Running PyCCAPT Control

After installation:

pyccapt

Alternative entrypoint:

python -m pyccapt.control

Running Tutorials

Start JupyterLab:

jupyter lab

Then open notebooks under pyccapt/calibration/tutorials.

Testing

Run module-specific test suites:

pytest -q --run-calibration
pytest -q --run-control

Run all discoverable tests with currently installed optional dependencies:

pytest -q