def test_iter_by_timepoints_withgaps(self): """Test TimeStream().iter_by_timepoints with a complete timestream""" ts = TimeStream() ts.load(helpers.FILES["timestream_gaps"]) res = ts.iter_by_timepoints() self.assertTrue(isgenerator(res)) for iii, image in enumerate(res): # Check lazy-loading self.assertIsNone(image._pixels) # We don't check path, as it's got a different timestream name self.assertEqual(image.datetime, helpers.TS_GAPS_DATES_PARSED[iii])
def test_iter_by_timepoints_full(self): """Test TimeStream().iter_by_timepoints with a complete timestream""" ts = TimeStream() ts.load(helpers.FILES["timestream"]) res = ts.iter_by_timepoints() self.assertTrue(isgenerator(res)) for iii, image in enumerate(res): # Check lazy-loading self.assertIsNot(image, None) self.assertIsNone(image._pixels) self.assertEqual(image.path, helpers.TS_FILES_JPG[iii]) self.assertEqual(image.datetime, helpers.TS_DATES_PARSED[iii]) self.assertIsNot(image.pixels, None) self.assertEqual(image.pixels.dtype, helpers.TS_JPG_DTYPE) self.assertEqual(image.pixels.shape, helpers.TS_JPG_SHAPE)
def test_iter_by_timepoints_withgaps_no_rm_gaps(self): """Test TimeStream().iter_by_timepoints with a complete timestream""" ts = TimeStream() ts.load(helpers.FILES["timestream_gaps"]) res = ts.iter_by_timepoints(remove_gaps=False) self.assertTrue(isgenerator(res)) for iii, image in enumerate(res): if iii in {3, 5}: # Missing images self.assertEqual(0, len(image.pixels)) continue self.assertIsNot(image, None) # Check lazy-loading self.assertIsNone(image._pixels) # We don't check path, as it's got a different timestream name self.assertEqual(image.datetime, helpers.TS_DATES_PARSED[iii])
def main(opts): setup_module_logging(logging.ERROR) ts_name = opts["-i"] out_fh = open(opts['-o'], 'w') ts_info = ts_get_manifest(ts_name) times = setup_header(ts_info) out_csv = csv.writer(out_fh) header = ["Date", ] header.extend(times) out_csv.writerow(header) ts = TimeStream() ts.load(ts_name) res_dict = {} print("Collecting image data for {}...".format(ts_name)) count = 0 for img in ts.iter_by_timepoints(): if count % 5 == 0: print("Processed {} images!".format(count), end='\r') sys.stdout.flush() count += 1 img_dt = img.datetime try: res_dict[img_dt.date()][img_dt.time().isoformat()] = 1 except KeyError: res_dict[img_dt.date()] = {img_dt.time().isoformat(): 1} print("Processed {} images!".format(count)) print("Done collecting image sums, now making the table") for this_date, times in sorted(res_dict.items()): row = [] row.append(this_date.isoformat()) start_today = datetime.combine(this_date.today(), time.min) end_today = datetime.combine(this_date.today(), time.max) all_times = iter_date_range(start_today, end_today, ts_info['interval'] * 60) for timepoint in all_times: try: row.append(times[timepoint.time().isoformat()]) except KeyError: row.append("0") out_csv.writerow(row) print("All done!")