[1]:
# docs-warning-suppress
import logging
import warnings
warnings.filterwarnings('ignore', category=DeprecationWarning, module=r'torch\.jit\._script')
warnings.filterwarnings('ignore', category=DeprecationWarning, module=r'matplotlib\._fontconfig_pattern')
warnings.filterwarnings('ignore', message=r".*oneOf.*deprecated.*one_of.*", module=r'matplotlib\._fontconfig_pattern')
warnings.filterwarnings('ignore', message=r".*parseString.*deprecated.*parse_string.*", module=r'matplotlib\._fontconfig_pattern')
warnings.filterwarnings('ignore', message=r".*resetCache.*deprecated.*reset_cache.*", module=r'matplotlib\._fontconfig_pattern')
try:
    from ax.exceptions.core import AxParameterWarning
    warnings.filterwarnings('ignore', category=AxParameterWarning)
except Exception:
    pass
try:
    from pyparsing import PyparsingDeprecationWarning
    warnings.filterwarnings('ignore', category=PyparsingDeprecationWarning)
except Exception:
    pass
logging.getLogger('ax').setLevel(logging.WARNING)
logging.getLogger('ax.service.utils.instantiation').setLevel(logging.ERROR)
logging.getLogger('ax.generation_strategy.dispatch_utils').setLevel(logging.WARNING)
try:
    import plotly.graph_objects as go
    _orig_show = go.Figure.show
    def _responsive_show(fig, *args, **kwargs):
        fig.update_layout(autosize=True)
        config = kwargs.get('config') or {}
        config.setdefault('responsive', True)
        kwargs['config'] = config
        return _orig_show(fig, *args, **kwargs)
    go.Figure.show = _responsive_show
except Exception:
    pass

Design of Experiment#

Installation#

Create a virtual environment named .venv, activate it, then install the package:

python -m venv .venv
source .venv/bin/activate # Linux / macOS
python -m pip install --upgrade pip
python -m pip install optimeo

After that, launch the app with:

optimeo

If you are using the repo directly, you can also install from GitHub:

python -m pip install "git+https://github.com/colinbousige/OPTIMEO.git"

This notebook shows how to create a design of experiments once the package is installed.

[2]:
# For Google Colab
!pip install git+https://github.com/colinbousige/OPTIMEO.git

# For local development, prefer:
# uv venv .venv --python 3.10 && source .venv/bin/activate && uv sync
Collecting git+https://github.com/colinbousige/OPTIMEO.git
  Cloning https://github.com/colinbousige/OPTIMEO.git to /tmp/pip-req-build-_vnyun_v
  Running command git clone --filter=blob:none --quiet https://github.com/colinbousige/OPTIMEO.git /tmp/pip-req-build-_vnyun_v
  Resolved https://github.com/colinbousige/OPTIMEO.git to commit 38523070779e9880582878feff5db525d26c3726
  Installing build dependencies ... - \ done
  Getting requirements to build wheel ... - done
  Preparing metadata (pyproject.toml) ... - done
Requirement already satisfied: ax-platform==1.2.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (1.2.1)
Requirement already satisfied: definitive_screening_design==0.5.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (0.5.0)
Requirement already satisfied: dexpy==0.12 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (0.12)
Requirement already satisfied: doepy==0.0.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (0.0.1)
Requirement already satisfied: matplotlib==3.10.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (3.10.1)
Requirement already satisfied: numpy==2.2.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (2.2.0)
Requirement already satisfied: openpyxl==3.1.5 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (3.1.5)
Requirement already satisfied: pandas==2.2.3 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (2.2.3)
Requirement already satisfied: plotly==5.24.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (5.24.0)
Requirement already satisfied: pyDOE3==1.0.4 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (1.0.4)
Requirement already satisfied: pyjanitor==0.31.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (0.31.0)
Requirement already satisfied: scikit_learn==1.6.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (1.6.1)
Requirement already satisfied: scipy==1.15.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (1.15.1)
Requirement already satisfied: seaborn==0.13.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (0.13.2)
Requirement already satisfied: statsmodels>=0.14.4 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (0.14.6)
Requirement already satisfied: streamlit==1.44.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (1.44.1)
Requirement already satisfied: watchdog==6.0.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (6.0.0)
Requirement already satisfied: xlrd==2.0.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (2.0.1)
Requirement already satisfied: xlsxwriter==3.2.9 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from optimeo==1.3.2) (3.2.9)
Requirement already satisfied: botorch<0.16.2dev9999,>=0.16.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (0.16.1)
Requirement already satisfied: jinja2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ax-platform==1.2.1->optimeo==1.3.2) (3.1.6)
Requirement already satisfied: ipywidgets in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ax-platform==1.2.1->optimeo==1.3.2) (8.1.8)
Requirement already satisfied: pyre-extensions in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ax-platform==1.2.1->optimeo==1.3.2) (0.0.32)
Requirement already satisfied: sympy in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ax-platform==1.2.1->optimeo==1.3.2) (1.14.0)
Requirement already satisfied: markdown in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ax-platform==1.2.1->optimeo==1.3.2) (3.10.2)
Requirement already satisfied: patsy in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from dexpy==0.12->optimeo==1.3.2) (1.0.2)
Requirement already satisfied: pyDOE in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from doepy==0.0.1->optimeo==1.3.2) (0.9.3)
Requirement already satisfied: diversipy in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from doepy==0.0.1->optimeo==1.3.2) (0.9)
Requirement already satisfied: contourpy>=1.0.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (1.3.3)
Requirement already satisfied: cycler>=0.10 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (4.63.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (1.5.0)
Requirement already satisfied: packaging>=20.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (24.2)
Requirement already satisfied: pillow>=8 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (11.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (3.3.2)
Requirement already satisfied: python-dateutil>=2.7 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from matplotlib==3.10.1->optimeo==1.3.2) (2.9.0.post0)
Requirement already satisfied: et-xmlfile in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from openpyxl==3.1.5->optimeo==1.3.2) (2.0.0)
Requirement already satisfied: pytz>=2020.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pandas==2.2.3->optimeo==1.3.2) (2026.2)
Requirement already satisfied: tzdata>=2022.7 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pandas==2.2.3->optimeo==1.3.2) (2026.2)
Requirement already satisfied: tenacity>=6.2.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from plotly==5.24.0->optimeo==1.3.2) (9.1.4)
Requirement already satisfied: natsort in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pyjanitor==0.31.0->optimeo==1.3.2) (8.4.0)
Requirement already satisfied: pandas_flavor in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pyjanitor==0.31.0->optimeo==1.3.2) (0.8.1)
Requirement already satisfied: multipledispatch in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pyjanitor==0.31.0->optimeo==1.3.2) (1.0.0)
Requirement already satisfied: joblib>=1.2.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from scikit_learn==1.6.1->optimeo==1.3.2) (1.5.3)
Requirement already satisfied: threadpoolctl>=3.1.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from scikit_learn==1.6.1->optimeo==1.3.2) (3.6.0)
Requirement already satisfied: altair<6,>=4.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (5.5.0)
Requirement already satisfied: blinker<2,>=1.0.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (1.9.0)
Requirement already satisfied: cachetools<6,>=4.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (5.5.2)
Requirement already satisfied: click<9,>=7.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (8.4.1)
Requirement already satisfied: protobuf<6,>=3.20 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (5.29.6)
Requirement already satisfied: pyarrow>=7.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (24.0.0)
Requirement already satisfied: requests<3,>=2.27 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (2.34.2)
Requirement already satisfied: toml<2,>=0.10.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (0.10.2)
Requirement already satisfied: typing-extensions<5,>=4.4.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (4.15.0)
Requirement already satisfied: gitpython!=3.1.19,<4,>=3.0.7 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (3.1.50)
Requirement already satisfied: pydeck<1,>=0.8.0b4 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (0.9.2)
Requirement already satisfied: tornado<7,>=6.0.3 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from streamlit==1.44.1->optimeo==1.3.2) (6.5.6)
Requirement already satisfied: jsonschema>=3.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from altair<6,>=4.0->streamlit==1.44.1->optimeo==1.3.2) (4.26.0)
Requirement already satisfied: narwhals>=1.14.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from altair<6,>=4.0->streamlit==1.44.1->optimeo==1.3.2) (2.22.0)
Requirement already satisfied: gpytorch>=1.14.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (1.15.2)
Requirement already satisfied: linear_operator>=0.6 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (0.6.1)
Requirement already satisfied: torch>=2.0.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (2.12.0)
Requirement already satisfied: pyro-ppl>=1.8.4 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (1.9.1)
Requirement already satisfied: pymoo in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (0.6.1.6)
Requirement already satisfied: gitdb<5,>=4.0.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.44.1->optimeo==1.3.2) (4.0.12)
Requirement already satisfied: smmap<6,>=3.0.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.44.1->optimeo==1.3.2) (5.0.3)
Requirement already satisfied: charset_normalizer<4,>=2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit==1.44.1->optimeo==1.3.2) (3.4.7)
Requirement already satisfied: idna<4,>=2.5 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit==1.44.1->optimeo==1.3.2) (3.17)
Requirement already satisfied: urllib3<3,>=1.26 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit==1.44.1->optimeo==1.3.2) (2.7.0)
Requirement already satisfied: certifi>=2023.5.7 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit==1.44.1->optimeo==1.3.2) (2026.5.20)
Requirement already satisfied: mpmath<=1.3,>=0.19 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from gpytorch>=1.14.2->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (1.3.0)
Requirement already satisfied: MarkupSafe>=2.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from jinja2->ax-platform==1.2.1->optimeo==1.3.2) (3.0.3)
Requirement already satisfied: attrs>=22.2.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit==1.44.1->optimeo==1.3.2) (26.1.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit==1.44.1->optimeo==1.3.2) (2025.9.1)
Requirement already satisfied: referencing>=0.28.4 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit==1.44.1->optimeo==1.3.2) (0.37.0)
Requirement already satisfied: rpds-py>=0.25.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit==1.44.1->optimeo==1.3.2) (2026.5.1)
Requirement already satisfied: opt-einsum>=2.3.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pyro-ppl>=1.8.4->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (3.4.0)
Requirement already satisfied: pyro-api>=0.1.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pyro-ppl>=1.8.4->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (0.1.2)
Requirement already satisfied: tqdm>=4.36 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pyro-ppl>=1.8.4->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (4.67.3)
Requirement already satisfied: six>=1.5 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib==3.10.1->optimeo==1.3.2) (1.17.0)
Requirement already satisfied: filelock in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (3.29.0)
Requirement already satisfied: setuptools<82 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (79.0.1)
Requirement already satisfied: networkx>=2.5.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (3.6.1)
Requirement already satisfied: fsspec>=0.8.5 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (2026.4.0)
Requirement already satisfied: cuda-toolkit==13.0.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.0.2)
Requirement already satisfied: nvidia-cublas<=13.1.1.3,>=13.1.0.3 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.1.1.3)
Requirement already satisfied: cuda-bindings<14,>=13.0.3 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.3.1)
Requirement already satisfied: nvidia-cudnn-cu13==9.20.0.48 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (9.20.0.48)
Requirement already satisfied: nvidia-cusparselt-cu13==0.8.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (0.8.1)
Requirement already satisfied: nvidia-nccl-cu13==2.29.7 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (2.29.7)
Requirement already satisfied: nvidia-nvshmem-cu13==3.4.5 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (3.4.5)
Requirement already satisfied: triton==3.7.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (3.7.0)
Requirement already satisfied: nvidia-cuda-runtime==13.0.96.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.0.96)
Requirement already satisfied: nvidia-cufft==12.0.0.61.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (12.0.0.61)
Requirement already satisfied: nvidia-cufile==1.15.1.6.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (1.15.1.6)
Requirement already satisfied: nvidia-cuda-cupti==13.0.85.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.0.85)
Requirement already satisfied: nvidia-curand==10.4.0.35.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (10.4.0.35)
Requirement already satisfied: nvidia-cusolver==12.0.4.66.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (12.0.4.66)
Requirement already satisfied: nvidia-cusparse==12.6.3.3.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (12.6.3.3)
Requirement already satisfied: nvidia-nvjitlink==13.0.88.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.0.88)
Requirement already satisfied: nvidia-cuda-nvrtc==13.0.88.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.0.88)
Requirement already satisfied: nvidia-nvtx==13.0.85.* in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-toolkit[cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (13.0.85)
Requirement already satisfied: cuda-pathfinder>=1.4.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cuda-bindings<14,>=13.0.3->torch>=2.0.1->botorch<0.16.2dev9999,>=0.16.1->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (1.5.5)
Requirement already satisfied: comm>=0.1.3 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.2.3)
Requirement already satisfied: ipython>=6.1.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (9.14.0)
Requirement already satisfied: traitlets>=4.3.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (5.15.0)
Requirement already satisfied: widgetsnbextension~=4.0.14 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (4.0.15)
Requirement already satisfied: jupyterlab_widgets~=3.0.15 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (3.0.16)
Requirement already satisfied: decorator>=5.1.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (5.3.1)
Requirement already satisfied: ipython-pygments-lexers>=1.0.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (1.1.1)
Requirement already satisfied: jedi>=0.18.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.20.0)
Requirement already satisfied: matplotlib-inline>=0.1.6 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.2.2)
Requirement already satisfied: pexpect>4.6 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (4.9.0)
Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (3.0.52)
Requirement already satisfied: psutil>=7 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (7.2.2)
Requirement already satisfied: pygments>=2.14.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (2.20.0)
Requirement already satisfied: stack_data>=0.6.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.6.3)
Requirement already satisfied: wcwidth in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.7.0)
Requirement already satisfied: parso<0.9.0,>=0.8.6 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from jedi>=0.18.2->ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.8.7)
Requirement already satisfied: ptyprocess>=0.5 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pexpect>4.6->ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.7.0)
Requirement already satisfied: executing>=1.2.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from stack_data>=0.6.0->ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (2.2.1)
Requirement already satisfied: asttokens>=2.1.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from stack_data>=0.6.0->ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (3.0.1)
Requirement already satisfied: pure-eval in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from stack_data>=0.6.0->ipython>=6.1.0->ipywidgets->ax-platform==1.2.1->optimeo==1.3.2) (0.2.3)
Requirement already satisfied: xarray in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pandas_flavor->pyjanitor==0.31.0->optimeo==1.3.2) (2026.4.0)
Requirement already satisfied: moocore>=0.1.7 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (0.3.1)
Requirement already satisfied: autograd>=1.4 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (1.8.0)
Requirement already satisfied: cma>=3.2.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (4.4.4)
Requirement already satisfied: alive_progress in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (3.3.0)
Requirement already satisfied: Deprecated in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (1.3.1)
Requirement already satisfied: cffi>=1.17.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from moocore>=0.1.7->pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (2.0.0)
Requirement already satisfied: platformdirs in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from moocore>=0.1.7->pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (4.10.0)
Requirement already satisfied: pycparser in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from cffi>=1.17.1->moocore>=0.1.7->pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (3.0)
Requirement already satisfied: about-time==4.2.1 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from alive_progress->pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (4.2.1)
Requirement already satisfied: graphemeu==0.7.2 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from alive_progress->pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (0.7.2)
Requirement already satisfied: wrapt<3,>=1.10 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from Deprecated->pymoo->botorch[pymoo]<0.16.2dev9999,>=0.16.1->ax-platform==1.2.1->optimeo==1.3.2) (2.2.1)
Requirement already satisfied: typing-inspect in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from pyre-extensions->ax-platform==1.2.1->optimeo==1.3.2) (0.9.0)
Requirement already satisfied: mypy-extensions>=0.3.0 in /opt/hostedtoolcache/Python/3.11.15/x64/lib/python3.11/site-packages (from typing-inspect->pyre-extensions->ax-platform==1.2.1->optimeo==1.3.2) (1.1.0)

[notice] A new release of pip is available: 26.1.1 -> 26.1.2
[notice] To update, run: pip install --upgrade pip

Here, we will define a Design of Experiment (DoE) to sample the search space before launching Bayesian Optimization.

Let’s create a parameters list, with their names, values and types

[3]:
from optimeo.doe import DesignOfExperiments
import plotly.io as pio
# pio.renderers.default = "notebook"
pio.renderers.default = "notebook_connected"

parameters = [
    {'name': 'Temperature', 'type': 'integer', 'values': [0, 50]},
    {'name': 'Pressure', 'type': 'float', 'values': [0, 50]},
    {'name': 'Catalyst', 'type': 'categorical', 'values': ['A', 'B', 'C']}
 ]
doe = DesignOfExperiments(
    # one of the following:
    # 'Full Factorial', 'Sobol sequence', 'Fractional Factorial',
    # 'Definitive Screening Design', 'Space Filling Latin Hypercube',
    # 'Randomized Latin Hypercube', 'Optimal', 'Plackett-Burman',
    # 'Box-Behnken' or 'Central Composite'
    type='Sobol sequence',
    parameters=parameters,
    Nexp=20,
    # 'Sobol sequence' supports **linear** constraints on the parameters
    # meaning that "Temperature**2 + Pressure**2 <= 250" won't work
    feature_constraints=["Temperature + 2*Pressure <= 250"]
)

pio.renderers['notebook_connected'].config = {'responsive': True}

Show a resume of the class:

[4]:
doe
[4]:

- Design of Experiments type: Sobol sequence
- Parameters:
{'name': 'Temperature', 'type': 'integer', 'values': [0, 50]}
{'name': 'Pressure', 'type': 'float', 'values': [0, 50]}
{'name': 'Catalyst', 'type': 'categorical', 'values': ['A', 'B', 'C'], 'encoder': None}
- Lows: {'Temperature': np.int64(0), 'Pressure': np.int64(0)}
- Highs: {'Temperature': np.int64(50), 'Pressure': np.int64(50)}
- If applicable:
    - Randomize: True
    - Number of Experiments: 20
    - Order: 2
    - Reduction: 2
- Design:
    run_order  Temperature   Pressure Catalyst
0          16           50   5.218320        A
1          17           20  25.548852        B
2           5            9  18.072594        A
3          10           36  38.464908        B
4           9           28  20.323102        B
5          20            3  46.964456        A
6          11           18   9.022690        B
7           6           39  35.603802        A
8          19           43  14.247455        C
9          13           13  40.730886        B
10         18            2   2.891307        C
11          2           28  29.435028        A
12          4           34  11.383273        B
13          1           10  31.677955        C
14         14           24  24.309986        B
15          3           45  44.542839        A
16         15           47  23.411318        C
17          8           23  46.805607        B
18         12           11   9.743082        A
19          7           33  33.125945        C

Just the design:

[5]:
doe.design
[5]:
run_order Temperature Pressure Catalyst
0 16 50 5.218320 A
1 17 20 25.548852 B
2 5 9 18.072594 A
3 10 36 38.464908 B
4 9 28 20.323102 B
5 20 3 46.964456 A
6 11 18 9.022690 B
7 6 39 35.603802 A
8 19 43 14.247455 C
9 13 13 40.730886 B
10 18 2 2.891307 C
11 2 28 29.435028 A
12 4 34 11.383273 B
13 1 10 31.677955 C
14 14 24 24.309986 B
15 3 45 44.542839 A
16 15 47 23.411318 C
17 8 23 46.805607 B
18 12 11 9.743082 A
19 7 33 33.125945 C

Make a plot of the design:

[6]:
figs = doe.plot()
for fig in figs:
    fig.show(config={'responsive': True})