Beispiel #1
0
def report_index(report_config=None):
    if report_config is None:
        report_config = ReportConfig()

    report_base_path = report_config.report_base_path
    entries = []
    for entry_path in iter_report_entry_dirs(report_base_path):
        fn = op.join(entry_path, 'index.yaml')
        if not os.path.exists(fn):
            logger.warn('Skipping indexing of incomplete report entry: %s' %
                        entry_path)

            continue

        logger.info('Indexing %s...' % entry_path)

        rie = guts.load(filename=fn)
        report_relpath = op.relpath(entry_path, report_base_path)
        rie.path = report_relpath
        entries.append(rie)

    guts.dump_all(entries,
                  filename=op.join(report_base_path, 'report_list.yaml'))

    guts.dump(ReportInfo(title=report_config.title,
                         description=report_config.description,
                         have_archive=report_config.make_archive),
              filename=op.join(report_base_path, 'info.yaml'))

    app_dir = op.join(op.split(__file__)[0], 'app')
    copytree(app_dir, report_base_path)
    logger.info('Created report in %s/index.html' % report_base_path)
    def testIOEvent(self):
        tempdir = tempfile.mkdtemp(prefix='pyrocko-model')
        fn = pjoin(tempdir, 'event.txt')
        e1 = model.Event(
            10., 20., 1234567890., 'bubu', region='taka tuka land',
            moment_tensor=moment_tensor.MomentTensor(strike=45., dip=90),
            magnitude=5.1, magnitude_type='Mw')
        guts.dump(e1, filename=fn)
        e2 = guts.load(filename=fn)
        assert e1.region == e2.region
        assert e1.name == e2.name
        assert e1.lat == e2.lat
        assert e1.lon == e2.lon
        assert e1.time == e2.time
        assert e1.region == e2.region
        assert e1.magnitude == e2.magnitude
        assert e1.magnitude_type == e2.magnitude_type
        assert e1.get_hash() == e2.get_hash()

        fn2 = pjoin(tempdir, 'events.txt')
        guts.dump_all([e1, e2], filename=fn2)

        with self.assertRaises(model.OneEventRequired):
            model.load_one_event(fn2)

        shutil.rmtree(tempdir)
Beispiel #3
0
    def dump(x, gm, indices):
        if type == 'vector':
            print(' ',
                  ' '.join('%16.7g' % problem.extract(x, i) for i in indices),
                  '%16.7g' % gm,
                  file=out)

        elif type == 'source':
            source = problem.get_source(x)
            if effective_lat_lon:
                source.set_origin(*source.effective_latlon)
            guts.dump(source, stream=out)

        elif type == 'event':
            ev = problem.get_source(x).pyrocko_event()
            if effective_lat_lon:
                ev.set_origin(*ev.effective_latlon)

            model.dump_events([ev], stream=out)

        elif type == 'event-yaml':
            ev = problem.get_source(x).pyrocko_event()
            if effective_lat_lon:
                ev.set_origin(*ev.effective_latlon)
            guts.dump_all([ev], stream=out)

        else:
            raise GrondError('Invalid argument: type=%s' % repr(type))
Beispiel #4
0
    def testIOEvent(self):
        tempdir = tempfile.mkdtemp(prefix='pyrocko-model')
        fn = pjoin(tempdir, 'event.txt')
        e1 = model.Event(10.,
                         20.,
                         1234567890.,
                         'bubu',
                         depth=10.,
                         region='taka tuka land',
                         moment_tensor=moment_tensor.MomentTensor(strike=45.,
                                                                  dip=90),
                         magnitude=5.1,
                         magnitude_type='Mw',
                         tags=['cluster:-1', 'custom_magnitude:2.5'])

        guts.dump(e1, filename=fn)
        e2 = guts.load(filename=fn)
        assert e1.region == e2.region
        assert e1.name == e2.name
        assert e1.lat == e2.lat
        assert e1.lon == e2.lon
        assert e1.time == e2.time
        assert e1.region == e2.region
        assert e1.magnitude == e2.magnitude
        assert e1.magnitude_type == e2.magnitude_type
        assert e1.get_hash() == e2.get_hash()
        assert e1.tags == e2.tags

        fn2 = pjoin(tempdir, 'events.txt')
        guts.dump_all([e1, e2], filename=fn2)

        with self.assertRaises(model.OneEventRequired):
            model.load_one_event(fn2)

        shutil.rmtree(tempdir)
Beispiel #5
0
def report_index(report_config=None):
    if report_config is None:
        report_config = ReportConfig()

    reports_base_path = report_config.reports_base_path
    reports = []
    for report_path in iter_report_dirs(reports_base_path):

        fn = op.join(report_path, 'index.yaml')
        if not os.path.exists(fn):
            logger.warn('Skipping indexing of incomplete report: %s' %
                        report_path)

            continue

        logger.info('Indexing %s...' % report_path)

        rie = guts.load(filename=fn)
        report_relpath = op.relpath(report_path, reports_base_path)
        rie.path = report_relpath
        reports.append(rie)

    guts.dump_all(reports,
                  filename=op.join(reports_base_path, 'report_list.yaml'))

    from grond import info
    guts.dump(info.version_info(),
              filename=op.join(reports_base_path, 'version_info.yaml'))

    app_dir = op.join(op.split(__file__)[0], 'app')
    copytree(app_dir, reports_base_path)
    logger.info('Created report in %s/index.html' % reports_base_path)
Beispiel #6
0
def dump_stations_yaml(stations, filename):
    '''Write stations file in YAML format.

    :param stations: list of :py:class:`Station` objects
    :param filename: filename as str
    '''

    dump_all(stations, filename=filename)
Beispiel #7
0
def get_correction_statistcs(station_list, filename_list):
    
    mapping_stations_index = {}
    for i_st, st in enumerate(station_list):
        mapping_stations_index[get_nslc(st)] = i_st 

    corrections = num.empty((len(mapping_stations_index), len(filename_list)))
    corrections.fill(num.nan)

    for i_fn, fn in enumerate(filename_list):
        st_cor = grond.load_station_corrections(filename=fn)

        for sc in st_cor:
            #print(sc.codes[-1])
            if not sc.codes[-1] == 'Z':
                continue
            
            ii = mapping_stations_index['%s.%s' % (sc.codes[0], sc.codes[1])]
            corrections[ii, i_fn] = sc.factor


    #ii_test = mapping_stations_index['CH.FUORN']
    #print(corrections[ii_test, :])

    mean_correction_st = num.nanmean(corrections, axis=1)
    #print(mean_correction_st[ii_test])
    stdev_correction_st = num.nanstd(corrections, axis=1)
    median_correction_st = num.nanmedian(corrections, axis=1)

    is_nan = num.isnan(corrections[:,:]).sum(axis=1)

    corrstats_list = []
    for m, i_m in mapping_stations_index.items():
        logging.info('m %s' % m)
        logging.info('median %s' % median_correction_st[i_m])
        logging.info('mean %s' % mean_correction_st[i_m])
        logging.info('std %s' % stdev_correction_st[i_m])
        logging.info('len %s' % (len(filename_list)-is_nan[i_m]))

        corrstats_list.append(Correction_Statistics(code=m,
                                                    median_factor=median_correction_st[i_m],
                                                    mean_factor=mean_correction_st[i_m],
                                                    stdev_factor=stdev_correction_st[i_m],
                                                    n_ev=len(filename_list)-is_nan[i_m]))
    
    dump_all(corrstats_list,
             filename='results/tele_check/tele_check_stats.yaml',
             stream=None)
Beispiel #8
0
def dump_events(events, filename=None, stream=None, format='basic'):
    '''Write events file.

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

    if format == 'basic':
        Event.dump_catalog(events, filename=filename, stream=stream)

    elif format == 'yaml':
        from pyrocko import guts
        events = [ev for ev in events if isinstance(ev, Event)]
        guts.dump_all(object=events, filename=filename, stream=None)

    else:
        from pyrocko.io.io_common import FileSaveError
        raise FileSaveError('unknown event file format: %s' % format)
Beispiel #9
0
def dump_station_corrections(station_corrections, filename):
    return dump_all(station_corrections, filename=filename)