def testMemTracesFile(self): tr = trace.Trace(ydata=num.arange(100, dtype=num.float)) f = pile.MemTracesFile(None, [tr]) p = pile.Pile() p.add_file(f) for tr in p.iter_all(include_last=True): assert numeq(tr.ydata, num.arange(100, dtype=num.float), 0.001)
def testMemTracesFile(self): tr = trace.Trace(ydata=num.arange(100, dtype=num.float)) f = pile.MemTracesFile(None, [tr]) p = pile.Pile() p.add_file(f) for tr in p.iter_all(): print tr.ydata
def _insert(self, iblock, traces): if traces: if self._storepath is not None: fns = io.save(traces, self._storepath, format='mseed', additional={'iblock': iblock}) self.load_files(fns, fileformat='mseed', show_progress=False) else: file = pile.MemTracesFile(None, traces) self.add_file(file)
def _insert_trace(self, trace): buf = self._append_to_buffer(trace) nslc = trace.nslc_id if buf is None: # create new buffer trace if nslc in self._buffers: self._fixate(self._buffers[nslc]) trbuf = trace.copy() buf = pile.MemTracesFile(None, [trbuf]) self.add_file(buf) self._buffers[nslc] = buf buf.recursive_grow_update([trace]) trbuf = buf.get_traces()[0] if self._fixation_length is not None: if trbuf.tmax - trbuf.tmin > self._fixation_length: self._fixate(buf) del self._buffers[nslc]
def get_pile(self, tmin=None, tmax=None): p = pile.Pile() trf = pile.MemTracesFile(None, self.get_waveforms(tmin, tmax)) p.add_file(trf) return p
def add_trace(self, tr): memfile = pile.MemTracesFile(None, [tr]) self.pile.add_file(memfile)
def kiwi_setup(options, config, event_names): from tunguska import prepare, gfdb conf = config['iris_pull_config'] kiwi_conf = config['kiwi_config'] if kiwi_conf.has('gfdb_path'): db = gfdb.Gfdb(kiwi_conf.path('gfdb_path')) deltat = db.dt else: if kiwi_conf.has('deltat'): deltat = kiwi_conf.deltat else: deltat = None db = None if not event_names: sys.exit('need event name') for event_name in event_names: conf.event_name = event_name kiwi_conf.event_name = event_name event = _get_event_infos(conf) stations = _get_stations(conf) for station in stations: station.set_event_relative_data(event) traces = _get_prepared_traces(conf, stations) raw_traces = _get_raw_traces(conf, stations) p = pile.Pile() buf = pile.MemTracesFile(None, traces) p.add_file(buf) processed = [] for station in stations: tt1 = kiwi_conf.cut_span[0](station.dist_m, event.depth) tt2 = kiwi_conf.cut_span[1](station.dist_m, event.depth) if None in (tt1, tt2): continue tmin = tt1 + event.time tmax = tt2 + event.time traces = p.all( tmin=tmin, tmax=tmax, want_incomplete=False, trace_selector=lambda tr: get_nsl(tr) == get_nsl(station)) for proj, in_channels, out_channels in station.guess_projections_to_rtu( out_channels=('R', 'T', 'Z')): proc = trace.project(traces, proj, in_channels, out_channels) processed.extend(proc) for tr in proc: for ch in out_channels: if ch.name == tr.channel: station.add_channel(ch) for tr in processed: if deltat is not None: try: tr.downsample_to(deltat, snap=True, allow_upsample_max=5) except util.UnavailableDecimation, e: logger.warn('Cannot downsample %s.%s.%s.%s: %s' % (tr.nslc_id + (e, ))) continue stations_by_nsl = dict((get_nsl(s), s) for s in stations) acc = DummyAcc(raw_traces) prepare.save_kiwi_dataset(acc, stations_by_nsl, processed, event, kiwi_conf)