From 10fe39c01d4a060bca55ebc842ef6cc67630eb66 Mon Sep 17 00:00:00 2001 From: Jeremy Fee <jmfee@usgs.gov> Date: Mon, 6 Jun 2016 16:16:20 -0600 Subject: [PATCH] Update TimeseriesFactory to "trim" data to start/end extent, filling with numpy.nan if needed --- geomagio/TimeseriesFactory.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/geomagio/TimeseriesFactory.py b/geomagio/TimeseriesFactory.py index 0b5ed602..abef4d15 100644 --- a/geomagio/TimeseriesFactory.py +++ b/geomagio/TimeseriesFactory.py @@ -1,4 +1,5 @@ """Abstract Timeseries Factory Interface.""" +import numpy import obspy.core import os import sys @@ -119,8 +120,18 @@ class TimeseriesFactory(object): except Exception as e: print >> sys.stderr, "Error parsing data: " + str(e) print >> sys.stderr, data + if channels is not None: + filtered = obspy.core.Stream() + for channel in channels: + filtered += timeseries.select(channel=channel) + timeseries = filtered timeseries.merge() - timeseries.trim(starttime, endtime) + timeseries.trim( + starttime=starttime, + endtime=endtime, + nearest_sample=False, + pad=True, + fill_value=numpy.nan) return timeseries def parse_string(self, data, **kwargs): @@ -166,6 +177,9 @@ class TimeseriesFactory(object): TimeseriesFactoryException if any errors occur. """ + if len(timeseries) == 0: + # no data to put + return if not self.urlTemplate.startswith('file://'): raise TimeseriesFactoryException('Only file urls are supported') channels = channels or self.channels @@ -218,12 +232,6 @@ class TimeseriesFactory(object): except NotImplementedError: # factory only supports output pass - except Exception as e: - print >> sys.stderr, \ - 'Unable to merge with existing data.' + \ - '\nfile={}' + \ - '\nerror={}'.format(url_file, str(e)) - raise e with open(url_file, 'wb') as fh: try: self.write_file(fh, url_data, channels) -- GitLab