Skip to content
Snippets Groups Projects
prepfiles.py 2.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • from __future__ import absolute_import
    
    import sys
    from os import path
    import os
    from obspy.core import UTCDateTime
    
    # ensure geomag is on the path before importing
    try:
        import geomagio  # noqa (ignores this line for lint purposes.)
    except ImportError:
        script_dir = path.dirname(path.abspath(__file__))
        sys.path.append(path.normpath(path.join(script_dir, "..")))
    
    from geomagio.residual import WebAbsolutesFactory, CalFileFactory
    from geomagio.edge import EdgeFactory
    from geomagio.pcdcp import PCDCPWriter
    
    FILENAME_FORMAT = "./{OBSERVATORY}{YEAR}{MONTH}"
    
    if len(sys.argv) != 4:
        cmd = sys.argv[0]
        print("Usage:  {} OBSERVATORY YEAR MONTH".format(cmd), file=sys.stderr)
        print(
            "Example:  {} HON 2019 11".format(cmd), file=sys.stderr,
        )
        sys.exit(1)
    
    OBSERVATORY = sys.argv[1]
    YEAR = sys.argv[2]
    MONTH = sys.argv[3]
    
    starttime = UTCDateTime("{}-{}-01T00:00:00".format(YEAR, MONTH))
    end_month = starttime.month + 1
    if end_month == 13:
        end_month = "01"
        YEAR += 1
    endtime = UTCDateTime("{}-{}-01T00:00:00".format(YEAR, end_month))
    
    filename = FILENAME_FORMAT.format(
        OBSERVATORY=OBSERVATORY, YEAR=starttime.year, MONTH=starttime.month
    )
    
    readings = WebAbsolutesFactory().get_readings(
        observatory=OBSERVATORY,
        starttime=starttime,
        endtime=endtime,
        include_measurements=True,
    )
    
    calfile = CalFileFactory().format_readings(readings=readings)
    
    print("Writing cal file to {}".format(filename), file=sys.stderr)
    with open(filename + "WebAbsMaster.cal", "wb", -1) as f:
        f.write(calfile.encode())
    
    pcdcp_channels = ["H", "E", "Z", "F"]
    
    e = EdgeFactory()
    ts_second = e.get_timeseries(
        starttime=starttime,
        endtime=endtime,
        observatory=OBSERVATORY,
        channels=pcdcp_channels,
        type="variation",
        interval="second",
    )
    ts_minute = e.get_timeseries(
        starttime=starttime,
        endtime=endtime,
        observatory=OBSERVATORY,
        channels=pcdcp_channels,
        type="variation",
        interval="minute",
    )
    
    pcdcp_w = PCDCPWriter()
    print("Writing raw file to {}".format(filename), file=sys.stderr)
    sec_file = open(filename + ".raw", "wb")
    pcdcp_w.write(sec_file, ts_second, pcdcp_channels)
    sec_file.close()
    print("Writing min file to {}".format(filename), file=sys.stderr)
    min_file = open(filename + ".min", "wb")
    pcdcp_w.write(min_file, ts_minute, pcdcp_channels)
    min_file.close()