batplot 1.8.34__tar.gz → 1.8.35__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 (42) hide show
  1. {batplot-1.8.34/batplot.egg-info → batplot-1.8.35}/PKG-INFO +1 -1
  2. {batplot-1.8.34 → batplot-1.8.35}/batplot/__init__.py +1 -1
  3. {batplot-1.8.34 → batplot-1.8.35}/batplot/data/CHANGELOG.md +4 -0
  4. {batplot-1.8.34 → batplot-1.8.35}/batplot/electrochem_interactive.py +75 -21
  5. {batplot-1.8.34 → batplot-1.8.35/batplot.egg-info}/PKG-INFO +1 -1
  6. {batplot-1.8.34 → batplot-1.8.35}/pyproject.toml +1 -1
  7. {batplot-1.8.34 → batplot-1.8.35}/LICENSE +0 -0
  8. {batplot-1.8.34 → batplot-1.8.35}/MANIFEST.in +0 -0
  9. {batplot-1.8.34 → batplot-1.8.35}/NOTICE +0 -0
  10. {batplot-1.8.34 → batplot-1.8.35}/README.md +0 -0
  11. {batplot-1.8.34 → batplot-1.8.35}/batplot/args.py +0 -0
  12. {batplot-1.8.34 → batplot-1.8.35}/batplot/batch.py +0 -0
  13. {batplot-1.8.34 → batplot-1.8.35}/batplot/batplot.py +0 -0
  14. {batplot-1.8.34 → batplot-1.8.35}/batplot/canvas_interactive.py +0 -0
  15. {batplot-1.8.34 → batplot-1.8.35}/batplot/cif.py +0 -0
  16. {batplot-1.8.34 → batplot-1.8.35}/batplot/cli.py +0 -0
  17. {batplot-1.8.34 → batplot-1.8.35}/batplot/color_utils.py +0 -0
  18. {batplot-1.8.34 → batplot-1.8.35}/batplot/config.py +0 -0
  19. {batplot-1.8.34 → batplot-1.8.35}/batplot/converters.py +0 -0
  20. {batplot-1.8.34 → batplot-1.8.35}/batplot/cpc_interactive.py +0 -0
  21. {batplot-1.8.34 → batplot-1.8.35}/batplot/data/USER_MANUAL.md +0 -0
  22. {batplot-1.8.34 → batplot-1.8.35}/batplot/dev_upgrade.py +0 -0
  23. {batplot-1.8.34 → batplot-1.8.35}/batplot/interactive.py +0 -0
  24. {batplot-1.8.34 → batplot-1.8.35}/batplot/manual.py +0 -0
  25. {batplot-1.8.34 → batplot-1.8.35}/batplot/modes.py +0 -0
  26. {batplot-1.8.34 → batplot-1.8.35}/batplot/operando.py +0 -0
  27. {batplot-1.8.34 → batplot-1.8.35}/batplot/operando_ec_interactive.py +0 -0
  28. {batplot-1.8.34 → batplot-1.8.35}/batplot/plotting.py +0 -0
  29. {batplot-1.8.34 → batplot-1.8.35}/batplot/readers.py +0 -0
  30. {batplot-1.8.34 → batplot-1.8.35}/batplot/session.py +0 -0
  31. {batplot-1.8.34 → batplot-1.8.35}/batplot/showcol.py +0 -0
  32. {batplot-1.8.34 → batplot-1.8.35}/batplot/style.py +0 -0
  33. {batplot-1.8.34 → batplot-1.8.35}/batplot/ui.py +0 -0
  34. {batplot-1.8.34 → batplot-1.8.35}/batplot/utils.py +0 -0
  35. {batplot-1.8.34 → batplot-1.8.35}/batplot/version_check.py +0 -0
  36. {batplot-1.8.34 → batplot-1.8.35}/batplot.egg-info/SOURCES.txt +0 -0
  37. {batplot-1.8.34 → batplot-1.8.35}/batplot.egg-info/dependency_links.txt +0 -0
  38. {batplot-1.8.34 → batplot-1.8.35}/batplot.egg-info/entry_points.txt +0 -0
  39. {batplot-1.8.34 → batplot-1.8.35}/batplot.egg-info/requires.txt +0 -0
  40. {batplot-1.8.34 → batplot-1.8.35}/batplot.egg-info/top_level.txt +0 -0
  41. {batplot-1.8.34 → batplot-1.8.35}/setup.cfg +0 -0
  42. {batplot-1.8.34 → batplot-1.8.35}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: batplot
3
- Version: 1.8.34
3
+ Version: 1.8.35
4
4
  Summary: Interactive plotting tool for material science (1D plot) and electrochemistry (GC, CV, dQ/dV, CPC, operando) with batch processing
5
5
  Author-email: Tian Dai <tianda@uio.no>
6
6
  License: MIT License
@@ -1,5 +1,5 @@
1
1
  """batplot: Interactive plotting for battery data visualization."""
2
2
 
3
- __version__ = "1.8.34"
3
+ __version__ = "1.8.35"
4
4
 
5
5
  __all__ = ["__version__"]
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.8.35] - 2026-03-26
4
+ - Bug fixes
5
+
6
+
3
7
  ## [1.8.34] - 2026-03-24
4
8
  - Bug fixes
5
9
 
@@ -281,12 +281,24 @@ def _apply_stored_smooth_settings(cycle_lines: Dict[int, Dict[str, Optional[Any]
281
281
  continue
282
282
  xdata = np.asarray(ln.get_xdata(), float)
283
283
  ydata = np.asarray(ln.get_ydata(), float)
284
+ if xdata.size != ydata.size:
285
+ n = int(min(xdata.size, ydata.size))
286
+ if n < 3:
287
+ continue
288
+ xdata = xdata[:n]
289
+ ydata = ydata[:n]
284
290
  if xdata.size < 3:
285
291
  continue
286
292
  # Get original data if available, otherwise use current data
287
293
  if hasattr(ln, '_original_xdata'):
288
294
  xdata = np.asarray(ln._original_xdata, float)
289
295
  ydata = np.asarray(ln._original_ydata, float)
296
+ if xdata.size != ydata.size:
297
+ n = int(min(xdata.size, ydata.size))
298
+ if n < 3:
299
+ continue
300
+ xdata = xdata[:n]
301
+ ydata = ydata[:n]
290
302
  else:
291
303
  ln._original_xdata = np.array(xdata, copy=True)
292
304
  ln._original_ydata = np.array(ydata, copy=True)
@@ -309,12 +321,24 @@ def _apply_stored_smooth_settings(cycle_lines: Dict[int, Dict[str, Optional[Any]
309
321
  continue
310
322
  xdata = np.asarray(ln.get_xdata(), float)
311
323
  ydata = np.asarray(ln.get_ydata(), float)
324
+ if xdata.size != ydata.size:
325
+ n = int(min(xdata.size, ydata.size))
326
+ if n < 3:
327
+ continue
328
+ xdata = xdata[:n]
329
+ ydata = ydata[:n]
312
330
  if xdata.size < 3:
313
331
  continue
314
332
  # Get original data if available, otherwise use current data
315
333
  if hasattr(ln, '_original_xdata'):
316
334
  xdata = np.asarray(ln._original_xdata, float)
317
335
  ydata = np.asarray(ln._original_ydata, float)
336
+ if xdata.size != ydata.size:
337
+ n = int(min(xdata.size, ydata.size))
338
+ if n < 3:
339
+ continue
340
+ xdata = xdata[:n]
341
+ ydata = ydata[:n]
318
342
  else:
319
343
  ln._original_xdata = np.array(xdata, copy=True)
320
344
  ln._original_ydata = np.array(ydata, copy=True)
@@ -341,12 +365,24 @@ def _apply_stored_smooth_settings(cycle_lines: Dict[int, Dict[str, Optional[Any]
341
365
  continue
342
366
  xdata = np.asarray(ln.get_xdata(), float)
343
367
  ydata = np.asarray(ln.get_ydata(), float)
368
+ if xdata.size != ydata.size:
369
+ n = int(min(xdata.size, ydata.size))
370
+ if n < 5:
371
+ continue
372
+ xdata = xdata[:n]
373
+ ydata = ydata[:n]
344
374
  if xdata.size < 5:
345
375
  continue
346
376
  # Get original data if available, otherwise use current data
347
377
  if hasattr(ln, '_original_xdata'):
348
378
  xdata = np.asarray(ln._original_xdata, float)
349
379
  ydata = np.asarray(ln._original_ydata, float)
380
+ if xdata.size != ydata.size:
381
+ n = int(min(xdata.size, ydata.size))
382
+ if n < 5:
383
+ continue
384
+ xdata = xdata[:n]
385
+ ydata = ydata[:n]
350
386
  else:
351
387
  ln._original_xdata = np.array(xdata, copy=True)
352
388
  ln._original_ydata = np.array(ydata, copy=True)
@@ -5741,27 +5777,33 @@ def electrochem_interactive_menu(fig, ax, cycle_lines: Optional[Dict[int, Dict[s
5741
5777
  if ln is None or not ln.get_visible():
5742
5778
  continue
5743
5779
  xdata = np.asarray(ln.get_xdata(), float)
5744
- ydata = np.asarray(ln.get_ydata(), float)
5745
- if xdata.size < 3:
5746
- continue
5747
- if not hasattr(ln, '_original_xdata'):
5748
- ln._original_xdata = np.array(xdata, copy=True)
5749
- ln._original_ydata = np.array(ydata, copy=True)
5750
- dv = np.abs(np.diff(xdata))
5751
- mask = np.ones_like(xdata, dtype=bool)
5752
- mask[1:] &= dv >= threshold_v
5753
- mask[:-1] &= dv >= threshold_v
5754
- filtered_x = xdata[mask]
5755
- filtered_y = ydata[mask]
5756
- before = len(xdata)
5757
- after = len(filtered_x)
5758
- if after < before:
5759
- ln.set_xdata(filtered_x)
5760
- ln.set_ydata(filtered_y)
5761
- ln._smooth_applied = True
5762
- filtered += 1
5763
- total_before += before
5764
- total_after += after
5780
+ ydata = np.asarray(ln.get_ydata(), float)
5781
+ if xdata.size != ydata.size:
5782
+ n = int(min(xdata.size, ydata.size))
5783
+ if n < 3:
5784
+ continue
5785
+ xdata = xdata[:n]
5786
+ ydata = ydata[:n]
5787
+ if xdata.size < 3:
5788
+ continue
5789
+ if not hasattr(ln, '_original_xdata'):
5790
+ ln._original_xdata = np.array(xdata, copy=True)
5791
+ ln._original_ydata = np.array(ydata, copy=True)
5792
+ dv = np.abs(np.diff(xdata))
5793
+ mask = np.ones_like(xdata, dtype=bool)
5794
+ mask[1:] &= dv >= threshold_v
5795
+ mask[:-1] &= dv >= threshold_v
5796
+ filtered_x = xdata[mask]
5797
+ filtered_y = ydata[mask]
5798
+ before = len(xdata)
5799
+ after = len(filtered_x)
5800
+ if after < before:
5801
+ ln.set_xdata(filtered_x)
5802
+ ln.set_ydata(filtered_y)
5803
+ ln._smooth_applied = True
5804
+ filtered += 1
5805
+ total_before += before
5806
+ total_after += after
5765
5807
  if filtered:
5766
5808
  removed = total_before - total_after
5767
5809
  pct = 100 * removed / total_before if total_before else 0
@@ -5867,6 +5909,12 @@ def electrochem_interactive_menu(fig, ax, cycle_lines: Optional[Dict[int, Dict[s
5867
5909
  continue
5868
5910
  xdata = np.asarray(ln.get_xdata(), float)
5869
5911
  ydata = np.asarray(ln.get_ydata(), float)
5912
+ if xdata.size != ydata.size:
5913
+ n = int(min(xdata.size, ydata.size))
5914
+ if n < 3:
5915
+ continue
5916
+ xdata = xdata[:n]
5917
+ ydata = ydata[:n]
5870
5918
  if xdata.size < 3:
5871
5919
  continue
5872
5920
  if not hasattr(ln, '_original_xdata'):
@@ -5976,6 +6024,12 @@ def electrochem_interactive_menu(fig, ax, cycle_lines: Optional[Dict[int, Dict[s
5976
6024
  continue
5977
6025
  xdata = np.asarray(ln.get_xdata(), float)
5978
6026
  ydata = np.asarray(ln.get_ydata(), float)
6027
+ if xdata.size != ydata.size:
6028
+ n = int(min(xdata.size, ydata.size))
6029
+ if n < 5:
6030
+ continue
6031
+ xdata = xdata[:n]
6032
+ ydata = ydata[:n]
5979
6033
  if xdata.size < 5:
5980
6034
  continue
5981
6035
  if not hasattr(ln, '_original_xdata'):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: batplot
3
- Version: 1.8.34
3
+ Version: 1.8.35
4
4
  Summary: Interactive plotting tool for material science (1D plot) and electrochemistry (GC, CV, dQ/dV, CPC, operando) with batch processing
5
5
  Author-email: Tian Dai <tianda@uio.no>
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "batplot"
7
- version = "1.8.34"
7
+ version = "1.8.35"
8
8
  description = "Interactive plotting tool for material science (1D plot) and electrochemistry (GC, CV, dQ/dV, CPC, operando) with batch processing"
9
9
  authors = [
10
10
  { name = "Tian Dai", email = "tianda@uio.no" }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes