cellpy 2.0.0a2__tar.gz → 2.0.0a4__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.0a4/.issueflows/03-solved-issues/issue537_original.md +28 -0
- cellpy-2.0.0a4/.issueflows/03-solved-issues/issue537_plan.md +38 -0
- cellpy-2.0.0a4/.issueflows/03-solved-issues/issue537_status.md +27 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/DEPRECATIONS.md +0 -1
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/HISTORY.md +33 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/PKG-INFO +1 -1
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/_deprecation.py +2 -6
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exporters/tabular.py +8 -2
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/filters/summary.py +9 -1
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/capacity_curves.py +23 -14
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellreader.py +4 -15
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_plotters.py +2 -2
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/collectors.py +26 -13
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/helpers.py +36 -34
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/ica.py +10 -3
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/ocv_rlx.py +6 -4
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/plotutils.py +31 -25
- cellpy-2.0.0a2/cellpy/utils/easyplot.py +0 -1945
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.aliases +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/commands/build.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/commands/create-original-issue-file.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/cellpy-core-migration.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/cellpy-workspace.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/graphify.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/issueflow-rules.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/kiss.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/this-project.mdc +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/caveman/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/grill-me/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-archive/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-close/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-comments/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-epic/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-fix/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-init/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-pause/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-pick/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-plan/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-start/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-status/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/issueflow-build/SKILL.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.dockerignore +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.editorconfig +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.env_example +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.gitattributes +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.gitignore +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/migrate_prms_calls.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/scan_hardcoded_headers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/scan_member_usage.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/01-current-issues/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue453_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue453_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue453_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue459_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/2026-07-09_archived_issues.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue372_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue372_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue372_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue375_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue375_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue375_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue381_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue381_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue381_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue391_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue391_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue391_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue407_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue407_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue407_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue415_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue415_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue415_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue425_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue425_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue428_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue428_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue428_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue429_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue429_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue429_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue430_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue430_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue430_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue431_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue431_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue431_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue432_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue432_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue432_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue433_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue433_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue433_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue434_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue434_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue434_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue435_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue435_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue435_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue436_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue436_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue436_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue437_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue437_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue437_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue438_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue438_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue438_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue439_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue439_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue439_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue446_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue446_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue446_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue447_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue447_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue447_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue449_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue449_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue449_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue450_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue450_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue450_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue451_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue451_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue451_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue452_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue452_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue452_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue454_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue454_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue454_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue455_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue455_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue455_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue457_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue457_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue457_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue458_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue458_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue458_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue465_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue465_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue465_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue466_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue466_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue466_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue467_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue476_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue476_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue476_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue479_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue479_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue479_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue491_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue491_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue510_original.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue510_plan.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue510_status.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/bdf-export.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/build-and-versioning.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-v2-architecture.excalidraw +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-v2-branching.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-v2-epic.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-workspace-repos.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpycell-di-restructuring.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/ci-tiers.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/filters-and-plot-filtering.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/otherpath-upath.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/testing-and-coverage.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/this-project.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/v2-cellpycore-pin-gate.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/05-epics/.gitkeep +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.readthedocs.yaml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/AGENTS.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/AUTHORS.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/CODE_OF_CONDUCT.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/CONTRIBUTING.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/LICENSE.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_data_structure.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_folder_structure.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_packaging_pypi.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_setup.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_conda_package.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_docs.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_loaders_and_instruments.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_various.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/01_getting_started_tutorial.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/02_read_cell_data.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/03_more_about_get.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/04_other_interactions.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/05_configuring.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/06_pandas.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/07_data_mining.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/08_the_cellpy_cmd.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basics.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/examples.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/01_arbin.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/02_maccor.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/03_PEC.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/04_Neware.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/05_biologics.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/06_custom.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_001.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_002.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_get_cap.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_simple_plot.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_templates.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_xxx-checkpoint.ipynb +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/tips_and_tricks.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/batch.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/collectors.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/custom_file_loaders.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/easyplot.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig1.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig2.png +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/ica.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/plotting.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/templates.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/tut_ocv_rlx.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/formats.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/installation.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/usage.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/index.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/baselines/v1x_ubuntu_py313.json +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/check_baseline.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/conftest.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/paths.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/test_performance.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/_version.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/cli.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/legacy.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/loader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/migrate.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/models.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/session.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/sources.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/types.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exceptions.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exporters/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exporters/bdf.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/filters/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/filters/cycles.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/internals/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/internals/connections.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/internals/otherpath.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_alias_module.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_importing.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_module.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_syncronized.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_version.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/py.typed +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/LICENSE +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/btsda.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/cli.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/dicts.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/formats.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/main.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/nda.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/ndax.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/utils.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/version.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/log.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/logging.json +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/.cellpy_prms_default.conf +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/_shim.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/internal_settings.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/legacy/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/legacy/update_headers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/prmreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/prms.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/dtype.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/fids.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/format.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/keys.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/legacy_read.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/meta.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/meta_archive.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/read.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/selectors.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/translate.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/v9.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/write.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/data_structures.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/dbreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/do.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/filefinder.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/SQL Table IDs.txt +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_res.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_7.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_config.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_csv.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_h5.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_xlsx.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/base.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/batmo_bdf.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/biologics_mpr.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/batmo_bdf_bdf.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_one.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_three.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_two.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_zero.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/neware_txt_one.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/neware_txt_two.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/neware_txt_zero.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/custom.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/ext_nda_reader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/loader_specific_modules/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/loader_specific_modules/biologic_file_format.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/local_instrument.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/maccor_txt.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/neware_nda.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/neware_txt.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/neware_xlsx.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/pec_csv.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/processors/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/processors/post_processors.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/processors/pre_processors.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/json_dbreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/merger.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/native_core.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/slicing.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/sql_dbreader.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/test_meta.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/__init__.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_analyzers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_core.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_experiments.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_exporters.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_helpers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_journals.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_reporters.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/dumpers.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/engines.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/sqlite_from_excel_db.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/diagnostics.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/example_data.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/live.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/processor.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/template_registry.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/conda-recipes/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/conda-recipes/cellpy/meta.yaml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/conda-recipes/cellpycore/meta.yaml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/regenerate_goldens.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/Dockerfile.build-test +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/README.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/compose.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/data/hello.txt +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/data/nested/sample.txt +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/environment.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/environment_dev.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/github_actions_environment.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/noxfile.py +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/.github/workflows/draft-pdf.yml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/.gitignore +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/Figures/Cellpy-Utils.jpg +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/Figures/CellpyCell.jpg +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/Figures/CellpyData.jpg +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/paper.bib +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/paper.md +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/pyproject.toml +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/scripts/build_test.sh +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/scripts/dev_sync.sh +0 -0
- {cellpy-2.0.0a2 → cellpy-2.0.0a4}/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,39 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
* **Breaking:** `CellpyCell.get_cap` now returns native `cellpycore` curve
|
|
6
|
+
columns (#540, native-headers flip Stage 1): `voltage` → `potential` and
|
|
7
|
+
`cycle` → `cycle_num` (`capacity` / `direction` unchanged). All in-repo
|
|
8
|
+
consumers — `plotutils.cycles_plot`, the batch collectors, `ica`, and the
|
|
9
|
+
CSV/Excel exporters — are updated; user code that indexes the `get_cap`
|
|
10
|
+
frame directly must rename. See `docs/getting_started/migration_v1_to_v2.md`.
|
|
11
|
+
|
|
12
|
+
* Removed the deprecated `cellpy.utils.easyplot` module (#544). It was
|
|
13
|
+
deprecated since 1.1 with removal scheduled for 2.0; use
|
|
14
|
+
`cellpy.utils.plotutils` and `cellpy.utils.collectors` instead. The module,
|
|
15
|
+
its tests, its docs entry, and its `DEPRECATIONS.md` row are gone.
|
|
16
|
+
|
|
17
|
+
* Step-type string literals use the `cellpycore` vocabulary (#543, native-
|
|
18
|
+
headers Phase-0 prerequisite): `CellpyCell.list_of_step_types` is now
|
|
19
|
+
`list(config.STEP_TYPES)` (was a hand-maintained duplicate of the 13
|
|
20
|
+
step-type names), and the step-table `type` comparisons in `utils/ocv_rlx.py`
|
|
21
|
+
/ `utils/helpers.py` use `StepType.CHARGE.value` / `.DISCHARGE.value` instead
|
|
22
|
+
of bare `"charge"` / `"discharge"` literals. Behavior-identical.
|
|
23
|
+
|
|
24
|
+
* Header column literals in `utils/helpers.py` and `filters/summary.py` use
|
|
25
|
+
header-object attributes (#538, native-headers Phase-0 prerequisite): the
|
|
26
|
+
base-name string-keyed `hdr_summary["charge_capacity"]`-style lookups become
|
|
27
|
+
attribute access, and `filter_summary`'s `rate_columns` default is resolved
|
|
28
|
+
from `HeadersSummary` (was a hard-coded `("charge_c_rate", "discharge_c_rate")`
|
|
29
|
+
tuple). Postfix/specific columns (`*_gravimetric`, `areal_*`) keep string-key
|
|
30
|
+
composition. Behavior-identical.
|
|
31
|
+
|
|
32
|
+
* Journal-page column literals use `HeadersJournal` attributes (#537, native-
|
|
33
|
+
headers Phase-0 prerequisite): the string-keyed `hdr_journal["mass"]`-style
|
|
34
|
+
lookups in `batch_plotters.py` and `helpers.py` become attribute access
|
|
35
|
+
(`hdr_journal.mass`, …) so a journal-header rename touches the header class
|
|
36
|
+
only. Behavior-identical.
|
|
37
|
+
|
|
5
38
|
* Remote paths via `universal_pathlib` (#375, #371): `OtherPath` is now a thin
|
|
6
39
|
wrapper around `UPath` (fsspec/Paramiko) instead of Fabric. Supported schemes
|
|
7
40
|
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__":
|
|
@@ -23,9 +23,15 @@ import warnings
|
|
|
23
23
|
from pathlib import Path
|
|
24
24
|
from typing import TYPE_CHECKING
|
|
25
25
|
|
|
26
|
+
from cellpycore.config import CurveCols
|
|
27
|
+
|
|
26
28
|
from cellpy.exceptions import NoDataFound
|
|
27
29
|
from cellpy.readers import externals
|
|
28
30
|
|
|
31
|
+
# get_cap emits native CurveCols names (#540): potential/cycle_num, not
|
|
32
|
+
# voltage/cycle.
|
|
33
|
+
_CCOLS = CurveCols()
|
|
34
|
+
|
|
29
35
|
if TYPE_CHECKING:
|
|
30
36
|
from cellpy.readers.cellreader import CellpyCell
|
|
31
37
|
|
|
@@ -74,8 +80,8 @@ def export_cycles(
|
|
|
74
80
|
if df.empty:
|
|
75
81
|
logging.debug("NoneType from get_cap")
|
|
76
82
|
else:
|
|
77
|
-
c = df[
|
|
78
|
-
v = df[
|
|
83
|
+
c = df[_CCOLS.capacity]
|
|
84
|
+
v = df[_CCOLS.potential]
|
|
79
85
|
|
|
80
86
|
_last = c.iat[-1]
|
|
81
87
|
_first = c.iat[0]
|
|
@@ -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
|
|
|
@@ -13,12 +13,20 @@ import logging
|
|
|
13
13
|
import warnings
|
|
14
14
|
from typing import TYPE_CHECKING
|
|
15
15
|
|
|
16
|
+
from cellpycore.config import CurveCols
|
|
17
|
+
|
|
16
18
|
import cellpy.config as config
|
|
17
19
|
|
|
18
20
|
from . import externals as externals
|
|
19
21
|
from cellpy.readers import data_structures as ds
|
|
20
22
|
from cellpy.exceptions import NullData
|
|
21
23
|
|
|
24
|
+
# Native curve-frame column names (cellpycore #118). get_cap and the
|
|
25
|
+
# single-branch charge/discharge extractors emit these unconditionally on the
|
|
26
|
+
# v2 line (#540): potential/cycle_num replace the legacy voltage/cycle;
|
|
27
|
+
# capacity/direction are unchanged.
|
|
28
|
+
_CCOLS = CurveCols()
|
|
29
|
+
|
|
22
30
|
if TYPE_CHECKING:
|
|
23
31
|
from cellpy.readers.cellreader import CellpyCell
|
|
24
32
|
|
|
@@ -241,7 +249,10 @@ def get_cap(
|
|
|
241
249
|
|
|
242
250
|
if insert_nan:
|
|
243
251
|
_nan = externals.pandas.DataFrame(
|
|
244
|
-
{
|
|
252
|
+
{
|
|
253
|
+
_CCOLS.capacity: [externals.numpy.nan],
|
|
254
|
+
_CCOLS.potential: [externals.numpy.nan],
|
|
255
|
+
}
|
|
245
256
|
)
|
|
246
257
|
|
|
247
258
|
converter_kwargs = dict()
|
|
@@ -391,8 +402,8 @@ def get_cap(
|
|
|
391
402
|
logging.debug("no first charge step found")
|
|
392
403
|
|
|
393
404
|
if return_dataframe:
|
|
394
|
-
x_col =
|
|
395
|
-
y_col =
|
|
405
|
+
x_col = _CCOLS.potential
|
|
406
|
+
y_col = _CCOLS.capacity
|
|
396
407
|
if interpolate_along_cap:
|
|
397
408
|
x_col, y_col = y_col, x_col
|
|
398
409
|
|
|
@@ -401,8 +412,8 @@ def get_cap(
|
|
|
401
412
|
if not _first_step_c.empty:
|
|
402
413
|
_first_df = externals.pandas.DataFrame(
|
|
403
414
|
{
|
|
404
|
-
|
|
405
|
-
|
|
415
|
+
_CCOLS.potential: _first_step_v,
|
|
416
|
+
_CCOLS.capacity: _first_step_c,
|
|
406
417
|
}
|
|
407
418
|
)
|
|
408
419
|
if interpolated:
|
|
@@ -417,7 +428,7 @@ def get_cap(
|
|
|
417
428
|
if insert_nan:
|
|
418
429
|
_first_df = externals.pandas.concat([_first_df, _nan])
|
|
419
430
|
if categorical_column:
|
|
420
|
-
_first_df[
|
|
431
|
+
_first_df[_CCOLS.direction] = -1
|
|
421
432
|
else:
|
|
422
433
|
_first_df = externals.pandas.DataFrame()
|
|
423
434
|
|
|
@@ -425,8 +436,8 @@ def get_cap(
|
|
|
425
436
|
if not _last_step_c.empty:
|
|
426
437
|
_last_df = externals.pandas.DataFrame(
|
|
427
438
|
{
|
|
428
|
-
|
|
429
|
-
|
|
439
|
+
_CCOLS.potential: _last_step_v.values,
|
|
440
|
+
_CCOLS.capacity: _last_step_c.values,
|
|
430
441
|
}
|
|
431
442
|
)
|
|
432
443
|
if interpolated:
|
|
@@ -441,7 +452,7 @@ def get_cap(
|
|
|
441
452
|
if insert_nan:
|
|
442
453
|
_last_df = externals.pandas.concat([_last_df, _nan])
|
|
443
454
|
if categorical_column:
|
|
444
|
-
_last_df[
|
|
455
|
+
_last_df[_CCOLS.direction] = 1
|
|
445
456
|
else:
|
|
446
457
|
_last_df = externals.pandas.DataFrame()
|
|
447
458
|
|
|
@@ -457,9 +468,7 @@ def get_cap(
|
|
|
457
468
|
else:
|
|
458
469
|
c = externals.pandas.concat([_first_df, _last_df], axis=0)
|
|
459
470
|
if label_cycle_number:
|
|
460
|
-
c.insert(0,
|
|
461
|
-
# c["cycle"] = current_cycle
|
|
462
|
-
# c = c[["cycle", "voltage", "capacity", "direction"]]
|
|
471
|
+
c.insert(0, _CCOLS.cycle_num, current_cycle)
|
|
463
472
|
if cycle_df.empty:
|
|
464
473
|
cycle_df = c
|
|
465
474
|
else:
|
|
@@ -467,8 +476,8 @@ def get_cap(
|
|
|
467
476
|
if capacity_then_voltage:
|
|
468
477
|
cols = cycle_df.columns.to_list()
|
|
469
478
|
new_cols = [
|
|
470
|
-
cols.pop(cols.index(
|
|
471
|
-
cols.pop(cols.index(
|
|
479
|
+
cols.pop(cols.index(_CCOLS.capacity)),
|
|
480
|
+
cols.pop(cols.index(_CCOLS.potential)),
|
|
472
481
|
]
|
|
473
482
|
new_cols.extend(cols)
|
|
474
483
|
cycle_df = cycle_df[new_cols]
|
|
@@ -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
|
|
|
@@ -19,7 +19,15 @@ import matplotlib.pyplot as plt
|
|
|
19
19
|
import numpy as np
|
|
20
20
|
|
|
21
21
|
import cellpy
|
|
22
|
+
from cellpycore.config import CurveCols
|
|
23
|
+
|
|
22
24
|
from cellpy.parameters.internal_settings import get_headers_journal
|
|
25
|
+
|
|
26
|
+
# get_cap curve frames use native CurveCols names (#540): potential/cycle_num
|
|
27
|
+
# replace the legacy voltage/cycle. The capacity-curve plotters below default
|
|
28
|
+
# their x/y/z column selectors to these. (Summary and ICA collectors use their
|
|
29
|
+
# own schemas and are left untouched.)
|
|
30
|
+
_CCOLS = CurveCols()
|
|
23
31
|
from cellpy.readers.data_structures import group_by_interpolate
|
|
24
32
|
from cellpy.utils.batch import Batch
|
|
25
33
|
from cellpy.utils.helpers import concat_summaries
|
|
@@ -1163,9 +1171,14 @@ class BatchSummaryCollector(BatchCollector):
|
|
|
1163
1171
|
wide_cols = []
|
|
1164
1172
|
value_cols = []
|
|
1165
1173
|
sort_by = []
|
|
1174
|
+
# summary collectors label the cycle column "cycle"; curve collectors
|
|
1175
|
+
# carry the native CurveCols name "cycle_num" (#540).
|
|
1166
1176
|
if "cycle" in cols:
|
|
1167
1177
|
index = "cycle"
|
|
1168
1178
|
cols.remove("cycle")
|
|
1179
|
+
elif _CCOLS.cycle_num in cols:
|
|
1180
|
+
index = _CCOLS.cycle_num
|
|
1181
|
+
cols.remove(_CCOLS.cycle_num)
|
|
1169
1182
|
else:
|
|
1170
1183
|
print("Could not find index")
|
|
1171
1184
|
return self.data
|
|
@@ -1965,9 +1978,9 @@ def spread_plot(curves, plotly_arguments=None, y_label_mapper=None, **kwargs):
|
|
|
1965
1978
|
|
|
1966
1979
|
def sequence_plotter(
|
|
1967
1980
|
collected_curves: pd.DataFrame,
|
|
1968
|
-
x: str =
|
|
1969
|
-
y: str =
|
|
1970
|
-
z: str =
|
|
1981
|
+
x: str = _CCOLS.capacity,
|
|
1982
|
+
y: str = _CCOLS.potential,
|
|
1983
|
+
z: str = _CCOLS.cycle_num,
|
|
1971
1984
|
g: str = "cell",
|
|
1972
1985
|
standard_deviation: str = None,
|
|
1973
1986
|
group: str = hdr_journal.group,
|
|
@@ -2359,10 +2372,10 @@ def sequence_plotter(
|
|
|
2359
2372
|
seaborn_arguments["height"] = kwargs.pop("height", 3)
|
|
2360
2373
|
seaborn_arguments["aspect"] = kwargs.pop("height", 1)
|
|
2361
2374
|
sns.set_theme(style="darkgrid")
|
|
2362
|
-
x = seaborn_arguments.get("x",
|
|
2363
|
-
y = seaborn_arguments.get("y",
|
|
2375
|
+
x = seaborn_arguments.get("x", _CCOLS.capacity)
|
|
2376
|
+
y = seaborn_arguments.get("y", _CCOLS.potential)
|
|
2364
2377
|
row = seaborn_arguments.get("row", hdr_journal.group)
|
|
2365
|
-
hue = seaborn_arguments.get("hue",
|
|
2378
|
+
hue = seaborn_arguments.get("hue", _CCOLS.cycle_num)
|
|
2366
2379
|
col = seaborn_arguments.get("col", hdr_journal.sub_group)
|
|
2367
2380
|
height = seaborn_arguments.get("height", 3)
|
|
2368
2381
|
aspect = seaborn_arguments.get("aspect", 1)
|
|
@@ -2520,9 +2533,9 @@ def sequence_plotter(
|
|
|
2520
2533
|
def _cycles_plotter(
|
|
2521
2534
|
collected_curves,
|
|
2522
2535
|
cycles=None,
|
|
2523
|
-
x=
|
|
2524
|
-
y=
|
|
2525
|
-
z=
|
|
2536
|
+
x=_CCOLS.capacity,
|
|
2537
|
+
y=_CCOLS.potential,
|
|
2538
|
+
z=_CCOLS.cycle_num,
|
|
2526
2539
|
g="cell",
|
|
2527
2540
|
standard_deviation=None,
|
|
2528
2541
|
default_title="Charge-Discharge Curves",
|
|
@@ -2579,7 +2592,7 @@ def _cycles_plotter(
|
|
|
2579
2592
|
if cycles is not None:
|
|
2580
2593
|
number_of_figs = len(cycles)
|
|
2581
2594
|
else:
|
|
2582
|
-
number_of_figs = len(collected_curves[
|
|
2595
|
+
number_of_figs = len(collected_curves[_CCOLS.cycle_num].unique())
|
|
2583
2596
|
elif method == "summary":
|
|
2584
2597
|
number_of_figs = len(collected_curves["variable"].unique())
|
|
2585
2598
|
sub_fig_min_height = 300
|
|
@@ -2889,9 +2902,9 @@ def cycles_plotter(
|
|
|
2889
2902
|
|
|
2890
2903
|
return _cycles_plotter(
|
|
2891
2904
|
collected_curves,
|
|
2892
|
-
x=
|
|
2893
|
-
y=
|
|
2894
|
-
z=
|
|
2905
|
+
x=_CCOLS.capacity,
|
|
2906
|
+
y=_CCOLS.potential,
|
|
2907
|
+
z=_CCOLS.cycle_num,
|
|
2895
2908
|
g="cell",
|
|
2896
2909
|
x_unit=x_unit,
|
|
2897
2910
|
y_unit=y_unit,
|