Ejemplo n.º 1
0
 def __init__(self, *args, **kwargs):
     super(ClientTestCase, self).__init__(*args, **kwargs)
     # Create a in memory database only once for test suite
     url = 'sqlite:///:memory:'
     self.client = Client(url)
     # add paths
     session = self.client.session()
     path1 = WaveformPath({'path': '/path/to/1'})
     path2 = WaveformPath({'path': '/path/to/2'})
     session.add_all([path1, path2])
     # add files
     file1 = WaveformFile(
         {'file': 'file_001.mseed', 'size': 2000,
             'mtime': UTCDateTime('20120101').timestamp, 'format': 'MSEED'})
     file2 = WaveformFile(
         {'file': 'file_002.mseed', 'size': 2000,
             'mtime': UTCDateTime('20120102').timestamp, 'format': 'MSEED'})
     file3 = WaveformFile(
         {'file': 'file_001.gse2', 'size': 2000,
             'mtime': UTCDateTime('20120102').timestamp, 'format': 'GSE2'})
     path1.files.append(file1)
     path1.files.append(file2)
     path2.files.append(file3)
     session.add_all([file1, file2, file3])
     # add channels
     channel1 = WaveformChannel(
         {'network': 'BW', 'station': 'MANZ',
             'location': '', 'channel': 'EHZ',
             'starttime':
             UTCDateTime('2012-01-01 00:00:00.000000').datetime,
             'endtime': UTCDateTime('2012-01-01 23:59:59.999999').datetime,
             'npts': 3000, 'sampling_rate': 100.0})
     channel2 = WaveformChannel(
         {'network': 'BW', 'station': 'MANZ',
             'location': '', 'channel': 'EHZ',
             'starttime':
             UTCDateTime('2012-01-02 01:00:00.000000').datetime,
             'endtime':
             UTCDateTime('2012-01-02 23:59:59.999999').datetime,
             'npts': 3000,
             'sampling_rate': 100.0})
     # create a channel with preview
     header = {'network': 'GE', 'station': 'FUR',
               'location': '00', 'channel': 'BHZ',
               'starttime': UTCDateTime('2012-01-01 00:00:00.000000'),
               'sampling_rate': 100.0}
     # linear trend
     data = np.linspace(0, 1, 3000000)
     # some peaks
     data[20000] = 15
     data[20001] = -15
     data[1000000] = 22
     data[1000001] = -22
     data[2000000] = 14
     data[2000001] = -14
     tr = Trace(data=data, header=header)
     self.preview = createPreview(tr, 30).data
     header = dict(tr.stats)
     header['starttime'] = tr.stats.starttime.datetime
     header['endtime'] = tr.stats.endtime.datetime
     channel3 = WaveformChannel(header)
     channel3.preview = self.preview.dumps()
     file1.channels.append(channel1)
     file2.channels.append(channel2)
     file3.channels.append(channel3)
     session.add_all([channel1, channel2, channel3])
     session.commit()
     session.close()
Ejemplo n.º 2
0
class ClientTestCase(unittest.TestCase):
    """
    Test suite for obspy.db.client.
    """
    def __init__(self, *args, **kwargs):
        super(ClientTestCase, self).__init__(*args, **kwargs)
        # Create a in memory database only once for test suite
        url = 'sqlite:///:memory:'
        self.client = Client(url)
        # add paths
        session = self.client.session()
        path1 = WaveformPath({'path': '/path/to/1'})
        path2 = WaveformPath({'path': '/path/to/2'})
        session.add_all([path1, path2])
        # add files
        file1 = WaveformFile(
            {'file': 'file_001.mseed', 'size': 2000,
                'mtime': UTCDateTime('20120101').timestamp, 'format': 'MSEED'})
        file2 = WaveformFile(
            {'file': 'file_002.mseed', 'size': 2000,
                'mtime': UTCDateTime('20120102').timestamp, 'format': 'MSEED'})
        file3 = WaveformFile(
            {'file': 'file_001.gse2', 'size': 2000,
                'mtime': UTCDateTime('20120102').timestamp, 'format': 'GSE2'})
        path1.files.append(file1)
        path1.files.append(file2)
        path2.files.append(file3)
        session.add_all([file1, file2, file3])
        # add channels
        channel1 = WaveformChannel(
            {'network': 'BW', 'station': 'MANZ',
                'location': '', 'channel': 'EHZ',
                'starttime':
                UTCDateTime('2012-01-01 00:00:00.000000').datetime,
                'endtime': UTCDateTime('2012-01-01 23:59:59.999999').datetime,
                'npts': 3000, 'sampling_rate': 100.0})
        channel2 = WaveformChannel(
            {'network': 'BW', 'station': 'MANZ',
                'location': '', 'channel': 'EHZ',
                'starttime':
                UTCDateTime('2012-01-02 01:00:00.000000').datetime,
                'endtime':
                UTCDateTime('2012-01-02 23:59:59.999999').datetime,
                'npts': 3000,
                'sampling_rate': 100.0})
        # create a channel with preview
        header = {'network': 'GE', 'station': 'FUR',
                  'location': '00', 'channel': 'BHZ',
                  'starttime': UTCDateTime('2012-01-01 00:00:00.000000'),
                  'sampling_rate': 100.0}
        # linear trend
        data = np.linspace(0, 1, 3000000)
        # some peaks
        data[20000] = 15
        data[20001] = -15
        data[1000000] = 22
        data[1000001] = -22
        data[2000000] = 14
        data[2000001] = -14
        tr = Trace(data=data, header=header)
        self.preview = createPreview(tr, 30).data
        header = dict(tr.stats)
        header['starttime'] = tr.stats.starttime.datetime
        header['endtime'] = tr.stats.endtime.datetime
        channel3 = WaveformChannel(header)
        channel3.preview = self.preview.dumps()
        file1.channels.append(channel1)
        file2.channels.append(channel2)
        file3.channels.append(channel3)
        session.add_all([channel1, channel2, channel3])
        session.commit()
        session.close()

    def test_getNetworkIds(self):
        """
        Tests for method getNetworkIds.
        """
        data = self.client.getNetworkIDs()
        self.assertEqual(len(data), 2)
        self.assertTrue('BW' in data)
        self.assertTrue('GE' in data)

    def test_getStationIds(self):
        """
        Tests for method getStationIds.
        """
        # 1 - all
        data = self.client.getStationIds()
        self.assertEqual(len(data), 2)
        self.assertTrue('MANZ' in data)
        self.assertTrue('FUR' in data)
        # 2 - BW network
        data = self.client.getStationIds(network='BW')
        self.assertEqual(len(data), 1)
        self.assertTrue('MANZ' in data)
        # 3 - not existing network
        data = self.client.getStationIds(network='XX')
        self.assertEqual(len(data), 0)

    def test_getLocationIds(self):
        """
        Tests for method getLocationIds.
        """
        data = self.client.getLocationIds()
        self.assertEqual(len(data), 2)
        self.assertTrue('' in data)
        self.assertTrue('00' in data)
        # 2 - BW network
        data = self.client.getLocationIds(network='BW')
        self.assertEqual(len(data), 1)
        self.assertTrue('' in data)
        # 3 - not existing network
        data = self.client.getLocationIds(network='XX')
        self.assertEqual(len(data), 0)
        # 4 - MANZ station
        data = self.client.getLocationIds(station='MANZ')
        self.assertEqual(len(data), 1)
        self.assertTrue('' in data)
        # 5 - not existing station
        data = self.client.getLocationIds(station='XXXXX')
        self.assertEqual(len(data), 0)
        # 4 - GE network, FUR station
        data = self.client.getLocationIds(network='GE', station='FUR')
        self.assertEqual(len(data), 1)
        self.assertTrue('00' in data)

    def test_getChannelIds(self):
        """
        Tests for method getChannelIds.
        """
        data = self.client.getChannelIds()
        self.assertEqual(len(data), 2)
        self.assertTrue('EHZ' in data)
        self.assertTrue('BHZ' in data)

    def test_getEndtimes(self):
        """
        Tests for method getEndtimes.
        """
        # 1
        data = self.client.getEndtimes()
        self.assertEqual(len(data), 2)
        self.assertEqual(data['BW.MANZ..EHZ'],
                         UTCDateTime(2012, 1, 2, 23, 59, 59, 999999))
        self.assertEqual(data['GE.FUR.00.BHZ'],
                         UTCDateTime(2012, 1, 1, 8, 19, 59, 990000))
        # 2 - using wildcards
        data = self.client.getEndtimes(network='?W', station='M*', location='')
        self.assertEqual(len(data), 1)
        self.assertEqual(data['BW.MANZ..EHZ'],
                         UTCDateTime(2012, 1, 2, 23, 59, 59, 999999))
        # 3 - no data
        data = self.client.getEndtimes(network='GE', station='*', location='')
        self.assertEqual(len(data), 0)

    def test_getWaveformPath(self):
        """
        Tests for method getWaveformPath.
        """
        # 1
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt, endtime=dt + 5)
        self.assertEqual(len(data), 2)
        self.assertEqual(data['BW.MANZ..EHZ'],
                         [os.path.join('/path/to/1', 'file_001.mseed')])
        self.assertEqual(data['GE.FUR.00.BHZ'],
                         [os.path.join('/path/to/2', 'file_001.gse2')])
        # 2 - no data
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt - 5, endtime=dt - 4)
        self.assertEqual(data, {})
        # 3
        dt = UTCDateTime('2012-01-02 01:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt, endtime=dt + 5)
        self.assertEqual(len(data), 1)
        self.assertEqual(data['BW.MANZ..EHZ'],
                         [os.path.join('/path/to/1', 'file_002.mseed')])
        # 4 - filter by network
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-02 23:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt, endtime=dt2,
                                           network='BW')
        self.assertEqual(len(data), 1)
        self.assertEqual(data['BW.MANZ..EHZ'],
                         [os.path.join('/path/to/1', 'file_001.mseed'),
                          os.path.join('/path/to/1', 'file_002.mseed')])
        # 5 - filter by network and station using wildcards
        data = self.client.getWaveformPath(starttime=dt, endtime=dt2,
                                           network='BW', station='MA*')
        self.assertEqual(len(data), 1)
        # 6 - filter by channel and location
        data = self.client.getWaveformPath(starttime=dt, endtime=dt2,
                                           channel='?HZ', location='')
        self.assertEqual(len(data), 1)

    def test_getPreview(self):
        """
        Tests for method getPreview.
        """
        # 1
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-01T08:19:30.000000Z')
        st = self.client.getPreview(starttime=dt, endtime=dt2)
        self.assertEqual(len(st), 1)
        self.assertEqual(st[0].id, 'GE.FUR.00.BHZ')
        self.assertEqual(st[0].stats.starttime,
                         UTCDateTime('2012-01-01T00:00:00.000000Z'))
        self.assertEqual(st[0].stats.endtime,
                         UTCDateTime('2012-01-01T08:19:30.000000Z'))
        self.assertEqual(st[0].stats.delta, 30.0)
        self.assertEqual(st[0].stats.npts, 1000)
        self.assertEqual(st[0].stats.preview, True)
        np.testing.assert_equal(st[0].data, self.preview)
        # 2 - no data
        st = self.client.getPreview(network='XX', starttime=dt, endtime=dt + 2)
        self.assertEqual(len(st), 0)
        # 3 - trimmed
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-01T04:09:30.000000Z')
        st = self.client.getPreview(network='G?', location='00', station='*',
                                    starttime=dt, endtime=dt2)
        self.assertEqual(len(st), 1)
        self.assertEqual(st[0].stats.npts, 500)
        # 4 - using trace_ids and pad=True
        dt = UTCDateTime('2011-12-31 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-01T04:09:30.000000Z')
        st = self.client.getPreview(trace_ids=['GE.FUR.00.BHZ',
                                               'GE.FUR.00.BHN'], pad=True,
                                    starttime=dt, endtime=dt2)
        self.assertEqual(len(st), 1)
        self.assertEqual(st[0].stats.npts, 3380)
Ejemplo n.º 3
0
 def __init__(self, *args, **kwargs):
     super(ClientTestCase, self).__init__(*args, **kwargs)
     # Create a in memory database only once for test suite
     url = 'sqlite:///:memory:'
     self.client = Client(url)
     # add paths
     session = self.client.session()
     path1 = WaveformPath({'path': '/path/to/1'})
     path2 = WaveformPath({'path': '/path/to/2'})
     session.add_all([path1, path2])
     # add files
     file1 = WaveformFile({
         'file': 'file_001.mseed',
         'size': 2000,
         'mtime': UTCDateTime('20120101').timestamp,
         'format': 'MSEED'
     })
     file2 = WaveformFile({
         'file': 'file_002.mseed',
         'size': 2000,
         'mtime': UTCDateTime('20120102').timestamp,
         'format': 'MSEED'
     })
     file3 = WaveformFile({
         'file': 'file_001.gse2',
         'size': 2000,
         'mtime': UTCDateTime('20120102').timestamp,
         'format': 'GSE2'
     })
     path1.files.append(file1)
     path1.files.append(file2)
     path2.files.append(file3)
     session.add_all([file1, file2, file3])
     # add channels
     channel1 = WaveformChannel({
         'network':
         'BW',
         'station':
         'MANZ',
         'location':
         '',
         'channel':
         'EHZ',
         'starttime':
         UTCDateTime('2012-01-01 00:00:00.000000').datetime,
         'endtime':
         UTCDateTime('2012-01-01 23:59:59.999999').datetime,
         'npts':
         3000,
         'sampling_rate':
         100.0
     })
     channel2 = WaveformChannel({
         'network':
         'BW',
         'station':
         'MANZ',
         'location':
         '',
         'channel':
         'EHZ',
         'starttime':
         UTCDateTime('2012-01-02 01:00:00.000000').datetime,
         'endtime':
         UTCDateTime('2012-01-02 23:59:59.999999').datetime,
         'npts':
         3000,
         'sampling_rate':
         100.0
     })
     # create a channel with preview
     header = {
         'network': 'GE',
         'station': 'FUR',
         'location': '00',
         'channel': 'BHZ',
         'starttime': UTCDateTime('2012-01-01 00:00:00.000000'),
         'sampling_rate': 100.0
     }
     # linear trend
     data = np.linspace(0, 1, 3000000)
     # some peaks
     data[20000] = 15
     data[20001] = -15
     data[1000000] = 22
     data[1000001] = -22
     data[2000000] = 14
     data[2000001] = -14
     tr = Trace(data=data, header=header)
     self.preview = createPreview(tr, 30).data
     header = dict(tr.stats)
     header['starttime'] = tr.stats.starttime.datetime
     header['endtime'] = tr.stats.endtime.datetime
     channel3 = WaveformChannel(header)
     channel3.preview = self.preview.dumps()
     file1.channels.append(channel1)
     file2.channels.append(channel2)
     file3.channels.append(channel3)
     session.add_all([channel1, channel2, channel3])
     session.commit()
     session.close()
Ejemplo n.º 4
0
class ClientTestCase(unittest.TestCase):
    """
    Test suite for obspy.db.client.
    """
    def __init__(self, *args, **kwargs):
        super(ClientTestCase, self).__init__(*args, **kwargs)
        # Create a in memory database only once for test suite
        url = 'sqlite:///:memory:'
        self.client = Client(url)
        # add paths
        session = self.client.session()
        path1 = WaveformPath({'path': '/path/to/1'})
        path2 = WaveformPath({'path': '/path/to/2'})
        session.add_all([path1, path2])
        # add files
        file1 = WaveformFile({
            'file': 'file_001.mseed',
            'size': 2000,
            'mtime': UTCDateTime('20120101').timestamp,
            'format': 'MSEED'
        })
        file2 = WaveformFile({
            'file': 'file_002.mseed',
            'size': 2000,
            'mtime': UTCDateTime('20120102').timestamp,
            'format': 'MSEED'
        })
        file3 = WaveformFile({
            'file': 'file_001.gse2',
            'size': 2000,
            'mtime': UTCDateTime('20120102').timestamp,
            'format': 'GSE2'
        })
        path1.files.append(file1)
        path1.files.append(file2)
        path2.files.append(file3)
        session.add_all([file1, file2, file3])
        # add channels
        channel1 = WaveformChannel({
            'network':
            'BW',
            'station':
            'MANZ',
            'location':
            '',
            'channel':
            'EHZ',
            'starttime':
            UTCDateTime('2012-01-01 00:00:00.000000').datetime,
            'endtime':
            UTCDateTime('2012-01-01 23:59:59.999999').datetime,
            'npts':
            3000,
            'sampling_rate':
            100.0
        })
        channel2 = WaveformChannel({
            'network':
            'BW',
            'station':
            'MANZ',
            'location':
            '',
            'channel':
            'EHZ',
            'starttime':
            UTCDateTime('2012-01-02 01:00:00.000000').datetime,
            'endtime':
            UTCDateTime('2012-01-02 23:59:59.999999').datetime,
            'npts':
            3000,
            'sampling_rate':
            100.0
        })
        # create a channel with preview
        header = {
            'network': 'GE',
            'station': 'FUR',
            'location': '00',
            'channel': 'BHZ',
            'starttime': UTCDateTime('2012-01-01 00:00:00.000000'),
            'sampling_rate': 100.0
        }
        # linear trend
        data = np.linspace(0, 1, 3000000)
        # some peaks
        data[20000] = 15
        data[20001] = -15
        data[1000000] = 22
        data[1000001] = -22
        data[2000000] = 14
        data[2000001] = -14
        tr = Trace(data=data, header=header)
        self.preview = createPreview(tr, 30).data
        header = dict(tr.stats)
        header['starttime'] = tr.stats.starttime.datetime
        header['endtime'] = tr.stats.endtime.datetime
        channel3 = WaveformChannel(header)
        channel3.preview = self.preview.dumps()
        file1.channels.append(channel1)
        file2.channels.append(channel2)
        file3.channels.append(channel3)
        session.add_all([channel1, channel2, channel3])
        session.commit()
        session.close()

    def test_getNetworkIds(self):
        """
        Tests for method getNetworkIds.
        """
        data = self.client.getNetworkIDs()
        self.assertEquals(len(data), 2)
        self.assertTrue('BW' in data)
        self.assertTrue('GE' in data)

    def test_getStationIds(self):
        """
        Tests for method getStationIds.
        """
        # 1 - all
        data = self.client.getStationIds()
        self.assertEquals(len(data), 2)
        self.assertTrue('MANZ' in data)
        self.assertTrue('FUR' in data)
        # 2 - BW network
        data = self.client.getStationIds(network='BW')
        self.assertEquals(len(data), 1)
        self.assertTrue('MANZ' in data)
        # 3 - not existing network
        data = self.client.getStationIds(network='XX')
        self.assertEquals(len(data), 0)

    def test_getLocationIds(self):
        """
        Tests for method getLocationIds.
        """
        data = self.client.getLocationIds()
        self.assertEquals(len(data), 2)
        self.assertTrue('' in data)
        self.assertTrue('00' in data)
        # 2 - BW network
        data = self.client.getLocationIds(network='BW')
        self.assertEquals(len(data), 1)
        self.assertTrue('' in data)
        # 3 - not existing network
        data = self.client.getLocationIds(network='XX')
        self.assertEquals(len(data), 0)
        # 4 - MANZ station
        data = self.client.getLocationIds(station='MANZ')
        self.assertEquals(len(data), 1)
        self.assertTrue('' in data)
        # 5 - not existing station
        data = self.client.getLocationIds(station='XXXXX')
        self.assertEquals(len(data), 0)
        # 4 - GE network, FUR station
        data = self.client.getLocationIds(network='GE', station='FUR')
        self.assertEquals(len(data), 1)
        self.assertTrue('00' in data)

    def test_getChannelIds(self):
        """
        Tests for method getChannelIds.
        """
        data = self.client.getChannelIds()
        self.assertEquals(len(data), 2)
        self.assertTrue('EHZ' in data)
        self.assertTrue('BHZ' in data)

    def test_getEndtimes(self):
        """
        Tests for method getEndtimes.
        """
        # 1
        data = self.client.getEndtimes()
        self.assertEquals(len(data), 2)
        self.assertEquals(data['BW.MANZ..EHZ'],
                          UTCDateTime(2012, 1, 2, 23, 59, 59, 999999))
        self.assertEquals(data['GE.FUR.00.BHZ'],
                          UTCDateTime(2012, 1, 1, 8, 19, 59, 990000))
        # 2 - using wildcards
        data = self.client.getEndtimes(network='?W', station='M*', location='')
        self.assertEquals(len(data), 1)
        self.assertEquals(data['BW.MANZ..EHZ'],
                          UTCDateTime(2012, 1, 2, 23, 59, 59, 999999))
        # 3 - no data
        data = self.client.getEndtimes(network='GE', station='*', location='')
        self.assertEquals(len(data), 0)

    def test_getWaveformPath(self):
        """
        Tests for method getWaveformPath.
        """
        # 1
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt, endtime=dt + 5)
        self.assertEquals(len(data), 2)
        self.assertEquals(data['BW.MANZ..EHZ'],
                          [os.path.join('/path/to/1', 'file_001.mseed')])
        self.assertEquals(data['GE.FUR.00.BHZ'],
                          [os.path.join('/path/to/2', 'file_001.gse2')])
        # 2 - no data
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt - 5, endtime=dt - 4)
        self.assertEquals(data, {})
        # 3
        dt = UTCDateTime('2012-01-02 01:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt, endtime=dt + 5)
        self.assertEquals(len(data), 1)
        self.assertEquals(data['BW.MANZ..EHZ'],
                          [os.path.join('/path/to/1', 'file_002.mseed')])
        # 4 - filter by network
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-02 23:00:00.000000')
        data = self.client.getWaveformPath(starttime=dt,
                                           endtime=dt2,
                                           network='BW')
        self.assertEquals(len(data), 1)
        self.assertEquals(data['BW.MANZ..EHZ'], [
            os.path.join('/path/to/1', 'file_001.mseed'),
            os.path.join('/path/to/1', 'file_002.mseed')
        ])
        # 5 - filter by network and station using wildcards
        data = self.client.getWaveformPath(starttime=dt,
                                           endtime=dt2,
                                           network='BW',
                                           station='MA*')
        self.assertEquals(len(data), 1)
        # 6 - filter by channel and location
        data = self.client.getWaveformPath(starttime=dt,
                                           endtime=dt2,
                                           channel='?HZ',
                                           location='')
        self.assertEquals(len(data), 1)

    def test_getPreview(self):
        """
        Tests for method getPreview.
        """
        # 1
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-01T08:19:30.000000Z')
        st = self.client.getPreview(starttime=dt, endtime=dt2)
        self.assertEquals(len(st), 1)
        self.assertEquals(st[0].id, 'GE.FUR.00.BHZ')
        self.assertEquals(st[0].stats.starttime,
                          UTCDateTime('2012-01-01T00:00:00.000000Z'))
        self.assertEquals(st[0].stats.endtime,
                          UTCDateTime('2012-01-01T08:19:30.000000Z'))
        self.assertEquals(st[0].stats.delta, 30.0)
        self.assertEquals(st[0].stats.npts, 1000)
        self.assertEquals(st[0].stats.preview, True)
        np.testing.assert_equal(st[0].data, self.preview)
        # 2 - no data
        st = self.client.getPreview(network='XX', starttime=dt, endtime=dt + 2)
        self.assertEquals(len(st), 0)
        # 3 - trimmed
        dt = UTCDateTime('2012-01-01 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-01T04:09:30.000000Z')
        st = self.client.getPreview(network='G?',
                                    location='00',
                                    station='*',
                                    starttime=dt,
                                    endtime=dt2)
        self.assertEquals(len(st), 1)
        self.assertEquals(st[0].stats.npts, 500)
        # 4 - using trace_ids and pad=True
        dt = UTCDateTime('2011-12-31 00:00:00.000000')
        dt2 = UTCDateTime('2012-01-01T04:09:30.000000Z')
        st = self.client.getPreview(
            trace_ids=['GE.FUR.00.BHZ', 'GE.FUR.00.BHN'],
            pad=True,
            starttime=dt,
            endtime=dt2)
        self.assertEquals(len(st), 1)
        self.assertEquals(st[0].stats.npts, 3380)
Ejemplo n.º 5
0
 def __init__(self, *args, **kwargs):
     super(ClientTestCase, self).__init__(*args, **kwargs)
     # Create a in memory database only once for test suite
     url = "sqlite:///:memory:"
     self.client = Client(url)
     # add paths
     session = self.client.session()
     path1 = WaveformPath({"path": "/path/to/1"})
     path2 = WaveformPath({"path": "/path/to/2"})
     session.add_all([path1, path2])
     # add files
     file1 = WaveformFile(
         {"file": "file_001.mseed", "size": 2000, "mtime": UTCDateTime("20120101").timestamp, "format": "MSEED"}
     )
     file2 = WaveformFile(
         {"file": "file_002.mseed", "size": 2000, "mtime": UTCDateTime("20120102").timestamp, "format": "MSEED"}
     )
     file3 = WaveformFile(
         {"file": "file_001.gse2", "size": 2000, "mtime": UTCDateTime("20120102").timestamp, "format": "GSE2"}
     )
     path1.files.append(file1)
     path1.files.append(file2)
     path2.files.append(file3)
     session.add_all([file1, file2, file3])
     # add channels
     channel1 = WaveformChannel(
         {
             "network": "BW",
             "station": "MANZ",
             "location": "",
             "channel": "EHZ",
             "starttime": UTCDateTime("2012-01-01 00:00:00.000000").datetime,
             "endtime": UTCDateTime("2012-01-01 23:59:59.999999").datetime,
             "npts": 3000,
             "sampling_rate": 100.0,
         }
     )
     channel2 = WaveformChannel(
         {
             "network": "BW",
             "station": "MANZ",
             "location": "",
             "channel": "EHZ",
             "starttime": UTCDateTime("2012-01-02 01:00:00.000000").datetime,
             "endtime": UTCDateTime("2012-01-02 23:59:59.999999").datetime,
             "npts": 3000,
             "sampling_rate": 100.0,
         }
     )
     # create a channel with preview
     header = {
         "network": "GE",
         "station": "FUR",
         "location": "00",
         "channel": "BHZ",
         "starttime": UTCDateTime("2012-01-01 00:00:00.000000"),
         "sampling_rate": 100.0,
     }
     # linear trend
     data = np.linspace(0, 1, 3000000)
     # some peaks
     data[20000] = 15
     data[20001] = -15
     data[1000000] = 22
     data[1000001] = -22
     data[2000000] = 14
     data[2000001] = -14
     tr = Trace(data=data, header=header)
     self.preview = createPreview(tr, 30).data
     header = dict(tr.stats)
     header["starttime"] = tr.stats.starttime.datetime
     header["endtime"] = tr.stats.endtime.datetime
     channel3 = WaveformChannel(header)
     channel3.preview = self.preview.dumps()
     file1.channels.append(channel1)
     file2.channels.append(channel2)
     file3.channels.append(channel3)
     session.add_all([channel1, channel2, channel3])
     session.commit()
     session.close()
Ejemplo n.º 6
0
class ClientTestCase(unittest.TestCase):
    """
    Test suite for obspy.db.client.
    """

    def __init__(self, *args, **kwargs):
        super(ClientTestCase, self).__init__(*args, **kwargs)
        # Create a in memory database only once for test suite
        url = "sqlite:///:memory:"
        self.client = Client(url)
        # add paths
        session = self.client.session()
        path1 = WaveformPath({"path": "/path/to/1"})
        path2 = WaveformPath({"path": "/path/to/2"})
        session.add_all([path1, path2])
        # add files
        file1 = WaveformFile(
            {"file": "file_001.mseed", "size": 2000, "mtime": UTCDateTime("20120101").timestamp, "format": "MSEED"}
        )
        file2 = WaveformFile(
            {"file": "file_002.mseed", "size": 2000, "mtime": UTCDateTime("20120102").timestamp, "format": "MSEED"}
        )
        file3 = WaveformFile(
            {"file": "file_001.gse2", "size": 2000, "mtime": UTCDateTime("20120102").timestamp, "format": "GSE2"}
        )
        path1.files.append(file1)
        path1.files.append(file2)
        path2.files.append(file3)
        session.add_all([file1, file2, file3])
        # add channels
        channel1 = WaveformChannel(
            {
                "network": "BW",
                "station": "MANZ",
                "location": "",
                "channel": "EHZ",
                "starttime": UTCDateTime("2012-01-01 00:00:00.000000").datetime,
                "endtime": UTCDateTime("2012-01-01 23:59:59.999999").datetime,
                "npts": 3000,
                "sampling_rate": 100.0,
            }
        )
        channel2 = WaveformChannel(
            {
                "network": "BW",
                "station": "MANZ",
                "location": "",
                "channel": "EHZ",
                "starttime": UTCDateTime("2012-01-02 01:00:00.000000").datetime,
                "endtime": UTCDateTime("2012-01-02 23:59:59.999999").datetime,
                "npts": 3000,
                "sampling_rate": 100.0,
            }
        )
        # create a channel with preview
        header = {
            "network": "GE",
            "station": "FUR",
            "location": "00",
            "channel": "BHZ",
            "starttime": UTCDateTime("2012-01-01 00:00:00.000000"),
            "sampling_rate": 100.0,
        }
        # linear trend
        data = np.linspace(0, 1, 3000000)
        # some peaks
        data[20000] = 15
        data[20001] = -15
        data[1000000] = 22
        data[1000001] = -22
        data[2000000] = 14
        data[2000001] = -14
        tr = Trace(data=data, header=header)
        self.preview = createPreview(tr, 30).data
        header = dict(tr.stats)
        header["starttime"] = tr.stats.starttime.datetime
        header["endtime"] = tr.stats.endtime.datetime
        channel3 = WaveformChannel(header)
        channel3.preview = self.preview.dumps()
        file1.channels.append(channel1)
        file2.channels.append(channel2)
        file3.channels.append(channel3)
        session.add_all([channel1, channel2, channel3])
        session.commit()
        session.close()

    def test_getNetworkIds(self):
        """
        Tests for method getNetworkIds.
        """
        data = self.client.getNetworkIDs()
        self.assertEquals(len(data), 2)
        self.assertTrue("BW" in data)
        self.assertTrue("GE" in data)

    def test_getStationIds(self):
        """
        Tests for method getStationIds.
        """
        # 1 - all
        data = self.client.getStationIds()
        self.assertEquals(len(data), 2)
        self.assertTrue("MANZ" in data)
        self.assertTrue("FUR" in data)
        # 2 - BW network
        data = self.client.getStationIds(network="BW")
        self.assertEquals(len(data), 1)
        self.assertTrue("MANZ" in data)
        # 3 - not existing network
        data = self.client.getStationIds(network="XX")
        self.assertEquals(len(data), 0)

    def test_getLocationIds(self):
        """
        Tests for method getLocationIds.
        """
        data = self.client.getLocationIds()
        self.assertEquals(len(data), 2)
        self.assertTrue("" in data)
        self.assertTrue("00" in data)
        # 2 - BW network
        data = self.client.getLocationIds(network="BW")
        self.assertEquals(len(data), 1)
        self.assertTrue("" in data)
        # 3 - not existing network
        data = self.client.getLocationIds(network="XX")
        self.assertEquals(len(data), 0)
        # 4 - MANZ station
        data = self.client.getLocationIds(station="MANZ")
        self.assertEquals(len(data), 1)
        self.assertTrue("" in data)
        # 5 - not existing station
        data = self.client.getLocationIds(station="XXXXX")
        self.assertEquals(len(data), 0)
        # 4 - GE network, FUR station
        data = self.client.getLocationIds(network="GE", station="FUR")
        self.assertEquals(len(data), 1)
        self.assertTrue("00" in data)

    def test_getChannelIds(self):
        """
        Tests for method getChannelIds.
        """
        data = self.client.getChannelIds()
        self.assertEquals(len(data), 2)
        self.assertTrue("EHZ" in data)
        self.assertTrue("BHZ" in data)

    def test_getEndtimes(self):
        """
        Tests for method getEndtimes.
        """
        # 1
        data = self.client.getEndtimes()
        self.assertEquals(len(data), 2)
        self.assertEquals(data["BW.MANZ..EHZ"], UTCDateTime(2012, 1, 2, 23, 59, 59, 999999))
        self.assertEquals(data["GE.FUR.00.BHZ"], UTCDateTime(2012, 1, 1, 8, 19, 59, 990000))
        # 2 - using wildcards
        data = self.client.getEndtimes(network="?W", station="M*", location="")
        self.assertEquals(len(data), 1)
        self.assertEquals(data["BW.MANZ..EHZ"], UTCDateTime(2012, 1, 2, 23, 59, 59, 999999))
        # 3 - no data
        data = self.client.getEndtimes(network="GE", station="*", location="")
        self.assertEquals(len(data), 0)

    def test_getWaveformPath(self):
        """
        Tests for method getWaveformPath.
        """
        # 1
        dt = UTCDateTime("2012-01-01 00:00:00.000000")
        data = self.client.getWaveformPath(starttime=dt, endtime=dt + 5)
        self.assertEquals(len(data), 2)
        self.assertEquals(data["BW.MANZ..EHZ"], [os.path.join("/path/to/1", "file_001.mseed")])
        self.assertEquals(data["GE.FUR.00.BHZ"], [os.path.join("/path/to/2", "file_001.gse2")])
        # 2 - no data
        dt = UTCDateTime("2012-01-01 00:00:00.000000")
        data = self.client.getWaveformPath(starttime=dt - 5, endtime=dt - 4)
        self.assertEquals(data, {})
        # 3
        dt = UTCDateTime("2012-01-02 01:00:00.000000")
        data = self.client.getWaveformPath(starttime=dt, endtime=dt + 5)
        self.assertEquals(len(data), 1)
        self.assertEquals(data["BW.MANZ..EHZ"], [os.path.join("/path/to/1", "file_002.mseed")])
        # 4 - filter by network
        dt = UTCDateTime("2012-01-01 00:00:00.000000")
        dt2 = UTCDateTime("2012-01-02 23:00:00.000000")
        data = self.client.getWaveformPath(starttime=dt, endtime=dt2, network="BW")
        self.assertEquals(len(data), 1)
        self.assertEquals(
            data["BW.MANZ..EHZ"],
            [os.path.join("/path/to/1", "file_001.mseed"), os.path.join("/path/to/1", "file_002.mseed")],
        )
        # 5 - filter by network and station using wildcards
        data = self.client.getWaveformPath(starttime=dt, endtime=dt2, network="BW", station="MA*")
        self.assertEquals(len(data), 1)
        # 6 - filter by channel and location
        data = self.client.getWaveformPath(starttime=dt, endtime=dt2, channel="?HZ", location="")
        self.assertEquals(len(data), 1)

    def test_getPreview(self):
        """
        Tests for method getPreview.
        """
        # 1
        dt = UTCDateTime("2012-01-01 00:00:00.000000")
        dt2 = UTCDateTime("2012-01-01T08:19:30.000000Z")
        st = self.client.getPreview(starttime=dt, endtime=dt2)
        self.assertEquals(len(st), 1)
        self.assertEquals(st[0].id, "GE.FUR.00.BHZ")
        self.assertEquals(st[0].stats.starttime, UTCDateTime("2012-01-01T00:00:00.000000Z"))
        self.assertEquals(st[0].stats.endtime, UTCDateTime("2012-01-01T08:19:30.000000Z"))
        self.assertEquals(st[0].stats.delta, 30.0)
        self.assertEquals(st[0].stats.npts, 1000)
        self.assertEquals(st[0].stats.preview, True)
        np.testing.assert_equal(st[0].data, self.preview)
        # 2 - no data
        st = self.client.getPreview(network="XX", starttime=dt, endtime=dt + 2)
        self.assertEquals(len(st), 0)
        # 3 - trimmed
        dt = UTCDateTime("2012-01-01 00:00:00.000000")
        dt2 = UTCDateTime("2012-01-01T04:09:30.000000Z")
        st = self.client.getPreview(network="G?", location="00", station="*", starttime=dt, endtime=dt2)
        self.assertEquals(len(st), 1)
        self.assertEquals(st[0].stats.npts, 500)
        # 4 - using trace_ids and pad=True
        dt = UTCDateTime("2011-12-31 00:00:00.000000")
        dt2 = UTCDateTime("2012-01-01T04:09:30.000000Z")
        st = self.client.getPreview(trace_ids=["GE.FUR.00.BHZ", "GE.FUR.00.BHN"], pad=True, starttime=dt, endtime=dt2)
        self.assertEquals(len(st), 1)
        self.assertEquals(st[0].stats.npts, 3380)