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)
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))
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)
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)
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)
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)
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)
def dump_station_corrections(station_corrections, filename): return dump_all(station_corrections, filename=filename)