From d59e3cbc9de500698d17b414b7d35b5ded31d56f Mon Sep 17 00:00:00 2001 From: Adren Rigdon <arigdon@usgs.gov> Date: Mon, 2 Oct 2017 12:26:31 -0600 Subject: [PATCH] Determine interval from delta when data is not from EDGE. Add optional --output-observatory argument to controller to support average algorithm. --- geomagio/Controller.py | 19 +++++++++++++++++-- geomagio/algorithm/AverageAlgorithm.py | 12 ++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/geomagio/Controller.py b/geomagio/Controller.py index d176b10c0..875483e0d 100644 --- a/geomagio/Controller.py +++ b/geomagio/Controller.py @@ -217,7 +217,7 @@ class Controller(object): algorithm.get_output_channels() # request output to see what has already been generated output_timeseries = self._get_output_timeseries( - observatory=options.observatory, + observatory=options.output_observatory, starttime=options.starttime, endtime=options.endtime, channels=output_channels) @@ -346,7 +346,7 @@ def get_output_factory(args): # standard arguments output_factory_args = {} output_factory_args['interval'] = args.interval - output_factory_args['observatory'] = args.observatory + output_factory_args['observatory'] = args.output_observatory output_factory_args['type'] = args.type # stream/url arguments if args.output_file is not None: @@ -479,10 +479,16 @@ def main(args): if isinstance(args.observatory, (str, unicode)): args.observatory = (args.observatory,) + if args.output_observatory is None: + args.output_observatory = args.observatory + elif args.observatory_foreach: + raise Exception("Cannot specify --output-observatory with --observatory-foreach") + if args.observatory_foreach: observatory = args.observatory for obs in observatory: args.observatory = (obs,) + args.output_observatory = (obs,) _main(args) else: _main(args) @@ -551,6 +557,15 @@ def parse_args(args): ' single observatory formats like IAGA and PCDCP.', nargs='*', type=str) + parser.add_argument('--output-observatory', + default=None, + help='Defaults to valur of --observatory argument.' + + ' Observatory code ie BOU, CMO, etc.' + + ' CAUTION: Using multiple observatories is not' + + ' recommended in most cases; especially with' + + ' single observatory formats like IAGA and PCDCP.', + nargs='*', + type=str) parser.add_argument('--observatory-foreach', action='store_true', default=False, diff --git a/geomagio/algorithm/AverageAlgorithm.py b/geomagio/algorithm/AverageAlgorithm.py index 092bad2db..662de7919 100644 --- a/geomagio/algorithm/AverageAlgorithm.py +++ b/geomagio/algorithm/AverageAlgorithm.py @@ -118,14 +118,22 @@ class AverageAlgorithm(Algorithm): stream = obspy.core.Stream(( get_trace(self.outchannel, self._stats, dst_tot), )) + # TODO: move this to a better place + interval = None + if 'data_interval' in timeseries[0].stats: + interval = timeseries[0].stats.data_interval + elif timeseries[0].stats.delta == 60: + interval = 'minute' + elif timeseries[0].stats.delta == 1: + interval = 'second' + # set the full metadata for the USGS station used for averaged # data sets self.set_metadata( stream=stream, observatory='USGS', channel=self.outchannel, - type=stream[0].stats.data_type, - interval=timeseries[0].stats.data_interval) + type=stream[0].stats.data_type) # return averaged values as a stream return stream -- GitLab