channel=chan, starttime=UTCDateTime('2004-001T00:00:00.0'), endtime=day + secperday, filename=respfilename(ch)) resp = irisclient.evalresp(network, station, loc, chan, filename="%s%s.png" % (qcfigs, ch), output='plot') except: print("No response data for channel %s" % (ch)) data = {} for ch in ids: print(respfilename(ch)) stch = st.select(id=ch) # Just take the data for a single channel calc_daily_stats(stch) try: ppsd = PPSD(stch[0].stats, metadata=str(respfilename(ch))) ppsd.add(stch) figname = "%s%d/%03d/%s.png" % (qcfigs, day.year, day.julday, ch) path_verify(figname) ppsd.plot(figname, cmap=pqlx) data = ppsd.get_percentile(percentile=50) fname = "%s%d/%03d/PPSDper50_%s.npz" % (qcdata, day.year, day.julday, ch) path_verify(fname) np.savez(fname, data) except: print("Error with PPSD for %s check for response" % (ch))
#Make the PDF ppsd = PPSD(st[0].stats,paz=pazval,ppsd_length=parserval.len,overlap=parserval.overlap) for tr in st: ppsd.add(tr) if debug: for pdftime in ppsd.times: print 'Here is what is in the PDF: ' + str(pdftime) try: pdfstring = "PDF" + st[0].stats.station + st[0].stats.channel + str(st[0].stats.starttime.year)+ \ str(st[0].stats.starttime.julday).zfill(3) + ".jpg" medianstring = "MEDIAN" + st[0].stats.station + st[0].stats.channel + str(st[0].stats.starttime.year)+ \ str(st[0].stats.starttime.julday).zfill(3) if debug: print 'Saving the PDF to : ' + pdfstring print 'Saving the median to : ' + medianstring ppsd.plot(show_percentiles=True,percentiles=[50], filename=pdfstring, show = True, show_histogram=True, grid= False, show_coverage=False, \ period_lim=(parserval.minper,parserval.maxper)) per,perval = ppsd.get_percentile(percentile=50,hist_cum=None) perFile = open(medianstring, 'w') for index, val in enumerate(per): perFile.write(str("%.2f" % val) + ',' + str(perval[index]) + '\n') perFile.close() except: 'No PPSD saved'
network, station, location=loc, channel=chan, starttime=UTCDateTime('2004-001T00:00:00.0'), endtime=day + secperday, filename=respfilename(ch)) resp = irisclient.evalresp(network, station, loc, chan, filename="%s%s.png" % (qcfigs, ch), output='plot') except: print("No response data for channel %s" % (ch)) data = {} for ch in ids: print(respfilename(ch)) stch = st.select(id=ch) # Just take the data for a single channel try: ppsd = PPSD(stch[0].stats, metadata=str(respfilename(ch))) ppsd.add(stch) figname = "%s%d/%03d/%s.png" % (qcfigs, day.year, day.julday, ch) path_verify(figname) ppsd.plot(figname, cmap=pqlx) data[ch] = ppsd.get_percentile(percentile=50) except: print("Error with PPSD for %s check for response" % (ch)) print(data)
# channels = ['EHU'] # channels = ['SHU', 'MHV', 'MHW'] st = read(ondeckdatafile) inv = read_inventory(ondeckmetadata) # On deck SP data print("Working on on-deck data") chn = 'EHU' tr = st.select(channel=chn)[1] #first one may have metadata problem ppsd = PPSD(tr.stats, metadata=inv, ppsd_length=600.0, skip_on_gaps=True, period_limits=(0.02, 100.0), db_bins=(-200,-50, 1.)) st_select = st.select(channel=chn) ppsd.add(st_select) (ondeckpd, ondeckpsd) = ppsd.get_mean() (ondeck05pd, ondeck05psd) = ppsd.get_percentile(percentile=5) (ondeck95pd, ondeck95psd) = ppsd.get_percentile(percentile=95) weeklydir = 'datafiles/weeklies/' metadata = 'datafiles/ELYSE.all.dl0226.response.xml' # On ground SP print("Working on on-ground data") chn = 'SHU' loc = '68' weeks = np.array(['2019-01-06-2019-01-12', '2019-01-13-2019-01-19', '2019-01-20-2019-01-26', '2019-01-27-2019-02-02']) # Do first file week = weeks[0] datafile = weeklydir + week + '.ELYSE.allseispress.mseed'
refperiod = 3. nullwrite = NullWriter() amp_by_obs_length = [] for obslength in tqdm(obslengths): peak_amp = [] start = starttime end = start + obslength*3600. while (end < endtime): # print((end-starttime)/length) st = read(noisefile, starttime=start, endtime=end) oldstdout = sys.stdout sys.stdout = nullwrite ppsd = PPSD(st[0].stats, paz, db_bins=[-300, -75, 5], period_limits=[1.0, 200], ppsd_length=ppsd_length) ppsd.add(st) (pd, psd) = ppsd.get_percentile(percentile=95) sys.stdout = oldstdout peak_amp.append(float(psd.max())) start = end end = start + obslength*3600. peak_amp = np.array(peak_amp) amp_by_obs_length.append(peak_amp) with open(outputfile, 'w') as f: f.write('Obs period, mean, std, median, 5th percentile\n') for i, obslength in enumerate(obslengths): f.write('%.1f, %.2f, %.1f, %.1f, %.1f\n' % (obslength, np.mean(amp_by_obs_length[i]), np.std(amp_by_obs_length[i]), np.median(amp_by_obs_length[i]),