@@ -167,54 +167,43 @@ def _parse_file_type(file_path: pathlib.Path) -> None:
167167 raise ValueError (f"Unrecognized histogram file name: { file_path .name } " )
168168
169169
170- def _best_index (
171- series : _SeriesPayload , best : Optional [_HistogramPayload ]
172- ) -> Optional [int ]:
173- """Determine the best histogram index from the series."""
174- if series .interpretableHistogramNumber > 0 :
175- return series .interpretableHistogramNumber - 1
176- if best is not None :
177- for i , h in enumerate (series .histograms ):
178- if h .lowerBounds == best .lowerBounds :
179- return i
180- return None
181-
182-
183170def _process_histogram_files (temp_dir : str , base_name : str ) -> list [HistogramResult ]:
184171 """Process exploratory JSON generated by khisto CLI."""
185172 output_file = pathlib .Path (temp_dir ) / f"{ base_name } .json"
186173 _parse_file_type (output_file )
187174
188175 with output_file .open ("r" , encoding = "utf-8" ) as f :
189- output : _KhistoOutput = _KhistoOutput .from_dict (json .load (f ))
190-
191- if not output .histogramSeries or not output .histogramSeries .histograms :
192- if output .bestHistogram is None :
193- raise ValueError ("No histogram data found" )
194- return [_to_result (output .bestHistogram , is_best = True )]
176+ khisto_output : _KhistoOutput = _KhistoOutput .from_dict (json .load (f ))
195177
196- series = output .histogramSeries
197- n = len (series .histograms )
198- best_idx = _best_index ( series , output . bestHistogram )
178+ histogram_series = khisto_output .histogramSeries
179+ n = len (histogram_series .histograms )
180+ best_idx = histogram_series . interpretableHistogramNumber - 1
199181 granularities = (
200- series .granularities if len (series .granularities ) == n else list (range (n ))
182+ histogram_series .granularities
183+ if len (histogram_series .granularities ) == n
184+ else list (range (n ))
201185 )
202186
203- def _get (lst : list , i : int , default = 0 ):
204- return lst [i ] if i < len (lst ) else default
187+ def _get (lst : list , i : int ):
188+ if i < len (lst ):
189+ return lst [i ]
190+ else :
191+ raise ValueError (
192+ f"Expected at least { i + 1 } values in list, got { len (lst )} "
193+ )
205194
206195 return [
207196 _to_result (
208197 h ,
209198 is_best = (i == best_idx ),
210199 granularity = granularities [i ],
211- level = _get (series .levels , i , 0.0 ),
212- information_rate = _get (series .informationRates , i , 0.0 ),
213- peak_interval_number = _get (series .peakIntervalNumbers , i ),
214- spike_interval_number = _get (series .spikeIntervalNumbers , i ),
215- empty_interval_number = _get (series .emptyIntervalNumbers , i ),
200+ level = _get (histogram_series .levels , i ),
201+ information_rate = _get (histogram_series .informationRates , i ),
202+ peak_interval_number = _get (histogram_series .peakIntervalNumbers , i ),
203+ spike_interval_number = _get (histogram_series .spikeIntervalNumbers , i ),
204+ empty_interval_number = _get (histogram_series .emptyIntervalNumbers , i ),
216205 )
217- for i , h in enumerate (series .histograms )
206+ for i , h in enumerate (histogram_series .histograms )
218207 ]
219208
220209
0 commit comments