def testValidateFrequencyResponses(self): ttrace = trace.Trace(ydata=num.random.random(1000)) inverse_eval = trace.InverseEvalresp(respfile='test.txt', trace=ttrace, target='vel') inverse_eval.validate() pzk_response = trace.PoleZeroResponse(zeros=[0 + 0j, 0 + 0j], poles=[1 + 0j, 2 + 0j], constant=10.) pzk_response.regularize()
def get_restitution(self, tr, allowed_methods): if 'evalresp' in allowed_methods: respfile = pjoin(self.tempdir, 'RESP.%s.%s.%s.%s' % tr.nslc_id) if not os.path.exists(respfile): raise eventdata.NoRestitution( 'no response information available for trace %s.%s.%s.%s' % tr.nslc_id) trans = trace.InverseEvalresp(respfile, tr) return trans else: raise eventdata.NoRestitution( 'no allowed restitution method available')
def iris_get_responses(stations, time, fn_template): for sta in stations: fn = fn_template % dict( network=sta.network, station=sta.station, location=sta.location) if not os.path.isfile(fn): try: fi = iris_ws.ws_resp(sta.network, sta.station, sta.location, '*', time=time) util.ensuredirs(fn) fo = open(fn, 'w') while True: data = fi.read(1024) if not data: break fo.write(data) fo.close() fi.close() except iris_ws.NotFound: pass for cha in sta.get_channels(): class DummyTrace: pass tr = DummyTrace() tr.tmin = time tr.tmax = time tr.nslc_id = (sta.network, sta.station, sta.location, cha.name) if os.path.exists(fn): cha.inv_response = trace.InverseEvalresp(fn, tr) else: cha.inv_response = None
from pyrocko import io, trace, evalresp_ext from pyrocko.example import get_example_data # Get online data get_example_data('1989.072.evt.mseed') traces = io.load('1989.072.evt.mseed') out_traces = [] for tr in traces: respfn = tr.fill_template( 'RESP.%(network)s.%(station)s.%(location)s.%(channel)s') if os.path.exists(respfn): try: resp = trace.InverseEvalresp(respfn, tr, target='dis') tr.extend(tr.tmin - 100., tr.tmax, fillmethod='repeat') displacement = tr.transfer( 100., # rise and fall of time domain taper in [s] (0.005, 0.01, 1., 2.), # frequency domain taper in [Hz] transfer_function=resp) # change channel id, so we can distinguish the traces in a trace # viewer. displacement.set_codes(channel='D' + tr.channel[-1]) out_traces.append(displacement) except evalresp_ext.EvalrespError: