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.8, 3.9, 3.10, 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-1.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

carolina-1.0.12-cp312-cp312-macosx_10_9_universal2.whl (17.5 MB view details)

Uploaded CPython 3.12macOS 10.9+ universal2 (ARM64, x86-64)

carolina-1.0.12-cp311-cp311-macosx_10_9_universal2.whl (17.5 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

carolina-1.0.12-cp310-cp310-macosx_11_0_x86_64.whl (17.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

carolina-1.0.12-cp39-cp39-macosx_11_0_x86_64.whl (17.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

carolina-1.0.12-cp38-cp38-macosx_11_0_x86_64.whl (17.5 MB view details)

Uploaded CPython 3.8macOS 11.0+ x86-64

File details

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

File metadata

File hashes

Hashes for carolina-1.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a68365b284322b9f72d563db6179513af38f8d80042ef62f4cef0a0b65eb6b87
MD5 f611beb63f11f02bb736fe6c9b2e7ac9
BLAKE2b-256 4d60e73c9afed5bbac8b75b0f7294f2e9ee5d5f5f078560b3aa33f097be61122

See more details on using hashes here.

File details

Details for the file carolina-1.0.12-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for carolina-1.0.12-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d815234b237d23a6a8c2ba146b91873dd05ee41604314c8d076404062bd67286
MD5 f79776b354a817119caa7efeae9f9dec
BLAKE2b-256 df6861ada018d85296f72bc0c1e562a66440afccbc3089a34d60d27beeb3e5d7

See more details on using hashes here.

File details

Details for the file carolina-1.0.12-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for carolina-1.0.12-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 529a9937a5d0a7ca155e78cc921b6e80cdbc5558df034364f05dd90b94d53911
MD5 baba491f6ded49f8d69fe545cd16cdc2
BLAKE2b-256 2019404e47322fc28e6516d09fdc1100c97114c94220503c99c93f3506173064

See more details on using hashes here.

File details

Details for the file carolina-1.0.12-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for carolina-1.0.12-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 248a9ed6ed07842b44397aabb2725eb67bc4428720af89591803d8e56dc2b055
MD5 31493307df234b5c40f8e9fe65620331
BLAKE2b-256 9fa174234d75cf7699210e29a711295b6a5ecda8f8a1711b492d63522dc8bbc4

See more details on using hashes here.

File details

Details for the file carolina-1.0.12-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for carolina-1.0.12-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8d4438715004fa3548cbaac433fdf614bda07f30420adaf1d9f5aafd4e219682
MD5 d3d65f448c554f207bc03c19cd7bf6c6
BLAKE2b-256 36b17d7be98659fbdd3b1a8dce4d79213ddc12ba5defc4b4f82bfb6858c4c290

See more details on using hashes here.

File details

Details for the file carolina-1.0.12-cp38-cp38-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for carolina-1.0.12-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 1e06fb94a8400f12aa59e8552c91b6718cb355e7c219256c186201895dc094cc
MD5 7f0495cf749a767d648a9d5dbc0d84f0
BLAKE2b-256 2556f1044f5643a4e0cf42f849a9094de322e154ebddf7c45506948873d357f6

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