or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

classical-factorial.mdindex.mdoptimal-design.mdresponse-surface.mdsampling-randomized.mdtaguchi-robust.mdutilities-advanced.md
tile.json

tessl/pypi-pydoe3

Design of experiments library for Python with comprehensive experimental design capabilities

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/pydoe3@1.3.x

To install, run

npx @tessl/cli install tessl/pypi-pydoe3@1.3.0

index.mddocs/

pyDOE3

A comprehensive Design of Experiments (DOE) library for Python that enables scientists, engineers, and statisticians to construct appropriate experimental designs for research and optimization. pyDOE3 provides a wide range of classical and modern experimental design methods with mathematical rigor and computational efficiency.

Package Information

  • Package Name: pyDOE3
  • Language: Python
  • Installation: pip install pyDOE3
  • Dependencies: numpy, scipy
  • Documentation: https://pydoe3.readthedocs.io

Core Imports

import pyDOE3

Common for specific design types:

from pyDOE3 import bbdesign, ccdesign, fullfact, ff2n, fracfact, lhs, taguchi_design

Import optimal design functionality:

from pyDOE3.doe_optimal import optimal_design, d_optimality, fedorov

Basic Usage

import pyDOE3
import numpy as np

# Create a 2-level full factorial design for 3 factors
factorial_design = pyDOE3.ff2n(3)
print("2^3 Factorial Design:")
print(factorial_design)

# Create a Latin Hypercube Sample with 10 points in 4 dimensions
lhs_design = pyDOE3.lhs(4, samples=10)
print("\nLatin Hypercube Sample:")
print(lhs_design)

# Create a Box-Behnken design for 3 factors
bb_design = pyDOE3.bbdesign(3)
print("\nBox-Behnken Design:")
print(bb_design)

# Create a Central Composite Design for 2 factors
cc_design = pyDOE3.ccdesign(2)
print("\nCentral Composite Design:")
print(cc_design)

Architecture

pyDOE3 is organized into several functional areas:

  • Classical Designs: Traditional factorial and screening designs with established statistical properties
  • Response Surface Methodology: Designs optimized for fitting polynomial models and process optimization
  • Sampling Designs: Space-filling and randomized approaches for computer experiments
  • Robust Design: Taguchi methods with orthogonal arrays for quality engineering
  • Optimal Designs: Advanced algorithms with multiple optimality criteria for customized experimental plans
  • Utilities: Statistical analysis and design manipulation tools

Capabilities

Classical Factorial Designs

Traditional experimental designs including full factorial, fractional factorial, and screening designs. These form the foundation of experimental design methodology and are suitable for factor screening and main effects analysis.

def fullfact(levels): ...
def ff2n(n): ...
def fracfact(gen): ...
def fracfact_by_res(n, res): ...
def fracfact_opt(n_factors: int, n_erased: int, max_attempts: int = 0) -> str: ...
def fracfact_aliasing(design: np.ndarray) -> dict: ...
def alias_vector_indices(n_factors: int) -> List[int]: ...
def pbdesign(n): ...
def gsd(levels, reduction, n=1): ...

Classical Factorial Designs

Response Surface Methodology (RSM)

Designs optimized for fitting response surface models and process optimization. These designs efficiently estimate quadratic effects and interaction terms for modeling and optimization applications.

def bbdesign(n, center=None): ...
def ccdesign(n, center=(4, 4), alpha="orthogonal", face="circumscribed"): ...
def doehlert_shell_design(num_factors, num_center_points=1): ...
def doehlert_simplex_design(num_factors): ...

Response Surface Methodology

Sampling & Randomized Designs

Space-filling and randomized experimental designs for computer experiments, Monte Carlo simulation, and uncertainty quantification. These designs provide uniform coverage of the experimental space.

def lhs(n: int, samples: int = None, criterion: str = None, iterations: int = None, random_state: Union[int, np.random.RandomState] = None, correlation_matrix: np.ndarray = None) -> np.ndarray: ...
def sukharev_grid(num_points: int, dimension: int) -> np.ndarray: ...
def fold(H: np.ndarray, columns: List[int] = None) -> np.ndarray: ...

Sampling & Randomized Designs

Taguchi & Robust Design

Taguchi methodology for robust parameter design with orthogonal arrays and signal-to-noise ratio analysis. These methods focus on minimizing variability and improving product/process robustness.

def taguchi_design(oa_name: str, levels_per_factor: List[List[int]]) -> np.ndarray: ...
class TaguchiObjective(Enum): ...
def compute_snr(responses: np.ndarray, objective: TaguchiObjective = TaguchiObjective.LARGER_IS_BETTER) -> np.ndarray: ...
def list_orthogonal_arrays() -> List[str]: ...
def get_orthogonal_array(oa_name: str) -> np.ndarray: ...

Taguchi & Robust Design

Optimal Experimental Design

Advanced experimental design algorithms with multiple optimality criteria for creating customized experimental plans. These methods provide maximum statistical efficiency for specific modeling objectives. Note: These functions are available through the pyDOE3.doe_optimal submodule.

# Available through pyDOE3.doe_optimal submodule
from pyDOE3.doe_optimal import optimal_design, d_optimality, a_optimality, fedorov, detmax

def optimal_design(candidates: np.ndarray, n_points: int, degree: int, criterion: Literal["D", "A", "I"] = "D", method: Literal["sequential", "simple_exchange", "fedorov", "modified_fedorov", "detmax"] = "detmax", alpha: float = 0.0, max_iter: int = 200) -> Tuple[np.ndarray, dict]: ...
def d_optimality(M: np.ndarray) -> float: ...
def a_optimality(M: np.ndarray) -> float: ...
def fedorov(candidates: np.ndarray, n_points: int, degree: int, criterion: str = "D", alpha: float = 0.0, max_iter: int = 200) -> np.ndarray: ...
def detmax(candidates: np.ndarray, n_points: int, degree: int, criterion: str = "D", alpha: float = 0.0, max_iter: int = 200) -> np.ndarray: ...

Optimal Experimental Design

Utilities & Advanced Functions

Statistical analysis tools and advanced design manipulation functions for evaluating and modifying experimental designs.

def var_regression_matrix(H: np.ndarray, x: np.ndarray, model: str, sigma: float = 1) -> np.ndarray: ...

Utilities & Advanced Functions

Common Design Types Supported

  1. Screening Designs: Full factorial, fractional factorial, Plackett-Burman, generalized subset designs
  2. Response Surface Designs: Box-Behnken, central composite, Doehlert designs
  3. Space-Filling Designs: Latin hypercube sampling, low-discrepancy sequences
  4. Robust Designs: Taguchi designs with orthogonal arrays
  5. Computer Experiment Designs: Optimal designs with various criteria
  6. Sequential Designs: Design augmentation and folding capabilities

Design Selection Guide

  • Factor Screening (many factors, identify important ones): Use fractional factorial or Plackett-Burman designs
  • Response Surface Modeling (few factors, fit polynomial models): Use Box-Behnken or central composite designs
  • Computer Experiments (deterministic simulations): Use Latin hypercube sampling or optimal designs
  • Robust Design (minimize variability): Use Taguchi designs with orthogonal arrays
  • Custom Requirements (specific statistical criteria): Use optimal design algorithms

Types

from enum import Enum
from typing import List, Optional, Union, Tuple, Literal
import numpy as np

class TaguchiObjective(Enum):
    LARGER_IS_BETTER = "larger_is_better"
    SMALLER_IS_BETTER = "smaller_is_better" 
    NOMINAL_IS_BEST = "nominal_is_best"

# Common type aliases used throughout the library
DesignMatrix = np.ndarray
LevelSpec = Union[int, List[int]]
GeneratorString = str
OptimalityCriterion = str