Releases: ImpedanCEI/IDDEFIX
IDDEFIX v0.2.0
IDDEFIX v0.2.0
This release introduces major enhancements to parameter uncertainties, improved user experience with better progress tracking, and significant infrastructure improvements including Numpy 2.x compatibility and automated PyPI deployment.
🚀 New Features
-
🧩 Parameter Uncertainties
- Added calculation of uncertainties for DE & minimization parameters (#22)
- Added uncertainties to CMAES option (#23)
- Modify display_resonator_parameters to include uncertainties if available
- Add function to display a warning if any parameter is above certain user-defined threshold via
uncertainty_warning - Added the flagged params mask with high uncertainties to self as
flagged_paramsand used it to highlight in read the flagged values in the display_resonator_parameters table
-
🧩 Progress Tracking & Verbosity
- Improved Progress Bar to iteration based + showing convergence as % (#10)
- Improve verbosity of CMAES output and termination algorithm
- Extended progressbar to be compatible with CMAES, allowing to put verbose = false as default and only showing pbar
-
🧩 Data Processing Enhancements
- Add support for negative peaks
- Added convolution and deconvolution functions with Gaussian bunch support
- Select most convenient objective function depending on data type
- Add Abs objective functions and facilitate selection of objective functions within framework.py (now supports
str)
💗 Other Highlights
-
🔁 Tests
- Added integration tests for ~80% coverage
- Pytest compatible tests for DE and neffint impedance/wake conversion
- Improved deconvolution sensitivity tests with sigma and samples
- Added wakis simulation data to test 002 to improve coverage (#9)
- Fix CMAES tests and improve termination default parameters
- Update CMAES convergence with tolfun kwarg to enforce convergence on actions run
- Improved tests to handle Numpy 2.x compatibility
-
📚 Documentation and Examples
- Added notebook example on convolutions and deconvolutions (006)
- New example 007 showcasing parameter uncertainties
- Rerun example 007 to showcase new features
-
⚙️ Build & Compatibility
- Numpy 2.x compatibility improvements and applied Ruff formatting (#16)
- Added tqdm as dependency (#21)
- Added neffint as core dependency
- Add workflow to publish wheels to PyPI on tag (#17)
- Updated release scripts, now deploy based on GH action
- Adopt and execute pre-commit (#25)
- Move actions to workflows/
- Add pymoo to setup.py for automatic testing
🐛 Bugfixes
- Fixed fitting only one resonator error (#15)
- Fixed deconvolution issues (improved docstrings, fixed bug in framework when checking for complex data)
- Fixed Q value validation in smart bounds (removing resonances with inf Q values) (#6)
- Fixed convolution and DE sigma to match with CST for the transitions case
- Fixed use of type in if statement when passing a str
- Fixed invalid notebook missing attachment
- Minor fixes for test tolerance improvements due to larger overall noise
New Contributors
- @elenafuengar made their first contribution in #6
- @emacchia made their first contribution in #15
- @ekatralis made their first contribution in #17
- @SebastienJoly made their first contribution in #22
📝 Full changelog
| 74 commits | 📚 Docs | 🟢 Tests | 🐛 Fixes | 🎨 Style | ✨ Features | Other |
|---|---|---|---|---|---|---|
| % of Commits | ~8% | ~30% | ~5% | ~20% | ~25% | ~12% |
Pull Request summary
- 🐛 fix: removing resonances from smart bounds that have inf inf q values by @elenafuengar in #6
- 💚 Add tests with Github actions with 80% coverage using real data and simulations data by @elenafuengar in #9
- ⚡ feature: Improved Progress Bar: iteration based + showing convergence as % by @elenafuengar in #10
- 🎨 improve verbosity of CMAES output and termination algorithm by @elenafuengar in #12
- 💚 fix CMAES tests and improve termination default parameters by @elenafuengar in #13
- 🐛 fixing fitting only one resonator error by @emacchia in #15
- 🔧 Ruff formatting, numpy 2.x compatibility, nighly tests on python 3.10 to 3.14 by @elenafuengar in #16
- 👷 Add workflow to publish wheels to PyPI on tag by @ekatralis in #17
- ➕ added tqdm as dependency by @elenafuengar in #21
- ✨ Add uncertainties to each resonator parameter fit via covariance matrix by @SebastienJoly in #22
- ✨ Add uncertainties to CMAES option by @SebastienJoly in #23
- ✨ Feature/display with uncertainties by @elenafuengar in #24
- 🔧 Adopt and execute pre-commit by @elenafuengar in #25
Full Changelog: v0.1.0...v0.2.0
IDDEFIX v.0.1.4
What's Changed
- ⚡ Improved Progress Bar: iteration based + showing convergence as % by @elenafuengar in #10
- 🎨 improve verbosity of CMAES output and termination algorithm by @elenafuengar in #12
- 💚 fix CMAES tests and improve termination default parameters by @elenafuengar in #13
- 🐛 fixing fitting only one resonator error by @emacchia in #15
- 🔧 Ruff formatting, numpy 2.x compatibility, nighly tests on python 3.10 to 3.14 by @elenafuengar in #16
- 👷🏻 workflow to publish wheels to PyPI on tag by @ekatralis in #17
New Contributors
- @emacchia made their first contribution in #15
- @ekatralis made their first contribution in #17
Full Changelog: v0.1.3...v0.1.4
v.0.1.3
IDDEFIX v0.1.3
Released on 2026-01-26
🚀 New Features
- feature: improved progressbar to be iterations-based, with an estimation of convergence as post-fix on every iteration call
- feature: include verbosity options to control the output in CMAES, and use the new progress-bar when
verbose=False - feature: improve the termination method in CMAES, to be convergence based via
fftolandxtoland not only iteration based
💗 Other Tag Highlights
- 🔁 Nightly tests with GitHub Actions: now testing all IDDEFIX algorithms on synthetic data and real simulation data, using
pytestfixtures - Improved docstrings on every user-exposed function
🐛 Bugfixes
- fix: verbose problems in CMAES
- error-handling: improve error message when
pymoois not correctly imported
👋👩💻 Contributors
📝 Full Changelog
Full Changelog: v0.1.2...v0.1.3
- 💚 fix CMAES tests and improve termination default parameters (elenafuengar)
- 2026-01-26 🎨 improve verbosity of CMAES output and termination algorithm (elenafuengar)
- 2025-11-27 re-run examples with new progress bar (elenafuengar)
- 2025-11-27 style: minor changes in progressbar (elenafuengar)
- 2025-11-27 feature: add supoprt for negative peaks (elenafuengar)
- 2025-11-25 (remote) fix: add pymoo to nightly test installation-to be removed after release (elenafuengar)
- 2025-11-07 feature: improve progressbar for DE (iterations based with convergence metric to the side + extebded progressbar to be compatible with CMAES, allowing to put verbose = false as default and only showing pbar (elenafuengar)
- 2025-11-07 (main) style: add nightly tests status badge (elenafuengar)
- 2025-11-07 tests: cleanup of test 003 (elenafuengar)
- 2025-11-07 test: update CMAES convergence with tolfun kwarg to enforce convergence on actions run (elenafuengar)
- 2025-11-07 test: update CMAES convergence with tolfun kwarg to enforce convergence on actions run (elenafuengar)
- 2025-11-07 test: update CMAES convergence with tolfun kwarg to enforce convergence on actions run (elenafuengar)
- 2025-11-07 tests: fixing github actions errors (elenafuengar)
- 2025-11-06 build: add pymoo to
setup.pyneeded in the automatic testing (elenafuengar) - 2025-11-06 test: move actions to workflows/ (elenafuengar)
- 2025-11-05 Merge pull request #9 from ImpedanCEI/fix-deconvolution (Elena de la Fuente García)
- 2025-11-05 test: Addes wakis simulation data to test 002 to improve coverage and modified .gitignore to no track .png files inside examples (Antonia Huber)
- 2025-11-05 test: add manual and nighlty github actions to pipeline (elenafuengar)
- 2025-11-05 bugfix: use type in if statement when passing a str (elenafuengar)
- 2025-11-05 test: added integration tests for 80% coverage. Smartbounds missing (elenafuengar)
- 2025-11-04 (origin/fix-deconvolution, fix-deconvolution) test: pytest compatible test for DE and neffint impedance/wake conversion + deconvolution sensitivity test with sigma and samples (elenafuengar)
- 2025-11-04 fix+feature: fix docstring for deconvolution, fix bug in framework when checking for complex data, add fun
ction to retrieve bunch spectrum used for decvonvolution (elenafuengar) - 2025-10-31 build: bump version number (elenafuengar)
- 2025-10-31 build: improve release template (elenafuengar)
- 2025-10-31 build: improve release template (elenafuengar)
- 2025-10-31 build: add release workflow and template (elenafuengar)
v0.1.2
IDDEFIX v0.1.2
Released on 2025-10-31
🚀 New Features
- feature: add Abs objective functions and facilitate selection of objective functions within
framework.py→ objective function now supportsstr - feature: select most convenient objective function depending on data type
💗 Other Tag Highlights
- style: improve extrapolated plot using
scienceplotsin some example notebooks - build: improve release template
- build: add release workflow and template
🐛 Bugfixes
- fix: removing resonances from smart bounds that have
inf inf qvalues (PR: #6 and Issue: #5) - fix: fix conv and DE sigma to match with CST for the transitions case
- fix: undo the change in sigma formalism
👋👩💻 Contributors
📝 Full Changelog
git log v0.1.1...v0.1.2 --pretty=format:"* %ad %s (%an)" --date=short
- 2025-10-31 build: improve release template (elenafuengar)
- 2025-10-31 build: improve release template (elenafuengar)
- 2025-10-31 build: add release workflow and template (elenafuengar)
- 2025-10-31 (tag: v0.1.2) fix: removing resonances from smart bounds that have inf inf q values --> Merge pull request #6 from ImpedanCEI/fix-q-value (Elena de la Fuente García)
- 2025-10-31 (origin/fix-q-value, fix-q-value) fix: removing resonances from smart bounds that have inf inf q values (elenafuengar)
- 2025-10-30 feature: add Abs objective functions and facilitate selection of objective functions within framework.py --> objective function now supports
str(elenafuengar) - 2025-10-20 feature: select most convenient objective function depending on data type (elenafuengar)
- 2025-09-23 style: improve extrapolated plot using
scienceplots(elenafuengar) - 2025-07-23 fix: fix conv and DE sigma to match with CST for the transitions case (elenafuengar)
- 2025-07-22 build: update version (elenafuengar)
- 2025-07-22 fix: undo the change in sigma formalism (elenafuengar)
- 2025-07-22 style: revised 006 (elenafuengar)
- 2025-07-22 build: update version (elenafuengar)
IDDEFIX v0.1.1
IDDEFIX v0.1.1
Coming soon!
🚀 New Features
- Convolution and Deconvolution Utilities
compute_convolution(): perform wake potential convolution with a Gaussian bunch using different backends (numpy,scipy,scipy_fft).compute_deconvolution(): estimate impedance from wake potential assuming a Gaussian charge distribution.gaussian_bunch(): generate time-domain Gaussian profiles from RMS or standard deviation.- All functions now use standard deviation σ to match CST and physics convention.
💗 Other Tag Highlights
- 📁 Examples:
- Added notebook
006demonstrating convolution and deconvolution techniques using CST data. - Improvements to docstrings for all new utility functions.
- Added notebook
🐛 Bugfixes
- Fixed notebook attachment error in example directory.
- Switched all wake potential calculations to use standard deviation σ instead of RMS bunch length, improving consistency with CST Wakefield and Wakis
👋👩💻 New Contributors
- No external contributors in this release.
📝Full changelog
- 2025-07-22 (HEAD -> main, origin/main, origin/HEAD) refact: Use STD sigma instead of RMS bunch length in wake potential formulas to match CST and convolution/deconvolution methods (elenafuengar)
- 2025-07-22 build: expose newly added functions (elenafuengar)
- 2025-07-22 feature: finalized convolution func, added gaussian_bunch func (elenafuengar)
- 2025-07-22 feature: added notebook example on convolutions and deconvolutions (elenafuengar)
- 2025-07-21 feature: add convolution from scipy and numpy and missing docstrings (elenafuengar)
- 2025-04-01 fix: invalid notebook missing attachment (elenafuengar)
- 2025-04-01 Update README.md (Elena de la Fuente García)
IDDEFIX v0.1.0
IDDEFIX v0.1.0
🚀 New Features
-
Smart Bound Determination (SBD):
- Method
to_table()to display the estimated parameter bounds. - Custom scale factors for Rs, Q, and fres:
Rs_bounds,Q_bounds,fres_boundsfor init.
- Method
-
Utils:
- Integration of
neffintfor non-equidistant Fourier transforms inside functions:compute_neffint(): alternative to compute FFT.compute_ineffint(): allows going from impedance to Wake potential, alternative to iFFT.compute_deconvolution(): Allows going from wake potential to impedance usingFFT(wake)/FFT(charge_distribution). Assumes charge distribution is a Gaussian withsigmazspecified by the user in [s].
- File I/O:
read_txt(): reads ASCII.txtfiles into arrays or dicts.save_txt(): exports x/y data to formatted.txtfiles.
- Integration of
-
Framework:
- In
run_minimization_algorithm(), the argumentmarginnow supports a list of independent values for[Rs, Q, fres], allowing finer control over parameter variations during optimization. - Updated docstrings for
EvolutionaryAlgorithmmethods for better documentation and clarity. - Check if beam sigma parameter is not passed when using wake potential functions and print a warning
- In
-
Solvers:
- Implemented
pymoo's CMA-ES algorithm (run_cmaes()) as an alternative global optimization solver. - Added
run_pymoo_cmaes_solver()for CMA-ES optimization usingpymoo, with support for custom population size, sigma, and stopping criteria. - Included an example integrating CMA-ES with previous optimization workflows.
- Implemented
💗 Other Tag Highlights
- 🔁 Nightly tests with GitHub Actions:
- 001 -> Compare
neffint, FFT, and analytical methods.
- 001 -> Compare
- 📁 Examples:
- 004a: Fit directly the wake potential data with wake potential resonator formalism
- 004b: Fit impedance from wake potential data using
compute_deconvolution() - 005: Examples using
pymoo's CMA-ES algorithm
🐛 Bugfixes
- SBD: Method
find()now updatesparameterBoundsinself. - Trimmed trailing whitespaces for improved code readability.
👋👩💻New Contributors
- @babreufig - Implemented the CMA-ES algorithm using
pymooin #3
📝Full changelog
git log v0.0.2... --date=short --pretty=format:"* %ad %d %s (%aN)"
- 2025-03-28 build: prepare for v0.1.0 release (elenafuengar)
- 2025-03-27 style: add TODOs (elenafuengar)
- 2025-03-27 docs: update release.md, prepare for v0.1.0 release (elenafuengar)
- 2025-03-27 contribution: added two more examples to notebook (pull request #4 from babreufig/main) (Elena de la Fuente García)
- 2025-03-26 Little timing comparison between CMAES and DE (Bernardo Abreu Figueiredo)
- 2025-03-26 Added two more examples to notebook (Bernardo Abreu Figueiredo)
- 2025-03-17 fix/feat: Check if sigma is not passed, and use the sigma value in self or default and print warning (elenafuengar)
- 2025-03-17 feature: add functions to read and write to .txt files (elenafuengar)
- 2025-03-16 build: include pymoo (optional) (elenafuengar)
- 2025-03-16 docs: Update readme (elenafuengar)
- 2025-03-16 fix: add
OptimizationProblemclass inside pymoo routine for import handling and clarity (elenafuengar) - 2025-03-16 docs: update release.md (elenafuengar)
- 2025-03-16 docs: add docstring and error handling for pymoo imports (elenafuengar)
- 2025-03-16 Merge pull request #3 from babreufig/main (Elena de la Fuente García)
- 2025-03-12 Implemented CMA-ES and added one mixed example of previous notebooks (Bernardo Abreu Figueiredo)
- 2025-03-12 Trimmed trailing whitespaces (Bernardo Abreu Figueiredo)
- 2025-03-11 docs: update docstrings inside EvolutionaryAlgorithm methods (elenafuengar)
- 2025-03-11 docs: update release.md (elenafuengar)
- 2025-03-11 feature: allow different margins for Rs, Q and fres when running the minimization algorithm (elenafuengar)
- 2025-03-10 docs: prepare for 0.1.0 release (elenafuengar)
- 2025-03-10 docs: include call to new method
SBD.to_table()(elenafuengar) - 2025-03-10 docs: add docstring (elenafuengar)
- 2025-03-10 feature: add custom scaling factors for Rs, Q, fres in init (elenafuengar)
- 2025-03-10 fix:
find()method was not updating paramBounds in self (elenafuengar) - 2025-03-10 feature: add method to display parameter bounds as a table (elenafuengar)
- 2025-02-28 style: adding wake with lines plot (elenafuengar)
- 2025-02-24 fix: change/remove units (elenafuengar)
- 2025-02-11 test: use iddefix new
compute_neffintandcompute_ineffintfunctions (elenafuengar) - 2025-02-11 feature: functions to compute fft and ifft using
neffint(elenafuengar) - 2025-02-11 test: add adaptative frequency refining (elenafuengar)
- 2025-02-11 docs: fix typo, update notebook list, new RTD version (elenafuengar)
Full Changelog: v0.0.2...v0.1.0