Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ValueError in si.export_report and in si.plot_sorting_summary #2844

Open
meszena opened this issue May 14, 2024 · 2 comments
Open

ValueError in si.export_report and in si.plot_sorting_summary #2844

meszena opened this issue May 14, 2024 · 2 comments
Labels
exporters Related to exporters module widgets Related to widgets module

Comments

@meszena
Copy link

meszena commented May 14, 2024

Hi! I would have a question:
I loaded back one of my external KS and Phy curated outputs to SortingAnalyzer and I've been able to calculate the various nice quality metrics but somehow I am not able to save the data (and the generated plots) as a report because (I think) there are NaNs or INFs in my unit metrics table (this is just a guess, maybe it is due to something else).

Interestingly, I am still able to save the results as a .csv, like this:

from spikeinterface.qualitymetrics import compute_quality_metrics
df = compute_quality_metrics(analyzer_clean)
df.to_csv(".../analyzer_Test_KS1/test.csv")

I just cannot do the "report" and the "web-based viewer", which also worked well earlier with your tutorial data (so it should not be an installing issue, I hope).

Thanks so much in advance for any input!

I got the following warning and error when exporting the results:

---------------------------------------------------------------------------
**Warning:**
---------------------------------------------------------------------------
[C:\Users\cashlab\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\unit_depths.py:77](file:///C:/Users/cashlab/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_depths.py:77): UserWarning: Attempting to set identical low and high xlims makes transformation singular; automatically expanding.
  ax.set_xlim(0, max(dp.unit_amplitudes) * 1.2)

---------------------------------------------------------------------------
**Error 1**
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[50], line 2
      1 # export spike sorting report to a folder
----> 2 si.export_report(analyzer_clean, base_folder / 'report_Test_KS1', format='png')
File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\exporters\report.py:144, in export_report(sorting_analyzer, output_folder, remove_if_exists, format, show_figures, peak_sign, force_computation, **job_kwargs)
    [139](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:139) for unit_id in unit_ids:
    [140](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:140)     fig = plt.figure(
    [141](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:141)         constrained_layout=False,
    [142](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:142)         figsize=(15, 7),
    [143](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:143)     )
--> [144](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:144)     sw.plot_unit_summary(sorting_analyzer, unit_id, figure=fig)
    [145](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:145)     fig.suptitle(f"unit {unit_id}")
    [146](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/exporters/report.py:146)     fig.savefig(units_folder / f"{unit_id}.{format}")
File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\unit_summary.py:60, in UnitSummaryWidget.__init__(self, sorting_analyzer, unit_id, unit_colors, sparsity, radius_um, backend, **backend_kwargs)
     [51](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:51)     unit_colors = get_unit_colors(sorting_analyzer.sorting)
     [53](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:53) plot_data = dict(
     [54](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:54)     sorting_analyzer=sorting_analyzer,
     [55](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:55)     unit_id=unit_id,
     [56](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:56)     unit_colors=unit_colors,
     [57](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:57)     sparsity=sparsity,
     [58](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:58) )
---> [60](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:60) BaseWidget.__init__(self, plot_data, backend=backend, **backend_kwargs)
File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\base.py:87, in BaseWidget.__init__(self, data_plot, backend, immediate_plot, **backend_kwargs)
     [84](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:84) self.backend_kwargs = backend_kwargs_
     [86](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:86) if immediate_plot:
---> [87](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:87)     self.do_plot()
File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\base.py:108, in BaseWidget.do_plot(self)
    [106](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:106) def do_plot(self):
    [107](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:107)     func = getattr(self, f"plot_{self.backend}")
--> [108](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:108)     func(self.data_plot, **self.backend_kwargs)
File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\unit_summary.py:107, in UnitSummaryWidget.plot_matplotlib(self, data_plot, **backend_kwargs)
    [105](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:105) unit_location = unit_locations[unit_id]
    [106](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:106) x, y = unit_location[0], unit_location[1]
--> [107](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:107) ax1.set_xlim(x - 80, x + 80)
    [108](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:108) ax1.set_ylim(y - 250, y + 250)
    [109](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/unit_summary.py:109) ax1.set_xticks([])
File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\matplotlib\_api\deprecation.py:454, in make_keyword_only.<locals>.wrapper(*args, **kwargs)
    [448](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/_api/deprecation.py:448) if len(args) > name_idx:
    [449](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/_api/deprecation.py:449)     warn_deprecated(
    [450](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/_api/deprecation.py:450)         since, message="Passing the %(name)s %(obj_type)s "
    [451](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/_api/deprecation.py:451)         "positionally is deprecated since Matplotlib %(since)s; the "
    [452](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/_api/deprecation.py:452)         "parameter will become keyword-only %(removal)s.",
    [453](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/_api/deprecation.py:453)         name=name, obj_type=f"parameter of {func.__name__}()")
--> [454](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/_api/deprecation.py:454) return func(*args, **kwargs)
File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\matplotlib\axes\_base.py:3650, in _AxesBase.set_xlim(self, left, right, emit, auto, xmin, xmax)
   [3648](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3648)         raise TypeError("Cannot pass both 'right' and 'xmax'")
   [3649](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3649)     right = xmax
-> [3650](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3650) return self.xaxis._set_lim(left, right, emit=emit, auto=auto)
File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\matplotlib\axis.py:1184, in Axis._set_lim(self, v0, v1, emit, auto)
   [1180](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1180) name, = [name for name, axis in self.axes._axis_map.items()
   [1181](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1181)          if axis is self]  # The axis name.
   [1183](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1183) self.axes._process_unit_info([(name, (v0, v1))], convert=False)
-> [1184](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1184) v0 = self.axes._validate_converted_limits(v0, self.convert_units)
   [1185](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1185) v1 = self.axes._validate_converted_limits(v1, self.convert_units)
   [1187](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1187) if v0 is None or v1 is None:
   [1188](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1188)     # Axes init calls set_xlim(0, 1) before get_xlim() can be called,
   [1189](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axis.py:1189)     # so only grab the limits if we really need them.
File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\matplotlib\axes\_base.py:3570, in _AxesBase._validate_converted_limits(self, limit, convert)
   [3567](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3567) converted_limit = convert(limit)
   [3568](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3568) if (isinstance(converted_limit, Real)
   [3569](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3569)         and not np.isfinite(converted_limit)):
-> [3570](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3570)     raise ValueError("Axis limits cannot be NaN or Inf")
   [3571](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/matplotlib/axes/_base.py:3571) return converted_limit
**ValueError: Axis limits cannot be NaN or Inf**

---------------------------------------------------------------------------
**Error 2**
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[72], [line 1](vscode-notebook-cell:?execution_count=72&line=1)
----> [1](vscode-notebook-cell:?execution_count=72&line=1) si.plot_sorting_summary(analyzer_clean, backend='sortingview')

File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\sorting_summary.py:83, in SortingSummaryWidget.__init__(self, sorting_analyzer, unit_ids, sparsity, max_amplitudes_per_unit, min_similarity_for_correlograms, curation, unit_table_properties, label_choices, backend, **backend_kwargs)
     [70](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:70)     unit_ids = sorting.get_unit_ids()
     [72](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:72) plot_data = dict(
     [73](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:73)     sorting_analyzer=sorting_analyzer,
     [74](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:74)     unit_ids=unit_ids,
   (...)
     [80](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:80)     max_amplitudes_per_unit=max_amplitudes_per_unit,
     [81](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:81) )
---> [83](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:83) BaseWidget.__init__(self, plot_data, backend=backend, **backend_kwargs)

File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\base.py:87, in BaseWidget.__init__(self, data_plot, backend, immediate_plot, **backend_kwargs)
     [84](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:84) self.backend_kwargs = backend_kwargs_
     [86](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:86) if immediate_plot:
---> [87](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:87)     self.do_plot()

File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\base.py:108, in BaseWidget.do_plot(self)
    [106](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:106) def do_plot(self):
    [107](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:107)     func = getattr(self, f"plot_{self.backend}")
--> [108](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/base.py:108)     func(self.data_plot, **self.backend_kwargs)

File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\sorting_summary.py:183, in SortingSummaryWidget.plot_sortingview(self, data_plot, **backend_kwargs)
    [180](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:180) # assemble layout
    [181](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:181) self.view = vv.Splitter(direction="horizontal", item1=vv.LayoutItem(v1), item2=vv.LayoutItem(v2))
--> [183](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/sorting_summary.py:183) self.url = handle_display_and_url(self, self.view, **backend_kwargs)

File ~\Documents\Domi\Python\spikeinterface\src\spikeinterface\widgets\utils_sortingview.py:42, in handle_display_and_url(widget, view, **backend_kwargs)
     [39](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/utils_sortingview.py:39)     if figlabel is None:
     [40](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/utils_sortingview.py:40)         # figlabel = widget.default_label
     [41](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/utils_sortingview.py:41)         figlabel = ""
---> [42](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/utils_sortingview.py:42)     url = view.url(label=figlabel)
     [43](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/utils_sortingview.py:43)     print(url)
     [45](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/cashlab/Documents/Domi/Python/spikeinterface/examples/how_to/~/Documents/Domi/Python/spikeinterface/src/spikeinterface/widgets/utils_sortingview.py:45) return url

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\sortingview\views\View.py:101, in View.url(self, label, state, allow_float64)
    [100](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:100) def url(self, *, label: str, state: Union[dict, None] = None, allow_float64: bool = False):
--> [101](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:101)     return fig.url_from_url_dict(self.url_dict(label=label, state=state, allow_float64=allow_float64))

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\sortingview\views\View.py:81, in View.url_dict(self, label, state, allow_float64)
     [76](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:76) for i, vv in enumerate(all_views):
     [77](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:77)     vv.set_id(f"{i}")
     [78](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:78) data = {
     [79](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:79)     "type": "MainLayout",
     [80](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:80)     "layout": self.to_dict(),
---> [81](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:81)     "views": [
     [82](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:82)         {"type": view.type, "viewId": view.id, "dataUri": _upload_data_and_return_uri(view.to_dict(), allow_float64=allow_float64)}
     [83](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:83)         for view in all_views
     [84](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:84)         if not view.is_layout
     [85](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:85)     ],
     [86](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:86) }
     [87](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:87) view_url = sortingview_view_url
     [88](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:88) F = fig.Figure(view_url=view_url, data=data, allow_float64=allow_float64)

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\sortingview\views\View.py:82, in <listcomp>(.0)
     [76](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:76) for i, vv in enumerate(all_views):
     [77](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:77)     vv.set_id(f"{i}")
     [78](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:78) data = {
     [79](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:79)     "type": "MainLayout",
     [80](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:80)     "layout": self.to_dict(),
     [81](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:81)     "views": [
---> [82](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:82)         {"type": view.type, "viewId": view.id, "dataUri": _upload_data_and_return_uri(view.to_dict(), allow_float64=allow_float64)}
     [83](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:83)         for view in all_views
     [84](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:84)         if not view.is_layout
     [85](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:85)     ],
     [86](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:86) }
     [87](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:87) view_url = sortingview_view_url
     [88](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:88) F = fig.Figure(view_url=view_url, data=data, allow_float64=allow_float64)

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\sortingview\views\View.py:153, in _upload_data_and_return_uri(data, local, allow_float64)
    [152](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:152) def _upload_data_and_return_uri(data, *, local: bool = False, allow_float64: bool = False):
--> [153](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/sortingview/views/View.py:153)     return kcl.store_json(fig.serialize_data(data, allow_float64=allow_float64), local=local)

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\kachery_cloud\core.py:18, in store_json(x, separators, indent, label, cache_locally, local)
     [16](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/kachery_cloud/core.py:16) def store_json(x: Any, *, separators=(',', ':'), indent=None, label: Union[str, None]=None, cache_locally: bool=False, local: bool=False) -> str:
     [17](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/kachery_cloud/core.py:17)     import simplejson
---> [18](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/kachery_cloud/core.py:18)     text = simplejson.dumps(x, separators=separators, indent=indent, allow_nan=False, sort_keys=True)
     [19](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/kachery_cloud/core.py:19)     return store_text(text, label=label, cache_locally=cache_locally, local=local)

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\simplejson\__init__.py:398, in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, encoding, default, use_decimal, namedtuple_as_object, tuple_as_array, bigint_as_string, sort_keys, item_sort_key, for_json, ignore_nan, int_as_string_bitcount, iterable_as_array, **kw)
    [396](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:396) if cls is None:
    [397](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:397)     cls = JSONEncoder
--> [398](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:398) return cls(
    [399](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:399)     skipkeys=skipkeys, ensure_ascii=ensure_ascii,
    [400](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:400)     check_circular=check_circular, allow_nan=allow_nan, indent=indent,
    [401](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:401)     separators=separators, encoding=encoding, default=default,
    [402](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:402)     use_decimal=use_decimal,
    [403](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:403)     namedtuple_as_object=namedtuple_as_object,
    [404](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:404)     tuple_as_array=tuple_as_array,
    [405](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:405)     iterable_as_array=iterable_as_array,
    [406](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:406)     bigint_as_string=bigint_as_string,
    [407](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:407)     sort_keys=sort_keys,
    [408](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:408)     item_sort_key=item_sort_key,
    [409](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:409)     for_json=for_json,
    [410](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:410)     ignore_nan=ignore_nan,
    [411](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:411)     int_as_string_bitcount=int_as_string_bitcount,
    [412](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/__init__.py:412)     **kw).encode(obj)

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\simplejson\encoder.py:297, in JSONEncoder.encode(self, o)
    [293](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:293)         return encode_basestring(o)
    [294](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:294) # This doesn't pass the iterator directly to ''.join() because the
    [295](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:295) # exceptions aren't as detailed.  The list call should be roughly
    [296](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:296) # equivalent to the PySequence_Fast that ''.join() would do.
--> [297](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:297) chunks = self.iterencode(o, _one_shot=True)
    [298](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:298) if not isinstance(chunks, (list, tuple)):
    [299](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:299)     chunks = list(chunks)

File c:\Users\cashlab\miniconda3\envs\si_env\lib\site-packages\simplejson\encoder.py:379, in JSONEncoder.iterencode(self, o, _one_shot)
    [370](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:370)     _iterencode = _make_iterencode(
    [371](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:371)         markers, self.default, _encoder, self.indent, floatstr,
    [372](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:372)         self.key_separator, self.item_separator, self.sort_keys,
   (...)
    [376](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:376)         self.item_sort_key, self.encoding, self.for_json,
    [377](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:377)         self.iterable_as_array, Decimal=decimal.Decimal)
    [378](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:378) try:
--> [379](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:379)     return _iterencode(o, 0)
    [380](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:380) finally:
    [381](file:///C:/Users/cashlab/miniconda3/envs/si_env/lib/site-packages/simplejson/encoder.py:381)     key_memo.clear()

**ValueError: Out of range float values are not JSON compliant**
@alejoe91 alejoe91 added exporters Related to exporters module widgets Related to widgets module labels May 14, 2024
@alejoe91
Copy link
Member

Hi Domi,

I think that the problems i that you're getting NaN estimates of unit locations, since the error comes from

--> spikeinterface/src/spikeinterface/widgets/unit_summary.py:107) ax1.set_xlim(x - 80, x + 80)

We should definitely protect against something like this interfering with plotting. I'll make a PR soon :)

@meszena
Copy link
Author

meszena commented May 14, 2024

Thanks, Alessio! Much appreciated!:)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
exporters Related to exporters module widgets Related to widgets module
Projects
None yet
Development

No branches or pull requests

2 participants