Exemplo n.º 1
0
 def test_obspy_scanner(self):
     scanner = Scanner("MSEED")
     scanner.parse(TestMseed.root_path)
     print(scanner.data.keys())
     print(scanner.data)
     scanner.analyze_parsed_data(True)
     scanner.plot()
Exemplo n.º 2
0
    def test_scan_save_load_npz(self):
        """
        Run obspy-scan on selected tests/data directories, saving/loading
        to/from npz.

        Tests both the command line script and the Scanner class.
        """
        scanner = Scanner()
        # Copy files to a temp folder to avoid wildcard scans.
        with TemporaryWorkingDirectory():
            for filename in self.all_files:
                shutil.copy(filename, os.curdir)

            # save via command line
            obspy_scan([os.curdir, '--write', 'scan.npz'])

            # save via Python
            scanner.parse(os.curdir)
            scanner.save_npz('scanner.npz')
            scanner = Scanner()

            # version string of '0.0.0+archive' raises UserWarning - ignore
            with warnings.catch_warnings(record=True):
                warnings.simplefilter('ignore', UserWarning)

                # load via Python
                scanner.load_npz('scanner.npz')
                with ImageComparison(self.path, 'scan.png') as ic:
                    scanner.plot(ic.name)

                # load via command line
                with ImageComparison(self.path, 'scan.png') as ic:
                    obspy_scan(['--load', 'scan.npz', '--output', ic.name])
Exemplo n.º 3
0
def get_data_coverage_figure(station_ids, channel_codes, startdate, enddate,
                             datafilepathfunc):
    """
    :type station_ids: list
    :param station_ids: station ids as a list of strings
    :type channel_codes: list
    :param channel_codes: data channel codes as a list of strings
    :type startdate: :class:`~obspy.core.utcdatetime.UTCDateTime`
    :param startdate: scanning startdate
    :type enddate: :class:`~obspy.core.utcdatetime.UTCDateTime`
    :param enddate: scanning enddate
    :type filepathfunc: func
    :param filepathfunc: A dynamic filepath, wildcards can be used since
        :func:`~glob.glob` is use to process filepaths after the
        arguments are filled in.
    :rtype: :class:`~matplotlib.figure.Figure`
    :return: scanner plot
    """
    scanner = Scanner()
    paths = []
    pathkwargs = {}
    pathkwargs["location_code"] = "*"
    network_and_station_codes = (s.split(".") for s in station_ids)
    combinations = \
        list(itertools.product(network_and_station_codes, channel_codes))
    date = startdate
    added_channels = set()
    while date <= enddate:
        pathkwargs["year"] = date.year
        pathkwargs["julday"] = date.julday
        for (network_code, station_code), channel_code in combinations:
            pathkwargs["network_code"] = network_code
            pathkwargs["station_code"] = station_code
            pathkwargs["channel_code"] = channel_code
            trace_key = network_code + station_code + channel_code
            paths = datafilepathfunc(**pathkwargs)
            for path in glob.glob(paths):
                scanner.parse(path)
                added_channels.add(trace_key)
        date += 86400

    count = len(added_channels)
    if count:
        height = 1.0 + count * 0.5
        height = min(height, 655.35)
        fig = scanner.plot(show=False, starttime=startdate, endtime=enddate)
        fig.set_size_inches(20.0, height)
        fig.set_facecolor(colors.WHITE)
        fig.tight_layout()
        return fig

    return null_figure()
Exemplo n.º 4
0
    def test_scan_function_and_scanner_class(self, all_files, image_path):
        """
        Test scan function and Scanner class (in one test to keep overhead of
        copying files down)
        """
        scanner = Scanner()
        path1 = image_path.parent / 'scan1.png'
        path2 = image_path.parent / 'scan2.png'
        # Copy files to a temp folder to avoid wildcard scans.
        with TemporaryWorkingDirectory():
            for filename in all_files:
                shutil.copy(filename, os.curdir)

            scanner.parse(os.curdir)
            scan(paths=os.curdir, plot=path1)

        scanner.plot(path2)
Exemplo n.º 5
0
    def test_scan_function_and_scanner_class(self):
        """
        Test scan function and Scanner class (in one test to keep overhead of
        copying files down)
        """
        scanner = Scanner()
        # Copy files to a temp folder to avoid wildcard scans.
        with TemporaryWorkingDirectory():
            for filename in self.all_files:
                shutil.copy(filename, os.curdir)

            scanner.parse(os.curdir)

            with ImageComparison(self.path, 'scan.png') as ic:
                scan(paths=os.curdir, plot=ic.name)

        with ImageComparison(self.path, 'scan.png') as ic:
            scanner.plot(ic.name)
Exemplo n.º 6
0
    def test_scan_plot_by_id_with_wildcard(self):
        """
        Test selecting what to plot after scanning with wildcards in selected
        SEED IDs
        """
        files = [
            "BW.UH1._.EHZ.D.2010.147.a.slist.gz",
            "BW.UH1._.EHZ.D.2010.147.b.slist.gz",
            "BW.UH1._.SHZ.D.2010.147.cut.slist.gz",
            "BW.UH2._.SHZ.D.2010.147.cut.slist.gz",
            "BW.UH3._.SHE.D.2010.147.cut.slist.gz",
            "BW.UH3._.SHN.D.2010.147.cut.slist.gz",
            "BW.UH3._.SHZ.D.2010.147.cut.slist.gz",
            "BW.UH4._.EHZ.D.2010.147.cut.slist.gz",
            "IUANMO.seed"]

        scanner = Scanner()

        for filename in files:
            scanner.parse(get_example_file(filename))

        expected = [
            ('*.UH[12]*',
             ['BW.UH2..SHZ\n100.0%',
              'BW.UH1..SHZ\n100.0%',
              'BW.UH1..EHZ\n10.7%']),
            ('*Z',
             ['IU.ANMO.00.LHZ\n100.0%',
              'BW.UH4..EHZ\n100.0%',
              'BW.UH3..SHZ\n100.0%',
              'BW.UH2..SHZ\n100.0%',
              'BW.UH1..SHZ\n100.0%',
              'BW.UH1..EHZ\n10.7%'])]

        for seed_id, expected_labels in expected:
            fig, ax = plt.subplots()
            fig = scanner.plot(fig=fig, show=False, seed_ids=[seed_id])
            got = [label.get_text() for label in ax.get_yticklabels()]
            self.assertEqual(got, expected_labels)
            plt.close(fig)
Exemplo n.º 7
0
    def test_scan_plot_by_id_with_wildcard(self):
        """
        Test selecting what to plot after scanning with wildcards in selected
        SEED IDs
        """
        files = [
            "BW.UH1._.EHZ.D.2010.147.a.slist.gz",
            "BW.UH1._.EHZ.D.2010.147.b.slist.gz",
            "BW.UH1._.SHZ.D.2010.147.cut.slist.gz",
            "BW.UH2._.SHZ.D.2010.147.cut.slist.gz",
            "BW.UH3._.SHE.D.2010.147.cut.slist.gz",
            "BW.UH3._.SHN.D.2010.147.cut.slist.gz",
            "BW.UH3._.SHZ.D.2010.147.cut.slist.gz",
            "BW.UH4._.EHZ.D.2010.147.cut.slist.gz",
            "IUANMO.seed"]

        scanner = Scanner()

        for filename in files:
            scanner.parse(get_example_file(filename))

        expected = [
            ('*.UH[12]*',
             ['BW.UH2..SHZ\n100.0%',
              'BW.UH1..SHZ\n100.0%',
              'BW.UH1..EHZ\n10.7%']),
            ('*Z',
             ['IU.ANMO.00.LHZ\n100.0%',
              'BW.UH4..EHZ\n100.0%',
              'BW.UH3..SHZ\n100.0%',
              'BW.UH2..SHZ\n100.0%',
              'BW.UH1..SHZ\n100.0%',
              'BW.UH1..EHZ\n10.7%'])]

        for seed_id, expected_labels in expected:
            fig, ax = plt.subplots()
            fig = scanner.plot(fig=fig, show=False, seed_ids=[seed_id])
            got = [label.get_text() for label in ax.get_yticklabels()]
            self.assertEqual(got, expected_labels)
            plt.close(fig)
Exemplo n.º 8
0
    def test_scan_save_load_npz(self):
        """
        Run obspy-scan on selected tests/data directories, saving/loading
        to/from npz.

        Tests both the command line script and the Scanner class.
        """
        scanner = Scanner()
        # Copy files to a temp folder to avoid wildcard scans.
        with TemporaryWorkingDirectory():
            for filename in self.all_files:
                shutil.copy(filename, os.curdir)

            obspy_scan([os.curdir, '--write', 'scan.npz', '--quiet'])
            scanner.parse(os.curdir)
            scanner.save_npz('scanner.npz')
            scanner = Scanner()
            scanner.load_npz('scanner.npz')

            with ImageComparison(self.path, 'scan.png') as ic:
                obspy_scan(['--load', 'scan.npz', '--output', ic.name,
                            '--quiet'])
        with ImageComparison(self.path, 'scan.png') as ic:
            scanner.plot(ic.name)
Exemplo n.º 9
0
    def test_scan_save_load_npz(self):
        """
        Run obspy-scan on selected tests/data directories, saving/loading
        to/from npz.

        Tests both the command line script and the Scanner class.
        """
        scanner = Scanner()
        # Copy files to a temp folder to avoid wildcard scans.
        with TemporaryWorkingDirectory():
            for filename in self.all_files:
                shutil.copy(filename, os.curdir)

            obspy_scan([os.curdir, '--write', 'scan.npz', '--quiet'])
            scanner.parse(os.curdir)
            scanner.save_npz('scanner.npz')
            scanner = Scanner()
            scanner.load_npz('scanner.npz')

            with ImageComparison(self.path, 'scan.png') as ic:
                obspy_scan(
                    ['--load', 'scan.npz', '--output', ic.name, '--quiet'])
        with ImageComparison(self.path, 'scan.png') as ic:
            scanner.plot(ic.name)