Skip to content
Snippets Groups Projects
prepfiles.py 3.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • from __future__ import absolute_import
    
    
    from datetime import datetime
    from dateutil.relativedelta import relativedelta
    
    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
    
    
    PCDCP_FILENAME_FORMAT = "{OBSERVATORY}{YEAR}{YEARDAY}"
    CAL_FILENAME_FORMAT = "{OBSERVATORY}{YEAR}PCD.cal"
    
    
    if len(sys.argv) != 4:
        cmd = sys.argv[0]
    
        print("Usage:  {} OBSERVATORY YEAR YEARDAY".format(cmd), file=sys.stderr)
    
            "Example:  {} HON 2019 325".format(cmd), file=sys.stderr,
    
        )
        sys.exit(1)
    
    OBSERVATORY = sys.argv[1]
    
    YEAR = int(sys.argv[2])
    YEARDAY = int(sys.argv[3])
    
    pcdcp_starttime = datetime(YEAR, 1, 1) + relativedelta(days=+YEARDAY - 1)
    pcdcp_endtime = pcdcp_starttime + relativedelta(days=+1)
    cal_starttime = pcdcp_starttime + relativedelta(months=-1)
    cal_endtime = pcdcp_starttime + relativedelta(months=+2)
    pcdcp_starttime = UTCDateTime(
        "{}-{}-{}T00:00:00".format(
            pcdcp_starttime.year, pcdcp_starttime.month, pcdcp_starttime.day
        )
    )
    pcdcp_endtime = UTCDateTime(
        "{}-{}-{}T00:00:00".format(
            pcdcp_endtime.year, pcdcp_endtime.month, pcdcp_endtime.day
        )
    )
    cal_starttime = UTCDateTime(
        "{}-{}-{}T00:00:00".format(
            cal_starttime.year, cal_starttime.month, cal_starttime.day
        )
    )
    cal_endtime = UTCDateTime(
        "{}-{}-{}T00:00:00".format(cal_endtime.year, cal_endtime.month, cal_endtime.day)
    
    
    filename = CAL_FILENAME_FORMAT.format(OBSERVATORY=OBSERVATORY, YEAR=cal_starttime.year)
    cal_file_path = ":C\\Calibrat\\{}\\".format(OBSERVATORY)
    
    readings = WebAbsolutesFactory().get_readings(
        observatory=OBSERVATORY,
    
        starttime=cal_starttime,
        endtime=cal_endtime,
    
        include_measurements=True,
    )
    
    calfile = CalFileFactory().format_readings(readings=readings)
    
    print("Writing cal file to {}".format(filename), file=sys.stderr)
    
    with open(cal_file_path + filename, "wb", -1) as f:
    
        f.write(calfile.encode())
    
    pcdcp_channels = ["H", "E", "Z", "F"]
    
    
    e = EdgeFactory()
    ts_second = e.get_timeseries(
    
        starttime=pcdcp_starttime,
        endtime=pcdcp_endtime,
    
        observatory=OBSERVATORY,
        channels=pcdcp_channels,
        type="variation",
        interval="second",
    )
    ts_minute = e.get_timeseries(
    
        starttime=pcdcp_starttime,
        endtime=pcdcp_endtime,
    
        observatory=OBSERVATORY,
        channels=pcdcp_channels,
        type="variation",
        interval="minute",
    )
    
    pcdcp_w = PCDCPWriter()
    
    raw_file_path = ":C\\RAW\\{}\\".format(OBSERVATORY)
    raw_filename = (
        PCDCP_FILENAME_FORMAT.format(
            OBSERVATORY=OBSERVATORY, YEAR=pcdcp_starttime.year, YEARDAY=YEARDAY
        )
        + ".raw"
    )
    min_file_path = ":C\\USGSDCP\\{}\\".format(OBSERVATORY)
    min_filename = (
        PCDCP_FILENAME_FORMAT.format(
            OBSERVATORY=OBSERVATORY, YEAR=pcdcp_starttime.year, YEARDAY=YEARDAY
        )
        + ".min"
    )
    print("Writing raw file to {}".format(raw_filename), file=sys.stderr)
    raw_file = open(raw_file_path + raw_filename, "wb")
    pcdcp_w.write(raw_file, ts_second, pcdcp_channels)
    raw_file.close()
    print("Writing min file to {}".format(min_filename), file=sys.stderr)
    min_file = open(min_file_path + min_filename, "wb")
    
    pcdcp_w.write(min_file, ts_minute, pcdcp_channels)
    min_file.close()