Example #1
0
def load_events(filename, format='detect'):
    '''Read events file.

    :param filename: name of file as str
    :param format: file format: ``'detect'``, ``'basic'``, or ``'yaml'``
    :returns: list of :py:class:`Event` objects
    '''

    if format == 'detect':
        fmt = detect_format(filename)

    assert fmt in ('yaml', 'basic')

    if fmt == 'yaml':
        from pyrocko import guts
        events = [
            ev for ev in guts.load_all(filename=filename)
            if isinstance(ev, Event)
        ]

        return events
    elif fmt == 'basic':
        return list(Event.load_catalog(filename))
    else:
        from pyrocko.io.io_common import FileLoadError
        FileLoadError('unknown event file format: %s' % fmt)
Example #2
0
def load_events(filename, format='detect'):
    '''Read events file.

    :param filename: name of file as str
    :param format: file format: ``'detect'``, ``'basic'``, or ``'yaml'``
    :returns: list of :py:class:`Event` objects
    '''

    if format == 'detect':
        fmt = detect_format(filename)

    assert fmt in ('yaml', 'basic')

    if fmt == 'yaml':
        from pyrocko import guts
        events = [
            ev for ev in guts.load_all(filename=filename)
            if isinstance(ev, Event)]

        return events
    elif fmt == 'basic':
        return list(Event.load_catalog(filename))
    else:
        from pyrocko.io.io_common import FileLoadError
        FileLoadError('unknown event file format: %s' % fmt)
Example #3
0
    def add_gnss_campaign(self, filename):
        try:
            from pyrocko.model import gnss  # noqa
        except ImportError:
            raise ImportError('Module pyrocko.model.gnss not found,'
                              ' please upgrade pyrocko!')
        logger.debug('Loading GNSS campaign from "%s"...' % filename)

        campaign = load_all(filename=filename)
        self.gnss_campaigns.append(campaign[0])
Example #4
0
def load_station_corrections(filename):
    scs = load_all(filename=filename)
    for sc in scs:
        assert isinstance(sc, StationCorrection)

    return scs
Example #5
0
def test_joint_locate():
    playground_dir = common.get_playground_dir()
    common.get_test_data('gf_stores/crust2_ib/')
    gf_stores_path = common.test_data_path('gf_stores')

    with chdir(playground_dir):
        scenario_dir = 'scenario_joint_locate'
        if os.path.exists(scenario_dir):
            shutil.rmtree(scenario_dir)

        grond('scenario', '--targets=waveforms', '--nevents=1',
              '--nstations=6', '--gf-store-superdirs=%s' % gf_stores_path,
              '--no-map', scenario_dir)

        with chdir(scenario_dir):
            config_path = 'config/scenario.gronf'
            quick_config_path_templ = 'config/scenario_quick_%i.gronf'
            event_names = grond('events', config_path).strip().split('\n')

            env = Environment([config_path] + event_names)
            conf = env.get_config()

            for irun, pick_weight in enumerate([0.5, 1.0, 2.0]):
                quick_config_path = quick_config_path_templ % irun

                mod_conf = conf.clone()
                target_groups = guts.load_all(string='''
--- !grond.PhasePickTargetGroup
normalisation_family: picks
path: pick.p
weight: 1.0
store_id: crust2_ib
distance_min: 10000.0
distance_max: 1000000.0
pick_synthetic_traveltime: '{stored:any_P}'
pick_phasename: 'any_P'
--- !grond.PhasePickTargetGroup
normalisation_family: picks
path: pick.s
weight: 1.0
store_id: crust2_ib
distance_min: 10000.0
distance_max: 1000000.0
pick_synthetic_traveltime: '{stored:any_S}'
pick_phasename: 'any_S'
''')

                mod_conf.problem_config.name_template \
                    = 'cmt_${event_name}_%i' % irun

                mod_conf.dataset_config.picks_paths = [
                    'data/scenario/picks/picks.markers'
                ]

                mod_conf.target_groups.extend(target_groups)

                mod_conf.set_elements('target_groups[-2:].weight', pick_weight)

                # mod_conf.set_elements(
                #     'analyser_configs[:].niterations', 100)
                # mod_conf.set_elements(
                #     'optimiser_config.sampler_phases[:].niterations', 100)
                # mod_conf.set_elements(
                #     'optimiser_config.nbootstrap', 5)

                mod_conf.optimiser_config.sampler_phases[-1].niterations \
                    = 10000

                mod_conf.set_elements(
                    'optimiser_config.sampler_phases[:].seed', 23)

                mod_conf.set_basepath(conf.get_basepath())
                config.write_config(mod_conf, quick_config_path)

                grond('diff', config_path, quick_config_path)
                grond('check', quick_config_path, *event_names)

                grond('go', quick_config_path, *event_names)
                rundir_paths = common.get_rundir_paths(quick_config_path,
                                                       event_names)
                grond('report', *rundir_paths)
Example #6
0
def load_stations(filename, format='detect'):
    '''Read stations file.

    :param filename: filename
    :returns: list of :py:class:`Station` objects
    '''

    if format == 'detect':
        format = detect_format(filename)

    if format == 'yaml':
        from pyrocko import guts
        stations = [
            st for st in guts.load_all(filename=filename)
            if isinstance(st, Station)
        ]

        return stations

    elif format == 'basic':
        stations = []
        f = open(filename, 'r')
        station = None
        channel_names = []
        for (iline, line) in enumerate(f):
            toks = line.split(None, 5)
            if line.strip().startswith('#') or line.strip() == '':
                continue

            if len(toks) == 5 or len(toks) == 6:
                net, sta, loc = toks[0].split('.')
                lat, lon, elevation, depth = [float(x) for x in toks[1:5]]
                if len(toks) == 5:
                    name = ''
                else:
                    name = toks[5].rstrip()

                station = Station(net,
                                  sta,
                                  loc,
                                  lat,
                                  lon,
                                  elevation=elevation,
                                  depth=depth,
                                  name=name)

                stations.append(station)
                channel_names = []

            elif len(toks) == 4 and station is not None:
                name, azi, dip, gain = (toks[0], float_or_none(toks[1]),
                                        float_or_none(toks[2]), float(toks[3]))
                if name in channel_names:
                    logger.warning('redefined channel! (line: %i, file: %s)' %
                                   (iline + 1, filename))
                else:
                    channel_names.append(name)

                channel = Channel(name, azimuth=azi, dip=dip, gain=gain)
                station.add_channel(channel)

            else:
                logger.warning('skipping invalid station/channel definition '
                               '(line: %i, file: %s' % (iline + 1, filename))

        f.close()
        return stations

    else:
        from pyrocko.io.io_common import FileLoadError
        raise FileLoadError('unknown event file format: %s' % format)