@@ -120,7 +120,7 @@ def paths(self):
120120 def reduced_sample_names (self ):
121121 """Return reduced sample names for all slots"""
122122 if len (self .slots ) != len (self ._reduced_sample_names ):
123- self .compute_reduced_sample_names ()
123+ self .deduce_reduced_sample_names ()
124124 return self ._reduced_sample_names
125125
126126 def add_filter (self , filt = None , index = None ):
@@ -306,9 +306,19 @@ def check_contour_spacing(self, plot_id):
306306 if old_plot_state != plot_state :
307307 plot .__setstate__ (plot_state )
308308
309- def compute_reduced_sample_names (self ,
310- slot_indices : list [int ] = None ,
311- ) -> list [str ]:
309+ def deduce_display_names (self ):
310+ """Return slot names for displaying in lists and combo boxes in the UI
311+ """
312+ unique_names = self .reduced_sample_names
313+ display_names = [
314+ (ss .name if ss .name == un else f"{ ss .name } [{ un [:80 ]} ]" )
315+ for ss , un in zip (self .slots , unique_names )
316+ ]
317+ return display_names
318+
319+ def deduce_reduced_sample_names (self ,
320+ slot_indices : list [int ] = None ,
321+ ) -> list [str ]:
312322 """Return a list of reduced sample names for the given indices
313323
314324 The algorithm removes common prefixes and suffixes from sample names.
@@ -374,6 +384,9 @@ def compute_reduced_sample_names(self,
374384 for jj , ii in enumerate (idx ):
375385 names [ii ] = new_names [jj ]
376386
387+ # avoid empty names at the end of it
388+ names = [n if n else s .name for n , s in zip (names , slots )]
389+
377390 if set_property :
378391 self ._reduced_sample_names .clear ()
379392 self ._reduced_sample_names += names
0 commit comments