@@ -175,7 +175,7 @@ def get_trace_sweeps(self, sweeps=None, leakcorrect=False):
175175 corrected data can be obtained by setting ``leakcorrect=True``.
176176
177177 Args:
178- sweeps (int ): The number of sweeps to return.
178+ sweeps (list ): A list of sweep indexes to return, e.g. ``[0, 1, 2]`` .
179179 leakcorrect (bool): Used to choose corrected or uncorrected data.
180180
181181 Returns:
@@ -191,18 +191,22 @@ def get_trace_sweeps(self, sweeps=None, leakcorrect=False):
191191 for ijWell in iCol :
192192 out_dict [ijWell ] = []
193193
194+ # No sweeps selected? Then return full set
194195 if sweeps is None :
195- # Sometimes NofSweeps seems to be incorrect
196196 sweeps = list (range (self .NofSweeps ))
197-
198- # Check `sweeps` is something sensible
199- elif len (sweeps ) > self .NofSweeps :
200- raise ValueError ('Required #sweeps > total #sweeps.' )
201-
202- # convert negative values to positive
203- for i , sweep in enumerate (sweeps ):
204- if sweep < 0 :
205- sweeps [i ] = self .NofSweeps + sweep
197+ else :
198+ # Allow negative values to index later sweeps
199+ sweeps = [self .NofSweeps + x if x < 0 else x for x in sweeps ]
200+ # Check all sweeps exist
201+ if max (sweeps ) >= self .NofSweeps :
202+ raise ValueError (
203+ f'Invalid sweep selection: sweep { max (sweeps )} requested,'
204+ f' but only { self .NofSweeps } available.' )
205+ if min (sweeps ) < 0 :
206+ raise ValueError (
207+ f'Invalid sweep selection: sweep'
208+ f' { min (sweeps ) - self .NofSweeps } requested, but only'
209+ f' { self .NofSweeps } available.' )
206210
207211 trace_file_idxs , idx_is = self .get_trace_file (sweeps )
208212
0 commit comments