本文整理汇总了Python中obspy.core.Stream.trim方法的典型用法代码示例。如果您正苦于以下问题:Python Stream.trim方法的具体用法?Python Stream.trim怎么用?Python Stream.trim使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类obspy.core.Stream
的用法示例。
在下文中一共展示了Stream.trim方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_timeseries
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
def get_timeseries(self, starttime, endtime, observatory=None,
channels=None, type=None, interval=None):
"""Implements get_timeseries
Notes: Calls IMFV283Factory.parse_string in place of
IMFV283Factory.get_timeseries.
"""
observatory = observatory or self.observatory
channels = channels or self.channels
self.criteria_file_name = observatory + '.sc'
timeseries = Stream()
output = self._retrieve_goes_messages(starttime, endtime, observatory)
timeseries += self.parse_string(output)
# merge channel traces for multiple days
timeseries.merge()
# trim to requested start/end time
timeseries.trim(starttime, endtime)
# output the number of points we read for logging
if len(timeseries):
print("Read %s points from %s" % (timeseries[0].stats.npts,
observatory), file=sys.stderr)
self._post_process(timeseries)
if observatory is not None:
timeseries = timeseries.select(station=observatory)
return timeseries
示例2: getWaveform
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
def getWaveform(self, network, station, location, channel, starttime,
endtime, format="MSEED"):
"""
Retrieves waveform data from the NERIES Web service and returns a ObsPy
Stream object.
:type network: str
:param network: Network code, e.g. ``'BW'``.
:type station: str
:param station: Station code, e.g. ``'MANZ'``.
:type location: str
:param location: Location code, e.g. ``'01'``. Location code may
contain wild cards.
:type channel: str
:param channel: Channel code, e.g. ``'EHE'``. . Channel code may
contain wild cards.
:type starttime: :class:`~obspy.core.utcdatetime.UTCDateTime`
:param starttime: Start date and time.
:type endtime: :class:`~obspy.core.utcdatetime.UTCDateTime`
:param endtime: End date and time.
:type format: ``'FSEED'`` or ``'MSEED'``, optional
:param format: Output format. Either as full SEED (``'FSEED'``) or
Mini-SEED (``'MSEED'``) volume. Defaults to ``'MSEED'``.
:return: ObsPy :class:`~obspy.core.stream.Stream` object.
.. rubric:: Example
>>> from obspy.neries import Client
>>> client = Client(user='[email protected]')
>>> dt = UTCDateTime("2009-04-01T00:00:00")
>>> st = client.getWaveform("NL", "WIT", "", "BH*", dt, dt+30)
>>> print st # doctest: +ELLIPSIS
3 Trace(s) in Stream:
NL.WIT..BHZ | 2009-04-01T00:00:00.010200Z - ... | 40.0 Hz, 1201 samples
NL.WIT..BHN | 2009-04-01T00:00:00.010200Z - ... | 40.0 Hz, 1201 samples
NL.WIT..BHE | 2009-04-01T00:00:00.010200Z - ... | 40.0 Hz, 1201 samples
"""
tf = NamedTemporaryFile()
self.saveWaveform(tf._fileobj, network, station, location, channel,
starttime, endtime, format=format)
# read stream using obspy.mseed
tf.seek(0)
try:
stream = read(tf.name, 'MSEED')
except:
stream = Stream()
tf.close()
# remove temporary file:
try:
os.remove(tf.name)
except:
pass
# trim stream
stream.trim(starttime, endtime)
return stream
示例3: cosTaper
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
summary.append("#" * 33 + " Exceptions " + "#" * 33)
summary += exceptions
summary.append("#" * 79)
trig = []
mutt = []
if st:
# preprocessing, backup original data for plotting at end
st.merge(0)
st.detrend("linear")
for tr in st:
tr.data = tr.data * cosTaper(len(tr), 0.01)
#st.simulate(paz_remove="self", paz_simulate=cornFreq2Paz(1.0), remove_sensitivity=False)
st.sort()
st.filter("bandpass", freqmin=PAR.LOW, freqmax=PAR.HIGH, corners=1, zerophase=True)
st.trim(T1, T2)
st_trigger = st.copy()
st.normalize(global_max=False)
# do the triggering
trig = coincidenceTrigger("recstalta", PAR.ON, PAR.OFF, st_trigger,
thr_coincidence_sum=PAR.MIN_STATIONS,
max_trigger_length=PAR.MAXLEN, trigger_off_extension=PAR.ALLOWANCE,
details=True, sta=PAR.STA, lta=PAR.LTA)
for t in trig:
info = "%s %ss %s %s" % (t['time'].strftime("%Y-%m-%dT%H:%M:%S"), ("%.1f" % t['duration']).rjust(4), ("%i" % t['cft_peak_wmean']).rjust(3), "-".join(t['stations']))
summary.append(info)
tmp = st.slice(t['time'] - 1, t['time'] + t['duration'])
outfilename = "%s/%s_%.1f_%i_%s-%s_%s.png" % (PLOTDIR, t['time'].strftime("%Y-%m-%dT%H:%M:%S"), t['duration'], t['cft_peak_wmean'], len(t['stations']), num_stations, "-".join(t['stations']))
tmp.plot(outfile=outfilename)
mutt += ("-a", outfilename)
示例4: _getPreview
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
def _getPreview(session, **kwargs):
# build up query
query = session.query(WaveformChannel)
# start and end time
try:
start = kwargs.get('start_datetime')
start = UTCDateTime(start)
except:
start = UTCDateTime() - 60 * 20
finally:
query = query.filter(WaveformChannel.endtime > start.datetime)
try:
end = kwargs.get('end_datetime')
end = UTCDateTime(end)
except:
# 10 minutes
end = UTCDateTime()
finally:
query = query.filter(WaveformChannel.starttime < end.datetime)
# process arguments
if 'trace_ids' in kwargs:
# filter over trace id list
trace_ids = kwargs.get('trace_ids', '')
trace_filter = or_()
for trace_id in trace_ids.split(','):
temp = trace_id.split('.')
if len(temp) != 4:
continue
trace_filter.append(and_(
WaveformChannel.network == temp[0],
WaveformChannel.station == temp[1],
WaveformChannel.location == temp[2],
WaveformChannel.channel == temp[3]))
if trace_filter.clauses:
query = query.filter(trace_filter)
else:
# filter over network/station/location/channel id
for key in ['network_id', 'station_id', 'location_id',
'channel_id']:
text = kwargs.get(key, None)
if text == None:
continue
col = getattr(WaveformChannel, key[:-3])
if text == "":
query = query.filter(col == None)
elif '*' in text or '?' in text:
text = text.replace('?', '_')
text = text.replace('*', '%')
query = query.filter(col.like(text))
else:
query = query.filter(col == text)
# execute query
results = query.all()
session.close()
# create Stream
st = Stream()
for result in results:
preview = result.getPreview()
st.append(preview)
# merge and trim
st = mergePreviews(st)
st.trim(start, end)
return st, start, end
示例5: assert
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
mags = []
stations = client.getStations(t, t + 300, "CH")
for station in stations:
station = station['code']
try:
st = client.getWaveform("CH", station, "", "[EH]H[ZNE]", t - 300,
t + 300, metadata=True)
assert(len(st) == 3)
except:
print station, "---"
continue
st.simulate(paz_remove="self", paz_simulate=paz_wa, water_level=10)
st.trim(t, t + 50)
tr_n = st.select(component="N")[0]
ampl_n = max(abs(tr_n.data))
tr_e = st.select(component="E")[0]
ampl_e = max(abs(tr_e.data))
ampl = max(ampl_n, ampl_e)
sta_lat = st[0].stats.coordinates.latitude
sta_lon = st[0].stats.coordinates.longitude
event_lat = trig['latitude']
event_lon = trig['longitude']
epi_dist, az, baz = gps2DistAzimuth(event_lat, event_lon, sta_lat,
sta_lon)
epi_dist = epi_dist / 1000
示例6: Seedlink_plotter
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
#.........这里部分代码省略.........
fig=self.figure, type='dayplot', interval=self.interval,
number_of_ticks=13, tick_format='%d/%m %Hh',
size=(args.x_size * upscale_factor, args.y_size * upscale_factor),
x_labels_size=8,
y_labels_size=8, title=self.title, title_size=14, linewidth=0.5, right_vertical_labels=False,
vertical_scaling_range=self.scale,
subplots_adjust_left=0.03, subplots_adjust_right=0.99,
subplots_adjust_top=0.95, subplots_adjust_bottom=0.1,
one_tick_per_line=True,
# noir Rouge bleu vert
color = self.color,
show_y_UTC_label=False)
def packetHandler(self, count, slpack):
"""
Processes each packet received from the SeedLinkConnection.
:type count: int
:param count: Packet counter.
:type slpack: :class:`~obspy.seedlink.SLPacket`
:param slpack: packet to process.
:return: Boolean true if connection to SeedLink server should be
closed and session terminated, false otherwise.
"""
# check if not a complete packet
if slpack is None or (slpack == SLPacket.SLNOPACKET) or \
(slpack == SLPacket.SLERROR):
return False
# get basic packet info
type = slpack.getType()
# process INFO packets here
if (type == SLPacket.TYPE_SLINF):
return False
if (type == SLPacket.TYPE_SLINFT):
# print "Complete INFO:\n" + self.slconn.getInfoString()
if self.infolevel is not None:
return True
else:
return False
# process packet data
trace = slpack.getTrace()
if trace is None:
print self.__class__.__name__ + ": blockette contains no trace"
return False
# new samples add to the main stream
self.stream += trace
self.stream.merge()
now = UTCDateTime()
# Stop time will be the next round date
stop_time = UTCDateTime(
now.year, now.month, now.day, now.hour, 0, 0)+3600
start_time = stop_time-self.backtrace
# Limit the stream size
self.stream = self.stream.slice(start_time, stop_time)
self.stream.trim(start_time, stop_time)
self.title = self.stream.traces[0].stats.station+" "+self.stream.traces[0].stats.network+" "+self.stream.traces[
0].stats.location+" "+self.stream.traces[0].stats.channel+' scale: '+str(self.scale) + " - non filtre"
stream_time_length = self.stream.traces[
0].stats.endtime - self.stream.traces[0].stats.starttime
### Before we reach print_percentage of the time data to plot, we plot each initial_update_rate we received
# if (stream_time_length < (self.backtrace*self.print_percentage)):
# if ((stream_time_length))<(self.backtrace-60.0*self.interval):
# print str(stream_time_length)+"/"+str(self.print_max)
if stream_time_length <= self.print_max:
self.flip += 1
# if ((stream_time_length))<(self.backtrace-60.0*self.interval):
self.pbar.update(stream_time_length+1)
# print str(stream_time_length)+"/"+str(self.print_max)
if (self.flip > self.initial_update_rate):
self.flip = 0
self.figure.clear()
self.plot_graph()
# self.pbar.finish()
# Real time plotting
# We plot each update_rate packet we received
# if (stream_time_length >= (self.backtrace*self.print_percentage)):
if ((stream_time_length)) > (self.print_max):
# print str(stream_time_length)+"/"+str(self.print_max)
self.flip += 1
if (self.flip > self.update_rate):
self.figure.clear()
self.plot_graph()
self.flip = 0
return False
示例7: WaveformPlotting
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
#.........这里部分代码省略.........
if len(sampling_rates) > 1:
msg = "All traces with the same id need to have the same " + \
"sampling rate."
raise Exception(msg)
sampling_rate = sampling_rates.pop()
if self.background_color:
ax = self.fig.add_subplot(len(stream_new), 1, _i + 1,
axisbg=self.background_color)
else:
ax = self.fig.add_subplot(len(stream_new), 1, _i + 1)
self.axis.append(ax)
# XXX: Also enable the minmax plotting for previews.
if self.plotting_method != 'full' and \
((self.endtime - self.starttime) * sampling_rate > \
self.max_npts):
self.__plotMinMax(stream_new[_i], ax, *args, **kwargs)
else:
self.__plotStraight(stream_new[_i], ax, *args, **kwargs)
# Set ticks.
self.__plotSetXTicks()
self.__plotSetYTicks()
def plotDay(self, *args, **kwargs):
"""
Extend the seismogram.
"""
# Create a copy of the stream because it might be operated on.
self.stream = self.stream.copy()
# Merge and trim to pad.
self.stream.merge()
if len(self.stream) != 1:
msg = "All traces need to be of the same id for a dayplot"
raise ValueError(msg)
self.stream.trim(self.starttime, self.endtime, pad=True)
# Get minmax array.
self.__dayplotGetMinMaxValues(self, *args, **kwargs)
# Normalize array
self.__dayplotNormalizeValues(self, *args, **kwargs)
# Get timezone information. If none is given, use local time.
self.time_offset = kwargs.get('time_offset',
round((UTCDateTime(datetime.now()) - \
UTCDateTime()) / 3600.0, 2))
self.timezone = kwargs.get('timezone', 'local time')
# Try to guess how many steps are needed to advance one full time unit.
self.repeat = None
intervals = self.extreme_values.shape[0]
if self.interval < 60 and 60 % self.interval == 0:
self.repeat = 60 / self.interval
elif self.interval < 1800 and 3600 % self.interval == 0:
self.repeat = 3600 / self.interval
# Otherwise use a maximum value of 10.
else:
if intervals >= 10:
self.repeat = 10
else:
self.repeat = intervals
# Create axis to plot on.
if self.background_color:
ax = self.fig.add_subplot(1, 1, 1, axisbg=self.background_color)
else:
ax = self.fig.add_subplot(1, 1, 1)
# Adjust the subplots to be symmetrical. Also make some more room
# at the top.
self.fig.subplots_adjust(left=0.12, right=0.88, top=0.88)
# Create x_value_array.
aranged_array = np.arange(self.width)
示例8: getWaveform
# 需要导入模块: from obspy.core import Stream [as 别名]
# 或者: from obspy.core.Stream import trim [as 别名]
def getWaveform(self, network, station, location, channel, starttime, endtime, cleanup=True):
"""
Retrieves waveform data from Earthworm Wave Server and returns an ObsPy
Stream object.
:type filename: str
:param filename: Name of the output file.
:type network: str
:param network: Network code, e.g. ``'UW'``.
:type station: str
:param station: Station code, e.g. ``'TUCA'``.
:type location: str
:param location: Location code, e.g. ``'--'``.
:type channel: str
:param channel: Channel code, e.g. ``'BHZ'``. Last character (i.e.
component) can be a wildcard ('?' or '*') to fetch `Z`, `N` and
`E` component.
:type starttime: :class:`~obspy.core.utcdatetime.UTCDateTime`
:param starttime: Start date and time.
:type endtime: :class:`~obspy.core.utcdatetime.UTCDateTime`
:param endtime: End date and time.
:return: ObsPy :class:`~obspy.core.stream.Stream` object.
:type cleanup: bool
:param cleanup: Specifies whether perfectly aligned traces should be
merged or not. See :meth:`obspy.core.stream.Stream.merge` for
``method=-1``.
.. rubric:: Example
>>> from obspy.earthworm import Client
>>> from obspy.core import UTCDateTime
>>> client = Client("pele.ess.washington.edu", 16017)
>>> dt = UTCDateTime() - 2000 # now - 2000 seconds
>>> st = client.getWaveform('UW', 'TUCA', '', 'BHZ', dt, dt + 10)
>>> st.plot() # doctest: +SKIP
>>> st = client.getWaveform('UW', 'TUCA', '', 'BH*', dt, dt + 10)
>>> st.plot() # doctest: +SKIP
.. plot::
from obspy.earthworm import Client
from obspy.core import UTCDateTime
client = Client("pele.ess.washington.edu", 16017)
dt = UTCDateTime() - 2000 # now - 2000 seconds
st = client.getWaveform('UW', 'TUCA', '', 'BHZ', dt, dt + 10)
st.plot()
st = client.getWaveform('UW', 'TUCA', '', 'BH*', dt, dt + 10)
st.plot()
"""
# replace wildcards in last char of channel and fetch all 3 components
if channel[-1] in "?*":
st = Stream()
for comp in ("Z", "N", "E"):
channel_new = channel[:-1] + comp
st += self.getWaveform(network, station, location, channel_new, starttime, endtime, cleanup=cleanup)
return st
if location == "":
location = "--"
scnl = (station, channel, network, location)
# fetch waveform
tbl = readWaveServerV(self.host, self.port, scnl, starttime, endtime)
# create new stream
st = Stream()
for tb in tbl:
st.append(tb.getObspyTrace())
if cleanup:
st._cleanup()
st.trim(starttime, endtime)
return st