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.
Files changed (399) hide show
  1. cellpy-2.0.0a4/.issueflows/03-solved-issues/issue537_original.md +28 -0
  2. cellpy-2.0.0a4/.issueflows/03-solved-issues/issue537_plan.md +38 -0
  3. cellpy-2.0.0a4/.issueflows/03-solved-issues/issue537_status.md +27 -0
  4. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/DEPRECATIONS.md +0 -1
  5. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/HISTORY.md +33 -0
  6. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/PKG-INFO +1 -1
  7. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/_deprecation.py +2 -6
  8. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exporters/tabular.py +8 -2
  9. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/filters/summary.py +9 -1
  10. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/capacity_curves.py +23 -14
  11. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellreader.py +4 -15
  12. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_plotters.py +2 -2
  13. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/collectors.py +26 -13
  14. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/helpers.py +36 -34
  15. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/ica.py +10 -3
  16. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/ocv_rlx.py +6 -4
  17. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/plotutils.py +31 -25
  18. cellpy-2.0.0a2/cellpy/utils/easyplot.py +0 -1945
  19. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.aliases +0 -0
  20. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/commands/build.md +0 -0
  21. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/commands/create-original-issue-file.md +0 -0
  22. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/cellpy-core-migration.mdc +0 -0
  23. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/cellpy-workspace.mdc +0 -0
  24. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/graphify.mdc +0 -0
  25. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/issueflow-rules.mdc +0 -0
  26. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/kiss.mdc +0 -0
  27. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/rules/this-project.mdc +0 -0
  28. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/caveman/SKILL.md +0 -0
  29. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/grill-me/SKILL.md +0 -0
  30. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow/SKILL.md +0 -0
  31. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-archive/SKILL.md +0 -0
  32. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-cleanup/SKILL.md +0 -0
  33. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-close/SKILL.md +0 -0
  34. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-comments/SKILL.md +0 -0
  35. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-cycle/SKILL.md +0 -0
  36. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-epic/SKILL.md +0 -0
  37. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-fix/SKILL.md +0 -0
  38. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-graphify/SKILL.md +0 -0
  39. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-history-update/SKILL.md +0 -0
  40. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-init/SKILL.md +0 -0
  41. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-pause/SKILL.md +0 -0
  42. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-pick/SKILL.md +0 -0
  43. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-plan/SKILL.md +0 -0
  44. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-start/SKILL.md +0 -0
  45. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-status/SKILL.md +0 -0
  46. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-version-bump/SKILL.md +0 -0
  47. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/iflow-yolo/SKILL.md +0 -0
  48. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.cursor/skills/issueflow-build/SKILL.md +0 -0
  49. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.dockerignore +0 -0
  50. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.editorconfig +0 -0
  51. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.env_example +0 -0
  52. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.gitattributes +0 -0
  53. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.gitignore +0 -0
  54. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/.gitkeep +0 -0
  55. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/README.md +0 -0
  56. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/migrate_prms_calls.py +0 -0
  57. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/scan_hardcoded_headers.py +0 -0
  58. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/00-tools/scan_member_usage.py +0 -0
  59. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/01-current-issues/.gitkeep +0 -0
  60. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/.gitkeep +0 -0
  61. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue453_original.md +0 -0
  62. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue453_plan.md +0 -0
  63. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue453_status.md +0 -0
  64. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/02-partly-solved-issues/issue459_original.md +0 -0
  65. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/.gitkeep +0 -0
  66. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/2026-07-09_archived_issues.md +0 -0
  67. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue372_original.md +0 -0
  68. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue372_plan.md +0 -0
  69. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue372_status.md +0 -0
  70. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue375_original.md +0 -0
  71. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue375_plan.md +0 -0
  72. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue375_status.md +0 -0
  73. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue381_original.md +0 -0
  74. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue381_plan.md +0 -0
  75. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue381_status.md +0 -0
  76. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue391_original.md +0 -0
  77. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue391_plan.md +0 -0
  78. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue391_status.md +0 -0
  79. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue407_original.md +0 -0
  80. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue407_plan.md +0 -0
  81. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue407_status.md +0 -0
  82. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue415_original.md +0 -0
  83. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue415_plan.md +0 -0
  84. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue415_status.md +0 -0
  85. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue425_original.md +0 -0
  86. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue425_status.md +0 -0
  87. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue428_original.md +0 -0
  88. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue428_plan.md +0 -0
  89. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue428_status.md +0 -0
  90. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue429_original.md +0 -0
  91. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue429_plan.md +0 -0
  92. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue429_status.md +0 -0
  93. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue430_original.md +0 -0
  94. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue430_plan.md +0 -0
  95. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue430_status.md +0 -0
  96. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue431_original.md +0 -0
  97. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue431_plan.md +0 -0
  98. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue431_status.md +0 -0
  99. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue432_original.md +0 -0
  100. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue432_plan.md +0 -0
  101. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue432_status.md +0 -0
  102. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue433_original.md +0 -0
  103. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue433_plan.md +0 -0
  104. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue433_status.md +0 -0
  105. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue434_original.md +0 -0
  106. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue434_plan.md +0 -0
  107. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue434_status.md +0 -0
  108. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue435_original.md +0 -0
  109. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue435_plan.md +0 -0
  110. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue435_status.md +0 -0
  111. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue436_original.md +0 -0
  112. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue436_plan.md +0 -0
  113. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue436_status.md +0 -0
  114. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue437_original.md +0 -0
  115. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue437_plan.md +0 -0
  116. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue437_status.md +0 -0
  117. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue438_original.md +0 -0
  118. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue438_plan.md +0 -0
  119. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue438_status.md +0 -0
  120. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue439_original.md +0 -0
  121. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue439_plan.md +0 -0
  122. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue439_status.md +0 -0
  123. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue446_original.md +0 -0
  124. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue446_plan.md +0 -0
  125. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue446_status.md +0 -0
  126. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue447_original.md +0 -0
  127. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue447_plan.md +0 -0
  128. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue447_status.md +0 -0
  129. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue449_original.md +0 -0
  130. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue449_plan.md +0 -0
  131. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue449_status.md +0 -0
  132. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue450_original.md +0 -0
  133. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue450_plan.md +0 -0
  134. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue450_status.md +0 -0
  135. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue451_original.md +0 -0
  136. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue451_plan.md +0 -0
  137. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue451_status.md +0 -0
  138. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue452_original.md +0 -0
  139. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue452_plan.md +0 -0
  140. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue452_status.md +0 -0
  141. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue454_original.md +0 -0
  142. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue454_plan.md +0 -0
  143. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue454_status.md +0 -0
  144. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue455_original.md +0 -0
  145. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue455_plan.md +0 -0
  146. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue455_status.md +0 -0
  147. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue457_original.md +0 -0
  148. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue457_plan.md +0 -0
  149. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue457_status.md +0 -0
  150. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue458_original.md +0 -0
  151. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue458_plan.md +0 -0
  152. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue458_status.md +0 -0
  153. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue465_original.md +0 -0
  154. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue465_plan.md +0 -0
  155. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue465_status.md +0 -0
  156. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue466_original.md +0 -0
  157. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue466_plan.md +0 -0
  158. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue466_status.md +0 -0
  159. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue467_original.md +0 -0
  160. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue476_original.md +0 -0
  161. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue476_plan.md +0 -0
  162. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue476_status.md +0 -0
  163. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue479_original.md +0 -0
  164. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue479_plan.md +0 -0
  165. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue479_status.md +0 -0
  166. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue491_original.md +0 -0
  167. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue491_status.md +0 -0
  168. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue510_original.md +0 -0
  169. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue510_plan.md +0 -0
  170. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/03-solved-issues/issue510_status.md +0 -0
  171. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/.gitkeep +0 -0
  172. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/bdf-export.md +0 -0
  173. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/build-and-versioning.md +0 -0
  174. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-v2-architecture.excalidraw +0 -0
  175. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-v2-branching.md +0 -0
  176. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-v2-epic.md +0 -0
  177. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpy-workspace-repos.md +0 -0
  178. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/cellpycell-di-restructuring.md +0 -0
  179. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/ci-tiers.md +0 -0
  180. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/filters-and-plot-filtering.md +0 -0
  181. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/otherpath-upath.md +0 -0
  182. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/release-procedure.md +0 -0
  183. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/testing-and-coverage.md +0 -0
  184. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/this-project.md +0 -0
  185. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/04-designs-and-guides/v2-cellpycore-pin-gate.md +0 -0
  186. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.issueflows/05-epics/.gitkeep +0 -0
  187. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/.readthedocs.yaml +0 -0
  188. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/AGENTS.md +0 -0
  189. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/AUTHORS.md +0 -0
  190. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/CODE_OF_CONDUCT.md +0 -0
  191. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/CONTRIBUTING.md +0 -0
  192. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/LICENSE.md +0 -0
  193. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/README.md +0 -0
  194. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_data_structure.md +0 -0
  195. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_folder_structure.md +0 -0
  196. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_packaging_pypi.md +0 -0
  197. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_cellpy_setup.md +0 -0
  198. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_conda_package.md +0 -0
  199. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_docs.md +0 -0
  200. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_loaders_and_instruments.md +0 -0
  201. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/dev_various.md +0 -0
  202. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_developers_guide/index.md +0 -0
  203. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/01_getting_started_tutorial.md +0 -0
  204. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/02_read_cell_data.md +0 -0
  205. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/03_more_about_get.md +0 -0
  206. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/04_other_interactions.md +0 -0
  207. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/05_configuring.md +0 -0
  208. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/06_pandas.md +0 -0
  209. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/07_data_mining.md +0 -0
  210. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basic_interactions/08_the_cellpy_cmd.md +0 -0
  211. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/basics.md +0 -0
  212. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/examples.md +0 -0
  213. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/index.md +0 -0
  214. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/01_arbin.md +0 -0
  215. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/02_maccor.md +0 -0
  216. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/03_PEC.md +0 -0
  217. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/04_Neware.md +0 -0
  218. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/05_biologics.md +0 -0
  219. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders/06_custom.md +0 -0
  220. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/loaders.md +0 -0
  221. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_001.png +0 -0
  222. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/images/templates_jupyterlab_002.png +0 -0
  223. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_get_cap.ipynb +0 -0
  224. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_simple_plot.ipynb +0 -0
  225. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_templates.ipynb +0 -0
  226. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks/tutorial_xxx-checkpoint.ipynb +0 -0
  227. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/notebooks.md +0 -0
  228. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/tips_and_tricks.md +0 -0
  229. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/batch.md +0 -0
  230. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/collectors.md +0 -0
  231. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/custom_file_loaders.md +0 -0
  232. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/easyplot.md +0 -0
  233. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig1.png +0 -0
  234. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/figures/tutorials_utils_plotting_fig2.png +0 -0
  235. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/ica.md +0 -0
  236. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/plotting.md +0 -0
  237. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/templates.md +0 -0
  238. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils/tut_ocv_rlx.md +0 -0
  239. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_examples_and_tutorials/utils.md +0 -0
  240. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/formats.md +0 -0
  241. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/index.md +0 -0
  242. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/installation.md +0 -0
  243. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/_main_description/usage.md +0 -0
  244. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/_old_docs/index.md +0 -0
  245. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/README.md +0 -0
  246. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/__init__.py +0 -0
  247. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/baselines/v1x_ubuntu_py313.json +0 -0
  248. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/check_baseline.py +0 -0
  249. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/conftest.py +0 -0
  250. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/paths.py +0 -0
  251. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/benchmarks/test_performance.py +0 -0
  252. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/__init__.py +0 -0
  253. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/_version.py +0 -0
  254. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/cli.py +0 -0
  255. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/__init__.py +0 -0
  256. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/legacy.py +0 -0
  257. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/loader.py +0 -0
  258. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/migrate.py +0 -0
  259. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/models.py +0 -0
  260. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/session.py +0 -0
  261. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/sources.py +0 -0
  262. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/config/types.py +0 -0
  263. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exceptions.py +0 -0
  264. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exporters/__init__.py +0 -0
  265. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/exporters/bdf.py +0 -0
  266. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/filters/__init__.py +0 -0
  267. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/filters/cycles.py +0 -0
  268. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/internals/__init__.py +0 -0
  269. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/internals/connections.py +0 -0
  270. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/internals/otherpath.py +0 -0
  271. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/__init__.py +0 -0
  272. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/__init__.py +0 -0
  273. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_alias_module.py +0 -0
  274. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_importing.py +0 -0
  275. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_module.py +0 -0
  276. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_syncronized.py +0 -0
  277. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/_version.py +0 -0
  278. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/apipkg/py.typed +0 -0
  279. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/LICENSE +0 -0
  280. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/__init__.py +0 -0
  281. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/btsda.py +0 -0
  282. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/cli.py +0 -0
  283. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/dicts.py +0 -0
  284. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/formats.py +0 -0
  285. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/main.py +0 -0
  286. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/nda.py +0 -0
  287. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/ndax.py +0 -0
  288. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/utils.py +0 -0
  289. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/libs/local_fastnda/version.py +0 -0
  290. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/log.py +0 -0
  291. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/logging.json +0 -0
  292. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/.cellpy_prms_default.conf +0 -0
  293. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/__init__.py +0 -0
  294. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/_shim.py +0 -0
  295. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/internal_settings.py +0 -0
  296. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/legacy/__init__.py +0 -0
  297. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/legacy/update_headers.py +0 -0
  298. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/prmreader.py +0 -0
  299. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/parameters/prms.py +0 -0
  300. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/__init__.py +0 -0
  301. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/__init__.py +0 -0
  302. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/dtype.py +0 -0
  303. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/fids.py +0 -0
  304. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/format.py +0 -0
  305. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/keys.py +0 -0
  306. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/legacy_read.py +0 -0
  307. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/meta.py +0 -0
  308. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/meta_archive.py +0 -0
  309. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/read.py +0 -0
  310. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/selectors.py +0 -0
  311. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/translate.py +0 -0
  312. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/v9.py +0 -0
  313. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/cellpy_file/write.py +0 -0
  314. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/data_structures.py +0 -0
  315. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/dbreader.py +0 -0
  316. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/do.py +0 -0
  317. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/filefinder.py +0 -0
  318. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/SQL Table IDs.txt +0 -0
  319. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/__init__.py +0 -0
  320. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_res.py +0 -0
  321. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql.py +0 -0
  322. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_7.py +0 -0
  323. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_config.py +0 -0
  324. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_csv.py +0 -0
  325. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_h5.py +0 -0
  326. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/arbin_sql_xlsx.py +0 -0
  327. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/base.py +0 -0
  328. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/batmo_bdf.py +0 -0
  329. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/biologics_mpr.py +0 -0
  330. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/__init__.py +0 -0
  331. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/batmo_bdf_bdf.py +0 -0
  332. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_one.py +0 -0
  333. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_three.py +0 -0
  334. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_two.py +0 -0
  335. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/maccor_txt_zero.py +0 -0
  336. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/neware_txt_one.py +0 -0
  337. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/neware_txt_two.py +0 -0
  338. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/configurations/neware_txt_zero.py +0 -0
  339. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/custom.py +0 -0
  340. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/ext_nda_reader.py +0 -0
  341. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/loader_specific_modules/__init__.py +0 -0
  342. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/loader_specific_modules/biologic_file_format.py +0 -0
  343. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/local_instrument.py +0 -0
  344. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/maccor_txt.py +0 -0
  345. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/neware_nda.py +0 -0
  346. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/neware_txt.py +0 -0
  347. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/neware_xlsx.py +0 -0
  348. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/pec_csv.py +0 -0
  349. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/processors/__init__.py +0 -0
  350. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/processors/post_processors.py +0 -0
  351. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/instruments/processors/pre_processors.py +0 -0
  352. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/json_dbreader.py +0 -0
  353. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/merger.py +0 -0
  354. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/native_core.py +0 -0
  355. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/slicing.py +0 -0
  356. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/sql_dbreader.py +0 -0
  357. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/readers/test_meta.py +0 -0
  358. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/__init__.py +0 -0
  359. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch.py +0 -0
  360. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/__init__.py +0 -0
  361. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_analyzers.py +0 -0
  362. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_core.py +0 -0
  363. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_experiments.py +0 -0
  364. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_exporters.py +0 -0
  365. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_helpers.py +0 -0
  366. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_journals.py +0 -0
  367. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/batch_reporters.py +0 -0
  368. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/dumpers.py +0 -0
  369. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/engines.py +0 -0
  370. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/batch_tools/sqlite_from_excel_db.py +0 -0
  371. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/diagnostics.py +0 -0
  372. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/example_data.py +0 -0
  373. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/live.py +0 -0
  374. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/processor.py +0 -0
  375. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/cellpy/utils/template_registry.py +0 -0
  376. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/conda-recipes/README.md +0 -0
  377. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/conda-recipes/cellpy/meta.yaml +0 -0
  378. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/conda-recipes/cellpycore/meta.yaml +0 -0
  379. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/dev/regenerate_goldens.py +0 -0
  380. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/Dockerfile.build-test +0 -0
  381. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/README.md +0 -0
  382. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/compose.yml +0 -0
  383. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/data/hello.txt +0 -0
  384. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/docker/sftp-test/data/nested/sample.txt +0 -0
  385. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/environment.yml +0 -0
  386. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/environment_dev.yml +0 -0
  387. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/github_actions_environment.yml +0 -0
  388. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/noxfile.py +0 -0
  389. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/.github/workflows/draft-pdf.yml +0 -0
  390. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/.gitignore +0 -0
  391. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/Figures/Cellpy-Utils.jpg +0 -0
  392. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/Figures/CellpyCell.jpg +0 -0
  393. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/Figures/CellpyData.jpg +0 -0
  394. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/paper.bib +0 -0
  395. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/paper/paper.md +0 -0
  396. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/pyproject.toml +0 -0
  397. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/scripts/build_test.sh +0 -0
  398. {cellpy-2.0.0a2 → cellpy-2.0.0a4}/scripts/dev_sync.sh +0 -0
  399. {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.
@@ -8,5 +8,4 @@ uv run python -m cellpy._deprecation
8
8
 
9
9
  | Name | Replacement | Introduced | Removal |
10
10
  | --- | --- | --- | --- |
11
- | `cellpy.utils.easyplot` | `cellpy.utils.plotutils and cellpy.utils.collectors` | 1.1 | 2.0 |
12
11
  | `make_new_cell` | `CellpyCell.vacant` | 2.0 | 2.1 |
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cellpy
3
- Version: 2.0.0a2
3
+ Version: 2.0.0a4
4
4
  Summary: Extract and manipulate data from battery data testers.
5
5
  Project-URL: Homepage, https://github.com/jepegit/cellpy
6
6
  Project-URL: Repository, https://github.com/jepegit/cellpy
@@ -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
- _register(
98
- "cellpy.utils.easyplot",
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["capacity"]
78
- v = df["voltage"]
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 = ("charge_c_rate", "discharge_c_rate"),
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
- {"capacity": [externals.numpy.nan], "voltage": [externals.numpy.nan]}
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 = "voltage"
395
- y_col = "capacity"
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
- "voltage": _first_step_v,
405
- "capacity": _first_step_c,
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["direction"] = -1
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
- "voltage": _last_step_v.values,
429
- "capacity": _last_step_c.values,
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["direction"] = 1
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, "cycle", current_cycle)
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("capacity")),
471
- cols.pop(cols.index("voltage")),
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
- self.list_of_step_types = [
301
- "charge",
302
- "discharge",
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["mass"], hdr_journal["loading"], hdr_journal["label"]]
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["group"], hdr_journal["sub_group"]]]
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 = "capacity",
1969
- y: str = "voltage",
1970
- z: str = "cycle",
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", "capacity")
2363
- y = seaborn_arguments.get("y", "voltage")
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", "cycle")
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="capacity",
2524
- y="voltage",
2525
- z="cycle",
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["cycle"].unique())
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="capacity",
2893
- y="voltage",
2894
- z="cycle",
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,