process-improve 2.0.0__tar.gz → 2.1.0__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-2.0.0 → process_improve-2.1.0}/PKG-INFO +10 -5
- {process_improve-2.0.0 → process_improve-2.1.0}/README.md +8 -2
- {process_improve-2.0.0 → process_improve-2.1.0}/pyproject.toml +3 -3
- {process_improve-2.0.0 → process_improve-2.1.0}/pyproject.toml.orig +12 -8
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/control.py +27 -10
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/preprocessing.py +1 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/box-hunter-hunter-1978.json +503 -117
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/davies-1956.json +215 -34
- process_improve-2.1.0/src/process_improve/datasets/experiments/reference_catalogue/derringer-suich-1980.json +1630 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/efi-mooc-quizzes.json +9 -7
- process_improve-2.1.0/src/process_improve/datasets/experiments/reference_catalogue/fries-hunter-1980.json +1617 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/goos-2025.json +2 -1
- process_improve-2.1.0/src/process_improve/datasets/experiments/reference_catalogue/goos-jones-2011.json +45277 -0
- process_improve-2.1.0/src/process_improve/datasets/experiments/reference_catalogue/jones-nachtsheim-2011.json +5980 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/jones-nachtsheim-2013.json +9 -9
- process_improve-2.1.0/src/process_improve/datasets/experiments/reference_catalogue/lenth-1989.json +1609 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/montgomery-2013.json +768 -129
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/nair-ffd-tutorial-2004.json +5 -5
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/nist-ehandbook-ch5.json +197 -112
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/nunez-ares-et-al-2023.json +1 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/nunez-ares-goos-2019.json +35 -12
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/pid-book.json +965 -603
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/schmidt-launsby-2000.json +560 -102
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/ullmann-doe-2012.json +78 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/__init__.py +41 -0
- process_improve-2.1.0/src/process_improve/experiments/_analyses/_shared.py +145 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/aliasing.py +11 -4
- process_improve-2.1.0/src/process_improve/experiments/_analyses/box_cox.py +230 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/curvature.py +10 -6
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/model_selection.py +40 -13
- process_improve-2.1.0/src/process_improve/experiments/_analyses/ols_extractors.py +360 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/prediction.py +63 -1
- process_improve-2.1.0/src/process_improve/experiments/_analyses/split_plot.py +936 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_blocking.py +90 -10
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_desirability.py +64 -8
- process_improve-2.1.0/src/process_improve/experiments/_expression_text.py +25 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_region_geometry.py +74 -0
- process_improve-2.1.0/src/process_improve/experiments/_region_quadrature.py +305 -0
- process_improve-2.1.0/src/process_improve/experiments/_rules.py +396 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/analyze_experiment.py +16 -3
- process_improve-2.1.0/src/process_improve/experiments/_tools/analyze_omars.py +139 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/augment_design.py +36 -1
- process_improve-2.1.0/src/process_improve/experiments/_tools/compare_designs.py +94 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/evaluate_design.py +15 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/generate_design.py +25 -5
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/optimize_responses.py +34 -2
- process_improve-2.1.0/src/process_improve/experiments/_tools/recommend_next_step.py +159 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/recommend_strategy.py +4 -1
- process_improve-2.1.0/src/process_improve/experiments/_tools/run_sheet.py +159 -0
- process_improve-2.1.0/src/process_improve/experiments/_tools/simulate_design_performance.py +111 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_uniform_sampling.py +67 -14
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/analysis.py +489 -61
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/augment.py +446 -38
- process_improve-2.1.0/src/process_improve/experiments/benchmark.py +356 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/compare.py +186 -17
- process_improve-2.1.0/src/process_improve/experiments/crossed_arrays.py +116 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/design_catalog.py +223 -27
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs.py +289 -43
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_constrained.py +421 -77
- process_improve-2.1.0/src/process_improve/experiments/designs_covariates.py +296 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_mixture.py +18 -8
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_mixture_constrained.py +50 -23
- process_improve-2.1.0/src/process_improve/experiments/designs_mixture_process.py +666 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_optimal.py +108 -43
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_response_surface.py +183 -12
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_screening.py +64 -5
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_space_filling.py +16 -4
- process_improve-2.1.0/src/process_improve/experiments/designs_split_plot.py +586 -0
- process_improve-2.1.0/src/process_improve/experiments/designs_three_level.py +213 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_utils.py +37 -11
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/evaluate.py +660 -62
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/factor.py +7 -0
- process_improve-2.1.0/src/process_improve/experiments/gaussian_process.py +350 -0
- process_improve-2.1.0/src/process_improve/experiments/incomplete_blocks.py +195 -0
- process_improve-2.1.0/src/process_improve/experiments/layouts.py +191 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/least_squares_means.py +36 -2
- process_improve-2.1.0/src/process_improve/experiments/model_comparison.py +199 -0
- process_improve-2.1.0/src/process_improve/experiments/next_step.py +2195 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/omars.py +78 -20
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/optimization.py +356 -152
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/projections.py +27 -9
- process_improve-2.1.0/src/process_improve/experiments/pseudocomponents.py +137 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/random_effects.py +73 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/reference_catalogue.py +543 -96
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/region.py +593 -74
- process_improve-2.1.0/src/process_improve/experiments/run_sheet.py +330 -0
- process_improve-2.1.0/src/process_improve/experiments/sequential.py +308 -0
- process_improve-2.1.0/src/process_improve/experiments/simulate.py +377 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/strategy/domain_templates.py +12 -6
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/strategy/engine.py +274 -69
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/strategy/models.py +16 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/structures.py +20 -4
- process_improve-2.1.0/src/process_improve/experiments/surface_checks.py +180 -0
- process_improve-2.1.0/src/process_improve/experiments/three_level_components.py +162 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/tools.py +13 -0
- process_improve-2.1.0/src/process_improve/experiments/variance_dispersion.py +279 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/optimization_plots.py +3 -3
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/registry.py +10 -3
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/surfaces.py +245 -33
- process_improve-2.1.0/src/process_improve/experiments/yates.py +190 -0
- process_improve-2.1.0/src/process_improve/monitoring/__init__.py +14 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/monitoring/control_charts.py +32 -1
- process_improve-2.1.0/src/process_improve/monitoring/evop.py +234 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/monitoring/metrics.py +16 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_common.py +95 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_mbpca.py +21 -6
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_mbpls.py +94 -9
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_nipals.py +4 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_pca.py +15 -7
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_pls.py +84 -13
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_tpls.py +28 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/regression/__init__.py +5 -1
- process_improve-2.1.0/src/process_improve/regression/box_tidwell.py +297 -0
- process_improve-2.1.0/src/process_improve/regression/nonlinear.py +193 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/analysis.py +1 -1
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/simulation/tools.py +2 -2
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/tool_safety.py +53 -3
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/tool_spec.py +56 -2
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/univariate/__init__.py +25 -0
- process_improve-2.1.0/src/process_improve/univariate/classical.py +709 -0
- process_improve-2.1.0/src/process_improve/univariate/error_transmission.py +142 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/univariate/metrics.py +68 -22
- process_improve-2.1.0/src/process_improve/univariate/reference_distribution.py +140 -0
- process_improve-2.1.0/src/process_improve/univariate/serial_correlation.py +190 -0
- process_improve-2.1.0/src/process_improve/univariate/stated_values.py +214 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/univariate/tools.py +8 -3
- process_improve-2.0.0/src/process_improve/experiments/_analyses/_shared.py +0 -54
- process_improve-2.0.0/src/process_improve/experiments/_analyses/box_cox.py +0 -148
- process_improve-2.0.0/src/process_improve/experiments/_analyses/ols_extractors.py +0 -207
- process_improve-2.0.0/src/process_improve/experiments/_analyses/split_plot.py +0 -402
- process_improve-2.0.0/src/process_improve/monitoring/__init__.py +0 -9
- process_improve-2.0.0/src/process_improve/univariate/classical.py +0 -350
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/_extras.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/_linalg.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/_random.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/_remote_data.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/_batch_monitor.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/_batch_pca.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/_batch_plots.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/_batch_pls.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/_common.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/_gaps.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/_online.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/alignment_helpers.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/data_input.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/datasets.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/features.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/plotting.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/batch/tools.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/bivariate/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/bivariate/_elbow_peak.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/bivariate/methods.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/bivariate/tools.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/chemistry/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/chemistry/preprocessing.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/config.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/batch/batch-fake-data.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/batch/details.txt +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/batch/dryer.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/batch/nylon.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/boilingpot.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/corrosion.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/golf.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/pollutant.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/NOTICE.md +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/nunez-ares-goos-2020.json +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/reference_catalogue/topics.json +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/solar.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/experiments/test_doe1.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/monitoring/batch-yield-and-purity.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/monitoring/rubber-colour.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/C.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A3.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/Hotellings_T2_A6.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/LDPE.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/P.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/R.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/T.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/U.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/W.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/LDPE/Yhat_A6.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/cheddar-cheese.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/dtu-pectin/NOTICE +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/dtu-pectin/extraction1.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/dtu-pectin/extraction2.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/dtu-pectin/extraction3.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/dtu-pectin/ftir1.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/dtu-pectin/ftir2.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/dtu-pectin/ftir3.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/kamyr.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/solvents.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tablet-spectra.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/SOURCE +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group1.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group2.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group3.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group4.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/formulas_Group5.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/process_conditions.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group1.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group2.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group3.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group4.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/properties_Group5.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/datasets/multivariate/tpls-pyphi/quality_indicators.csv +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/diagnostics.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/glm.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/lack_of_fit.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/lenth.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/mixture.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_analyses/transforms.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_classical.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_finite_fields.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_lm.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_moment_aberration.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_orthogonal_arrays.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/create_factorial_design.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/doe_knowledge.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/fit_linear_model.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/search_design_catalog.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/trade_off_table.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/_tools/visualize_doe.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/allocation.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/datasets.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/design_measures.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_factorial.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_omars.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_omars_ilp.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/designs_supersaturated.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/api.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/data/concepts.yaml +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/data/decision_rules.yaml +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/data/design_types.yaml +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/data/diagnostics.yaml +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/engine.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/knowledge/models.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/marginal_means.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/models.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/multistratum.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/omars_trade_off.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/optimal.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/run_order.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/separating.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/simulations.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/strategy/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/strategy/budget.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/trade_off.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/true_process.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/api.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/cube_plot.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/design_quality.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/diagnostics.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/effects.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/significance.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/experiments/visualization/plots/square_plot.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/interactions.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/mcp_server.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/monitoring/tools.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_adaptive.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_asca.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_base.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_categorical.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_cv_criteria.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_diagnostics.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_impute.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_limits.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_null.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_opls.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_pca_pls.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_plsda.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_preprocessing.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_prm.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_procrustes.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_projection.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_resampling.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/_robust.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/methods.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/plots.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/multivariate/tools.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/py.typed +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/recipes.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/regression/_robust_regression.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/regression/_variance_components.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/regression/methods.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/regression/tools.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/designed.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/diagnostics.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/ingest.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/mam.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/panel.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/recipes.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/tools.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/sensory/validation.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/simulation/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/simulation/batch.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/simulation/context.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/simulation/latent.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/simulation/model.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/simulation/recipes.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/adapters/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/adapters/base.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/adapters/echarts_adapter.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/adapters/plotly_adapter.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/charts/__init__.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/charts/boxplot.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/colors.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/raincloud.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/spec.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/themes.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/src/process_improve/visualization/tools.py +0 -0
- {process_improve-2.0.0 → process_improve-2.1.0}/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: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Designed Experiments; Latent Variables (PCA, PLS, multivariate methods with missing data); Process Monitoring; Batch data analysis.
|
|
5
5
|
Keywords: Designed Experiments,Design of Experiments,DoE,Optimal Design,Response Surface,Latent Variables,PCA,PLS,Multivariate Data Analysis,Chemometrics,Process Monitoring,Batch data analysis
|
|
6
6
|
Author: Kevin Dunn
|
|
@@ -10,7 +10,6 @@ Classifier: Development Status :: 4 - Beta
|
|
|
10
10
|
Classifier: Intended Audience :: Science/Research
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -64,7 +63,7 @@ Requires-Dist: matplotlib>=3.10.8 ; extra == 'plotting'
|
|
|
64
63
|
Requires-Dist: plotly>=6.5.2 ; extra == 'plotting'
|
|
65
64
|
Requires-Dist: ridgeplot>=0.5.0 ; extra == 'plotting'
|
|
66
65
|
Requires-Dist: seaborn>=0.13.2 ; extra == 'plotting'
|
|
67
|
-
Requires-Python: >=3.
|
|
66
|
+
Requires-Python: >=3.11
|
|
68
67
|
Project-URL: Homepage, https://github.com/kgdunn/process-improve
|
|
69
68
|
Project-URL: Documentation, https://kgdunn.github.io/process-improve/
|
|
70
69
|
Project-URL: Try it in your browser, https://kgdunn.github.io/process-improve/app/
|
|
@@ -97,7 +96,7 @@ variable moved, and how sure am I?*
|
|
|
97
96
|
[](https://pypi.org/project/process-improve/)
|
|
98
97
|
[](https://pepy.tech/project/process-improve)
|
|
99
98
|
[](https://pepy.tech/project/process-improve)
|
|
100
|
-
[](https://github.com/kgdunn/process-improve/actions/workflows/run-tests.yml?query=branch%3Amain)
|
|
101
100
|
[](https://codecov.io/gh/kgdunn/process-improve)
|
|
102
101
|
[](https://kgdunn.github.io/process-improve/)
|
|
103
102
|
[](https://github.com/kgdunn/process-improve/blob/main/LICENSE)
|
|
@@ -353,7 +352,7 @@ pip install 'process-improve[fast]' # adds numba (JIT speedups for ba
|
|
|
353
352
|
pip install 'process-improve[all]' # everything above
|
|
354
353
|
```
|
|
355
354
|
|
|
356
|
-
Requires Python 3.
|
|
355
|
+
Requires Python 3.11 or newer. The core install pulls in `numpy`, `pandas`, `scipy`,
|
|
357
356
|
`scikit-learn`, `statsmodels`, `patsy`, `pydantic`, `pyyaml`, `threadpoolctl` and `tqdm`.
|
|
358
357
|
Heavier optional surfaces (plotting, Taguchi arrays, batch IO, batch control, the MCP server, numba JIT)
|
|
359
358
|
live in extras, so a caller who only needs, say, `detect_multivariate_outliers` does not have
|
|
@@ -399,6 +398,12 @@ specific version.
|
|
|
399
398
|
|
|
400
399
|
MIT: see [LICENSE](https://github.com/kgdunn/process-improve/blob/main/LICENSE) for details.
|
|
401
400
|
|
|
401
|
+
## Trademarks
|
|
402
|
+
|
|
403
|
+
OMARS® is a registered trademark of KU Leuven Research & Development. process-improve uses the
|
|
404
|
+
name only for the class of designs defined by Núñez Ares and Goos (2020), and is not affiliated
|
|
405
|
+
with, or endorsed by, KU Leuven, Minitab or Effex.
|
|
406
|
+
|
|
402
407
|
## Contributing
|
|
403
408
|
|
|
404
409
|
Bug reports, feature requests and pull requests are welcome. See
|
|
@@ -14,7 +14,7 @@ variable moved, and how sure am I?*
|
|
|
14
14
|
[](https://pypi.org/project/process-improve/)
|
|
15
15
|
[](https://pepy.tech/project/process-improve)
|
|
16
16
|
[](https://pepy.tech/project/process-improve)
|
|
17
|
-
[](https://github.com/kgdunn/process-improve/actions/workflows/run-tests.yml?query=branch%3Amain)
|
|
18
18
|
[](https://codecov.io/gh/kgdunn/process-improve)
|
|
19
19
|
[](https://kgdunn.github.io/process-improve/)
|
|
20
20
|
[](https://github.com/kgdunn/process-improve/blob/main/LICENSE)
|
|
@@ -270,7 +270,7 @@ pip install 'process-improve[fast]' # adds numba (JIT speedups for ba
|
|
|
270
270
|
pip install 'process-improve[all]' # everything above
|
|
271
271
|
```
|
|
272
272
|
|
|
273
|
-
Requires Python 3.
|
|
273
|
+
Requires Python 3.11 or newer. The core install pulls in `numpy`, `pandas`, `scipy`,
|
|
274
274
|
`scikit-learn`, `statsmodels`, `patsy`, `pydantic`, `pyyaml`, `threadpoolctl` and `tqdm`.
|
|
275
275
|
Heavier optional surfaces (plotting, Taguchi arrays, batch IO, batch control, the MCP server, numba JIT)
|
|
276
276
|
live in extras, so a caller who only needs, say, `detect_multivariate_outliers` does not have
|
|
@@ -316,6 +316,12 @@ specific version.
|
|
|
316
316
|
|
|
317
317
|
MIT: see [LICENSE](https://github.com/kgdunn/process-improve/blob/main/LICENSE) for details.
|
|
318
318
|
|
|
319
|
+
## Trademarks
|
|
320
|
+
|
|
321
|
+
OMARS® is a registered trademark of KU Leuven Research & Development. process-improve uses the
|
|
322
|
+
name only for the class of designs defined by Núñez Ares and Goos (2020), and is not affiliated
|
|
323
|
+
with, or endorsed by, KU Leuven, Minitab or Effex.
|
|
324
|
+
|
|
319
325
|
## Contributing
|
|
320
326
|
|
|
321
327
|
Bug reports, feature requests and pull requests are welcome. See
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "process-improve"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.1.0"
|
|
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"
|
|
7
|
-
requires-python = ">=3.
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
8
|
keywords = [
|
|
9
9
|
"Designed Experiments",
|
|
10
10
|
"Design of Experiments",
|
|
@@ -24,7 +24,6 @@ classifiers = [
|
|
|
24
24
|
"Intended Audience :: Science/Research",
|
|
25
25
|
"Operating System :: OS Independent",
|
|
26
26
|
"Programming Language :: Python :: 3",
|
|
27
|
-
"Programming Language :: Python :: 3.10",
|
|
28
27
|
"Programming Language :: Python :: 3.11",
|
|
29
28
|
"Programming Language :: Python :: 3.12",
|
|
30
29
|
"Programming Language :: Python :: 3.13",
|
|
@@ -168,6 +167,7 @@ select = ["ALL"]
|
|
|
168
167
|
ignore = [
|
|
169
168
|
"CPY001",
|
|
170
169
|
"C408",
|
|
170
|
+
"UP042",
|
|
171
171
|
"ARG001",
|
|
172
172
|
"ANN002",
|
|
173
173
|
"ANN003",
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "process-improve"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.1.0"
|
|
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"
|
|
7
|
-
requires-python = ">=3.
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
8
|
keywords = ["Designed Experiments", "Design of Experiments", "DoE", "Optimal Design", "Response Surface", "Latent Variables", "PCA", "PLS", "Multivariate Data Analysis", "Chemometrics", "Process Monitoring", "Batch data analysis"]
|
|
9
9
|
classifiers = [
|
|
10
10
|
"Development Status :: 4 - Beta",
|
|
11
11
|
"Intended Audience :: Science/Research",
|
|
12
12
|
"Operating System :: OS Independent",
|
|
13
13
|
"Programming Language :: Python :: 3",
|
|
14
|
-
"Programming Language :: Python :: 3.10",
|
|
15
14
|
"Programming Language :: Python :: 3.11",
|
|
16
15
|
"Programming Language :: Python :: 3.12",
|
|
17
16
|
"Programming Language :: Python :: 3.13",
|
|
@@ -28,17 +27,18 @@ dependencies = [
|
|
|
28
27
|
# MCP server, JIT speedups) live in extras; install
|
|
29
28
|
# ``process-improve[all]`` to reproduce the pre-1.24.11 closure.
|
|
30
29
|
"numpy>=2.2.6",
|
|
31
|
-
# Both pandas majors are supported.
|
|
32
|
-
#
|
|
30
|
+
# Both pandas majors are supported. CI's Python 3.11 jobs install the lowest
|
|
31
|
+
# version each dependency allows, so they test pandas 2.3; the newer Pythons
|
|
32
|
+
# test pandas 3.
|
|
33
33
|
"pandas>=2.3.3",
|
|
34
34
|
"patsy>=1.0.2",
|
|
35
35
|
"pydantic>=2.12.5",
|
|
36
36
|
"pyyaml>=6.0",
|
|
37
37
|
"scikit-learn>=1.7.2",
|
|
38
38
|
# Declared directly because generate_omars solves its ILP with
|
|
39
|
-
# scipy.optimize.milp (HiGHS). 1.15 is the oldest release CI runs (
|
|
40
|
-
# 3.
|
|
41
|
-
# node-limited stop differently and is not tested here.
|
|
39
|
+
# scipy.optimize.milp (HiGHS). 1.15 is the oldest release CI runs (the
|
|
40
|
+
# Python 3.11 jobs resolve 1.15.0); older releases bundle HiGHS 1.2, which
|
|
41
|
+
# reports a node-limited stop differently and is not tested here.
|
|
42
42
|
"scipy>=1.15",
|
|
43
43
|
"statsmodels>=0.14.6",
|
|
44
44
|
# Already required by scikit-learn; declared because the REML fits of the
|
|
@@ -249,6 +249,10 @@ ignore = [
|
|
|
249
249
|
|
|
250
250
|
"C408", # Unnecessary <dict/list/tuple> call - rewrite as a literal. Disagree with this.
|
|
251
251
|
|
|
252
|
+
# A `(str, Enum)` class turned into `StrEnum` changes what str() and format()
|
|
253
|
+
# return for its members, and these enums are public API.
|
|
254
|
+
"UP042", # Class inherits from both `str` and `enum.Enum`
|
|
255
|
+
|
|
252
256
|
# Arguments
|
|
253
257
|
"ARG001", # Unusued argument
|
|
254
258
|
|
|
@@ -528,7 +528,10 @@ def midcourse_correction( # noqa: PLR0913, PLR0912, PLR0915, C901
|
|
|
528
528
|
# bisect each active multiplier down so the achieved statistic lands just
|
|
529
529
|
# inside its cap instead of far below it (the escalation overshoots).
|
|
530
530
|
# Each statistic is non-increasing in its own multiplier for this convex
|
|
531
|
-
# problem, so the per-coordinate bisection is well posed.
|
|
531
|
+
# problem, so the per-coordinate bisection is well posed. Lowering one
|
|
532
|
+
# multiplier can raise the other statistic, so a bisection step is taken
|
|
533
|
+
# only when both caps still hold: every accepted schedule meets both, and
|
|
534
|
+
# an "ok" status means they hold (#681).
|
|
532
535
|
mu_spe = mu_t2 = 0.0
|
|
533
536
|
n_solves = 0
|
|
534
537
|
u_star = _solve(mu_spe, mu_t2)
|
|
@@ -538,6 +541,10 @@ def midcourse_correction( # noqa: PLR0913, PLR0912, PLR0915, C901
|
|
|
538
541
|
spe_cap_value = float("inf") if spe_cap is None else float(spe_cap)
|
|
539
542
|
t2_cap_value = float("inf") if t2_cap is None else float(t2_cap)
|
|
540
543
|
cap_status = "ok"
|
|
544
|
+
|
|
545
|
+
def _within_caps(spe: float, t2: float) -> bool:
|
|
546
|
+
return spe <= spe_cap_value * (1 + _CAP_REL_TOL) and t2 <= t2_cap_value * (1 + _CAP_REL_TOL)
|
|
547
|
+
|
|
541
548
|
for _ in range(30):
|
|
542
549
|
spe_bad = spe_value > spe_cap_value * (1 + _CAP_REL_TOL)
|
|
543
550
|
t2_bad = t2_value > t2_cap_value * (1 + _CAP_REL_TOL)
|
|
@@ -561,12 +568,12 @@ def midcourse_correction( # noqa: PLR0913, PLR0912, PLR0915, C901
|
|
|
561
568
|
mid = 0.5 * (low_mu + high_mu)
|
|
562
569
|
u_try = _solve(mid, mu_t2)
|
|
563
570
|
n_solves += 1
|
|
564
|
-
spe_try,
|
|
565
|
-
if
|
|
571
|
+
spe_try, t2_try = _statistics(u_try)
|
|
572
|
+
if not _within_caps(spe_try, t2_try):
|
|
566
573
|
low_mu = mid
|
|
567
574
|
else:
|
|
568
575
|
high_mu = mid
|
|
569
|
-
u_star, spe_value, t2_value = u_try, spe_try,
|
|
576
|
+
u_star, spe_value, t2_value = u_try, spe_try, t2_try
|
|
570
577
|
if spe_try >= spe_cap_value * (1 - _CAP_REL_TOL):
|
|
571
578
|
break
|
|
572
579
|
mu_spe = high_mu
|
|
@@ -577,7 +584,7 @@ def midcourse_correction( # noqa: PLR0913, PLR0912, PLR0915, C901
|
|
|
577
584
|
u_try = _solve(mu_spe, mid)
|
|
578
585
|
n_solves += 1
|
|
579
586
|
spe_try, t2_try = _statistics(u_try)
|
|
580
|
-
if
|
|
587
|
+
if not _within_caps(spe_try, t2_try):
|
|
581
588
|
low_mu = mid
|
|
582
589
|
else:
|
|
583
590
|
high_mu = mid
|
|
@@ -585,9 +592,7 @@ def midcourse_correction( # noqa: PLR0913, PLR0912, PLR0915, C901
|
|
|
585
592
|
if t2_try >= t2_cap_value * (1 - _CAP_REL_TOL):
|
|
586
593
|
break
|
|
587
594
|
mu_t2 = high_mu
|
|
588
|
-
|
|
589
|
-
t2_ok = t2_value <= t2_cap_value * (1 + _CAP_REL_TOL)
|
|
590
|
-
if spe_ok and t2_ok:
|
|
595
|
+
if _within_caps(spe_value, t2_value):
|
|
591
596
|
break
|
|
592
597
|
|
|
593
598
|
scores = b + A_F @ u_star
|
|
@@ -610,10 +615,22 @@ def midcourse_correction( # noqa: PLR0913, PLR0912, PLR0915, C901
|
|
|
610
615
|
kind = name.split(":", 1)[0]
|
|
611
616
|
key = "bounds" if kind == "bound" else "rate"
|
|
612
617
|
typing.cast("list", active[key]).append(name.split(":", 1)[1])
|
|
618
|
+
|
|
619
|
+
def _binding(statistic: str) -> bool:
|
|
620
|
+
"""Return whether a cap holds its statistic down: with its multiplier at zero, the statistic breaks it."""
|
|
621
|
+
nonlocal n_solves
|
|
622
|
+
n_solves += 1
|
|
623
|
+
if statistic == "spe":
|
|
624
|
+
return _statistics(_solve(0.0, mu_t2))[0] > spe_cap_value * (1 + _CAP_REL_TOL)
|
|
625
|
+
return _statistics(_solve(mu_spe, 0.0))[1] > t2_cap_value * (1 + _CAP_REL_TOL)
|
|
626
|
+
|
|
627
|
+
# A cap is active where its statistic sits at it (within the tolerance), or above it when it
|
|
628
|
+
# could not be met. Below it, a multiplier left over from the bisection is binding only if
|
|
629
|
+
# dropping it would break the cap: one bisected down because its cap is slack is not (#681).
|
|
613
630
|
if spe_cap is not None:
|
|
614
|
-
active["spe_cap"] =
|
|
631
|
+
active["spe_cap"] = spe_value >= spe_cap_value * (1 - _CAP_REL_TOL) or (mu_spe > 0 and _binding("spe"))
|
|
615
632
|
if t2_cap is not None:
|
|
616
|
-
active["t2_cap"] =
|
|
633
|
+
active["t2_cap"] = t2_value >= t2_cap_value * (1 - _CAP_REL_TOL) or (mu_t2 > 0 and _binding("t2"))
|
|
617
634
|
|
|
618
635
|
return Bunch(
|
|
619
636
|
mv=mv,
|
|
@@ -721,7 +721,7 @@ def one_iteration_dtw(
|
|
|
721
721
|
aligned_batches[batch_id] = result
|
|
722
722
|
successful_alignments += 1
|
|
723
723
|
|
|
724
|
-
except ValueError as exc:
|
|
724
|
+
except ValueError as exc:
|
|
725
725
|
# Chain the cause: a band constraint that is too narrow explains itself, and
|
|
726
726
|
# that explanation is the actionable part. `from None` discarded it.
|
|
727
727
|
raise ValueError(f"Failed on batch {batch_id}: {exc}") from exc
|