figpack 0.2.8__py3-none-any.whl → 0.2.10__py3-none-any.whl

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.

Potentially problematic release.


This version of figpack might be problematic. Click here for more details.

@@ -1 +1 @@
1
- .unitEntryBase{padding-right:13px;padding-top:10px}.unselectedUnitEntry{border:1px transparent solid;font-weight:400;color:#000;background-color:#fff}.selectedUnitEntry{border:1px solid blue;font-weight:700;color:#000;background-color:#b5d1ff}.unitIdsColumnLabelStyle{min-width:200px;font-weight:700;padding:7px 5px}.unitLabelsStyle{padding-right:3px;color:#333}.plotUnitLabel{text-align:left;margin-left:20px;margin-top:5px;font-weight:700}.plotWrapperButtonParent{display:inline-block}.plotWrapperStyleButton{padding-top:50px}.plotUnselectedStyle{border:3px solid rgb(202,224,231)}.plotSelectedStyle{border:3px solid #9999ff;background-color:#fff}.plotUnselectableStyle{border:3px solid transparent}.plotCurrentStyle{border:3px solid blue;background-color:#fff}.plotLabelStyle{font-weight:700;text-align:center;overflow:hidden;white-space:nowrap}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;overflow:hidden}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.status-bar{position:fixed;bottom:0;left:0;right:0;height:30px;background-color:#2a2a2a;color:#fff;display:flex;align-items:center;padding:0 12px;font-size:12px;border-top:1px solid #444;z-index:1000}.status-bar.warning{background-color:#ff9800;color:#000}.status-bar.error{background-color:#f44336;color:#fff}.status-bar.expired{background-color:#d32f2f;color:#fff}.manage-button{background-color:#444;color:#fff;border:none;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;margin-left:12px;transition:background-color .2s}.manage-button:hover{background-color:#666}.about-button{background-color:#444;color:#fff;border:none;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;margin-left:12px;transition:background-color .2s}.about-button:hover{background-color:#666}.about-dialog-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.about-dialog{background-color:#2a2a2a;color:#fff;border-radius:8px;max-width:600px;max-height:80vh;width:90%;box-shadow:0 4px 20px #0000004d;overflow:hidden}.about-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #444}.about-dialog-header h2{margin:0;font-size:18px;font-weight:600}.about-dialog-close{background:none;border:none;color:#fff;font-size:24px;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.about-dialog-close:hover{background-color:#444}.about-dialog-content{padding:20px;overflow-y:auto;max-height:calc(80vh - 80px)}.about-dialog-description{line-height:1.6}.about-dialog-description h1,.about-dialog-description h2,.about-dialog-description h3{margin-top:0;margin-bottom:12px}.about-dialog-description p{margin-bottom:12px}.about-dialog-description code{background-color:#444;padding:2px 4px;border-radius:3px;font-family:Courier New,monospace;font-size:.9em}.about-dialog-description pre{background-color:#444;padding:12px;border-radius:4px;overflow-x:auto;margin-bottom:12px}.about-dialog-description ul,.about-dialog-description ol{margin-bottom:12px;padding-left:20px}.about-dialog-description blockquote{border-left:4px solid #666;padding-left:16px;margin:12px 0;font-style:italic}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}.status-bar{background-color:#f5f5f5;color:#333;border-top:1px solid #ddd}.status-bar.warning{background-color:#fff3cd;color:#856404;border-top:1px solid #ffeaa7}.status-bar.error,.status-bar.expired{background-color:#f8d7da;color:#721c24;border-top:1px solid #f5c6cb}.manage-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc}.manage-button:hover{background-color:#d0d0d0}.about-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc}.about-button:hover{background-color:#d0d0d0}.about-dialog{background-color:#fff;color:#333;box-shadow:0 4px 20px #00000026}.about-dialog-header{border-bottom:1px solid #ddd}.about-dialog-close{color:#333}.about-dialog-close:hover{background-color:#f0f0f0}.about-dialog-description code,.about-dialog-description pre{background-color:#f5f5f5;color:#333}.about-dialog-description blockquote{border-left:4px solid #ccc}}.VerticalToolbar{overflow:hidden;position:absolute}.HorizontalToolbar{display:flex;justify-content:center;align-items:center;overflow:hidden;margin:auto}.SortableTableWidget .MuiTableCell-root{padding:1px 0;font-size:12px;border:solid 1px #f0f0f0}.SortableTableWidget .MuiTableRow-root.selectedRow{background-color:#b5d1ff}.SortableTableWidget .MuiTableRow-root.currentRow{background-color:#95b1df}.SortCaretSpan{font-size:16px;color:gray;padding-left:3px;padding-right:5px;padding-top:2px}.SortableTableWidget .unitLabel{width:10px;height:10px;position:relative;display:inline-block}.SortableTableWidget .SortableTableCheckbox{padding:1px}
1
+ .unitEntryBase{padding-right:13px;padding-top:10px}.unselectedUnitEntry{border:1px transparent solid;font-weight:400;color:#000;background-color:#fff}.selectedUnitEntry{border:1px solid blue;font-weight:700;color:#000;background-color:#b5d1ff}.unitIdsColumnLabelStyle{min-width:200px;font-weight:700;padding:7px 5px}.unitLabelsStyle{padding-right:3px;color:#333}.plotUnitLabel{text-align:left;margin-left:20px;margin-top:5px;font-weight:700}.plotWrapperButtonParent{display:inline-block}.plotWrapperStyleButton{padding-top:50px}.plotUnselectedStyle{border:3px solid rgb(202,224,231)}.plotSelectedStyle{border:3px solid #9999ff;background-color:#fff}.plotUnselectableStyle{border:3px solid transparent}.plotCurrentStyle{border:3px solid blue;background-color:#fff}.plotLabelStyle{font-weight:700;text-align:center;overflow:hidden;white-space:nowrap}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;overflow:hidden}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.status-bar{position:fixed;bottom:0;left:0;right:0;height:30px;background-color:#2a2a2a;color:#fff;display:flex;align-items:center;padding:0 12px;font-size:12px;border-top:1px solid #444;z-index:1000}.status-bar.warning{background-color:#ff9800;color:#000}.status-bar.error{background-color:#f44336;color:#fff}.status-bar.expired{background-color:#d32f2f;color:#fff}.manage-button{background-color:#444;color:#fff;border:none;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;margin-left:12px;transition:background-color .2s}.manage-button:hover{background-color:#666}.about-button{background-color:#444;color:#fff;border:none;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;margin-left:12px;transition:background-color .2s}.about-button:hover{background-color:#666}.about-dialog-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.about-dialog{background-color:#2a2a2a;color:#fff;border-radius:8px;max-width:600px;max-height:80vh;width:90%;box-shadow:0 4px 20px #0000004d;overflow:hidden}.about-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #444}.about-dialog-header h2{margin:0;font-size:18px;font-weight:600}.about-dialog-close{background:none;border:none;color:#fff;font-size:24px;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.about-dialog-close:hover{background-color:#444}.about-dialog-content{padding:20px;overflow-y:auto;max-height:calc(80vh - 80px)}.about-dialog-description{line-height:1.6}.about-dialog-description h1,.about-dialog-description h2,.about-dialog-description h3{margin-top:0;margin-bottom:12px}.about-dialog-description p{margin-bottom:12px}.about-dialog-description code{background-color:#444;padding:2px 4px;border-radius:3px;font-family:Courier New,monospace;font-size:.9em}.about-dialog-description pre{background-color:#444;padding:12px;border-radius:4px;overflow-x:auto;margin-bottom:12px}.about-dialog-description ul,.about-dialog-description ol{margin-bottom:12px;padding-left:20px}.about-dialog-description blockquote{border-left:4px solid #666;padding-left:16px;margin:12px 0;font-style:italic}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}.status-bar{background-color:#f5f5f5;color:#333;border-top:1px solid #ddd}.status-bar.warning{background-color:#fff3cd;color:#856404;border-top:1px solid #ffeaa7}.status-bar.error,.status-bar.expired{background-color:#f8d7da;color:#721c24;border-top:1px solid #f5c6cb}.manage-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc}.manage-button:hover{background-color:#d0d0d0}.about-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc}.about-button:hover{background-color:#d0d0d0}.about-dialog{background-color:#fff;color:#333;box-shadow:0 4px 20px #00000026}.about-dialog-header{border-bottom:1px solid #ddd}.about-dialog-close{color:#333}.about-dialog-close:hover{background-color:#f0f0f0}.about-dialog-description code,.about-dialog-description pre{background-color:#f5f5f5;color:#333}.about-dialog-description blockquote{border-left:4px solid #ccc}}.VerticalToolbar{overflow:hidden;position:absolute}.HorizontalToolbar{display:flex;justify-content:center;align-items:center;overflow:hidden;margin:auto}.SortableTableWidget .MuiTableCell-root{padding:1px 0;font-size:12px;border:solid 1px #f0f0f0}.SortableTableWidget .MuiTableRow-root.selectedRow{background-color:#b5d1ff}.SortableTableWidget .MuiTableRow-root.currentRow{background-color:#95b1df}.SortCaretSpan{font-size:16px;color:gray;padding-left:3px;padding-right:5px;padding-top:2px}.SortableTableWidget .unitLabel{width:10px;height:10px;position:relative;display:inline-block}.SortableTableWidget .SortableTableCheckbox{padding:1px}.NiceTable .MuiTableCell-root{padding:5px}.NiceTable .MuiIconButton-root{padding:1px}
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/png" href="./assets/neurosift-logo-CLsuwLMO.png" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>figpack figure</title>
8
- <script type="module" crossorigin src="./assets/index-CjiTpC6i.js"></script>
9
- <link rel="stylesheet" crossorigin href="./assets/index-Cmae55E4.css">
8
+ <script type="module" crossorigin src="./assets/index-D2FnM_hN.js"></script>
9
+ <link rel="stylesheet" crossorigin href="./assets/index-D9a3K6eW.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
@@ -0,0 +1,129 @@
1
+ """
2
+ UnitMetricsGraph view for figpack - displays unit metrics in a graph format
3
+ """
4
+
5
+ from typing import List, Optional, Union, Dict
6
+ import json
7
+
8
+ import numpy as np
9
+ import zarr
10
+
11
+ from ...core.figpack_view import FigpackView
12
+
13
+
14
+ class UnitMetricsGraphMetric:
15
+ """
16
+ Defines a metric with key, label, and data type
17
+ """
18
+
19
+ def __init__(
20
+ self,
21
+ *,
22
+ key: str,
23
+ label: str,
24
+ dtype: str,
25
+ ):
26
+ """
27
+ Initialize a UnitMetricsGraphMetric
28
+
29
+ Args:
30
+ key: Unique identifier for the metric
31
+ label: Human-readable label for display
32
+ dtype: Data type of the metric ("int", "float", etc.)
33
+ """
34
+ self.key = key
35
+ self.label = label
36
+ self.dtype = dtype
37
+
38
+ def to_dict(self) -> Dict:
39
+ """Convert to dictionary for serialization"""
40
+ return {
41
+ "key": self.key,
42
+ "label": self.label,
43
+ "dtype": self.dtype,
44
+ }
45
+
46
+
47
+ class UnitMetricsGraphUnit:
48
+ """
49
+ Represents a unit with its metric values
50
+ """
51
+
52
+ def __init__(
53
+ self,
54
+ *,
55
+ unit_id: Union[str, int],
56
+ values: Dict[str, Union[int, float]],
57
+ ):
58
+ """
59
+ Initialize a UnitMetricsGraphUnit
60
+
61
+ Args:
62
+ unit_id: Identifier for the unit
63
+ values: Dictionary mapping metric keys to their values
64
+ """
65
+ self.unit_id = unit_id
66
+ self.values = values
67
+
68
+ def to_dict(self) -> Dict:
69
+ """Convert to dictionary for serialization"""
70
+ return {
71
+ "unit_id": str(self.unit_id),
72
+ "values": self.values,
73
+ }
74
+
75
+
76
+ class UnitMetricsGraph(FigpackView):
77
+ """
78
+ A view that displays unit metrics in a graph format
79
+ """
80
+
81
+ def __init__(
82
+ self,
83
+ *,
84
+ units: List[UnitMetricsGraphUnit],
85
+ metrics: List[UnitMetricsGraphMetric],
86
+ height: Optional[int] = None,
87
+ ):
88
+ """
89
+ Initialize a UnitMetricsGraph view
90
+
91
+ Args:
92
+ units: List of UnitMetricsGraphUnit objects containing the data
93
+ metrics: List of UnitMetricsGraphMetric objects defining the metrics
94
+ height: Height of the view in pixels
95
+ """
96
+ self.units = units
97
+ self.metrics = metrics
98
+ self.height = height
99
+
100
+ def _write_to_zarr_group(self, group: zarr.Group) -> None:
101
+ """
102
+ Write the UnitMetricsGraph data to a Zarr group
103
+
104
+ Args:
105
+ group: Zarr group to write data into
106
+ """
107
+ # Set the view type
108
+ group.attrs["view_type"] = "UnitMetricsGraph"
109
+
110
+ # Set view properties
111
+ if self.height is not None:
112
+ group.attrs["height"] = self.height
113
+
114
+ # Store metrics metadata
115
+ metrics_metadata = [metric.to_dict() for metric in self.metrics]
116
+ group.attrs["metrics"] = metrics_metadata
117
+
118
+ # Store units data in a zarr array
119
+ units_data = [unit.to_dict() for unit in self.units]
120
+ units_json = json.dumps(units_data).encode("utf-8")
121
+ units_array = np.frombuffer(units_json, dtype=np.uint8)
122
+ group.create_dataset(
123
+ "units_data",
124
+ data=units_array,
125
+ dtype=np.uint8,
126
+ chunks=True,
127
+ compressor=zarr.Blosc(cname="zstd", clevel=3, shuffle=zarr.Blosc.SHUFFLE),
128
+ )
129
+ group.attrs["units_data_size"] = len(units_json)
@@ -15,6 +15,11 @@ from .SpikeAmplitudesItem import SpikeAmplitudesItem
15
15
  from .SpikeAmplitudes import SpikeAmplitudes
16
16
  from .RasterPlotItem import RasterPlotItem
17
17
  from .RasterPlot import RasterPlot
18
+ from .UnitMetricsGraph import (
19
+ UnitMetricsGraph,
20
+ UnitMetricsGraphMetric,
21
+ UnitMetricsGraphUnit,
22
+ )
18
23
 
19
24
  __all__ = [
20
25
  "AutocorrelogramItem",
@@ -30,4 +35,7 @@ __all__ = [
30
35
  "SpikeAmplitudes",
31
36
  "RasterPlotItem",
32
37
  "RasterPlot",
38
+ "UnitMetricsGraph",
39
+ "UnitMetricsGraphMetric",
40
+ "UnitMetricsGraphUnit",
33
41
  ]
@@ -21,9 +21,10 @@ class Spectrogram(FigpackView):
21
21
  *,
22
22
  start_time_sec: float,
23
23
  sampling_frequency_hz: float,
24
- frequency_min_hz: float,
25
- frequency_delta_hz: float,
26
24
  data: np.ndarray,
25
+ frequency_min_hz: Optional[float] = None,
26
+ frequency_delta_hz: Optional[float] = None,
27
+ frequencies: Optional[np.ndarray] = None,
27
28
  ):
28
29
  """
29
30
  Initialize a Spectrogram view
@@ -31,29 +32,53 @@ class Spectrogram(FigpackView):
31
32
  Args:
32
33
  start_time_sec: Starting time in seconds
33
34
  sampling_frequency_hz: Sampling rate in Hz
34
- frequency_min_hz: Minimum frequency in Hz
35
- frequency_delta_hz: Frequency bin spacing in Hz
36
35
  data: N×M numpy array where N is timepoints and M is frequency bins
36
+ frequency_min_hz: Minimum frequency in Hz (for uniform bins)
37
+ frequency_delta_hz: Frequency bin spacing in Hz (for uniform bins)
38
+ frequencies: Array of frequency values (for non-uniform bins)
37
39
  """
38
40
  assert data.ndim == 2, "Data must be a 2D array (timepoints × frequencies)"
39
41
  assert sampling_frequency_hz > 0, "Sampling frequency must be positive"
40
- assert frequency_delta_hz > 0, "Frequency delta must be positive"
42
+
43
+ # Validate frequency specification - exactly one method must be provided
44
+ uniform_specified = (
45
+ frequency_min_hz is not None and frequency_delta_hz is not None
46
+ )
47
+ nonuniform_specified = frequencies is not None
48
+
49
+ if uniform_specified and nonuniform_specified:
50
+ raise ValueError(
51
+ "Cannot specify both uniform (freq_min_hz, frequency_delta_hz) and non-uniform (frequencies) frequency parameters"
52
+ )
53
+ if not uniform_specified and not nonuniform_specified:
54
+ raise ValueError(
55
+ "Must specify either uniform (freq_min_hz, frequency_delta_hz) or non-uniform (frequencies) frequency parameters"
56
+ )
41
57
 
42
58
  self.start_time_sec = start_time_sec
43
59
  self.sampling_frequency_hz = sampling_frequency_hz
44
- self.frequency_min_hz = frequency_min_hz
45
- self.frequency_delta_hz = frequency_delta_hz
46
60
  self.data = data.astype(np.float32) # Ensure float32 for efficiency
47
61
 
62
+ # Store frequency information
63
+ if uniform_specified:
64
+ assert frequency_delta_hz > 0, "Frequency delta must be positive"
65
+ self.uniform_frequencies = True
66
+ self.frequency_min_hz = frequency_min_hz
67
+ self.frequency_delta_hz = frequency_delta_hz
68
+ self.frequencies = None
69
+ else:
70
+ assert (
71
+ len(frequencies) == data.shape[1]
72
+ ), f"Number of frequencies ({len(frequencies)}) must match data frequency dimension ({data.shape[1]})"
73
+ self.uniform_frequencies = False
74
+ self.frequency_min_hz = None
75
+ self.frequency_delta_hz = None
76
+ self.frequencies = np.array(frequencies, dtype=np.float32)
77
+
48
78
  n_timepoints, n_frequencies = data.shape
49
79
  self.n_timepoints = n_timepoints
50
80
  self.n_frequencies = n_frequencies
51
81
 
52
- # Calculate frequency bins
53
- self.frequency_bins = (
54
- frequency_min_hz + np.arange(n_frequencies) * frequency_delta_hz
55
- )
56
-
57
82
  # Calculate data range for color scaling
58
83
  self.data_min = float(np.nanmin(data))
59
84
  self.data_max = float(np.nanmax(data))
@@ -172,20 +197,24 @@ class Spectrogram(FigpackView):
172
197
  # Store metadata
173
198
  group.attrs["start_time_sec"] = self.start_time_sec
174
199
  group.attrs["sampling_frequency_hz"] = self.sampling_frequency_hz
175
- group.attrs["frequency_min_hz"] = self.frequency_min_hz
176
- group.attrs["frequency_delta_hz"] = self.frequency_delta_hz
200
+ group.attrs["uniform_frequencies"] = self.uniform_frequencies
177
201
  group.attrs["n_timepoints"] = self.n_timepoints
178
202
  group.attrs["n_frequencies"] = self.n_frequencies
179
203
  group.attrs["data_min"] = self.data_min
180
204
  group.attrs["data_max"] = self.data_max
181
205
 
182
- # Store frequency bins
183
- group.create_dataset(
184
- "frequency_bins",
185
- data=self.frequency_bins.astype(np.float32),
186
- compression="blosc",
187
- compression_opts={"cname": "lz4", "clevel": 5, "shuffle": 1},
188
- )
206
+ # Store frequency information based on type
207
+ if self.uniform_frequencies:
208
+ group.attrs["frequency_min_hz"] = self.frequency_min_hz
209
+ group.attrs["frequency_delta_hz"] = self.frequency_delta_hz
210
+ else:
211
+ # Store frequencies as a dataset for non-uniform case
212
+ group.create_dataset(
213
+ "frequencies",
214
+ data=self.frequencies,
215
+ compression="blosc",
216
+ compression_opts={"cname": "lz4", "clevel": 5, "shuffle": 1},
217
+ )
189
218
 
190
219
  # Store original data with optimal chunking
191
220
  original_chunks = self._calculate_optimal_chunk_size(self.data.shape)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: figpack
3
- Version: 0.2.8
3
+ Version: 0.2.10
4
4
  Summary: A Python package for creating shareable, interactive visualizations in the browser
5
5
  Author-email: Jeremy Magland <jmagland@flatironinstitute.org>
6
6
  License: Apache-2.0
@@ -1,17 +1,19 @@
1
- figpack/__init__.py,sha256=HxAr8mGrHvxeBsPiVIzWFXNs2g74PFwMyFB8yfQK1u4,181
1
+ figpack/__init__.py,sha256=E02IMyAwPn4hwSiDGEB5WbgYONLLHiTLrLeNB_Vx-xA,360
2
2
  figpack/cli.py,sha256=xWF7J2BxUqOLvPu-Kje7Q6oGukTroXsLq8WN8vJgyw0,8321
3
- figpack/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- figpack/core/_bundle_utils.py,sha256=JBZh2LJyu0oYHQBBVw5fF3uUNQJY_2bxVf6V7CN10FM,1884
3
+ figpack/core/__init__.py,sha256=V4wVdyBJ80mi9Rz8HjDSQNkqhqYB6sq4vWH3xQ10kaE,232
4
+ figpack/core/_bundle_utils.py,sha256=16hgTExPLkJCtGjVUCLlnbs_qgns6v01egVr3CEnUXE,6082
5
5
  figpack/core/_save_figure.py,sha256=52ny-m1ThGgxY4ZgMn7m33n8A2OCyezj8H8TMvw0Y8Q,1043
6
6
  figpack/core/_server_manager.py,sha256=BTLeZtSbaJtAmtslAfgvp9C-SV0aJnn4WCpUJzd1Mlg,10997
7
7
  figpack/core/_show_view.py,sha256=-5HT1MYSeVuEoaL3RNNyoCjYsZy4Jy9XLjljUqLuvV4,5146
8
8
  figpack/core/_upload_bundle.py,sha256=54hdWayJJdRZdx7N9V2aH_X33KkR6hImMjN6tkBTLi8,14894
9
9
  figpack/core/_view_figure.py,sha256=o1x1I2VKFrp2W_TStUS3fQblRW8AvGbu7Uy7MgVjofA,4186
10
10
  figpack/core/config.py,sha256=oOR7SlP192vuFhYlS-h14HnG-kd_3gaz0vshXch2RNc,173
11
- figpack/core/figpack_view.py,sha256=peJFkoP6HIqyNATzyucxAIq9HuCnK7SRO_-gE_rbEvg,6130
12
- figpack/figpack-figure-dist/index.html,sha256=koS5dlEb8lylfHmHnG5pBmXHlMIyK2ICrJ31aw5COmE,486
13
- figpack/figpack-figure-dist/assets/index-CjiTpC6i.js,sha256=5JLWD3VReahxiEbAB0h61FJCRe4CRZVEzBlX9qUS5m0,1618290
14
- figpack/figpack-figure-dist/assets/index-Cmae55E4.css,sha256=Yg0apcYehJwQvSQIUH13S7tsfqWQDevpJsAho0dDf0g,5499
11
+ figpack/core/extension_view.py,sha256=ikgsofCB3R9e1-mQweaJER9z1wRBkmPtDiLJpslgWnc,1793
12
+ figpack/core/figpack_extension.py,sha256=EJHZpe7GsQMUnSvxcYf8374-f6n85F_k1IEelFMRFP8,4332
13
+ figpack/core/figpack_view.py,sha256=MJnJvUhYPzf_IkXjD3SZHCeQmwEAQi6QCLS2H2ksSyw,6123
14
+ figpack/figpack-figure-dist/index.html,sha256=N0wnfnfGeaKqmiajhD7v8LbZsFUA5pPhqKiHD2m63PY,486
15
+ figpack/figpack-figure-dist/assets/index-D2FnM_hN.js,sha256=FyaXGyCqVuyuXu1PAWyaL-7krKB3hxU4UM-7crrqo_c,1622190
16
+ figpack/figpack-figure-dist/assets/index-D9a3K6eW.css,sha256=ki61XkOz_TBJnU9Qyk5EgBzh2-_ilZQui2i8DHSarEo,5584
15
17
  figpack/figpack-figure-dist/assets/neurosift-logo-CLsuwLMO.png,sha256=g5m-TwrGh5f6-9rXtWV-znH4B0nHgc__0GWclRDLUHs,9307
16
18
  figpack/franklab/__init__.py,sha256=HkehqGImJE_sE2vbPDo-HbgtEYaMICb9-230xTYvRTU,56
17
19
  figpack/franklab/views/TrackAnimation.py,sha256=3Jv1Ri4FIwTyqNahinqhHsBH1Bv_iZrEGx12w6diJ2M,5636
@@ -26,11 +28,12 @@ figpack/spike_sorting/views/RasterPlot.py,sha256=m8Cg-KioAM3CdIJOecpyTqp71HwhQVD
26
28
  figpack/spike_sorting/views/RasterPlotItem.py,sha256=iW7fuDEjSfvf5YMIwrF_6cmKvD76oCigOUMHtGgBsPI,638
27
29
  figpack/spike_sorting/views/SpikeAmplitudes.py,sha256=UOGxReKs5WwH7iRdR-iVN3Pr6wF3AnIV15veoZZzOco,13433
28
30
  figpack/spike_sorting/views/SpikeAmplitudesItem.py,sha256=j5Na-diY-vRUAPu0t0VkyFCSKFnQ_f5HT077mB3Cy8c,1134
31
+ figpack/spike_sorting/views/UnitMetricsGraph.py,sha256=Eva0YgexnHZqRH7bPQFgaqobWFz_ab6zgTb4-QZ4h2k,3381
29
32
  figpack/spike_sorting/views/UnitSimilarityScore.py,sha256=cJA9MkETos9qHhV1tqgA7SfNEaPo-duXYCE76hSFGnA,948
30
33
  figpack/spike_sorting/views/UnitsTable.py,sha256=M3y1IDJzSnvOaM1-QOyJOVcUcdTkVvxYhEMGd1kmUzs,2969
31
34
  figpack/spike_sorting/views/UnitsTableColumn.py,sha256=zBnuoeILTuiVLDvtcOxqa37E5WlbR12rlwNJUeWXxY4,847
32
35
  figpack/spike_sorting/views/UnitsTableRow.py,sha256=rEb2hMTA_pl2fTW1nOvnGir0ysfNx4uww3aekZzfWjk,720
33
- figpack/spike_sorting/views/__init__.py,sha256=iRq7xPmyhnQ3GffnPC0GxKGEWnlqXY_8IOxsMqYZ1IM,967
36
+ figpack/spike_sorting/views/__init__.py,sha256=2caaV9yxi97aHoYfUWUYyyIXQSZJRtRVqmPOW9ZeG1I,1159
34
37
  figpack/views/Box.py,sha256=TfhPFNtVEq71LCucmWk3XX2WxQLdaeRiWGm5BM0k2l4,2236
35
38
  figpack/views/DataFrame.py,sha256=VFP-EM_Wnc1G3uimVVMJe08KKWCAZe7DvmYf5e07uTk,3653
36
39
  figpack/views/Gallery.py,sha256=sHlZbaqxcktasmNsJnuxe8WmgUQ6iurG50JiChKSMbQ,3314
@@ -41,15 +44,15 @@ figpack/views/Markdown.py,sha256=Dl1UX5s0aC-mEx5m6jIJ839YKMNeeVzIDG-EANVrbys,114
41
44
  figpack/views/MatplotlibFigure.py,sha256=YoNtZTItEjatbtNJqATm2H-Oircp5Ca6FZLjHk_B0zg,2778
42
45
  figpack/views/MultiChannelTimeseries.py,sha256=sWr2nW1eoYR7V44wF7fac7IoQ6BOnus1nc4STkgIkYw,8501
43
46
  figpack/views/PlotlyFigure.py,sha256=E33PEkWSj907Ue73bYfZQlF-JFDdWA8jNrG-buFQLgs,2174
44
- figpack/views/Spectrogram.py,sha256=czjA1I_T86oNsWwXX_GHFM8WZ5UkP9nT8e8hrgav4iY,8110
47
+ figpack/views/Spectrogram.py,sha256=GfTNinkuMFu4dxn35MvSB4Perz84sx4LMcjUrOviz6c,9648
45
48
  figpack/views/Splitter.py,sha256=x9jLCTlIvDy5p9ymVd0X48KDccyD6bJANhXyFgKEmtE,2007
46
49
  figpack/views/TabLayout.py,sha256=5g3nmL95PfqgI0naqZXHMwLVo2ebDlGX01Hy9044bUw,1898
47
50
  figpack/views/TabLayoutItem.py,sha256=xmHA0JsW_6naJze4_mQuP_Fy0Nm17p2N7w_AsmVRp8k,880
48
51
  figpack/views/TimeseriesGraph.py,sha256=OAaCjO8fo86u_gO_frNfRGxng3tczxGDGKcJEvZo3rE,7469
49
52
  figpack/views/__init__.py,sha256=h9B6RWTOfgizOMqtEu8xGJxtXAhK-XXroN6ebL-Vcr0,543
50
- figpack-0.2.8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
51
- figpack-0.2.8.dist-info/METADATA,sha256=ih-mdvrks4Dxrtx1ieS82NJCAQp9QcqliCeFqWmUhkk,3616
52
- figpack-0.2.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
- figpack-0.2.8.dist-info/entry_points.txt,sha256=l6d3siH2LxXa8qJGbjAqpIZtI5AkMSyDeoRDCzdrUto,45
54
- figpack-0.2.8.dist-info/top_level.txt,sha256=lMKGaC5xWmAYBx9Ac1iMokm42KFnJFjmkP2ldyvOo-c,8
55
- figpack-0.2.8.dist-info/RECORD,,
53
+ figpack-0.2.10.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
+ figpack-0.2.10.dist-info/METADATA,sha256=OsZYqqvYVFnzLuCBScLUKAOLqssgHpLaGZqCzT7Q-zA,3617
55
+ figpack-0.2.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
+ figpack-0.2.10.dist-info/entry_points.txt,sha256=l6d3siH2LxXa8qJGbjAqpIZtI5AkMSyDeoRDCzdrUto,45
57
+ figpack-0.2.10.dist-info/top_level.txt,sha256=lMKGaC5xWmAYBx9Ac1iMokm42KFnJFjmkP2ldyvOo-c,8
58
+ figpack-0.2.10.dist-info/RECORD,,