Summary
Port design.py for experimental design: full factorial grids, LHS/QMC sampling, and sensitivity screening.
Functions to Implement
| Function |
Description |
Julia dep |
build_grid(factors; method=:full) |
Full factorial grid |
Combinatorics / custom iterator |
build_grid(factors; method=:lhs, n=...) |
Latin Hypercube / QMC |
QuasiMonteCarlo.jl |
build_grid(factors; method=:sobol, n=...) |
Sobol QMC sequence |
QuasiMonteCarlo.jl |
screen(factors, model; method=:morris) |
Morris OAT sensitivity screening |
GlobalSensitivity.jl |
reduce_factors(screening_result; threshold) |
Drop insensitive factors |
Pure Julia |
Types to Implement
@enum FactorType CONTINUOUS DISCRETE CATEGORICAL
struct Factor
name::Symbol
type::FactorType
levels # Vector for CATEGORICAL/DISCRETE, Tuple{Float64,Float64} for CONTINUOUS
end
Design Notes
- QuasiMonteCarlo.jl (SciML) provides LHS, Sobol, Halton, Faure, lattice rules + scrambling. Superior to LatinHypercubeSampling.jl (unmaintained since 2023).
- GlobalSensitivity.jl (SciML, JOSS published) supports Sobol, Morris, eFAST, DGSM, PAWN, RBD-FAST — exceeds SALib's coverage.
- Full factorial for discrete/categorical factors: use
Iterators.product from Base.
Dependencies
[deps]
QuasiMonteCarlo = "..."
GlobalSensitivity = "..."
[compat]
QuasiMonteCarlo = "0.3"
GlobalSensitivity = "2"
Acceptance Criteria
Summary
Port
design.pyfor experimental design: full factorial grids, LHS/QMC sampling, and sensitivity screening.Functions to Implement
build_grid(factors; method=:full)build_grid(factors; method=:lhs, n=...)build_grid(factors; method=:sobol, n=...)screen(factors, model; method=:morris)reduce_factors(screening_result; threshold)Types to Implement
Design Notes
Iterators.productfrom Base.Dependencies
Acceptance Criteria