Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
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())
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
def main():

    # parse sounding data
    parser = IgraParser.from_file("ASM00094703-data.txt.zip")

    # outputs headers of the 5 first soundings
    parser.head()
Ejemplo n.º 6
0
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())
Ejemplo n.º 7
0
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())
Ejemplo n.º 8
0
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())
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)