process-improve 1.97.0__tar.gz → 1.97.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {process_improve-1.97.0 → process_improve-1.97.2}/PKG-INFO +2 -2
- {process_improve-1.97.0 → process_improve-1.97.2}/pyproject.toml +3 -3
- {process_improve-1.97.0 → process_improve-1.97.2}/pyproject.toml.orig +3 -3
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/_extras.py +34 -18
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/bivariate/_elbow_peak.py +18 -3
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/config.py +4 -2
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/evaluate_design.py +10 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/augment.py +49 -12
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs.py +4 -2
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_constrained.py +622 -54
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_omars_ilp.py +563 -49
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_optimal.py +11 -4
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_response_surface.py +6 -2
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_utils.py +57 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/evaluate.py +71 -9
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/omars_trade_off.py +55 -37
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/monitoring/control_charts.py +247 -79
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_limits.py +9 -5
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_mbpls.py +3 -2
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_pca.py +9 -6
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_pls.py +1 -1
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_tpls.py +7 -4
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/regression/_robust_regression.py +2 -1
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/analysis.py +7 -1
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/univariate/metrics.py +2 -2
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/themes.py +3 -1
- {process_improve-1.97.0 → process_improve-1.97.2}/README.md +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/_linalg.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/_random.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/_remote_data.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/_batch_monitor.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/_batch_pca.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/_batch_plots.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/_batch_pls.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/_common.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/_gaps.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/_online.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/alignment_helpers.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/control.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/data_input.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/datasets.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/features.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/plotting.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/preprocessing.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/batch/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/bivariate/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/bivariate/methods.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/bivariate/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/chemistry/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/chemistry/preprocessing.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/batch/batch-fake-data.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/batch/details.txt +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/batch/dryer.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/batch/nylon.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/experiments/boilingpot.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/experiments/golf.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/experiments/pollutant.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/experiments/solar.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/experiments/test_doe1.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/monitoring/batch-yield-and-purity.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/monitoring/rubber-colour.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/C.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A3.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A6.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/LDPE.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/P.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/R.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/T.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/U.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/W.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/LDPE/Yhat_A6.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/cheddar-cheese.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/dtu-pectin/NOTICE +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/dtu-pectin/extraction1.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/dtu-pectin/extraction2.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/dtu-pectin/extraction3.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/dtu-pectin/ftir1.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/dtu-pectin/ftir2.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/dtu-pectin/ftir3.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/kamyr.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/solvents.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tablet-spectra.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/SOURCE +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group1.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group2.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group3.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group4.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group5.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/process_conditions.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group1.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group2.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group3.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group4.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group5.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/datasets/multivariate/tpls-pyphi/quality_indicators.csv +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/_shared.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/aliasing.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/box_cox.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/curvature.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/diagnostics.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/lack_of_fit.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/lenth.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/mixture.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/model_selection.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/ols_extractors.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/prediction.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_analyses/transforms.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_blocking.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_desirability.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_finite_fields.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_lm.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_moment_aberration.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/analyze_experiment.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/augment_design.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/create_factorial_design.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/doe_knowledge.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/fit_linear_model.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/generate_design.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/optimize_responses.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/recommend_strategy.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/trade_off_table.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_tools/visualize_doe.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/_uniform_sampling.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/analysis.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/datasets.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_factorial.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_mixture.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_mixture_constrained.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_omars.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_screening.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_space_filling.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs_supersaturated.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/factor.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/api.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/data/concepts.yaml +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/data/decision_rules.yaml +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/data/design_types.yaml +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/data/diagnostics.yaml +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/engine.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/knowledge/models.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/models.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/omars.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/optimal.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/optimization.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/region.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/simulations.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/strategy/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/strategy/budget.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/strategy/domain_templates.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/strategy/engine.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/strategy/models.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/structures.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/trade_off.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/api.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/cube_plot.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/design_quality.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/diagnostics.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/effects.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/optimization_plots.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/registry.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/significance.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/square_plot.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/visualization/plots/surfaces.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/interactions.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/mcp_server.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/monitoring/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/monitoring/metrics.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/monitoring/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_adaptive.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_asca.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_base.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_categorical.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_common.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_cv_criteria.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_diagnostics.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_impute.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_mbpca.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_nipals.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_null.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_opls.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_pca_pls.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_plsda.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_preprocessing.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_prm.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_procrustes.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_projection.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_resampling.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/_robust.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/methods.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/plots.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/multivariate/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/py.typed +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/recipes.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/regression/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/regression/methods.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/regression/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/designed.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/diagnostics.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/ingest.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/mam.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/panel.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/recipes.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/sensory/validation.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/simulation/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/simulation/batch.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/simulation/context.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/simulation/latent.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/simulation/model.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/simulation/recipes.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/simulation/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/tool_safety.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/tool_spec.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/univariate/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/univariate/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/adapters/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/adapters/base.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/adapters/echarts_adapter.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/adapters/plotly_adapter.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/charts/__init__.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/charts/boxplot.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/colors.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/raincloud.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/spec.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/tools.py +0 -0
- {process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/visualization/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: process-improve
|
|
3
|
-
Version: 1.97.
|
|
3
|
+
Version: 1.97.2
|
|
4
4
|
Summary: Designed Experiments; Latent Variables (PCA, PLS, multivariate methods with missing data); Process Monitoring; Batch data analysis.
|
|
5
5
|
Keywords: Designed Experiments,Latent Variables,PCA,PLS,Multivariate Data Analysis,Batch data analysis
|
|
6
6
|
Author: Kevin Dunn
|
|
@@ -42,7 +42,7 @@ Requires-Dist: osqp>=1.0 ; extra == 'control'
|
|
|
42
42
|
Requires-Dist: coverage>=7.13.1 ; extra == 'dev'
|
|
43
43
|
Requires-Dist: hypothesis>=6.100 ; extra == 'dev'
|
|
44
44
|
Requires-Dist: matplotlib-stubs>=0.3.11 ; extra == 'dev'
|
|
45
|
-
Requires-Dist: mypy>=1.19.1,<2.
|
|
45
|
+
Requires-Dist: mypy>=1.19.1,<2.5 ; extra == 'dev'
|
|
46
46
|
Requires-Dist: pandas-stubs>=2.3.3.260113 ; extra == 'dev'
|
|
47
47
|
Requires-Dist: plotly-stubs>=0.0.6 ; extra == 'dev'
|
|
48
48
|
Requires-Dist: pre-commit>=4.5.1 ; extra == 'dev'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "process-improve"
|
|
3
|
-
version = "1.97.
|
|
3
|
+
version = "1.97.2"
|
|
4
4
|
description = "Designed Experiments; Latent Variables (PCA, PLS, multivariate methods with missing data); Process Monitoring; Batch data analysis."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -74,7 +74,7 @@ dev = [
|
|
|
74
74
|
"coverage>=7.13.1",
|
|
75
75
|
"hypothesis>=6.100",
|
|
76
76
|
"matplotlib-stubs>=0.3.11",
|
|
77
|
-
"mypy>=1.19.1,<2.
|
|
77
|
+
"mypy>=1.19.1,<2.5",
|
|
78
78
|
"pandas-stubs>=2.3.3.260113",
|
|
79
79
|
"plotly-stubs>=0.0.6",
|
|
80
80
|
"pre-commit>=4.5.1",
|
|
@@ -108,7 +108,7 @@ dev = [
|
|
|
108
108
|
"coverage>=7.13.1",
|
|
109
109
|
"hypothesis>=6.100",
|
|
110
110
|
"matplotlib-stubs>=0.3.11",
|
|
111
|
-
"mypy>=1.19.1,<2.
|
|
111
|
+
"mypy>=1.19.1,<2.5",
|
|
112
112
|
"pandas-stubs>=2.3.3.260113",
|
|
113
113
|
"plotly-stubs>=0.0.6",
|
|
114
114
|
"pre-commit>=4.5.1",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "process-improve"
|
|
3
|
-
version = "1.97.
|
|
3
|
+
version = "1.97.2"
|
|
4
4
|
description = 'Designed Experiments; Latent Variables (PCA, PLS, multivariate methods with missing data); Process Monitoring; Batch data analysis.'
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -122,7 +122,7 @@ dev = [
|
|
|
122
122
|
"coverage>=7.13.1",
|
|
123
123
|
"hypothesis>=6.100",
|
|
124
124
|
"matplotlib-stubs>=0.3.11",
|
|
125
|
-
"mypy>=1.19.1,<2.
|
|
125
|
+
"mypy>=1.19.1,<2.5",
|
|
126
126
|
"pandas-stubs>=2.3.3.260113",
|
|
127
127
|
"plotly-stubs>=0.0.6",
|
|
128
128
|
"pre-commit>=4.5.1",
|
|
@@ -157,7 +157,7 @@ dev = [
|
|
|
157
157
|
"coverage>=7.13.1",
|
|
158
158
|
"hypothesis>=6.100",
|
|
159
159
|
"matplotlib-stubs>=0.3.11",
|
|
160
|
-
"mypy>=1.19.1,<2.
|
|
160
|
+
"mypy>=1.19.1,<2.5",
|
|
161
161
|
"pandas-stubs>=2.3.3.260113",
|
|
162
162
|
"plotly-stubs>=0.0.6",
|
|
163
163
|
"pre-commit>=4.5.1",
|
|
@@ -58,11 +58,16 @@ def require_extra(missing: str, extra: str) -> ImportError:
|
|
|
58
58
|
class _MissingExtra:
|
|
59
59
|
"""Stand-in for an optional module that was not installed.
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
Using the stub in any way that needs the real package raises
|
|
62
|
+
:class:`ImportError` with the canonical "install the extra" message, so a
|
|
63
|
+
missing ``plotting`` extra fails the same way as a missing ``expt`` extra.
|
|
64
|
+
Attribute access returns a child stub that remembers the dotted path, so
|
|
65
|
+
``go.Figure(...)`` and ``go.layout.Template(...)`` raise ``ImportError`` at
|
|
66
|
+
the call, and indexing (``pio.templates[name]``) raises it too.
|
|
67
|
+
|
|
68
|
+
Dunder lookups (``__array__``, ``__deepcopy__``, ...) raise
|
|
69
|
+
:class:`AttributeError` instead, so protocol probes such as ``copy``,
|
|
70
|
+
``pickle`` and numpy see a missing attribute, per the Python data model.
|
|
66
71
|
|
|
67
72
|
Lets a module top-level write::
|
|
68
73
|
|
|
@@ -75,21 +80,32 @@ class _MissingExtra:
|
|
|
75
80
|
who never touch the optional surface.
|
|
76
81
|
"""
|
|
77
82
|
|
|
78
|
-
__slots__ = ("_extra", "_missing")
|
|
83
|
+
__slots__ = ("_extra", "_missing", "_path")
|
|
79
84
|
|
|
80
|
-
def __init__(self, missing: str, extra: str) -> None:
|
|
85
|
+
def __init__(self, missing: str, extra: str, path: str = "") -> None:
|
|
81
86
|
self._missing = missing
|
|
82
87
|
self._extra = extra
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
self._path = path
|
|
89
|
+
|
|
90
|
+
def _error(self) -> ImportError:
|
|
91
|
+
hint = f"\n(Attempted to use {self._path!r}.)" if self._path else ""
|
|
92
|
+
return ImportError(f"{_extra_message(self._missing, self._extra)}{hint}")
|
|
93
|
+
|
|
94
|
+
def __getattr__(self, name: str) -> _MissingExtra:
|
|
95
|
+
if name.startswith("__") and name.endswith("__"):
|
|
96
|
+
# __getattr__ must raise AttributeError for protocol lookups so
|
|
97
|
+
# ``hasattr`` and friends behave per the data model (CodeQL
|
|
98
|
+
# py/non-standard-exception-raised-in-special-method).
|
|
99
|
+
raise AttributeError(
|
|
100
|
+
f"{_extra_message(self._missing, self._extra)}\n(Attempted attribute access: {name!r}.)"
|
|
101
|
+
)
|
|
102
|
+
return _MissingExtra(self._missing, self._extra, f"{self._path}.{name}" if self._path else name)
|
|
90
103
|
|
|
91
104
|
def __call__(self, *_args: object, **_kwargs: object) -> object:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
raise
|
|
105
|
+
raise self._error()
|
|
106
|
+
|
|
107
|
+
def __getitem__(self, _key: object) -> object:
|
|
108
|
+
raise self._error()
|
|
109
|
+
|
|
110
|
+
def __setitem__(self, _key: object, _value: object) -> None:
|
|
111
|
+
raise self._error()
|
{process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/bivariate/_elbow_peak.py
RENAMED
|
@@ -15,9 +15,6 @@ def find_elbow_point(x: np.ndarray, y: np.ndarray, max_iter: int = 41) -> int |
|
|
|
15
15
|
"""
|
|
16
16
|
Find the elbow point when plotting numeric entries in `x` vs numeric values in list `y`.
|
|
17
17
|
|
|
18
|
-
Return the index into the vectors `x` and `y` [the vectors must have the same length], where
|
|
19
|
-
the elbow point occurs.
|
|
20
|
-
|
|
21
18
|
Using a robust linear fit, sorts the samples in X (independent variable)
|
|
22
19
|
and takes the first 5 samples from the left, and the last 5 from the right,
|
|
23
20
|
then fits two linear regressions and computes the intersection of the two
|
|
@@ -32,6 +29,18 @@ def find_elbow_point(x: np.ndarray, y: np.ndarray, max_iter: int = 41) -> int |
|
|
|
32
29
|
Will probably not work well on few data points. If so, try fitting a spline
|
|
33
30
|
to the raw data and then repeat with the interpolated data.
|
|
34
31
|
|
|
32
|
+
Parameters
|
|
33
|
+
----------
|
|
34
|
+
x : np.ndarray
|
|
35
|
+
Independent-variable values. Must have the same length as `y`. NaN
|
|
36
|
+
entries are dropped pairwise with `y` before fitting; more than 10
|
|
37
|
+
finite pairs must remain.
|
|
38
|
+
y : np.ndarray
|
|
39
|
+
Dependent-variable values. Must have the same length as `x`.
|
|
40
|
+
max_iter : int, optional
|
|
41
|
+
Number of evenly spaced window sizes to sweep when accumulating
|
|
42
|
+
intersection points. Default is 41.
|
|
43
|
+
|
|
35
44
|
Returns
|
|
36
45
|
-------
|
|
37
46
|
int or float
|
|
@@ -40,6 +49,12 @@ def find_elbow_point(x: np.ndarray, y: np.ndarray, max_iter: int = 41) -> int |
|
|
|
40
49
|
Returns ``np.nan`` when the intersection sweep produced only
|
|
41
50
|
NaNs (for example, when every candidate line pair was
|
|
42
51
|
near-parallel), so no consensus intersection could be formed.
|
|
52
|
+
|
|
53
|
+
Raises
|
|
54
|
+
------
|
|
55
|
+
ValueError
|
|
56
|
+
If `x` and `y` have different lengths, or if 10 or fewer finite
|
|
57
|
+
pairs remain after NaN entries are dropped.
|
|
43
58
|
"""
|
|
44
59
|
start = 5
|
|
45
60
|
# assert divmod(max_iter, 2)[1] # must be odd number; to ensure we calculate the median later
|
|
@@ -167,8 +167,10 @@ class Settings:
|
|
|
167
167
|
"""Single-instance configuration store.
|
|
168
168
|
|
|
169
169
|
Every attribute is a knob; reads are cached after the first access.
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
To set a single knob from code, assign to its property (each knob has a
|
|
171
|
+
setter, e.g. ``settings.tool_timeout = 30.0``). Call :meth:`reload` after
|
|
172
|
+
mutating ``os.environ`` (typically inside a test fixture); call
|
|
173
|
+
:meth:`as_dict` for a snapshot of every knob's current value.
|
|
172
174
|
"""
|
|
173
175
|
|
|
174
176
|
__slots__ = ("_cache",)
|
|
@@ -83,6 +83,15 @@ class EvaluateDesignInput(BaseModel):
|
|
|
83
83
|
ge=0,
|
|
84
84
|
description="Seed for the region sampler (default: 42).",
|
|
85
85
|
)
|
|
86
|
+
categorical_coding: Literal["effect", "treatment"] = Field(
|
|
87
|
+
"effect",
|
|
88
|
+
description=(
|
|
89
|
+
"How a categorical (label) factor is coded. 'effect' (default): sum-to-zero effect coding, the "
|
|
90
|
+
"usual convention in DoE software and the coding generate_design's optimal designs use. "
|
|
91
|
+
"'treatment': 0/1 dummy coding against the first level. A-, E-optimality, VIF, condition number, "
|
|
92
|
+
"power and the alias matrix depend on the coding; prediction variance and D rankings do not."
|
|
93
|
+
),
|
|
94
|
+
)
|
|
86
95
|
|
|
87
96
|
|
|
88
97
|
@tool_spec(
|
|
@@ -139,6 +148,7 @@ def evaluate_design_tool(spec: EvaluateDesignInput) -> dict[str, Any]:
|
|
|
139
148
|
sigma=spec.sigma,
|
|
140
149
|
region=region,
|
|
141
150
|
random_state=spec.random_state,
|
|
151
|
+
categorical_coding=spec.categorical_coding,
|
|
142
152
|
)
|
|
143
153
|
return clean(result)
|
|
144
154
|
except _TOOL_EXPECTED_EXCEPTIONS as e:
|
{process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/augment.py
RENAMED
|
@@ -24,7 +24,7 @@ import logging
|
|
|
24
24
|
import warnings
|
|
25
25
|
from collections.abc import Callable
|
|
26
26
|
from dataclasses import dataclass
|
|
27
|
-
from typing import Any
|
|
27
|
+
from typing import TYPE_CHECKING, Any
|
|
28
28
|
|
|
29
29
|
import numpy as np
|
|
30
30
|
import pandas as pd
|
|
@@ -41,6 +41,9 @@ from process_improve.experiments.evaluate import (
|
|
|
41
41
|
)
|
|
42
42
|
from process_improve.experiments.models import validate_formula_is_safe, validate_identifier_is_safe
|
|
43
43
|
|
|
44
|
+
if TYPE_CHECKING:
|
|
45
|
+
from process_improve.experiments.designs_constrained import _Region
|
|
46
|
+
|
|
44
47
|
logger = logging.getLogger(__name__)
|
|
45
48
|
|
|
46
49
|
# ---------------------------------------------------------------------------
|
|
@@ -557,23 +560,51 @@ def _model_rows(rhs: str, factor_names: list[str], existing: pd.DataFrame, candi
|
|
|
557
560
|
return rows[: len(existing)], rows[len(existing) :]
|
|
558
561
|
|
|
559
562
|
|
|
563
|
+
#: Target models whose columns ``designs_constrained.model_matrix`` builds directly, without patsy.
|
|
564
|
+
_NAMED_MODELS = ("main_effects", "interactions", "quadratic")
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
def _exchange_rows(
|
|
568
|
+
region: _Region, model: str, rhs: str, factor_names: list[str], existing: pd.DataFrame
|
|
569
|
+
) -> tuple[np.ndarray, Callable[[np.ndarray, np.ndarray], np.ndarray]]:
|
|
570
|
+
"""Return the existing runs' model rows, and a function giving the model rows of coded candidate points.
|
|
571
|
+
|
|
572
|
+
A named model is expanded with numpy (the same columns as its patsy formula, in
|
|
573
|
+
another order, which no criterion depends on), which keeps the exchange's polish
|
|
574
|
+
cheap; a custom formula goes through patsy, built together with the existing runs
|
|
575
|
+
so stateful transforms share their scale.
|
|
576
|
+
"""
|
|
577
|
+
from process_improve.experiments.designs_constrained import model_matrix # noqa: PLC0415
|
|
578
|
+
|
|
579
|
+
if model in _NAMED_MODELS:
|
|
580
|
+
coded = existing[factor_names].to_numpy(dtype=float)
|
|
581
|
+
fixed = model_matrix(region, coded, np.empty((len(coded), 0), dtype=int), model)
|
|
582
|
+
return fixed, lambda points, cats: model_matrix(region, points, cats, model)
|
|
583
|
+
fixed = _model_rows(rhs, factor_names, existing, np.empty((0, len(factor_names))))[0]
|
|
584
|
+
return fixed, lambda points, _cats: _model_rows(rhs, factor_names, existing, points)[1]
|
|
585
|
+
|
|
586
|
+
|
|
560
587
|
def _augment_add_runs_optimal(ctx: _AugmentContext) -> dict[str, Any]:
|
|
561
588
|
"""Add D-optimal runs to the existing design, which stays fixed.
|
|
562
589
|
|
|
563
590
|
The runs come from a Fedorov exchange over a candidate grid in coded units, with
|
|
564
|
-
the existing runs as fixed rows.
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
591
|
+
the existing runs as fixed rows. For a quadratic model on a 3-level or sampled grid,
|
|
592
|
+
a coordinate exchange on a 5-level lattice then polishes the design from each start
|
|
593
|
+
(see ``select_runs``). Unlike a one-run-at-a-time greedy search, the exchange can
|
|
594
|
+
start from a design that cannot yet estimate the target model, as every screening
|
|
595
|
+
design aimed at a quadratic model is. When the requested runs cannot supply the
|
|
596
|
+
rank the existing runs lack, more are added, and the explanation says so.
|
|
597
|
+
Candidates may repeat, which replicates a run where the criterion wants it.
|
|
570
598
|
"""
|
|
571
599
|
from process_improve.experiments.designs_constrained import ( # noqa: PLC0415
|
|
600
|
+
CandidatePool,
|
|
572
601
|
Criterion,
|
|
602
|
+
PolishLattice,
|
|
573
603
|
_budget_for_fixed_runs,
|
|
574
604
|
_Region,
|
|
575
605
|
build_candidates,
|
|
576
|
-
|
|
606
|
+
polish_levels,
|
|
607
|
+
select_runs,
|
|
577
608
|
)
|
|
578
609
|
from process_improve.experiments.factor import Factor # noqa: PLC0415
|
|
579
610
|
|
|
@@ -586,16 +617,22 @@ def _augment_add_runs_optimal(ctx: _AugmentContext) -> dict[str, Any]:
|
|
|
586
617
|
|
|
587
618
|
region = _Region([Factor(name=n, low=-1, high=1) for n in ctx.factor_names], [], [])
|
|
588
619
|
grid_model = model if model in ("main_effects", "interactions") else "quadratic"
|
|
589
|
-
coded,
|
|
590
|
-
f_fixed,
|
|
620
|
+
coded, cats, counts = build_candidates(region, None, grid_model)
|
|
621
|
+
f_fixed, rows_of = _exchange_rows(region, model, rhs, ctx.factor_names, df)
|
|
622
|
+
f_cand = rows_of(coded, cats)
|
|
591
623
|
n_parameters = f_cand.shape[1]
|
|
592
624
|
if np.linalg.matrix_rank(np.vstack([f_fixed, f_cand])) < n_parameters:
|
|
593
625
|
raise ValueError(f"The candidate grid cannot support the {model!r} model; use a simpler target_model.")
|
|
594
626
|
|
|
595
627
|
total = _budget_for_fixed_runs(f_fixed, n_parameters, len(df) + ctx.n_additional_runs)
|
|
596
628
|
n_new = total - len(df)
|
|
597
|
-
|
|
598
|
-
|
|
629
|
+
levels = polish_levels(counts)
|
|
630
|
+
lattice = PolishLattice(levels, rows_of) if grid_model == "quadratic" and levels is not None else None
|
|
631
|
+
pool = CandidatePool(coded, cats, f_cand, lattice)
|
|
632
|
+
_rows, new_coded, _cats, _value = select_runs(
|
|
633
|
+
pool, n_new, f_fixed, check_random_state(ctx.random_state), Criterion.d()
|
|
634
|
+
)
|
|
635
|
+
new_runs_df = pd.DataFrame(new_coded, columns=ctx.factor_names)
|
|
599
636
|
augmented = pd.concat([df, new_runs_df], ignore_index=True)
|
|
600
637
|
|
|
601
638
|
notes = [
|
{process_improve-1.97.0 → process_improve-1.97.2}/src/process_improve/experiments/designs.py
RENAMED
|
@@ -678,7 +678,8 @@ def generate_design( # noqa: PLR0913
|
|
|
678
678
|
``Constraint(expression="3*T + 5*D <= 600")``; a dict of ``Constraint`` fields or
|
|
679
679
|
a bare expression string is accepted too. Honoured by the optimal
|
|
680
680
|
families (``"d_optimal"``, chosen automatically when constraints are given,
|
|
681
|
-
``"i_optimal"``, ``"a_optimal"
|
|
681
|
+
``"i_optimal"``, ``"a_optimal"``, ``"e_optimal"``, ``"g_optimal"`` and
|
|
682
|
+
``"k_optimal"``), whose runs are selected
|
|
682
683
|
from a candidate set of feasible points; by ``"mixture"`` (linear constraints
|
|
683
684
|
in the proportions); and by the ``"sobol"``, ``"halton"``, ``"maximin"`` and
|
|
684
685
|
``"maxpro"`` space-filling designs. Other design types do not enforce them and set
|
|
@@ -695,7 +696,8 @@ def generate_design( # noqa: PLR0913
|
|
|
695
696
|
Ignored by the classical (non-optimal) design families.
|
|
696
697
|
fixed_runs : pandas.DataFrame or None
|
|
697
698
|
Runs to hold fixed while the optimizer fills the rest (design augmentation), for the
|
|
698
|
-
optimal families only (``"d_optimal"``, ``"i_optimal"``, ``"a_optimal"``, ``"e_optimal"
|
|
699
|
+
optimal families only (``"d_optimal"``, ``"i_optimal"``, ``"a_optimal"``, ``"e_optimal"``,
|
|
700
|
+
``"g_optimal"``, ``"k_optimal"``). One row per
|
|
699
701
|
fixed run, one column per factor, in the same coding as the returned design: continuous
|
|
700
702
|
factors in coded ``[-1, 1]`` units, categorical factors as level labels.
|
|
701
703
|
The fixed runs occupy the first rows of the result and ``budget`` counts them, so
|