def setUp(self): vals = [ {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0, 'AT': 10.0, 'DPT': 11.0, 'SLP': 1023.0, 'UID': 'A642D2'}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0, 'AT': 10.0, 'DPT': 10.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0, 'AT': 10.0, 'DPT': 9.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 10.0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 10.0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 10.0, 'LAT': 1.0, 'LON': 0.0, 'SST': 5.0}] self.reps = [] for v in vals: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReport(rec) self.reps.append(rep) self.reps[0].set_qc('POS', 'pos', 0) self.reps[1].set_qc('POS', 'pos', 1) self.reps[2].set_qc('POS', 'pos', 0) self.reps[3].set_qc('POS', 'pos', 1) self.reps[4].set_qc('POS', 'pos', 0) self.reps[5].set_qc('POS', 'pos', 1)
def test_repeated_saturated_values(self): dumval = { 'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0 } saturated = ex.Voyage() gaps = ex.Voyage() quick = ex.Voyage() for i in range(50): val = dumval.copy() val['HR'] = float(i) while val['HR'] >= 24: val['HR'] -= 24 val['DY'] += 1 val['DPT'] = 15.2 val['AT'] = 15.2 rec = IMMA() for key in val: rec.data[key] = val[key] rep = ex.MarineReportQC(rec) saturated.add_report(rep) if i % 19 == 0: rec.data['DPT'] = 13.0 rep = ex.MarineReportQC(rec) gaps.add_report(rep) rec.data['HR'] = float(i) / 5.0 rep = ex.MarineReportQC(rec) quick.add_report(rep) parameters = {'min_time_threshold': 48.0, 'shortest_run': 20} #make sure that 19 consecutive values passes gaps.find_saturated_runs(parameters) for rep in gaps.rep_feed(): self.assertEqual(rep.get_qc('DPT', 'repsat'), 0) #make sure that 20 consecutive values in 24 hours passes quick.find_saturated_runs(parameters) for rep in quick.rep_feed(): self.assertEqual(rep.get_qc('DPT', 'repsat'), 0) #make sure that 20 consecutive values in 48 hours fails saturated.find_saturated_runs(parameters) for rep in saturated.rep_feed(): self.assertEqual(rep.get_qc('DPT', 'repsat'), 1)
def setUp(self): vals = {'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0} rec = IMMA() for key in vals: rec.data[key] = vals[key] self.rep = ex.MarineReport(rec) self.rep.set_qc('POS', 'pos', 0) self.rep_fail = ex.MarineReport(rec) self.rep_fail.set_qc('POS', 'pos', 1) self.deck = ex.Deck() self.deck.append(self.rep) self.deck.append(self.rep_fail)
def setUp(self): vals = [{'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 1, 'LAT': 0.1, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 2, 'LAT': 0.2, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 3, 'LAT': 0.3, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 4, 'LAT': 0.4, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 5, 'LAT': 0.5, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 6, 'LAT': 0.6, 'LON': 0.0, 'SST': 5.0}] badvals = [{'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.0, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 1, 'LAT': 0.1, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 2, 'LAT': 0.2, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 3, 'LAT': 0.3, 'LON': 10.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 4, 'LAT': 0.4, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 5, 'LAT': 0.5, 'LON': 0.0, 'SST': 5.0}, {'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 6, 'LAT': 0.6, 'LON': 0.0, 'SST': 5.0}] self.reps = ex.Voyage() self.badreps = ex.Voyage() for v in vals: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReportQC(rec) self.reps.add_report(rep) for v in badvals: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReportQC(rec) self.badreps.add_report(rep)
def setUp(self): vals = [{'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.5, 'LON': 0.5, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 0, 'LAT': 0.5, 'LON': 0.5, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 10.0, 'LAT': 0.5, 'LON': 0.5, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 12, 'DY': 1, 'HR': 10.0, 'LAT': 1.5, 'LON': 0.5, 'SST': 5.0}] self.reps = [] for v in vals: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReport(rec) rep.add_climate_variable('SST', 0.5) self.reps.append(rep) vals = [{'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 0, 'LAT': 0.5, 'LON': 0.5, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 0, 'LAT': 0.5, 'LON': 0.5, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 10.0, 'LAT': 0.5, 'LON': 0.5, 'SST': 5.0}, {'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 31, 'HR': 10.0, 'LAT': 0.5, 'LON': 0.5, 'SST': 2.0}, {'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 10.0, 'LAT': 1.5, 'LON': 0.5, 'SST': 5.0}] self.reps2 = [] for v in vals: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReport(rec) rep.add_climate_variable('SST', 0.5) self.reps2.append(rep) self.dummy_pentad_stdev = clim.Climatology(np.full([73, 180, 360], 1.0))
def setUp(self): vals = [{ 'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 2, 'LAT': 0.5, 'LON': 20.5, 'SST': 5.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 31, 'HR': 2, 'LAT': 1.5, 'LON': 20.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 30, 'HR': 2, 'LAT': 1.5, 'LON': 21.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 29, 'HR': 2, 'LAT': 1.5, 'LON': 19.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 28, 'HR': 2, 'LAT': 0.5, 'LON': 19.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 6, 'HR': 2, 'LAT': 0.5, 'LON': 21.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 7, 'HR': 2, 'LAT': -0.5, 'LON': 20.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 8, 'HR': 2, 'LAT': -0.5, 'LON': 21.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 9, 'HR': 2, 'LAT': -0.5, 'LON': 19.5, 'SST': 2.0 }] self.reps = [] for v in vals: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReport(rec) rep.add_climate_variable('SST', 0.5) self.reps.append(rep) vals2 = [{ 'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 2, 'LAT': 0.5, 'LON': 20.5, 'SST': 5.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 21, 'HR': 2, 'LAT': 1.5, 'LON': 20.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 20, 'HR': 2, 'LAT': 1.5, 'LON': 21.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 19, 'HR': 2, 'LAT': 1.5, 'LON': 19.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 18, 'HR': 2, 'LAT': 0.5, 'LON': 19.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 16, 'HR': 2, 'LAT': 0.5, 'LON': 21.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 17, 'HR': 2, 'LAT': -0.5, 'LON': 20.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 18, 'HR': 2, 'LAT': -0.5, 'LON': 21.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 19, 'HR': 2, 'LAT': -0.5, 'LON': 19.5, 'SST': 2.0 }] self.reps2 = [] for v in vals2: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReport(rec) rep.add_climate_variable('SST', 0.5) self.reps2.append(rep) vals3 = [{ 'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 2, 'LAT': 0.5, 'LON': 20.5, 'SST': 5.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 21, 'HR': 2, 'LAT': 2.5, 'LON': 20.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 20, 'HR': 2, 'LAT': 2.5, 'LON': 22.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 19, 'HR': 2, 'LAT': 2.5, 'LON': 18.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 18, 'HR': 2, 'LAT': 0.5, 'LON': 18.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 16, 'HR': 2, 'LAT': 0.5, 'LON': 22.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 17, 'HR': 2, 'LAT': -1.5, 'LON': 20.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 18, 'HR': 2, 'LAT': -1.5, 'LON': 22.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 19, 'HR': 2, 'LAT': -1.5, 'LON': 18.5, 'SST': 2.0 }] self.reps3 = [] for v in vals3: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReport(rec) rep.add_climate_variable('SST', 0.5) self.reps3.append(rep) self.dummy_pentad_stdev = clim.Climatology(np.full([73, 180, 360], 1.5)) vals4 = [{ 'ID': 'AAAAAAAAA', 'YR': 2003, 'MO': 1, 'DY': 1, 'HR': 2, 'LAT': 0.5, 'LON': 20.5, 'SST': 5.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 21, 'HR': 2, 'LAT': 3.5, 'LON': 20.5, 'SST': 1.9 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 20, 'HR': 2, 'LAT': 3.5, 'LON': 23.5, 'SST': 1.7 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 19, 'HR': 2, 'LAT': 3.5, 'LON': 17.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2002, 'MO': 12, 'DY': 18, 'HR': 2, 'LAT': 0.5, 'LON': 17.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 16, 'HR': 2, 'LAT': 0.5, 'LON': 23.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 17, 'HR': 2, 'LAT': -2.5, 'LON': 20.5, 'SST': 2.0 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 18, 'HR': 2, 'LAT': -2.5, 'LON': 23.5, 'SST': 2.3 }, { 'ID': 'BBBBBBBBB', 'YR': 2003, 'MO': 1, 'DY': 19, 'HR': 2, 'LAT': -2.5, 'LON': 17.5, 'SST': 2.1 }] self.reps4 = [] for v in vals4: rec = IMMA() for key in v: rec.data[key] = v[key] rep = ex.MarineReport(rec) rep.add_climate_variable('SST', 0.5) self.reps4.append(rep) self.dummy_pentad_stdev = clim.Climatology(np.full([73, 180, 360], 1.5))