def __init__(self, reader, ms_level): self.reader = reader self.cursor = reader.cursor self.ms_level = ms_level self.first_run_slice_bb = None self.curr_scan_slices = None self.r_header_by_id = self.get_run_slice_header_by_id() self.cursor.execute(RunSliceIterator.sql_query, (self.ms_level, )) self.first_run_slice_bb = BoundingBox._make(self.cursor.fetchone())
def _init_iter(self): if self.first_run_slice_bb is None: raise StopIteration self.curr_scan_slices = bb_to_scan_slices( bytes(self.first_run_slice_bb.data), self.first_run_slice_bb.run_slice_id, self.reader.struct_by_scan_id) while 1: row = self.cursor.fetchone() if row is None: self.first_run_slice_bb = None break bb = BoundingBox._make(row) if bb.run_slice_id == self.first_run_slice_bb.run_slice_id: self.curr_scan_slices += bb_to_scan_slices( bytes(bb.data), bb.run_slice_id, self.reader.struct_by_scan_id) else: self.first_run_slice_bb = bb break