RetentionParameterEstimator v0.2.1
Fixed
- Critical performance bug in
Loss.jl: Movedunique(substance_list)computation outside the loop in thelossfunction- Dramatically improved performance for single-substance optimizations (
method_m1,method_m2,method_m4) - Root cause:
unique()was being called inside the optimization loop, causing redundant computations during every loss function evaluation
- Dramatically improved performance for single-substance optimizations (
- Test performance: Reduced CI test time from ~71 minutes to ~17 minutes
- Reduced optimization limits for tests (
maxiters=500,maxtime=30.0sinstead of defaults) - Changed
se_col=truetose_col=falsefor most tests - Created separate testset for standard errors with reduced limits
- Commented out expensive multi-solute test
- Reduced optimization limits for tests (
- Documentation build failure: Fixed "Cannot resolve @ref" errors for
stderrorfunction- Replaced
@reflinks with plain backticks to avoid naming conflict withStatistics.stderror - Documentation now builds successfully on GitHub Actions
- Replaced
Changed
- Dependencies: Updated
GasChromatographySimulatorfrom 0.4/0.5 to 0.6.0- Removed
Interpolations.jldependency - Now uses
GasChromatographySimulator.linear_interpolationandGasChromatographySimulator.deduplicate_knots! - Updated
reference_holdup_timeandestimate_start_parameter_single_rampto use new interpolation functions - Reduced external dependencies, improved consistency with GasChromatographySimulator
- Removed
- CI and Documentation workflows: Updated GitHub Actions workflows
- Updated
actions/checkout@v2to@v4in documentation workflow - Updated
julia-actions/setup-julia@latestto@v1in documentation workflow - Updated
actions/checkout@v3to@v4in CI workflow - Updated
julia-actions/setup-julia@v1to latest version in CI workflow - Updated cache and build actions to latest versions
- Updated
- Default ODE solver: Changed from
OwrenZen5()toTsit5()instd_opt- Better performance and reliability for optimization methods
- Users can still override by passing custom
optoptions
method_m4convergence check: Added convergence check for substance parameters (Tchar,θchar,ΔCp)- Now checks convergence of both
dand substance parameters before stopping - Uses relative tolerance for substance parameters to handle different scales
- Prevents premature convergence when only
dhas converged - Improves reliability, especially with
Tsit5ODE solver
- Now checks convergence of both
- Benchmark scripts: Combined parallel and non-parallel benchmark scripts into single script
- Added command-line control for parallelization (
--parallel,--no-parallel) - Added warm-up run to mitigate JIT compilation effects
- Added git repository state tracking in output files
- Timestamped output files with parallelization status
- Simplified output format (summary in
.txt, full results in.csv)
- Added command-line control for parallelization (
- Dependencies: Pinned
Optimization.jlto version 5.0.0- Versions 5.1.0-5.4.0 caused severe performance regressions (method_m1: <100s → >3600s)
- Documentation: Updated
docs/make.jlconfiguration- Specified
modules = [RetentionParameterEstimator]for Documenter - Added
DocMeta.setdocmeta!setup for doctest environment - Temporarily disabled doctests to unblock build
- Specified
Added
- Parallelization support: Added optional parallelization for all optimization methods
- New
parallel=truekeyword argument formethod_m1,method_m2,method_m3,method_m4 - Parallelized
Kcentric_singleanddKcentric_singlemodes inestimate_parameters - Parallelized standard error calculations in
stderrorandstderror_m3 - Expected speedup: 4-8x on 4-8 core machines
- Requires Julia to be started with multiple threads (e.g.,
julia -t 4)
- New
- Data preparation helper functions: New functions to reduce code duplication
prepare_optimization_data(): Consolidates time unit conversion, data extraction, missing value filtering, and vectorizationprepare_single_substance_data(): Handles data preparation for single-substance optimization modestime_unit_conversion_factor(): Standardizes time unit conversion- Updated
prog_list()to handle both single program and vector of programs
- New optimization mode: Added
mode="d_only"toestimate_parameters- Optimizes only column diameter
dwhile keeping retention parameters fixed - Integrated into
method_m4alternating optimization strategy
- Optimizes only column diameter
- New benchmark script:
scripts/benchmark_m1.jlfor dedicatedmethod_m1benchmarking - Convergence tracking: Added convergence checks for substance parameters in
method_m4- Tracks previous
Tchar,θchar,ΔCpvalues across iterations - Requires convergence of all parameters before stopping optimization
- Tracks previous
Breaking
None. All changes are backward compatible.
Merged pull requests:
- Update gas chromatograhy simulator to 0 5 7 (#41) (@JanLeppert)
- Update ci and documentation workflow (#42) (@JanLeppert)
- New optimization method (#43) (@JanLeppert)
- added helper functions (#44) (@JanLeppert)
- Add parallelization (#45) (@JanLeppert)
- Fix optimization speed (#46) (@JanLeppert)
- Resolve documentation build failure on GitHub Actions (#47) (@JanLeppert)
- Update v0.2.1 (#48) (@JanLeppert)