def main(): parser = IgraParser() jsonfmt("[") # open json array for sounding in parser.parse(): jsonfmt(sounding.to_json(), indentlvl=1) jsonfmt("]") # close json array print(parser.stats, file=sys.stderr)
def test_sample0(): stream = igra_sample[0].split("\n") stream.remove("") parser = IgraParser(stream) soundings = [x for x in parser.parse()] assert len(soundings) == 1 sounding = soundings[0] assert len(sounding.levels) == 2 assert parser.stats == IgraParser.Stats(lines=3, null=0, records=1, processed=1, filtered=0, errors=0, warnings=0)
def main(): # parse sounding data from standard input # example : cat ASM00094703-data.txt | python example4.py parser = IgraParser() # for each sounding display a human-readable header followed by the full JSON format for sounding in parser.parse(): print(sounding.header()) print(sounding.to_json())
def main(): # parse sounding data parser = IgraParser.from_file("ASM00094703-data.txt.zip") # outputs general info about parsed data : stations, observations number and date range parser.analyze()
def main(): # parse sounding data parser = IgraParser.from_file("ASM00094703-data.txt.zip") # outputs headers of the 5 first soundings parser.head()
def main(): # parse sounding data parser = IgraParser.from_file("ASM00094703-data.txt.zip") # for each sounding display a human-readable header followed by the full JSON format for sounding in parser.parse(): print(sounding.header()) print(sounding.to_json())
def main(): start = datetime(1948, 3, 1, tzinfo=timezone.utc) end = datetime(1948, 4, 1, tzinfo=timezone.utc) # filters soundings observed on 1948, March parser = IgraParser.from_file("ASM00094703-data.txt.zip", lambda x: start <= x.obstime <= end) for sounding in parser.parse(): print(sounding.header())
def main(): # Australia bounding box australia: Polygon = box(113.338953078, -43.6345972634, 153.569469029, -10.6681857235) # filters soundings matching the given area parser = IgraParser.from_file( "ASM00094703-data.txt.zip", f_match=lambda x: shape(x.location).within(australia)) for sounding in parser.parse(): print(sounding.header())
def test_header_success_missing_release_time(): header = "#GRM00016622 2018 01 01 00 9999 2 ncdc-gts 405272 229714" expected = Sounding( station="GRM00016622", obstime=datetime(2018, 1, 1, 0, 0, tzinfo=timezone.utc), reltime=None, nlevels=2, datasource_p=P_SRC.ncdc_gts, datasource_np=None, location=Location(40.5272, 22.9714) ) sounding = IgraParser.parse_header(header) assert sounding == expected
def test_level_success_2_3(): line = "20 -9999 100700 -9999 82B-9999 39 -9999 -9999" expected = Sounding.Level( major=LevelType.Major.OTHER, minor=LevelType.Minor.OTHER, elapsed=(None, QualityFlag.MISSING), pressure=(100700, QualityFlag.UNCHECKED), height=(None, QualityFlag.UNCHECKED), temperature=(8.2, QualityFlag.PASSED), humidity=(None, QualityFlag.MISSING), dewpoint=(3.9, QualityFlag.PASSED), winddir=(None, QualityFlag.MISSING), windspeed=(None, QualityFlag.MISSING) ) level = IgraParser.parse_level(line) assert level == expected
def test_level_success_2_1(): line = "21 -9999 101300B-9999 46B-9999 39 120 15" expected = Sounding.Level( major=LevelType.Major.OTHER, minor=LevelType.Minor.SURFACE, elapsed=(None, QualityFlag.MISSING), pressure=(101300, QualityFlag.PASSED), height=(None, QualityFlag.UNCHECKED), temperature=(4.6, QualityFlag.PASSED), humidity=(None, QualityFlag.MISSING), dewpoint=(3.9, QualityFlag.PASSED), winddir=(120, QualityFlag.PASSED), windspeed=(1.5, QualityFlag.PASSED) ) level = IgraParser.parse_level(line) assert level == expected
def test_level_success_1_2(): line = "20 -9999 101600A-9999 66B-9999 60 -9999 -9999" expected = Sounding.Level( major=LevelType.Major.OTHER, minor=LevelType.Minor.OTHER, elapsed=(None, QualityFlag.MISSING), pressure=(101600, QualityFlag.TIERS1), height=(None, QualityFlag.UNCHECKED), temperature=(6.6, QualityFlag.PASSED), humidity=(None, QualityFlag.MISSING), dewpoint=(6.0, QualityFlag.PASSED), winddir=(None, QualityFlag.MISSING), windspeed=(None, QualityFlag.MISSING) ) level = IgraParser.parse_level(line) assert level == expected
def test_complete_file(): filename = pkg_resources.resource_filename(__name__, "data/GRM00016622-data.txt.zip") stream = stream_from(filename) parser = IgraParser(stream) parser.analyze() assert parser.stats == IgraParser.Stats(lines=1152034, null=0, records=25801, processed=25801, filtered=0, errors=0, warnings=277)
def test_header_bad_length(): header = "#GRM00016622 2018 01 01 00 2333 2 ncdc-gts 405272 229714P" with pytest.raises(SoundingException, match=r".*length.*"): IgraParser.parse_header(header)
def test_header_bad_headrec(): header = "?GRM00016622 2018 01 01 00 2333 2 ncdc-gts 405272 229714" with pytest.raises(SoundingException, match=r".*character.*"): IgraParser.parse_header(header)