Installation

SciNumTools v3 can be installed in several ways, depending on how it is intended to be used. Python users can install the Python bindings directly from PyPI or Conda, while C++ users can use vcpkg, Conan, Homebrew, or build the library directly from source.

For most users, installing a pre-built package is recommended. Building from source is useful when developing SciNumTools itself, requiring specific build options, or integrating a development version of the library.

Python

The Python bindings are available as a regular Python package on PyPI:

pip install scinumtools3

SciNumTools is also available through conda-forge:

conda install conda-forge::scinumtools3

After installation, the Python interface can be imported directly:

from scinumtools3.puq import Quantity
from scinumtools3.dip import DIP

C++

For C++ projects, SciNumTools can be installed using several package managers, including vcpkg and Conan.

vcpkg

SciNumTools is available as a vcpkg package:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg

./bootstrap-vcpkg.sh

./vcpkg install scinumtools3

On Windows, use bootstrap-vcpkg.bat instead of bootstrap-vcpkg.sh.

Conan

SciNumTools can also be created as a local Conan package directly from the source repository:

git clone --recurse-submodules https://github.com/vrtulka23/scinumtools3.git
cd scinumtools3

conan create .

macOS / Homebrew

On macOS, SciNumTools can be installed using the project Homebrew tap:

brew tap vrtulka23/tap
brew install scinumtools3

Building from Source

SciNumTools is built using CMake and requires a C++17-compatible compiler. Building from source provides full access to the C++ library, command-line applications, tests, and other components of the project.

With DIP enabled (the default), install HDF5 development headers and the HDF5 C library before configuring. The HDF5 C++ library is not required. If HDF5 is installed outside the standard search paths, pass its installation prefix as -DHDF5_ROOT=/path/to/hdf5 when running CMake. The commands below also require the Ninja build tool.

Clone the repository with its submodules and configure the build. The briefpp submodule provides the header-only renderer for DIP reports. Alternatively, set SNT_BRIEFPP_INCLUDE_DIR to a directory containing briefpp/report.hpp. The cpp-httplib submodule provides the optional REST server. Alternatively, install cpp-httplib 0.46.0 or newer and set SNT_HTTPLIB_INCLUDE_DIR to its header directory. Builds with -DENABLE_SNT_SERVER=OFF do not need cpp-httplib.

git clone --recurse-submodules https://github.com/vrtulka23/scinumtools3.git
cd scinumtools3

cmake -G Ninja -B build
cmake --build build

The test suite can then be executed using CTest:

ctest --test-dir build

Finally, install the compiled library and associated components:

cmake --install build

Using the Setup Script

The repository also provides a convenience setup script for building, testing, and installing SciNumTools:

sudo ./setup.sh -b -t -i

Here -b builds the project, -t runs the tests, and -i installs the resulting components.

Using SciNumTools from CMake

Once installed, SciNumTools can be discovered from another CMake project using find_package:

find_package(snt REQUIRED)

Individual SciNumTools modules can then be linked to an executable:

add_executable(${EXEC_NAME} ${SOURCE_FILES})

target_link_libraries(
    ${EXEC_NAME}
    PRIVATE
    snt-exs
    snt-puq
    snt-dip
)

This modular approach allows an application to link only the SciNumTools components it requires.

Choosing an Installation Method

The recommended installation method depends on the intended use:

  • Python application: install scinumtools3 from PyPI or Conda.

  • C++ application: use vcpkg, Conan, Homebrew, or a system installation.

  • SciNumTools development: build directly from source.

  • Reproducible development environment: use the Docker integration.

After installation, continue with Quick Start to start using SciNumTools.