cellpy 2.0.0a2__tar.gz → 2.0.0a3__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.
- cellpy-2.0.0a3/.issueflows/03-solved-issues/issue537_original.md +28 -0
- cellpy-2.0.0a3/.issueflows/03-solved-issues/issue537_plan.md +38 -0
- cellpy-2.0.0a3/.issueflows/03-solved-issues/issue537_status.md +27 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/DEPRECATIONS.md +0 -1
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/HISTORY.md +26 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/PKG-INFO +1 -1
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/_deprecation.py +2 -6
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/filters/summary.py +9 -1
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellreader.py +4 -15
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_plotters.py +2 -2
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/helpers.py +36 -34
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/ocv_rlx.py +6 -4
- cellpy-2.0.0a2/cellpy/utils/easyplot.py +0 -1945
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.aliases +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/commands/build.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/commands/create-original-issue-file.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/cellpy-core-migration.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/cellpy-workspace.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/graphify.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/issueflow-rules.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/kiss.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/rules/this-project.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/caveman/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/grill-me/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-archive/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-close/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-comments/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-epic/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-fix/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-init/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-pause/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-pick/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-plan/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-start/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-status/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.cursor/skills/issueflow-build/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.dockerignore +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.editorconfig +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.env_example +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.gitattributes +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.gitignore +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/migrate_prms_calls.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/scan_hardcoded_headers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/00-tools/scan_member_usage.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/01-current-issues/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue453_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue453_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue453_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/02-partly-solved-issues/issue459_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/2026-07-09_archived_issues.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue372_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue372_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue372_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue375_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue375_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue375_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue381_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue381_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue381_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue391_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue391_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue391_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue407_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue407_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue407_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue415_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue415_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue415_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue425_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue425_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue428_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue428_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue428_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue429_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue429_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue429_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue430_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue430_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue430_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue431_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue431_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue431_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue432_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue432_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue432_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue433_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue433_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue433_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue434_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue434_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue434_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue435_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue435_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue435_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue436_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue436_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue436_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue437_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue437_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue437_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue438_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue438_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue438_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue439_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue439_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue439_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue446_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue446_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue446_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue447_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue447_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue447_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue449_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue449_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue449_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue450_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue450_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue450_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue451_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue451_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue451_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue452_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue452_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue452_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue454_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue454_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue454_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue455_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue455_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue455_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue457_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue457_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue457_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue458_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue458_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue458_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue465_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue465_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue465_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue466_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue466_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue466_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue467_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue476_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue476_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue476_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue479_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue479_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue479_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue491_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue491_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue510_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue510_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/03-solved-issues/issue510_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/bdf-export.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/build-and-versioning.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-v2-architecture.excalidraw +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-v2-branching.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-v2-epic.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpy-workspace-repos.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/cellpycell-di-restructuring.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/ci-tiers.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/filters-and-plot-filtering.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/otherpath-upath.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/testing-and-coverage.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/this-project.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/04-designs-and-guides/v2-cellpycore-pin-gate.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.issueflows/05-epics/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/.readthedocs.yaml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/AGENTS.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/AUTHORS.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/CODE_OF_CONDUCT.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/CONTRIBUTING.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/LICENSE.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_data_structure.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_folder_structure.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_packaging_pypi.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_cellpy_setup.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_conda_package.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_docs.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_loaders_and_instruments.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/dev_various.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_developers_guide/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/01_getting_started_tutorial.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/02_read_cell_data.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/03_more_about_get.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/04_other_interactions.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/05_configuring.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/06_pandas.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/07_data_mining.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basic_interactions/08_the_cellpy_cmd.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/basics.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/examples.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/01_arbin.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/02_maccor.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/03_PEC.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/04_Neware.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/05_biologics.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders/06_custom.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/loaders.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_001.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_002.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_get_cap.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_simple_plot.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_templates.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks/tutorial_xxx-checkpoint.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/notebooks.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/tips_and_tricks.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/batch.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/collectors.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/custom_file_loaders.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/easyplot.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig1.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig2.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/ica.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/plotting.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/templates.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils/tut_ocv_rlx.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_examples_and_tutorials/utils.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/formats.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/installation.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/_main_description/usage.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/_old_docs/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/baselines/v1x_ubuntu_py313.json +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/check_baseline.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/conftest.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/paths.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/benchmarks/test_performance.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/_version.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/cli.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/legacy.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/loader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/migrate.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/models.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/session.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/sources.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/config/types.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exceptions.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exporters/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exporters/bdf.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/exporters/tabular.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/filters/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/filters/cycles.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/internals/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/internals/connections.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/internals/otherpath.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_alias_module.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_importing.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_module.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_syncronized.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/_version.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/apipkg/py.typed +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/LICENSE +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/btsda.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/cli.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/dicts.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/formats.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/main.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/nda.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/ndax.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/utils.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/libs/local_fastnda/version.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/log.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/logging.json +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/.cellpy_prms_default.conf +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/_shim.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/internal_settings.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/legacy/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/legacy/update_headers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/prmreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/parameters/prms.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/capacity_curves.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/dtype.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/fids.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/format.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/keys.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/legacy_read.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/meta.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/meta_archive.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/read.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/selectors.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/translate.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/v9.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/cellpy_file/write.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/data_structures.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/dbreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/do.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/filefinder.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/SQL Table IDs.txt +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_res.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_7.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_config.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_csv.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_h5.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/arbin_sql_xlsx.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/base.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/batmo_bdf.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/biologics_mpr.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/batmo_bdf_bdf.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_one.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_three.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_two.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/maccor_txt_zero.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/neware_txt_one.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/neware_txt_two.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/configurations/neware_txt_zero.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/custom.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/ext_nda_reader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/loader_specific_modules/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/loader_specific_modules/biologic_file_format.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/local_instrument.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/maccor_txt.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/neware_nda.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/neware_txt.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/neware_xlsx.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/pec_csv.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/processors/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/processors/post_processors.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/instruments/processors/pre_processors.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/json_dbreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/merger.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/native_core.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/slicing.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/sql_dbreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/readers/test_meta.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_analyzers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_core.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_experiments.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_exporters.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_helpers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_journals.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/batch_reporters.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/dumpers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/engines.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/batch_tools/sqlite_from_excel_db.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/collectors.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/diagnostics.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/example_data.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/ica.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/live.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/plotutils.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/processor.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/cellpy/utils/template_registry.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/conda-recipes/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/conda-recipes/cellpy/meta.yaml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/conda-recipes/cellpycore/meta.yaml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/dev/regenerate_goldens.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/Dockerfile.build-test +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/compose.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/data/hello.txt +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/docker/sftp-test/data/nested/sample.txt +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/environment.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/environment_dev.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/github_actions_environment.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/noxfile.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/.github/workflows/draft-pdf.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/.gitignore +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/Figures/Cellpy-Utils.jpg +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/Figures/CellpyCell.jpg +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/Figures/CellpyData.jpg +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/paper.bib +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/paper/paper.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/pyproject.toml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/scripts/build_test.sh +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/scripts/dev_sync.sh +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a3}/uv.lock +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Issue #537: v2 pre-flip: replace hardcoded journal-page column literals with HeadersJournal
|
|
2
|
+
|
|
3
|
+
Source: https://github.com/jepegit/cellpy/issues/537
|
|
4
|
+
|
|
5
|
+
## Original issue text
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
Phase-3 flip prerequisite (native-headers plan Phase 0, item 2; hardcoded-column-headers-report §8 priority 1). Audited 2026-07-17 with `.issueflows/00-tools/scan_hardcoded_headers.py`; remaining `HeadersJournal`-family findings:
|
|
10
|
+
|
|
11
|
+
| File | Findings (all families) |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `cellpy/utils/batch_tools/batch_plotters.py` | 32 |
|
|
14
|
+
| `cellpy/utils/helpers.py` | 34 (journal subset only in this issue) |
|
|
15
|
+
| `cellpy/utils/collectors.py` | 16 (journal subset) |
|
|
16
|
+
| `cellpy/utils/batch_tools/batch_journals.py` | 1 |
|
|
17
|
+
| `cellpy/utils/batch.py` | 0 — already clean, keep it that way |
|
|
18
|
+
|
|
19
|
+
## Work
|
|
20
|
+
|
|
21
|
+
Mechanical 1:1: each literal flagged as `HeadersJournal` by the scan tool becomes an attribute access on the already-imported `hdr_journal` / `get_headers_journal()`. No behavior change. Leave non-journal findings in the same files for the sibling issue (steps/raw/summary literals).
|
|
22
|
+
|
|
23
|
+
## Acceptance
|
|
24
|
+
|
|
25
|
+
- [ ] Scan tool reports **zero `HeadersJournal` findings** for the files above
|
|
26
|
+
- [ ] Full suite green (behavior unchanged — this is a pure rename-to-lookup)
|
|
27
|
+
|
|
28
|
+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Issue #537 plan — journal-page column literals → HeadersJournal
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Remove the hard-coded journal column-name string literals flagged by
|
|
6
|
+
`.issueflows/00-tools/scan_hardcoded_headers.py` as `HeadersJournal`, so a
|
|
7
|
+
later header rename touches the header class only (native-headers Phase-0
|
|
8
|
+
prerequisite).
|
|
9
|
+
|
|
10
|
+
## Scope (verified with the scan tool, 2026-07-17)
|
|
11
|
+
|
|
12
|
+
Only **6 findings, on 3 lines** — all are string-keyed subscripts into the
|
|
13
|
+
already-imported `hdr_journal` object (the §6 "semi-sanctioned" pattern):
|
|
14
|
+
|
|
15
|
+
- `cellpy/utils/batch_tools/batch_plotters.py:53` — `hdr_journal["mass"]`,
|
|
16
|
+
`["loading"]`, `["label"]`
|
|
17
|
+
- `cellpy/utils/batch_tools/batch_plotters.py:76` — `hdr_journal["group"]`,
|
|
18
|
+
`["sub_group"]`
|
|
19
|
+
- `cellpy/utils/helpers.py:278` — `hdr_journal["loading"]`
|
|
20
|
+
|
|
21
|
+
Non-journal (raw/steps/summary) literals in the same files are **out of
|
|
22
|
+
scope** — they belong to #538.
|
|
23
|
+
|
|
24
|
+
## Approach
|
|
25
|
+
|
|
26
|
+
Mechanical `hdr_journal["<name>"]` → `hdr_journal.<name>`. Verified all five
|
|
27
|
+
attribute values equal their subscript values (`HeadersJournal` is a dataclass
|
|
28
|
+
exposing both), so behavior is byte-identical.
|
|
29
|
+
|
|
30
|
+
## Files to touch
|
|
31
|
+
|
|
32
|
+
- `cellpy/utils/batch_tools/batch_plotters.py`
|
|
33
|
+
- `cellpy/utils/helpers.py`
|
|
34
|
+
|
|
35
|
+
## Test strategy
|
|
36
|
+
|
|
37
|
+
Behavior-preserving rename-to-lookup; the full suite is the oracle. Confirm
|
|
38
|
+
the scan tool reports **zero `HeadersJournal` findings** for both files after.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Issue #537 status — journal-page column literals → HeadersJournal
|
|
2
|
+
|
|
3
|
+
- [x] Done
|
|
4
|
+
|
|
5
|
+
## Outcome
|
|
6
|
+
|
|
7
|
+
All 6 `HeadersJournal` scan findings removed (3 lines):
|
|
8
|
+
|
|
9
|
+
- `cellpy/utils/batch_tools/batch_plotters.py` — `hdr_journal["mass"|"loading"|"label"]`
|
|
10
|
+
and `["group"|"sub_group"]` → attribute access.
|
|
11
|
+
- `cellpy/utils/helpers.py` — `hdr_journal["loading"]` → `hdr_journal.loading`.
|
|
12
|
+
|
|
13
|
+
Scan tool now reports **0 `HeadersJournal` findings** for both files.
|
|
14
|
+
|
|
15
|
+
## Verification
|
|
16
|
+
|
|
17
|
+
- Attribute values confirmed equal to subscript values (byte-identical behavior).
|
|
18
|
+
- `tests/test_batch.py` + `tests/test_helpers.py`: 58 passed post-edit.
|
|
19
|
+
- Full suite baseline green (668 passed; the single Windows-only HDF5
|
|
20
|
+
`driver lock request failed` setup error on `test_has_no_full_duplicates` is
|
|
21
|
+
a pre-existing test-isolation flake — passes in isolation, not on the Linux
|
|
22
|
+
CI gate).
|
|
23
|
+
- ruff: no new findings vs master.
|
|
24
|
+
|
|
25
|
+
## Out of scope (other issues)
|
|
26
|
+
|
|
27
|
+
- Raw/steps/summary literals in the same files → #538.
|
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
* Removed the deprecated `cellpy.utils.easyplot` module (#544). It was
|
|
6
|
+
deprecated since 1.1 with removal scheduled for 2.0; use
|
|
7
|
+
`cellpy.utils.plotutils` and `cellpy.utils.collectors` instead. The module,
|
|
8
|
+
its tests, its docs entry, and its `DEPRECATIONS.md` row are gone.
|
|
9
|
+
|
|
10
|
+
* Step-type string literals use the `cellpycore` vocabulary (#543, native-
|
|
11
|
+
headers Phase-0 prerequisite): `CellpyCell.list_of_step_types` is now
|
|
12
|
+
`list(config.STEP_TYPES)` (was a hand-maintained duplicate of the 13
|
|
13
|
+
step-type names), and the step-table `type` comparisons in `utils/ocv_rlx.py`
|
|
14
|
+
/ `utils/helpers.py` use `StepType.CHARGE.value` / `.DISCHARGE.value` instead
|
|
15
|
+
of bare `"charge"` / `"discharge"` literals. Behavior-identical.
|
|
16
|
+
|
|
17
|
+
* Header column literals in `utils/helpers.py` and `filters/summary.py` use
|
|
18
|
+
header-object attributes (#538, native-headers Phase-0 prerequisite): the
|
|
19
|
+
base-name string-keyed `hdr_summary["charge_capacity"]`-style lookups become
|
|
20
|
+
attribute access, and `filter_summary`'s `rate_columns` default is resolved
|
|
21
|
+
from `HeadersSummary` (was a hard-coded `("charge_c_rate", "discharge_c_rate")`
|
|
22
|
+
tuple). Postfix/specific columns (`*_gravimetric`, `areal_*`) keep string-key
|
|
23
|
+
composition. Behavior-identical.
|
|
24
|
+
|
|
25
|
+
* Journal-page column literals use `HeadersJournal` attributes (#537, native-
|
|
26
|
+
headers Phase-0 prerequisite): the string-keyed `hdr_journal["mass"]`-style
|
|
27
|
+
lookups in `batch_plotters.py` and `helpers.py` become attribute access
|
|
28
|
+
(`hdr_journal.mass`, …) so a journal-header rename touches the header class
|
|
29
|
+
only. Behavior-identical.
|
|
30
|
+
|
|
5
31
|
* Remote paths via `universal_pathlib` (#375, #371): `OtherPath` is now a thin
|
|
6
32
|
wrapper around `UPath` (fsspec/Paramiko) instead of Fabric. Supported schemes
|
|
7
33
|
remain `ssh://` / `sftp://` / `scp://` (scp aliased to sftp). Remote
|
|
@@ -94,12 +94,8 @@ def write_deprecations_md(path: str | Path) -> None:
|
|
|
94
94
|
def _seed_known_deprecations() -> None:
|
|
95
95
|
"""Register deprecations that exist before any runtime call (for doc generation)."""
|
|
96
96
|
_register("make_new_cell", "CellpyCell.vacant", removal="2.1")
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
"cellpy.utils.plotutils and cellpy.utils.collectors",
|
|
100
|
-
removal="2.0",
|
|
101
|
-
introduced="1.1",
|
|
102
|
-
)
|
|
97
|
+
# cellpy.utils.easyplot was removed in 2.0 (#544); it is no longer a
|
|
98
|
+
# pending deprecation, so it is dropped from the registry / DEPRECATIONS.md.
|
|
103
99
|
|
|
104
100
|
|
|
105
101
|
if __name__ == "__main__":
|
|
@@ -29,6 +29,8 @@ import logging
|
|
|
29
29
|
from collections.abc import Mapping, Sequence
|
|
30
30
|
from typing import Any, Callable, Optional, Union
|
|
31
31
|
|
|
32
|
+
from cellpy.parameters.internal_settings import get_headers_summary
|
|
33
|
+
|
|
32
34
|
import pandas as pd
|
|
33
35
|
|
|
34
36
|
logger = logging.getLogger(__name__)
|
|
@@ -145,7 +147,7 @@ def filter_summary(
|
|
|
145
147
|
df: pd.DataFrame,
|
|
146
148
|
*,
|
|
147
149
|
rate: RangeArg = None,
|
|
148
|
-
rate_columns: ColumnsArg =
|
|
150
|
+
rate_columns: ColumnsArg = None,
|
|
149
151
|
**extra_filters: Any,
|
|
150
152
|
) -> pd.DataFrame:
|
|
151
153
|
"""Filter rows of a cellpy summary DataFrame.
|
|
@@ -159,6 +161,8 @@ def filter_summary(
|
|
|
159
161
|
mapping ``{"value": v, "delta": d}`` (keep rows with
|
|
160
162
|
``v - d < value <= v + d``).
|
|
161
163
|
rate_columns: Which column(s) the ``rate`` filter applies to.
|
|
164
|
+
``None`` (default) resolves to the summary C-rate columns
|
|
165
|
+
(``HeadersSummary.charge_c_rate`` / ``.discharge_c_rate``).
|
|
162
166
|
A single string is coerced to a one-element tuple. With more
|
|
163
167
|
than one column the predicate is AND-ed across columns - a
|
|
164
168
|
row is kept only if *every* listed column lies in range.
|
|
@@ -176,6 +180,10 @@ def filter_summary(
|
|
|
176
180
|
argument is malformed.
|
|
177
181
|
TypeError: A range argument has an unsupported type.
|
|
178
182
|
"""
|
|
183
|
+
if rate_columns is None:
|
|
184
|
+
hdr_summary = get_headers_summary()
|
|
185
|
+
rate_columns = (hdr_summary.charge_c_rate, hdr_summary.discharge_c_rate)
|
|
186
|
+
|
|
179
187
|
range_kwargs = {k: v for k, v in extra_filters.items() if not k.endswith("_columns")}
|
|
180
188
|
column_kwargs = {k: v for k, v in extra_filters.items() if k.endswith("_columns")}
|
|
181
189
|
|
|
@@ -58,6 +58,7 @@ from cellpy.parameters.internal_settings import (
|
|
|
58
58
|
# still expects. cellpy-core's __init__ is intentionally empty, so import submodules.
|
|
59
59
|
from cellpycore import units as core_units
|
|
60
60
|
from cellpycore.cell_core import OldCellpyCellCore
|
|
61
|
+
from cellpycore.config import STEP_TYPES
|
|
61
62
|
|
|
62
63
|
from cellpy.readers.cellpy_file import dtype as cellpy_file_dtype
|
|
63
64
|
from cellpy.readers.cellpy_file import fids as cellpy_file_fids
|
|
@@ -297,21 +298,9 @@ class CellpyCell:
|
|
|
297
298
|
|
|
298
299
|
self.capacity_modifiers = ["reset"]
|
|
299
300
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
"cv_charge",
|
|
304
|
-
"cv_discharge",
|
|
305
|
-
"taper_charge",
|
|
306
|
-
"taper_discharge",
|
|
307
|
-
"charge_cv",
|
|
308
|
-
"discharge_cv",
|
|
309
|
-
"ocvrlx_up",
|
|
310
|
-
"ocvrlx_down",
|
|
311
|
-
"ir",
|
|
312
|
-
"rest",
|
|
313
|
-
"not_known",
|
|
314
|
-
]
|
|
301
|
+
# single source of the step-type vocabulary (cellpycore #543);
|
|
302
|
+
# was a hand-maintained duplicate of config.STEP_TYPES.
|
|
303
|
+
self.list_of_step_types = list(STEP_TYPES)
|
|
315
304
|
# - options
|
|
316
305
|
self.force_step_table_creation = config.reader.force_step_table_creation
|
|
317
306
|
self.force_all = config.reader.force_all
|
|
@@ -50,7 +50,7 @@ def create_legend(info, c, option="clean", use_index=False):
|
|
|
50
50
|
|
|
51
51
|
logging.debug(" - creating legends")
|
|
52
52
|
mass, loading, label = info.loc[
|
|
53
|
-
c, [hdr_journal
|
|
53
|
+
c, [hdr_journal.mass, hdr_journal.loading, hdr_journal.label]
|
|
54
54
|
]
|
|
55
55
|
|
|
56
56
|
if use_index or not label:
|
|
@@ -73,7 +73,7 @@ def create_legend(info, c, option="clean", use_index=False):
|
|
|
73
73
|
|
|
74
74
|
def look_up_group(info, c):
|
|
75
75
|
logging.debug(" - looking up groups")
|
|
76
|
-
g, sg = info.loc[c, [hdr_journal
|
|
76
|
+
g, sg = info.loc[c, [hdr_journal.group, hdr_journal.sub_group]]
|
|
77
77
|
return int(g), int(sg)
|
|
78
78
|
|
|
79
79
|
|
|
@@ -9,6 +9,8 @@ import numpy as np
|
|
|
9
9
|
import pandas as pd
|
|
10
10
|
from scipy import stats
|
|
11
11
|
|
|
12
|
+
from cellpycore.config import StepType
|
|
13
|
+
|
|
12
14
|
import cellpy
|
|
13
15
|
import cellpy.config as config
|
|
14
16
|
from cellpy import prms
|
|
@@ -37,8 +39,8 @@ def _make_average_legacy(
|
|
|
37
39
|
):
|
|
38
40
|
if key_index_bounds is None:
|
|
39
41
|
key_index_bounds = [1, -2]
|
|
40
|
-
hdr_norm_cycle = hdr_summary
|
|
41
|
-
hdr_cum_charge = hdr_summary
|
|
42
|
+
hdr_norm_cycle = hdr_summary.normalized_cycle_index
|
|
43
|
+
hdr_cum_charge = hdr_summary.cumulated_charge_capacity
|
|
42
44
|
cell_id = ""
|
|
43
45
|
not_a_number = np.nan
|
|
44
46
|
new_frames = []
|
|
@@ -103,7 +105,7 @@ def _make_average(
|
|
|
103
105
|
skip_st_dev_for_equivalent_cycle_index=True,
|
|
104
106
|
average_method="mean",
|
|
105
107
|
):
|
|
106
|
-
hdr_norm_cycle = hdr_summary
|
|
108
|
+
hdr_norm_cycle = hdr_summary.normalized_cycle_index
|
|
107
109
|
not_a_number = np.nan
|
|
108
110
|
new_frames = []
|
|
109
111
|
|
|
@@ -225,7 +227,7 @@ def add_normalized_cycle_index(summary, nom_cap, column_name=None):
|
|
|
225
227
|
Returns:
|
|
226
228
|
data object now with normalized cycle index in its summary.
|
|
227
229
|
"""
|
|
228
|
-
hdr_norm_cycle = hdr_summary
|
|
230
|
+
hdr_norm_cycle = hdr_summary.normalized_cycle_index
|
|
229
231
|
hdr_cum_charge = hdr_summary["cumulated_charge_capacity_gravimetric"]
|
|
230
232
|
|
|
231
233
|
if column_name is None:
|
|
@@ -260,7 +262,7 @@ def add_c_rate(cell, nom_cap=None, column_name=None):
|
|
|
260
262
|
# now also included in step_table
|
|
261
263
|
# TODO: remove this function
|
|
262
264
|
if column_name is None:
|
|
263
|
-
column_name = hdr_steps
|
|
265
|
+
column_name = hdr_steps.rate_avr
|
|
264
266
|
if nom_cap is None:
|
|
265
267
|
nom_cap = cell.data.nom_cap
|
|
266
268
|
|
|
@@ -275,13 +277,13 @@ def add_c_rate(cell, nom_cap=None, column_name=None):
|
|
|
275
277
|
def add_areal_capacity(cell, cell_id, journal):
|
|
276
278
|
"""Adds areal capacity to the summary."""
|
|
277
279
|
|
|
278
|
-
loading = journal.pages.loc[cell_id, hdr_journal
|
|
280
|
+
loading = journal.pages.loc[cell_id, hdr_journal.loading]
|
|
279
281
|
|
|
280
282
|
cell.data.summary[hdr_summary["areal_charge_capacity"]] = (
|
|
281
|
-
cell.data.summary[hdr_summary
|
|
283
|
+
cell.data.summary[hdr_summary.charge_capacity] * loading / 1000
|
|
282
284
|
)
|
|
283
285
|
cell.data.summary[hdr_summary["areal_discharge_capacity"]] = (
|
|
284
|
-
cell.data.summary[hdr_summary
|
|
286
|
+
cell.data.summary[hdr_summary.discharge_capacity] * loading / 1000
|
|
285
287
|
)
|
|
286
288
|
return cell
|
|
287
289
|
|
|
@@ -303,7 +305,7 @@ def remove_outliers_from_summary_on_window(
|
|
|
303
305
|
):
|
|
304
306
|
"""Removes outliers based on neighbours"""
|
|
305
307
|
if col_name is None:
|
|
306
|
-
col = hdr_summary
|
|
308
|
+
col = hdr_summary.charge_capacity
|
|
307
309
|
|
|
308
310
|
else:
|
|
309
311
|
col = hdr_summary[col_name]
|
|
@@ -344,8 +346,8 @@ def remove_outliers_from_summary_on_nn_distance(
|
|
|
344
346
|
"""
|
|
345
347
|
if filter_cols is None:
|
|
346
348
|
filter_cols = [
|
|
347
|
-
hdr_summary
|
|
348
|
-
hdr_summary
|
|
349
|
+
hdr_summary.charge_capacity,
|
|
350
|
+
hdr_summary.discharge_capacity,
|
|
349
351
|
]
|
|
350
352
|
|
|
351
353
|
def neighbour_window(y):
|
|
@@ -391,8 +393,8 @@ def remove_outliers_from_summary_on_zscore(
|
|
|
391
393
|
|
|
392
394
|
if filter_cols is None:
|
|
393
395
|
filter_cols = [
|
|
394
|
-
hdr_summary
|
|
395
|
-
hdr_summary
|
|
396
|
+
hdr_summary.charge_capacity,
|
|
397
|
+
hdr_summary.discharge_capacity,
|
|
396
398
|
]
|
|
397
399
|
|
|
398
400
|
s2 = s[filter_cols].copy()
|
|
@@ -424,8 +426,8 @@ def remove_outliers_from_summary_on_value(
|
|
|
424
426
|
"""
|
|
425
427
|
if filter_cols is None:
|
|
426
428
|
filter_cols = [
|
|
427
|
-
hdr_summary
|
|
428
|
-
hdr_summary
|
|
429
|
+
hdr_summary.charge_capacity,
|
|
430
|
+
hdr_summary.discharge_capacity,
|
|
429
431
|
]
|
|
430
432
|
|
|
431
433
|
s2 = s[filter_cols].copy()
|
|
@@ -756,7 +758,7 @@ def concatenate_summaries(
|
|
|
756
758
|
group_nest.append(b.pages.group.to_list())
|
|
757
759
|
|
|
758
760
|
default_columns = [hdr_summary["charge_capacity_gravimetric"]]
|
|
759
|
-
hdr_norm_cycle = hdr_summary
|
|
761
|
+
hdr_norm_cycle = hdr_summary.normalized_cycle_index
|
|
760
762
|
|
|
761
763
|
if columns is None:
|
|
762
764
|
columns = []
|
|
@@ -786,16 +788,16 @@ def concatenate_summaries(
|
|
|
786
788
|
|
|
787
789
|
if normalize_capacity_on is not None:
|
|
788
790
|
normalize_capacity_headers = [
|
|
789
|
-
hdr_summary
|
|
790
|
-
hdr_summary
|
|
791
|
+
hdr_summary.normalized_charge_capacity,
|
|
792
|
+
hdr_summary.normalized_discharge_capacity,
|
|
791
793
|
]
|
|
792
794
|
output_columns = [
|
|
793
795
|
col
|
|
794
796
|
for col in output_columns
|
|
795
797
|
if col
|
|
796
798
|
not in [
|
|
797
|
-
hdr_summary
|
|
798
|
-
hdr_summary
|
|
799
|
+
hdr_summary.charge_capacity,
|
|
800
|
+
hdr_summary.discharge_capacity,
|
|
799
801
|
]
|
|
800
802
|
]
|
|
801
803
|
output_columns.extend(normalize_capacity_headers)
|
|
@@ -917,7 +919,7 @@ def _partition_summary_based_on_cv_steps(
|
|
|
917
919
|
import pandas as pd
|
|
918
920
|
|
|
919
921
|
if not x:
|
|
920
|
-
x = hdr_summary
|
|
922
|
+
x = hdr_summary.cycle_index
|
|
921
923
|
|
|
922
924
|
summary = c.data.summary.copy()
|
|
923
925
|
|
|
@@ -1081,7 +1083,7 @@ def concat_summaries(
|
|
|
1081
1083
|
group_nest.append(pages.group.to_list())
|
|
1082
1084
|
|
|
1083
1085
|
default_columns = [hdr_summary["charge_capacity_gravimetric"]]
|
|
1084
|
-
hdr_norm_cycle = hdr_summary
|
|
1086
|
+
hdr_norm_cycle = hdr_summary.normalized_cycle_index
|
|
1085
1087
|
|
|
1086
1088
|
if columns is None:
|
|
1087
1089
|
columns = []
|
|
@@ -1111,16 +1113,16 @@ def concat_summaries(
|
|
|
1111
1113
|
|
|
1112
1114
|
if normalize_capacity_on is not None:
|
|
1113
1115
|
normalize_capacity_headers = [
|
|
1114
|
-
hdr_summary
|
|
1115
|
-
hdr_summary
|
|
1116
|
+
hdr_summary.normalized_charge_capacity,
|
|
1117
|
+
hdr_summary.normalized_discharge_capacity,
|
|
1116
1118
|
]
|
|
1117
1119
|
output_columns = [
|
|
1118
1120
|
col
|
|
1119
1121
|
for col in output_columns
|
|
1120
1122
|
if col
|
|
1121
1123
|
not in [
|
|
1122
|
-
hdr_summary
|
|
1123
|
-
hdr_summary
|
|
1124
|
+
hdr_summary.charge_capacity,
|
|
1125
|
+
hdr_summary.discharge_capacity,
|
|
1124
1126
|
]
|
|
1125
1127
|
]
|
|
1126
1128
|
output_columns.extend(normalize_capacity_headers)
|
|
@@ -1456,16 +1458,16 @@ def select_summary_based_on_rate(
|
|
|
1456
1458
|
filtered summary (Pandas.DataFrame).
|
|
1457
1459
|
"""
|
|
1458
1460
|
if on is None:
|
|
1459
|
-
on = [
|
|
1461
|
+
on = [StepType.CHARGE.value]
|
|
1460
1462
|
else:
|
|
1461
1463
|
if not isinstance(on, (list, tuple)):
|
|
1462
1464
|
on = [on]
|
|
1463
1465
|
|
|
1464
1466
|
if rate_column is None:
|
|
1465
|
-
rate_column = hdr_steps
|
|
1467
|
+
rate_column = hdr_steps.rate_avr
|
|
1466
1468
|
|
|
1467
1469
|
if on:
|
|
1468
|
-
on_column = hdr_steps
|
|
1470
|
+
on_column = hdr_steps.type
|
|
1469
1471
|
|
|
1470
1472
|
if rate is None:
|
|
1471
1473
|
rate = 0.05
|
|
@@ -1473,7 +1475,7 @@ def select_summary_based_on_rate(
|
|
|
1473
1475
|
if rate_std is None:
|
|
1474
1476
|
rate_std = 0.1 * rate
|
|
1475
1477
|
|
|
1476
|
-
cycle_number_header = hdr_summary
|
|
1478
|
+
cycle_number_header = hdr_summary.cycle_index
|
|
1477
1479
|
|
|
1478
1480
|
step_table = cell.data.steps
|
|
1479
1481
|
|
|
@@ -1545,10 +1547,10 @@ def add_normalized_capacity(
|
|
|
1545
1547
|
if norm_cycles is None:
|
|
1546
1548
|
norm_cycles = [1, 2, 3, 4, 5]
|
|
1547
1549
|
|
|
1548
|
-
col_name_charge = hdr_summary
|
|
1549
|
-
col_name_discharge = hdr_summary
|
|
1550
|
-
col_name_norm_charge = hdr_summary
|
|
1551
|
-
col_name_norm_discharge = hdr_summary
|
|
1550
|
+
col_name_charge = hdr_summary.charge_capacity
|
|
1551
|
+
col_name_discharge = hdr_summary.discharge_capacity
|
|
1552
|
+
col_name_norm_charge = hdr_summary.normalized_charge_capacity
|
|
1553
|
+
col_name_norm_discharge = hdr_summary.normalized_discharge_capacity
|
|
1552
1554
|
|
|
1553
1555
|
try:
|
|
1554
1556
|
norm_val_charge = cell.data.summary.loc[norm_cycles, col_name_charge].mean()
|
|
@@ -18,6 +18,8 @@ import matplotlib.pyplot as plt
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
import pandas as pd
|
|
20
20
|
|
|
21
|
+
from cellpycore.config import StepType
|
|
22
|
+
|
|
21
23
|
from cellpy import cellreader
|
|
22
24
|
from cellpy.parameters.internal_settings import get_headers_normal, get_headers_step_table
|
|
23
25
|
|
|
@@ -371,21 +373,21 @@ class MultiCycleOcvFit:
|
|
|
371
373
|
if direction == "up":
|
|
372
374
|
end_voltage = step_table[
|
|
373
375
|
(step_table[hdr_steps.cycle] == cycle)
|
|
374
|
-
& (step_table[hdr_steps.type].isin([
|
|
376
|
+
& (step_table[hdr_steps.type].isin([StepType.DISCHARGE.value]))
|
|
375
377
|
][hdr.voltage + "_last"].values[0]
|
|
376
378
|
|
|
377
379
|
end_current = step_table[
|
|
378
380
|
(step_table[hdr_steps.cycle] == cycle)
|
|
379
|
-
& (step_table[hdr_steps.type].isin([
|
|
381
|
+
& (step_table[hdr_steps.type].isin([StepType.DISCHARGE.value]))
|
|
380
382
|
][hdr.current + "_last"].values[0]
|
|
381
383
|
|
|
382
384
|
elif direction == "down":
|
|
383
385
|
end_voltage = step_table[
|
|
384
|
-
(step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin([
|
|
386
|
+
(step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin([StepType.CHARGE.value]))
|
|
385
387
|
][hdr.voltage + "_last"].values[0]
|
|
386
388
|
|
|
387
389
|
end_current = step_table[
|
|
388
|
-
(step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin([
|
|
390
|
+
(step_table[hdr_steps.cycle] == cycle) & (step_table[hdr_steps.type].isin([StepType.CHARGE.value]))
|
|
389
391
|
][hdr.current + "_last"].values[0]
|
|
390
392
|
|
|
391
393
|
return end_current, end_voltage
|