Skip to main content

Python wrapper around Dakota

Project description

Carolina

License PyPI - Python Version PyPI version Platform

Carolina is a pyDAKOTA fork maintained by Equinor. Its raison d'être is to have easier building of a Python Dakota wrapper, without any MPI support. Carolina supports Python version 3.11, 3.12

Installation

For Linux and MacOS:

pip install carolina

Otherwise, build Carolina youself as described below.

Building and installing Carolina

In order to build Carolina, Boost, including Boost.Python, and Dakota must be installed. This requires CMake and a C/C++ compiler. It is recommended to check the build scripts at .github/workflows/bundle_with_dakota_* where the full installation is described. The installation will likely vary across different operating systems. Roughly speaking, the following steps must be done:

  1. Install CMAKE

  2. Install Boost with correct python version (NOTE: you may need to edit the python version into the project-config.jam if on MacOS, see the excerpt from the MacOS install script below)

    python_version=$(python --version | sed -E 's/.*([0-9]+\.[0-9]+)\.([0-9]+).*/\1/')
    python_bin_include_lib="    using python : $python_version : $(python -c "from sysconfig import get_paths as gp; g=gp(); print(f\"$(which python) : {g['include']} : {g['stdlib']} ;\")")"
    sed -i '' "s|.*using python.*|$python_bin_include_lib|" project-config.jam
    
  3. Install dakota

    • after downloading, replace <DAKOTA_VERSION> with the dakota version, for example 6.18
    • In order to install Dakota to a specific folder, use -DCMAKE_INSTALL_PREFIX="<INSTALL_DIR>" as part of the cmake invocation.
    cd dakota-<DAKOTA_VERSION>-public-src-cli
    mkdir -p build
    cd build
    cmake \
        -DCMAKE_CXX_STANDARD=14 \
        -DBUILD_SHARED_LIBS=ON \
        -DDAKOTA_PYTHON_DIRECT_INTERFACE=ON \
        -DDAKOTA_PYTHON_DIRECT_INTERFACE_NUMPY=ON \
        -DDAKOTA_DLL_API=OFF \
        -DHAVE_X_GRAPHICS=OFF \
        -DDAKOTA_ENABLE_TESTS=OFF \
        -DDAKOTA_ENABLE_TPL_TESTS=OFF \
        -DCMAKE_BUILD_TYPE='Release' \
        -DDAKOTA_NO_FIND_TRILINOS:BOOL=TRUE \
        ..
    make -j4 install
    

    This step is the one that might be the most tricky to get working on your local OS. It expects a number of packages to be found, including libgfortran, eigen, lapack, numpy, and for the appropriate libraries to be on LD_LIBRARY_PATH(linux)/DYLD_LIBRARY_PATH(MacOS). Build errors often arise from (1) the package not being installed or (2) library folders/files of the installed package not being on the library path (LD_LIBRARY_PATH for linux or DYLD_LIBRARY_PATH for MacOS).

  4. After installing Dakota, it is possible to run pip install . as it will look for the following environment variables:

  • The BOOST_ROOT environment variable can be set to the location of the boost library containing the folders include and lib, if they are not already included globally.

  • The BOOST_PYTHON can be set if a given version of boost_python is needed. For instance if Python 3.8 is to be used:

        export BOOST_PYTHON=boost_python38
    

    By default the installation script will try to guess the boost_python version from the minor version of Python, i.e. for Python 3.10, it will try boost_python310.

  • It also expects dakota binary executable to be on the system PATH. To verify this, see if you can type dakota in the terminal and run it without errors. Then, try start up python and see if you can import dakota. If these two "tests" pass, you should be able to install Carolina.

Carolina can then be installed with:

    pip install .

The library can then be tested by entering the tests directory and execute:

    pytest

In the case of testing newer versions of Dakota, scripts can be found in the script folder.

Carolina requires Dakota 6.18, but will work with older versions as well. Pathes can be reverted to allow for building against versions prior to 6.13 or 6.16.

From Dakota version 6.13 a different set of boost libraries is needed: instead of boost_signals, boost_program_options is used. From Dakota version 6.16 a small change was made in the Python interface. From Dakota version 6.18 a file was removed from the source and build script was altered.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

carolina-2.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (26.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

carolina-2.0.2-cp313-cp313-macosx_14_0_arm64.whl (15.4 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

carolina-2.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (26.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

carolina-2.0.2-cp312-cp312-macosx_14_0_arm64.whl (15.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

carolina-2.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (26.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

carolina-2.0.2-cp311-cp311-macosx_14_0_arm64.whl (15.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

File details

Details for the file carolina-2.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for carolina-2.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6291034fe42a2fd45fac35b3bd73f37e24944913ed85dee02a787f4c8a546f79
MD5 e4bf083c4a3ca1474b78f8e4a55443db
BLAKE2b-256 005551117e5bcb5f68cfbc4f319ebcbe434b79cb1cef86a4c3276e69dbcd0e5e

See more details on using hashes here.

File details

Details for the file carolina-2.0.2-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for carolina-2.0.2-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 787b381d6f7ea18a88e68eeac3a8b1a807ea517194b800ea60e490f5520bba48
MD5 63da9818a1c14d0330b413366adf621d
BLAKE2b-256 e69ccfd787da91103af957561d6b2f2da167f9ac6facca0f062d9b23fe38c7c1

See more details on using hashes here.

File details

Details for the file carolina-2.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for carolina-2.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ec6c5bded2801279f51c5e219987a02cd1a807b8895c051378defe26b2231e87
MD5 dce4102731ed1c27e2f396e07e13de2d
BLAKE2b-256 7384f60911884a37dc4f4f6cb57ddb3fb3d488e210d5da30bb5a2cb97d9748ca

See more details on using hashes here.

File details

Details for the file carolina-2.0.2-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for carolina-2.0.2-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4fd3aebcd292811dfa79d4290781ad6e0bcc8dbec610e81a362be942857239eb
MD5 c0dc9aa11114ce413ad569d00ae1378b
BLAKE2b-256 9af92e8de67090ea42092252f3c7ab047bed4df27b482315a2873377846fc04b

See more details on using hashes here.

File details

Details for the file carolina-2.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for carolina-2.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ebee5ec7a71ab0fc1db43a94390f1b4d4b09a529098294a225c176393add72f3
MD5 e696674c55eb159efcdf66221f1ac56e
BLAKE2b-256 80366b36285a1fdb6c3ed8903bea193648f6af03a3973cb769ce79f6d3c64317

See more details on using hashes here.

File details

Details for the file carolina-2.0.2-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for carolina-2.0.2-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b7e24f4ab1f89f749b6e10b996c6b3e38dfb9be258123b4b754fa88c9af09f5d
MD5 2e8c5ef74007289afcad6a23c5823a4c
BLAKE2b-256 aef11caf62a076c4bbd29187452941b64e5b427f768b633efbfd271befd9cbaa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page