Skip to content
Snippets Groups Projects
PlotTimeseriesFactory.py 2.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jeremy M Fee's avatar
    Jeremy M Fee committed
    """Abstract Timeseries Factory Interface."""
    
    Yash Shah's avatar
    Yash Shah committed
    from __future__ import absolute_import
    
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
    from obspy.core import Stream
    
    Yash Shah's avatar
    Yash Shah committed
    from .TimeseriesFactory import TimeseriesFactory
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
    
    
    class PlotTimeseriesFactory(TimeseriesFactory):
    
        """TimeseriesFactory that generates a plot."""
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
        def __init__(self, *args, **kwargs):
            TimeseriesFactory.__init__(self, *args, **kwargs)
    
    
        def get_timeseries(
            self,
            starttime,
            endtime,
            observatory=None,
            channels=None,
            type=None,
            interval=None,
        ):
    
            """This factory does not support get_timeseries."""
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
            raise NotImplementedError('"get_timeseries" not implemented')
    
    
        def put_timeseries(
            self,
            timeseries,
            starttime=None,
            endtime=None,
            channels=None,
            type=None,
            interval=None,
        ):
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
            """Store timeseries data.
    
            Parameters
            ----------
            timeseries : obspy.core.Stream
                stream containing traces to store.
            starttime : UTCDateTime
                time of first sample in timeseries to store.
                uses first sample if unspecified.
            endtime : UTCDateTime
                time of last sample in timeseries to store.
                uses last sample if unspecified.
            channels : array_like
                list of channels to store, optional.
                uses default if unspecified.
            type : {'definitive', 'provisional', 'quasi-definitive', 'variation'}
                data type, optional.
                uses default if unspecified.
    
            interval : {'day', 'hour', 'minute', 'month', 'second'}
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
                data interval, optional.
                uses default if unspecified.
            Raises
            ------
            TimeseriesFactoryException
                if any errors occur.
            """
            if starttime is not None or endtime is not None:
                timeseries = timeseries.copy()
                timeseries.trim(starttime=starttime, endtime=endtime)
            if channels is not None:
                filtered = Stream()
                for channel in channels:
                    filtered += timeseries.select(channel=channel)
                timeseries = filtered
            timeseries.plot()