77
88from spikeinterface import load_sorting_analyzer , load
99from spikeinterface .core .core_tools import is_path_remote
10+ from spikeinterface .core .sortinganalyzer import get_available_analyzer_extensions
1011from .utils_global import get_config_folder
1112from spikeinterface_gui .layout_presets import get_layout_description
1213
1314import spikeinterface_gui
1415from spikeinterface_gui .controller import Controller
15-
16+ from spikeinterface_gui . viewlist import possible_class_views
1617
1718def run_mainwindow (
1819 analyzer ,
@@ -356,22 +357,24 @@ def run_mainwindow_cli():
356357 )
357358
358359def find_skippable_extensions (layout_dict ):
360+ """
361+ Returns the extensions which don't need to be loaded, depending on which views the user
362+ wants to load. Does this by taking all possible extensions, then removing any which are
363+ needed by a view.
364+ """
359365
366+ all_extensions = set (get_available_analyzer_extensions ())
367+
360368 view_per_zone = list (layout_dict .values ())
361369 list_of_views = [view for zone_views in view_per_zone for view in zone_views ]
362370
363- skippable_extensions = []
364- if 'spikeamplitude' not in list_of_views :
365- skippable_extensions .append ('spike_amplitudes' )
366- if 'spikedepth' not in list_of_views :
367- skippable_extensions .append ('spike_locations' )
368- if 'waveform' not in list_of_views and 'waveformheatmap' not in list_of_views :
369- skippable_extensions .append ('waveforms' )
370- if 'ndscatter' not in list_of_views :
371- skippable_extensions .append ('principal_components' )
372- if 'isi' not in list_of_views :
373- skippable_extensions .append ('isi_histograms' )
374- if 'correlogram' not in list_of_views :
375- skippable_extensions .append ('correlograms' )
371+ needed_extensions = ['unit_locations' ]
372+
373+ for view in list_of_views :
374+ extensions_view_depend_on = possible_class_views [view ]._depend_on
375+ if extensions_view_depend_on is not None :
376+ needed_extensions += extensions_view_depend_on
377+
378+ skippable_extensions = list (all_extensions .difference (set (needed_extensions )))
376379
377380 return skippable_extensions
0 commit comments