jpjones76 / seisio.jl Goto Github PK
View Code? Open in Web Editor NEWJulia language support for geophysical time series data
Home Page: http://seisio.readthedocs.org
License: Other
Julia language support for geophysical time series data
Home Page: http://seisio.readthedocs.org
License: Other
This is related to #49 - can we bump compatibility for Blosc.jl to "0.5.1, 0.6, 0.7"? I'm having trouble bundling SeisIO with the new AWS.jl in a package due to SeisIO fixed on Blosc v0.5.1
This is more of a discussion on mseed than an issue.
I have some mseed files with > 10,000 gaps in a dataset of ~3 million files. read_data
takes about 20 seconds on the files with 10,000+ gaps each. This is expected and totally fine but I'd like to avoid reading files such as this in the future when I process the rest of the dataset. I can't determine which files are bad a priori.
I'm looking for a way to get a rough estimate of the number of gaps in a file. Does this still require reading every blockette? Looking through parserec!
, I'm not sure where to begin.
My current solution is to implement something like discussed here JuliaLang/julia#36217 on top of read_data
.
I'm doing a sizeable download (500+ stations, list attached) using get_data
.
I'm using SeisIO v1.0.0 and Julia 1.4, this is also fails on master. Code to reproduce:
using SeisIO, Dates, DelimitedFiles
stationlist = readdlm("stationlist.txt",String)[:]
startdate = DateTime(2019,1,1)
enddate = DateTime(2019,1,4)
get_data("FDSN",stationlist,s=startdate,t=enddate+Day(1),w=true,v=2)
This fails due to unsage_copyto!
trying to copy Float32
data to a Float64
array. Looks like x
is a Float64
array while getfield(BUF, :x)
is a Float32
array at line 265 in 2_parserec.jl.
ERROR: MethodError: no method matching unsafe_copyto!(::Array{Float64,1}, ::Int64, ::Array{Float32,1}, ::Int64, ::Int64)
Closest candidates are:
unsafe_copyto!(::Array{T,N} where N, ::Any, ::Array{T,N} where N, ::Any, ::Any) where T at array.jl:263
unsafe_copyto!(::BitArray, ::Integer, ::Union{BitArray, Array}, ::Integer, ::Integer) at bitarray.jl:452
unsafe_copyto!(::CuArrays.CuArray{T,N,P} where P where N, ::Any, ::Array{T,N} where N, ::Any, ::Any) where T at /home/timclements/.julia/packages/CuArrays/4Q1BY/src/array.jl:300
...
Stacktrace:
[1] parserec!(::SeisData, ::SeisIO.SeisIOBuf, ::IOStream, ::Int64, ::Int64, ::Bool, ::Int64) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Submodules/SEED/2_parserec.jl:265
[2] parsemseed!(::SeisData, ::IOStream, ::Int64, ::Int64, ::Bool, ::Int64) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Submodules/SEED/readmseed.jl:11
[3] FDSNget!(::SeisData, ::Array{String,2}; autoname::Bool, fmt::String, msr::Bool, nd::Int64, opts::String, rad::Array{Float64,1}, reg::Array{Float64,1}, s::DateTime, si::Bool, src::String, t::DateTime, to::Int64, v::Int64, w::Bool, xf::String, y::Bool) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Web/FDSN.jl:260
[4] get_data(::String, ::Array{String,1}; autoname::Bool, demean::Bool, detrend::Bool, fmt::String, msr::Bool, nd::Int64, opts::String, rad::Array{Float64,1}, reg::Array{Float64,1}, prune::Bool, rr::Bool, s::DateTime, si::Bool, src::String, taper::Bool, t::DateTime, to::Int64, ungap::Bool, unscale::Bool, v::Int64, w::Bool, xf::String, y::Bool) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Wrappers/get_data.jl:60
[5] top-level scope at none:0
I don't know which station this is failing for.
Just out of curiosity, should we update the Compat for HDF5 using a higher version? For what I have known, there is one change since 0.13.0 that when indexing HDF5Dataset
, the singleton dimension is automatically dropped, i.e d[:,:,1] where d <: HDF5Dataset
, whereas previously not. Thanks for such great package!
Hi everyone,
I'd like to make this the new home of our (previous email) discussions on ASDF support.
Current status
read_hdf5
write_hdf5
In progress
Proposed extensions
When trying to download mseed data using get_data
, SeisIO throws a MethodError
.
I am using Julia 1.3 and SeisIO v1.0.0.
MWE:
using SeisIO, Dates
S = get_data("FDSN","IU.ANMO.00.LHZ",s="2019-02-14",t="2019-02-15")
ERROR: MethodError: no method matching *(::UInt32, ::String)
Closest candidates are:
*(::Any, ::Any, ::Any, ::Any...) at operators.jl:529
*(::Missing, ::AbstractString) at missing.jl:170
*(::T, ::T) where T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8} at int.jl:54
...
Stacktrace:
[1] *(::UInt32, ::String, ::UInt32) at ./operators.jl:529
[2] blk_calib(::SeisData, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Int64, ::UInt16) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Submodules/SEED/1_mSEEDblk.jl:114
[3] parserec!(::SeisData, ::SeisIO.SeisIOBuf, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Int64, ::Int64, ::Bool, ::Int64) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Submodules/SEED/2_parserec.jl:206
[4] parsemseed!(::SeisData, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Int64, ::Int64, ::Bool, ::Int64) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Submodules/SEED/readmseed.jl:11
[5] #FDSNget!#199(::Bool, ::String, ::Bool, ::Int64, ::String, ::Array{Float64,1}, ::Array{Float64,1}, ::String, ::Bool, ::String, ::String, ::Int64, ::Int64, ::Bool, ::String, ::Bool, ::typeof(SeisIO.FDSNget!), ::SeisData, ::Array{String,2}) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Web/FDSN.jl:260
[6] (::SeisIO.var"#kw##FDSNget!")(::NamedTuple{(:autoname, :fmt, :msr, :nd, :opts, :rad, :reg, :s, :si, :src, :t, :to, :v, :w, :xf, :y),Tuple{Bool,String,Bool,Int64,String,Array{Float64,1},Array{Float64,1},String,Bool,String,String,Int64,Int64,Bool,String,Bool}}, ::typeof(SeisIO.FDSNget!), ::SeisData, ::Array{String,2}) at ./none:0
[7] #get_data#230(::Bool, ::Bool, ::Bool, ::String, ::Bool, ::Int64, ::String, ::Array{Float64,1}, ::Array{Float64,1}, ::Bool, ::Bool, ::String, ::Bool, ::String, ::Bool, ::String, ::Int64, ::Bool, ::Bool, ::Int64, ::Bool, ::String, ::Bool, ::typeof(get_data), ::String, ::String) at /home/timclements/.julia/packages/SeisIO/pSAug/src/Wrappers/get_data.jl:60
[8] (::SeisIO.var"#kw##get_data")(::NamedTuple{(:s, :t),Tuple{String,String}}, ::typeof(get_data), ::String, ::String) at ./none:0
[9] top-level scope at none:0
It looks like IRIS is sending mseed that SeisIO is having trouble reading.
I'm able to read with Obspy, though there is definitely some corrupted data in this trace:
I am writing SeisChannel of cross-correlation results to sac. However, the id is not standard NET.STA.LOC.CHAN format. It includes two station information, e.g., TA.V04C..BHZ.TA.V05C..BHZ. The current fill_sac() generates file name based on the ID field and is not working correctly in my case. I think making writesac() to support more generic filenames or filenamebase should be useful.
Thanks,
Xiaotao
In the changelog, you mention deprecating all the individual read*
methods, but the docs still show them:
https://seisio.readthedocs.io/en/latest/src/Formats/fileformats.html#file-i-o-functions
Noticed this for the readsegy
method, don't know how many others need to be removed
Hi jpjones76,
I am trying to download some TA stations but run into a warning saying integrity check failed.
For example, if I do
S1=get_data("FDSN","TA.061Z..LHZ",s="2012-08-20T10:50:00", t=4200, v=0, src="IRIS")
This is okay.
But if I do (change the starting time by 1 hour)
S2=get_data("FDSN","TA.061Z..LHZ",s="2012-08-20T11:50:00", t=4200, v=0, src="IRIS")
Then it says "RDMSEED: data integrity -- Steim-2 sequence #000015M integrity check failed, last_data=4.2158346e8, should be xn=-1.2375288e9" and the waveform doesn't look right.
Would you please help me sort it out?
Thanks a lot,
Zhitu Ma
On v1.0.0 resampling a gapless SeisChannel
does not update the .t
field. This does not affect SeisChannel
with gaps or any SeisData
.
julia> using SeisIO
julia> C = SeisIO.RandSeis.randSeisChannel(s=true,c=false)
SeisChannel with 845375 samples
ID: 4W.JWYRE..ENB
NAME: 9xqbdIB1VJEhVEGE2n9ULE2P5TYPCEyo
LOC: [44.2781, -22.3721, 562.839, 38.9882, -33.4714, -65.6544]
FS: 125.0
GAIN: 480.947
RESP: a0 1.0, f0 1.0, 4z, 4p
UNITS: m/s2
SRC: randSeisChannel(c=false, nx=0)
MISC: 11 entries
NOTES: 1 entries
T: 2020-06-29T15:19:50 (7 gaps)
X: -8.422e-01
-7.590e-01
...
+4.012e-01
(nx = 845375)
julia> ungap!(C)
julia> Cnew = resample(C,10.)
# quick tests
julia> Cnew.fs < C.fs
true
julia> length(Cnew.x) < length(C.x)
true
julia> Cnew.t == C.t
true # should be false
A quick fix would be adding C.t[2,1] = length(C.x)
after
SeisIO.jl/src/Processing/resample.jl
Lines 152 to 167 in 99912ee
and adding a test with a gapless SeisChannel
. Happy to submit a PR on this, if needed.
Great to see all the progress with SeisIO!
I was wondering—are 32-bit platforms supported by SeisIO? Or are they explicitly not supported?
I ask because I am experimenting with using SeisIO for IO, and I think that 32-bit Windows builds fail because integers literals are Int32
s on that platform, and there are lots of cases where type signatures for methods are restricted to Int64
s in SeisIO. As integer literals are Int
s, they are different between 64- and 32-bit platforms.
The particular failure which stops the build is here:
Line 134 in 7b1bffa
If 32-bit Windows (and I presume Linux—I haven't tested that) is a target, then there may be quite a few places where either explicit conversion to Int64
from Int
will be necessary when the methods are restricted, or signatures will need to be made less restrictive. The latter feels more Julian, but again you may have reasons to restrict types so strongly.
(Conversion to the correct type for typed fields of a (mutable
) struct
happens automatically by default, but I guess this is overridden for a reason in SeisIO since there are inner constructors which replace the default ones for SLDefs
and FiltDefs
.)
I haven't had any issues supporting 32-bit OSes before, so hopefully if this isn't something you planned to provide for, maybe it wouldn't be too big of an ask. Very happy to help.
I would like to implement the response deconvolution algorithm in this paper from Matt Haney et al. (2012) in BSSA. I was reading through the developer's guide on processing algorithms. This is a published algorithm and I will be translating directly from Matt's MATLAB code. This is an algorithm that ensures causality and has worked great for my purposes of signal correlations across a heterogeneous network of seismic stations. I am curious if this is of use for the SeisIO.jl package and if so, how should I go about adding this (keyword for "type" in remove_resp!
). Should I add it to SeisIO.jl/src/Processing/Resp/0_resp_aux.jl?
resample!(S::GphysData;chans::Union{Integer, UnitRange, Array{Int64,1}}=Int64[], fs::Float64=0.0)
throws an error when the resampling frequency fs == minimum(S.fs[chans[S.fs[chans] .> 0.0]])
. The default should probably be to return nothing
as in resample!(C::GphysChannel, f0::Float64)
S = get_data("FDSN", "UW.LON..BHZ", src="IRIS",s="2019-01-01",t=600)
resample(S,fs=S[1].fs)
ERROR: frequencies must be less than the Nyquist frequency 1.0
Stacktrace:
[1] normalize_freq at /home/timclements/.julia/packages/DSP/wwKNu/src/Filters/design.jl:241 [inlined]
[2] #Lowpass#22 at /home/timclements/.julia/packages/DSP/wwKNu/src/Filters/design.jl:256 [inlined]
[3] Type at /home/timclements/.julia/packages/DSP/wwKNu/src/Filters/design.jl:256 [inlined]
[4] resample_filter(::Rational{Int64}, ::Float64, ::Int64) at /home/timclements/.julia/packages/DSP/wwKNu/src/Filters/design.jl:649
[5] resample_filter at /home/timclements/.julia/packages/DSP/wwKNu/src/Filters/design.jl:630 [inlined]
[6] mkresample(::Float32) at /home/timclements/.julia/packages/SeisIO/4Sap1/src/Processing/resample.jl:6
[7] #resample!#158(::Array{Int64,1}, ::Float64, ::Function, ::SeisData) at /home/timclements/.julia/packages/SeisIO/4Sap1/src/Processing/resample.jl:61
[8] #resample#159 at ./none:0 [inlined]
[9] (::getfield(DSP.Filters, Symbol("#kw##resample")))(::NamedTuple{(:fs,),Tuple{Float64}}, ::typeof(resample), ::SeisData) at ./none:0
[10] top-level scope at none:0
Hello jpjones,
I tried downloading data from New Zealand data server GEONET, and I found duplications in data query strings as below.
julia> get_data("FDSN", "NZ.NAAS.*.BN?", s="2016-05-20T01:14:25.07", t="2016-05-20T01:24:25.07", v=2, src="GEONET")
[ Info: 2019-06-10T22:12:23.160: Querying FDSN stations
Most compact request form = ["NZ" "NAAS" "*" "BN?" ""]
request url:http://service.geonet.org.nz/fdsnws/station/1/query
request body:
level=response
format=xml
NZ NAAS * BN? 2016-05-20T01:14:25.07 2016-05-20T01:24:25.07
[ Info: 2019-06-10T22:12:24.644: Building list of channels
data query strings:
NZ NAAS 20 BN2
NZ NAAS 20 BN1
NZ NAAS 20 BNZ
NZ NAAS 20 BN2
NZ NAAS 20 BN1
NZ NAAS 20 BNZ
[ Info: 2019-06-10T22:12:24.652: Data query begins
request url: http://service.geonet.org.nz/fdsnws/dataselect/1/query
request body:
format=miniseed
NZ NAAS 20 BN2 2016-05-20T01:14:25.070000 2016-05-20T01:24:25.070000
NZ NAAS 20 BN1 2016-05-20T01:14:25.070000 2016-05-20T01:24:25.070000
NZ NAAS 20 BNZ 2016-05-20T01:14:25.070000 2016-05-20T01:24:25.070000
NZ NAAS 20 BN2 2016-05-20T01:14:25.070000 2016-05-20T01:24:25.070000
NZ NAAS 20 BN1 2016-05-20T01:14:25.070000 2016-05-20T01:24:25.070000
NZ NAAS 20 BNZ 2016-05-20T01:14:25.070000 2016-05-20T01:24:25.070000
NZ.NAAS.20.BN2: resized from length 0 to length 360000
NZ.NAAS.20.BN1: resized from length 0 to length 360000
NZ.NAAS.20.BNZ: resized from length 0 to length 360000
[ Info: 2019-06-10T22:12:37.211: Done FDSNget query.
[ Info: 2019-06-10T22:12:37.211: Removing empty channels.
SeisData with 3 channels (3 shown)
ID: NZ.NAAS.20.BN2 NZ.NAAS.20.BN1 NZ.NAAS.20.BNZ
NAME: Napier Airport Napier Airport Napier Airport
LOC: -39.4687 N, 176.872 E, 2.0 m -39.4687 N, 176.872 E, 2.0 m -39.4687 N, 176.872 E, 2.0 m
FS: 50.0 50.0 50.0
GAIN: 1.01972e5 1.01972e5 1.01972e5
RESP: c = 1.0, 0 zeros, 0 poles c = 1.0, 0 zeros, 0 poles c = 1.0, 0 zeros, 0 poles
UNITS: m/s2 m/s2 m/s2
SRC: http://service.geonet.org.nz/fdsn… http://service.geonet.org.nz/fdsn… http://service.geonet.org.nz/fdsn…
MISC: 2 entries 2 entries 2 entries
NOTES: 0 entries 0 entries 0 entries
T: 2016-05-20T01:14:24.034 (0 gaps) 2016-05-20T01:14:20.871 (0 gaps) 2016-05-20T01:14:24.515 (0 gaps)
X: -2.057e+03 -2.413e+03 -3.780e+02
-2.057e+03 -2.415e+03 -3.710e+02
... ... ...
-2.036e+03 -2.375e+03 -3.520e+02
(nx = 61112) (nx = 60702) (nx = 60444)
C: 0 open, 0 total
Julia>
I guess this is due to the duplication in StationXML downloaded from GEONET. This duplication causes an error when using lat-lon box request (due to limitation of request number of channels) as the number of request becomes much larger than actual number.
In addition, it sometimes causes an error as below:
┌ Warning: Error thrown:
│ URL: http://service.geonet.org.nz/fdsnws/dataselect/1/query
│ POST BODY:
│ format=miniseed
│ NZ CCCC 20 BN1 2018-05-20T00:42:04.570000 2018-05-20T00:52:04.570000
│ NZ CCCC 20 BN2 2018-05-20T00:42:04.570000 2018-05-20T00:52:04.570000
│ NZ CCCC 20 BNZ 2018-05-20T00:42:04.570000 2018-05-20T00:52:04.570000
│ NZ CCCC 20 BNZ 2018-05-20T00:42:04.570000 2018-05-20T00:52:04.570000
│ NZ CCCC 20 BN2 2018-05-20T00:42:04.570000 2018-05-20T00:52:04.570000
│ NZ CCCC 20 BN1 2018-05-20T00:42:04.570000 2018-05-20T00:52:04.570000
│
│ ERROR TYPE: HTTP.IOExtras.IOError
└ @ SeisIO ~/.julia/packages/SeisIO/mMCC6/src/Web/0_essentials.jl:58
So I would like to ask to modify get_data
function to avoid this duplicated request.
Best,
Hello Josh,
Thank you for implementing write_hdf5()
for output in ASDF format. I wonder if we could have an option to add SeisData into an existing ASDF file, like using fid = h5open(filename, "cw")
.
Cheers,
Kurama
Reading this mseed file prints integrity warnings:
RDMSEED: data integrity -- Steim-2 sequence #001194Q integrity check failed, last_data=2250.0, should be xn=2518.0
The file is written with Obspy. The first sample is the same with both readers:
SeisData with 1 channels (1 shown)
ID: YA.SNE.00.HHZ
NAME: YA.SNE.00.HHZ
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 100.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC:
MISC: 0 entries
NOTES: 0 entries
T: 2009-12-28T10:56:04.968 (0 gaps)
X: +1.428e+04
+1.420e+04
...
-3.307e+03
(nx = 4703504)
C: 0 open, 0 total
S[1].x
4703504-element Array{Float32,1}:
14278.0
14199.0
14089.0
⋮
-3663.0
-3450.0
-3307.0
1 Trace(s) in Stream:
YA.SNE.00.HHZ | 2009-12-28T10:56:04.968300Z - 2009-12-28T23:59:59.998300Z | 100.0 Hz, 4703504 samples
st[0].data
array([14278, 14426, 14453, ..., -3565, -3450, -3456], dtype=int32)
Converting the file to sac in obspy and then reading the sac file in SeisIO gives the same data as the mseed file read in obspy
S = read_data("/home/timclements/VOLC/SAC/YA.SNE.00.HHZ.2009-12-28.sac")
SeisData with 1 channels (1 shown)
ID: YA.SNE..HHZ
NAME:
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 100.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC: /home/timclements/VOLC/SAC/YA.SNE…
MISC: 0 entries
NOTES: 1 entries
T: 2009-12-28T10:56:04.968 (0 gaps)
X: +1.428e+04
+1.443e+04
...
-3.456e+03
(nx = 4703504)
C: 0 open, 0 total
julia> S[1].x
4703504-element Array{Float32,1}:
14278.0
14426.0
14453.0
⋮
-3565.0
-3450.0
-3456.0
Working on SeisIO#master with Julia 1.5.0, trying to resample
some NodalData
, which throws an error. Here is a MWE:
using SeisIO, SeisIO.Nodal
ND = NodalData(rand(Float32,1000,10),Dict{String,Any}(),Int64[],0) # initialize from random matrix
ND.fs = ones(10) .* 1000. # set fs = 1000 Hz
resample(ND,fs=200.) # resample to 200 Hz
ERROR: MethodError: no method matching deleteat!(::SubArray{Float32,1,Array{Float32,2},Tuple{Base.Slice{Base.OneTo{Int64}},Int64},true}, ::UnitRange{Int64})
Closest candidates are:
deleteat!(::SentinelArrays.MissingVector, ::Any) at /home/timclements/.julia/packages/SentinelArrays/Ubf17/src/missingvector.jl:51
deleteat!(::BitArray{1}, ::UnitRange{Int64}) at bitarray.jl:942
deleteat!(::BitArray{1}, ::Any) at bitarray.jl:966
...
Stacktrace:
[1] cheap_resample!(::Array{Int64,2}, ::SubArray{Float32,1,Array{Float32,2},Tuple{Base.Slice{Base.OneTo{Int64}},Int64},true}, ::Float64, ::Float64) at /home/timclements/.julia/dev/SeisIO/src/Processing/resample.jl:31
[2] resample!(::NodalData; chans::Array{Int64,1}, fs::Float64) at /home/timclements/.julia/dev/SeisIO/src/Processing/resample.jl:72
[3] #resample#153 at /home/timclements/.julia/dev/SeisIO/src/Processing/resample.jl:99 [inlined]
[4] top-level scope at REPL[38]:1
cheap_resample!
is throwing an error when trying to delete a 1D view of a matrix.
I can write a new version of cheap_resample
for 2D arrays. My solution is to overwrite the existing data column by column, then trim the excess rows in the case of downsampling (upsampling requires a vcat
).
SEG Y has six quantities that can identify a unique channel. Most don't translate cleanly to any subfield of a SEED-type ID (e.g., NN.SSSSS.LL.CCC, which SeisIO uses). Data in #55 (comment) use SEG Y channel number to identify new channels.
Original file posted by @tclements in #55 (comment)
Originally posted by @tclements in #28 (comment)
One more particularly devious example. Here's an mseed file that has > 10 of negative time gaps. After merging, which works, ungap
throws a bounds error.
S = read_data("mseed","CIRIO__BHE___2017101.mseed")
SeisData with 1 channels (1 shown)
ID: CI.RIO..BHE
NAME: CI.RIO..BHE
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 40.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC:
MISC: 0 entries
NOTES: 0 entries
T: 2017-04-11T00:00:00.020 (14 gaps) # note 14 gaps
X: -5.600e+01
-6.530e+02
...
-5.850e+02
(nx = 3457836)
C: 0 open, 0 total
S has 14 gaps. Then merge the seisdata
merge!(S)
S
SeisData with 1 channels (1 shown)
ID: CI.RIO..BHE
NAME: CI.RIO..BHE
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 40.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC:
MISC: 0 entries
NOTES: 1 entries
T: 2017-04-11T00:00:00.020 (12 gaps) # note 12 gaps
X: -5.600e+01
-6.530e+02
...
-5.850e+02
(nx = 3456006)
C: 0 open, 0 total
S now has 12 gaps. Now try to ungap
ungap!(S1)
ERROR: BoundsError
which throws a bounds error. For reference, obspy reads 15 overlapping traces but successfully merges and ungaps.
In [1]: import obspy
In [2]: st = obspy.read("CIRIO__BHE___2017101.ms")
In [3]: st
Out[3]:
15 Trace(s) in Stream:
CI.RIO..BHE | 2017-04-11T00:00:00.019500Z - 2017-04-11T18:38:23.219500Z | 40.0 Hz, 2684129 samples
CI.RIO..BHE | 2017-04-11T18:38:18.095038Z - 2017-04-11T18:38:28.395038Z | 40.0 Hz, 413 samples
CI.RIO..BHE | 2017-04-11T18:38:23.245038Z - 2017-04-11T18:38:33.520038Z | 40.0 Hz, 412 samples
CI.RIO..BHE | 2017-04-11T18:38:28.420038Z - 2017-04-11T18:38:33.545038Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:33.544538Z - 2017-04-11T18:38:38.669538Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:33.570038Z - 2017-04-11T18:38:38.695038Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:38.694538Z - 2017-04-11T18:38:43.819538Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:38.720038Z - 2017-04-11T18:38:43.845038Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:43.844538Z - 2017-04-11T18:38:48.969538Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:43.870038Z - 2017-04-11T18:38:48.995038Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:48.994538Z - 2017-04-11T18:38:54.119538Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:49.020038Z - 2017-04-11T18:38:59.320038Z | 40.0 Hz, 413 samples
CI.RIO..BHE | 2017-04-11T18:38:54.594538Z - 2017-04-11T18:38:59.719538Z | 40.0 Hz, 206 samples
CI.RIO..BHE | 2017-04-11T18:38:59.345038Z - 2017-04-11T18:39:04.420038Z | 40.0 Hz, 204 samples
CI.RIO..BHE | 2017-04-11T18:38:59.744538Z - 2017-04-11T23:59:59.994538Z | 40.0 Hz, 770411 samples
In [4]: st.merge()
Out[4]:
1 Trace(s) in Stream:
CI.RIO..BHE | 2017-04-11T00:00:00.019500Z - 2017-04-11T23:59:59.994500Z | 40.0 Hz, 3456000 samples
This seems like a pretty rare problem. This is the only day in 20 years of data for this one station I've had an issue with after the latest update.
Starting a discussion on merging SeisData
and SeisChanel
to SeisEvent
, EventTraceData
and EventChannel
in the Quake
module. For the dataset with which I'm working, EQMag
, EQLoc
and SeisPha
are stored separately from the seismic traces.
The workflow I'm currently using for merging SeisEvent
with phase, location, and magnitude information and trace data
EQLoc
EQMag
EventTraceData
EventTraceData
with EventChannels
SeisHdr
with EQLoc
and EQMag
SeisSrc
SeisEvent
with SeisHdr
, SeisSrc
and EventTraceData
SeisData
.x
, .t
, .fs
, .gain
channels in SeisChannel
into SeisEvent.data.EventChannel
Conversion from SeisData
to EventTraceData
currently works
julia> EventTraceData(SeisData())
EventTraceData with 0 channels (0 shown)
...
but conversion from SeisChannel
to EventChannel
is not yet implemented.
julia> EventChannel(SeisChannel())
ERROR: MethodError: no method matching EventChannel(::SeisChannel)
It would be nice to have a merge!
function for SeisChannel
and EventChannel
which checks if each data field for common channels is empty. e.g. the SeisChannel
will have non-empty .fs
,.t
and .x
fields and the EventChannel
will have non-empty .loc
, .baz
, .dist
and possible .loc
.
merge!
with SeisData
and EventTraceData
could work similarly.
I'm working on a solution right now but happy to discuss if these additions are helpful/needed.
I'm using stationXML files that have ~20 years of data and over 100 channels for each station. The channel responses change throughout the years due to new instruments and/or changes in gain, etc.. It looks like stationXML.jl is overwriting with the latest channel information. This could lead to the wrong (latest) instrument response being removed from the data.
This is also printing thousands of lines to the terminal..
Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..ACE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..BHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..HNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCL: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LNZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..LOG: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..OCF: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCO: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VCQ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEA: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEC: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VEP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VFP: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHE: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHN: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VHZ: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VKI: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMU: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMV: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
┌ Warning: Redundant channel CI.YUH2..VMW: overwriting with latest channel info.
└ @ SeisIO ~/.julia/packages/SeisIO/MktKb/src/Utils/stationXML.jl:342
As of now, SeisIO reads SEGY files into SeisData
. If the file format is non-standard, read_data
returns a SeisData
with a single SeisChannel
with a gap between each channel.
DAS datasets are regularly saved in SEGY format. For instance, here is some DAS data stored as SEGY from the FORGE experiment. Reading this with SeisIO#dev
using SeisIO
read_data("segy","FORGE_78-32_iDASv3-P11_UTC190428134938.sgy")
SeisData with 1 channels (1 shown)
ID: .0..YYY
NAME: .0..YYY
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 2000.0
GAIN: 0.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC: /home/timclements/Downloads/FORGE…
MISC: 0 entries
NOTES: 1 entries
T: 2019-04-28T13:38:38 (1279 gaps)
X: +0.000e+00
+0.000e+00
...
-2.630e+03
(nx = 38400000)
C: 0 open, 0 total
returns one channel with 1279 gaps.
I see two options here:
NodalData
when reading SEGY files with read_data
read_nodal
onlyI don't like Option 1 because then read_data
has two possible outputs.
Option 2 seems better going forward but is a breaking change.
As of now, the NodalLoc
has only an x
position. For 2D and 3D nodal and DAS (horizontal + vertical) arrays, it would be helpful to have x
, y
, and z
positions for 2D and 3D distance calculations. For instance, here is the geometry for the Brady Hot Springs geothermal DAS array:
Adding y
and z
to NodalLoc
may add some overlap between NodalLoc
and UTMLoc
/XYLoc
but NodalData
already has fields for ox
, oy
and oz
.
I can submit a very simple PR with tests on this.
The tag name "0.1" is not of the appropriate SemVer form (vX.Y.Z).
cc: @jpjones76
Hi,
On line 101 of SAC.jl instead of adding "b" time as milliseconds
ts += round(Int64, b*1.0f3)
,
it should be added as seconds
ts += round(Int64, b*1.0f6)
.
After updating SeisIO to the latest version (to use the functionality of removing responses), I can't open my old SeisData object stored in jld2 file. It seems there is some compatibility issue after the new update. Here are the errors:
`┌ Warning: saved type PZResp is missing field a0 in workspace type; reconstructing
└ @ JLD2 ~/.julia/packages/JLD2/KjBIK/src/data.jl:402
ERROR: MethodError: Cannot convert
an object of type getfield(JLD2.ReconstructedTypes, Symbol("##PZResp#363")) to an object of type InstrumentResponse
Closest candidates are:
convert(::Type{T}, ::T) where T at essentials.jl:154
Stacktrace:
[1] jlconvert at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/data.jl:675 [inlined]
[2] macro expansion at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/dataio.jl:70 [inlined]
[3] macro expansion at ./simdloop.jl:73 [inlined]
[4] read_array!(::Array{InstrumentResponse,1}, ::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadRepresentation{InstrumentResponse,JLD2.RelOffset}) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/dataio.jl:68
[5] read_array(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadDataspace, ::JLD2.ReadRepresentation{InstrumentResponse,JLD2.RelOffset}, ::Int64, ::UInt16, ::JLD2.RelOffset, ::Array{JLD2.ReadAttribute,1}) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datasets.jl:323
[6] read_data(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadRepresentation{Any,JLD2.RelOffset}, ::Array{JLD2.ReadAttribute,1}) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datasets.jl:198
[7] macro expansion at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datasets.jl:156 [inlined]
[8] macro expansion at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datatypes.jl:76 [inlined]
[9] read_data(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadDataspace, ::UInt8, ::Int64, ::Int64, ::Int64, ::UInt16, ::JLD2.RelOffset, ::Array{JLD2.ReadAttribute,1}) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datasets.jl:152
[10] load_dataset(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.RelOffset) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datasets.jl:92
[11] jlconvert at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/data.jl:674 [inlined]
[12] macro expansion at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/data.jl:1285 [inlined]
[13] jlconvert(::JLD2.ReadRepresentation{SeisData,JLD2.OnDiskRepresentation{(0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104),Tuple{Int64,Array{String,1},Array{String,1},Array{InstrumentPosition,1},Array{Float64,1},Array{Float64,1},Array{InstrumentResponse,1},Array{String,1},Array{String,1},Array{Dict{String,Any},1},Array{Array{String,1},1},Array{Array{Int64,2},1},Array{Union{Array{Float32,1}, Array{Float64,1}},1},Array{Sockets.TCPSocket,1}},Tuple{Int64,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset}}()}, ::JLD2.JLDFile{JLD2.MmapIO}, ::Ptr{Nothing}, ::JLD2.RelOffset) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/data.jl:1232
[14] read_data(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadRepresentation{SeisData,JLD2.OnDiskRepresentation{(0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104),Tuple{Int64,Array{String,1},Array{String,1},Array{InstrumentPosition,1},Array{Float64,1},Array{Float64,1},Array{InstrumentResponse,1},Array{String,1},Array{String,1},Array{Dict{String,Any},1},Array{Array{String,1},1},Array{Array{Int64,2},1},Array{Union{Array{Float32,1}, Array{Float64,1}},1},Array{Sockets.TCPSocket,1}},Tuple{Int64,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset,JLD2.RelOffset}}()}, ::Array{JLD2.ReadAttribute,1}) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/dataio.jl:37
[15] read_data(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadDataspace, ::UInt8, ::Int64, ::Int64, ::Int64, ::UInt16, ::JLD2.RelOffset, ::Array{JLD2.ReadAttribute,1}) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datasets.jl:149
[16] load_dataset(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.RelOffset) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/datasets.jl:92
[17] getindex(::JLD2.Group{JLD2.JLDFile{JLD2.MmapIO}}, ::String) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/groups.jl:108
[18] getindex(::JLD2.JLDFile{JLD2.MmapIO}, ::String) at /Users/xiaotaoyang/.julia/packages/JLD2/KjBIK/src/JLD2.jl:330
[19] top-level scope at none:0
`
You can recreate the errors with the following lines:
using SeisIO, JLD2
f=jldopen("cascadiaRMEQtestdatawithgap.jld2")
S=f["2011.314/7D.J34A..HHZ"]
Here I attached the data file for your test.
cascadiaRMEQtestdatawithgap.jld2.zip
Thanks,
Xiaotao
I don't think there is an error/bug anymore. Once I started looking at things correctly and paying a little more attention. Here is a minimum working example.
using SeisIO
S1 = get_data("FDSN", "TA.I02A..BHZ", src="IRIS", s=string("2007-04-16"), t=600, msr=true)
print(S1.resp[1].stage[1],"\n")
S2 = get_data("FDSN", "TA.I02A..BHZ", src="IRIS", s=string("2007-04-16"), t=600)
print(S2.resp)
Here is the output:
PZResp64 with fields:
a0: 3.48462e17
f0: 0.2
p: Complex{Float64}[-13300.0 + 0.0im, -10530.0 + 10050.0im, -10530.0 - 10050.0im, -520.3 + 0.0im, -374.8 + 0.0im, -97.34 + 400.7im, -97.34 - 400.7im, -15.64 + 0.0im, -0.037 + 0.037im, -0.037 - 0.037im, -255.1 + 0.0im]
z: Complex{Float64}[0.0 + 0.0im, 0.0 + 0.0im, -463.1 + 430.5im, -463.1 - 430.5im, -176.6 + 0.0im, -15.15 + 0.0im]
InstrumentResponse[PZResp with fields:
a0: 3.48462e17
f0: 0.2
p: Complex{Float32}[-13300.0f0 + 0.0f0im, -10530.0f0 + 10050.0f0im, -10530.0f0 - 10050.0f0im, -520.3f0 + 0.0f0im, -374.8f0 + 0.0f0im, -97.34f0 + 400.7f0im, -97.34f0 - 400.7f0im, -15.64f0 + 0.0f0im, -0.037f0 + 0.037f0im, -0.037f0 - 0.037f0im, -255.1f0 + 0.0f0im]
z: Complex{Float32}[0.0f0 + 0.0f0im, 0.0f0 + 0.0f0im, -463.1f0 + 430.5f0im, -463.1f0 - 430.5f0im, -176.6f0 + 0.0f0im, -15.15f0 + 0.0f0im]
]
The difference is that the MSR is a 64 bit float, while the normal PZResp is 32 bit. I see now after digging deeper into the first stage of the MSR that it even says it is PZResp64 and not a PZResp.
Sorry to bother you will this. Not sure if it causes problems down the line in SeisNoise though.
Hello JP Jones.
We are a team trying to build similar tools for ambient noise correlation work. With Andy Nowacki (https://github.com/anowacki) we are trying to build a module that is similar to Obspy but for Julia. Both his Seis and SeisRequests and your SeisIO modules have functionalities that we are interested in, namely:
Is there any chance we could chat with you about importing some of the functionality from your module into Seis.jl (https://github.com/anowacki/Seis.jl)? happy to make one module that accommodates all needs. We are also developing HDF5/ASDF formats.
Cheers,
Marine
(Continued from anowacki/Seis.jl#3.)
I get the following error when trying to read the sample miniSEED file distributed with PASSCAL's libmseed library:
julia> import Seis
julia> cd(dirname(pathof(Seis)))
julia> import SeisIO; SeisIO.readmseed("test/test_data/test.mseed")
[ Info: Recompiling stale cache file /Users/nowacki/.julia/compiled/v1.1/SeisIO/sUMCG.ji for SeisIO [e2f1b5a8-5fbb-5d5d-94aa-e39813b81559]
ERROR: No support for Blockette Type 0
Stacktrace:
[1] error(::String) at ./error.jl:33
[2] parserec!(::SeisIO.SeisData, ::IOStream, ::Int64) at /Users/nowacki/.julia/dev/SeisIO/src/Formats/mSEED.jl:233
[3] parsemseed!(::SeisIO.SeisData, ::IOStream, ::Int64) at /Users/nowacki/.julia/dev/SeisIO/src/Formats/mSEED.jl:392
[4] #readmseed#193(::Bool, ::Int64, ::Function, ::String) at /Users/nowacki/.julia/dev/SeisIO/src/Formats/mSEED.jl:437
[5] readmseed(::String) at /Users/nowacki/.julia/dev/SeisIO/src/Formats/mSEED.jl:428
[6] top-level scope at none:0
I am on commit 3b3a0ad, having dev
ed SeisIO:
julia> cd(dirname(pathof(SeisIO)))
shell> git show
commit 3b3a0ad05383f4ba73b278054f1a48198936b549 (HEAD -> master, tag: v0.1.2, origin/master, cache/heads/master)
Author: Joshua Jones <--->
Date: Wed Feb 13 02:31:42 2019 -0800
update README.md
[...]
Julia info:
julia> versioninfo()
Julia Version 1.1.0
Commit 80516ca202 (2019-01-21 21:24 UTC)
Platform Info:
OS: macOS (x86_64-apple-darwin14.5.0)
CPU: Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, ivybridge)
Environment:
JULIA_EDITOR = mate -w
For reference, SAC and ObsPy read the file without any problem.
This is a similar issue to #29. With this file, read_data
and merge!
work well
S = read_data("mseed","CIRIO__BHZ___2017261.ms")
SeisData with 1 channels (1 shown)
ID: CI.RIO..BHZ
NAME: CI.RIO..BHZ
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 40.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC:
MISC: 0 entries
NOTES: 0 entries
T: 2017-09-18T00:00:00.020 (34 gaps)
X: -3.640e+02
+3.700e+01
...
+1.703e+03
(nx = 3459296)
C: 0 open, 0 total
merge!(S)
S
SeisData with 1 channels (1 shown)
ID: CI.RIO..BHZ
NAME: CI.RIO..BHZ
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 40.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC:
MISC: 0 entries
NOTES: 1 entries
T: 2017-09-18T00:00:00.020 (4 gaps)
X: -3.640e+02
+3.700e+01
...
+1.703e+03
(nx = 3455964)
C: 0 open, 0 total
When calling ungap!(S)
I get a segmenation fault
double free or corruption (!prev)
signal (6): Aborted
in expression starting at REPL[14]:1
Testing ungap!(S)
on a different machine gives a different seg fault
malloc_consolidate(): invalid chunk size
signal (6): Aborted
in expression starting at REPL[18]:1
I believe the seg fault is happening in the resize!
line at the end of gapfill!
.
The command "search" is no longer supported, and it returns error calling the function:
"mSEED.jl" at line 428.
This line has to be replaced with the following line:
(findfirst(isequal(read(fid, Char)), "DRMQ") > 0) || error("Scan failed due to invalid file type")
Thinking about our move to the GPU, the :data
field of the NodalData
struct will need to be of type AbstractArray{Float32, 2}
to allow for transfer of data from CPU <-> GPU with Adapt.jl because:
julia> using CUDA
julia> CuArray <: AbstractArray
true
julia> CuArray <: Array
false
I think the :x
field will work as is because FloatArray
is Union{AbstractArray{Float32,1}, AbstractArray{Float64,1}}
and views work the same on the CPU and GPU though using :x
on the GPU will be quite inefficient:
julia> using CUDA, SeisIO
julia> mutable struct TEST
x::Array{SeisIO.FloatArray,1}
end
julia> A = [CUDA.rand(3) for _ = 1:2]
2-element Array{CuArray{Float32,1},1}:
Float32[0.95912075, 0.19107753, 0.60729915]
Float32[0.81118095, 0.5209754, 0.29273564]
julia> t = TEST(A)
TEST(Union{AbstractArray{Float32,1}, AbstractArray{Float64,1}}[Float32[0.95912075, 0.19107753, 0.60729915], Float32[0.81118095, 0.5209754, 0.29273564]])
julia> t.x
2-element Array{Union{AbstractArray{Float32,1}, AbstractArray{Float64,1}},1}:
Float32[0.95912075, 0.19107753, 0.60729915]
Float32[0.81118095, 0.5209754, 0.29273564]
julia> t.x[1]
3-element CuArray{Float32,1}:
0.95912075
0.19107753
0.60729915
Hi,
I am trying to download the earthquake catalog from SoCal. Here is what i do:
using SeisIO.Quake
S = FDSNevq("2018-06-01",reg=[32.0,38.0,-120.0,-115.0,-50.0,50.0],mag=[2.0,8.0],evw=[0.,375243600.0],src="USGS")
It only returns one event (the same even for multiple arguments i entered):
(SeisHdr[ ID: quakeml
INT: 0
LOC: 33.4932 N, -116.49 E, 14.07 km
MAG: ml 2.01 (g 0.0°, n 73)
OT: 2018-06-02T20:45:04.18
SRC:
TYP: earthquake
MISC: 1 items
NOTES: 0 entries
], SeisSrc[m₀ = 0.0; S = Float64[]; NP = Array{Float64}(0,0); PAX = Array{Float64}(0,0)])
It also does not like the SCEDC server, although I know it is listed there:
julia> S = FDSNevq("2018-06-01",reg=[32.0,38.0,-120.0,-115.0,-50.0,50.0],mag=[2.0,8.0],evw=[0.,375243600.0],src="SCEDC")
┌ Warning: Request failed
│ FDSN event query:
│ RESPONSE = 500 (Internal Server Error)
│
│ HTTP response is in misc["data"]
└ @ SeisIO ~/.julia/packages/SeisIO/UXhdy/src/Web/0_essentials.jl:16
┌ Warning: Catalog only contains 0 events (original request was 1)
└ @ SeisIO.Quake ~/.julia/packages/SeisIO/UXhdy/src/Quake/Web/FDSN.jl:99
(SeisHdr[], SeisSrc[])
Running sync
is a slight performance bottleneck. For instance read_data
with 20 Hz data takes less than 1 ms and 6 MB
@btime S = read_data("sac",files[1])
883.761 μs (107 allocations: 6.60 MiB)
while sync
on the same file (after merging, ungapping) is more time and memory intensive
@btime sync(S,s=starttime,t=endtime)
20.251 ms (261 allocations: 76.47 MiB)
Much of this time and memory is spent in t_expand
and t_collapse
@btime t = SeisIO.t_expand(S.t[1], S.fs[1])
4.852 ms (18 allocations: 26.37 MiB)
@btime SeisIO.t_collapse(t, S.fs[1])
6.903 ms (48 allocations: 39.76 MiB)
For channels without gaps, it could be more efficient to use a range rather than array in t_expand
@btime t_range = range(S[i].t[1,2], stop= S[i].t[1,2] + dt * (S[i].t[2,1]-1),length=S[i].t[2,1])
5.554 μs (66 allocations: 5.11 KiB)
Here's a check that the two methods return the same representation
dt = round(Int64, 1.0/(S[1].fs*μs))
t_range = range(S[i].t[1,2], stop= S[i].t[1,2] + dt * (S[i].t[2,1]-1),length=S[i].t[2,1])
t = SeisIO.t_expand(S.t[1], S.fs[1])
all(t .== t_range)
true
This change would give different types of output for data with and without gaps, though it looks like t_collapse
is only used in sync.jl while t_expand
is in sync.jl and SAC.jl (but the Float32.(μs*(t_expand(t, fs) .- ts))
line will create an Array
if the input is a range or an array).
This could be a simple change with multiple-dispatch handling the discrepancy between the array and range. Thoughts?
Hi Josh,
I have an issue reading an mseed file. The file is located here.
A note that seems to matter: I wrote these files in obspy after reading a binary C++ format. When I print the trace in obspy, it returns correct values. Thus I do not have a problem reading it in obspyv1.1.1
Here is my attempt after 'using SeisIO'
(v1.2) pkg> st
Status ~/.julia/environments/v1.2/Project.toml
[1c724243] AWSS3 v0.6.8
[336ed68f] CSV v0.5.20
[a93c6f00] DataFrames v0.20.0
[5752ebe1] GMT v0.16.0
[91a5bcdd] Plots v0.29.1
[d330b81b] PyPlot v2.8.2
[b372bb87] SeisIO v1.0.0
[8cc7c3c0] SeisNoise v0.3.1 #master (https://github.com/tclements/SeisNoise.jl.git)
(v1.2) pkg> ^C
julia> S=read_data("miniseed","/Users/marinedenolle/NODES/continuous_waveforms/2018/2018_204/NO201__EHE__2018204.ms")
"/Users/marinedenolle/NODES/continuous_waveforms/2018/2018_204/NO201__EHE__2018204.ms"
julia> S[1].x
SeisData with 1 channels (1 shown)
ID: NO.201.--.EHE
NAME: NO.201.--.EHE
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 100.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC: /Users/marinedenolle/NODES/contin…
MISC: 0 entries
NOTES: 1 entries
T: 2018-07-23T00:00:00 (0 gaps)
X: +0.000e+00
+4.628e-41
...
+0.000e+00
(nx = 8640001)
C: 0 open, 0 total
julia> S[1].x[1]
8640001-element Array{Float32,1}:
0.0
4.6275e-41
0.0
4.6275e-41
-1.3954251e35
0.0
4.6096e-41
0.0
4.6096e-41
5.0639263e-12
1.720927e-30
4.6275e-41
...
Kurama Okubo tried it as well.
Let me know if you have an idea on the bug.
Cheers,
Marine
Hi Joshua,
Thanks for sharing the package. It is convenient.
But I got the following error following the tutorial:
MethodError: Cannot convert
an object of type Array{Float64,1} to an object of type InstrumentPosition
Is there something missing.
I am using SeisIO 1.0 in Mac.
Regards,
Zhouchuan
Here is a SeisData that starts at 00:48:59.84
S = read_data("sac",files[ii])
SeisData with 1 channels (1 shown)
ID: BP.SCYB..BP1
NAME:
LOC: 36.0094 N, -120.537 E, 695.0 m
FS: 20.0
GAIN: 7.13026e10
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC: /home/timclements/BPtest/SAC/2004…
MISC: 0 entries
NOTES: 1 entries
T: 2004-01-01T00:48:59.084 (0 gaps)
X: -5.628e+03
-5.624e+03
...
-5.404e+03
(nx = 1209785)
C: 0 open, 0 total
S[1].t
2×2 Array{Int64,2}:
1 1072918139083600
1209785 0
If I then use writesac
and read the new file, the new timing is off by a millisecond:
writesac(S)
Snew = read_data("sac","2004.001.00.48.59.084.BP.SCYB..BP1.R.SAC")
SeisData with 1 channels (1 shown)
ID: BP.SCYB..BP1
NAME:
LOC: 36.0094 N, -120.537 E, 695.0 m
FS: 20.0
GAIN: 7.13026e10
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC: 2004.001.00.48.59.084.BP.SCYB..BP…
MISC: 0 entries
NOTES: 1 entries
T: 2004-01-01T00:48:59.085 (0 gaps)
X: -5.628e+03
-5.624e+03
...
-5.404e+03
(nx = 1209785)
C: 0 open, 0 total
Snew[1].t
2×2 Array{Int64,2}:
1 1072918139084600
1209785 0
The snippet string(u2d(ts*μs))
in the fill_sac
function (line 47 of SAC.jl) rounds to the nearest millisecond. The regular expression then pulls the rounded millisecond value. In the above case, this leads to a 1 millisecond offset.
Getting the time using string
leads to a problem when the channel (or a gap) starts at a time with less than 3 significant millisecond digits (e.g. 100 or 250 milliseconds). Here is an example where I change the start time to 48:59.1 :
S[1].t[1,2] = 1072918139100000 #round to nearest time on sampling rate (0.1s)
ts = S[1].t[1,2]
μs = 1e-6
split(string(u2d(ts*μs)), r"[\.\:T\-]") # from fill_sac
7-element Array{SubString{String},1}:
"2004"
"01"
"01"
"00"
"48"
"59"
"1"
Note that the 7th element in the Array is 1
instead of 100
.
If I now write the S
with the starttime changed to 00:48:59.1, then read
Snew2 = read_data("sac","2004.001.00.48.59.001.BP.SCYB..BP1.R.SAC")
SeisData with 1 channels (1 shown)
ID: BP.SCYB..BP1
NAME:
LOC: 36.0094 N, -120.537 E, 695.0 m
FS: 20.0
GAIN: 7.13026e10
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC: 2004.001.00.48.59.001.BP.SCYB..BP…
MISC: 0 entries
NOTES: 1 entries
T: 2004-01-01T00:48:59.001 (0 gaps)
X: -5.628e+03
-5.624e+03
...
-5.404e+03
(nx = 1209785)
C: 0 open, 0 total
The new file starts at 00:48:59.001. I think the only change needed here is getting the floor of the milliseconds in the start time with something in fill_sac
similar to tt[7] = Millisecond(u2d(floor(ts/1000)/1000)).value
after line 49 in SAC.jl.
Parsing ASCII data formats to an existing SeisData structure doesn't try to match channel ID when a new channel begins. Thus, a new new data segment is (wrongly) created for each channel in each file or stream.
get_data()
errors when the following conditions are met:
Fix planned for 0.5.0
Hi! I recently noticed that when I ran the following command:
stream = get_data("IRIS", "CI.SVD..BHZ", s=DateTime("2007-01-01"), t=3600, w=true, v=1, rr=false, unscale=false)
The resulting stream has amplitudes in the range of 10^-6 rather than 10^3 or so as I would expect. Using the old fetchdata scripts (https://seiscode.iris.washington.edu/projects/ws-fetch-scripts/wiki) from IRIS returns miniseeds with correct amplitude so I am wondering if this issue can be fixed within SeisIO. Happy to provide more info, I am running SeisIO v1.1.0 on different ubuntu versions. Thanks for any help with the issue.
This Issue is a dedicated thread for discussing plans to parallelize parts of SeisIO for multiple CPU workers. GPU computing plans will be discussed in another thread (maybe much) later.
@async
. If I had any indication that anyone but me was using it, I'd modify it so that one could process channels as new data arrived without processing each channel twice; that would facilitate "streaming" work flows.get_data
.h5open
and fork read
to workers; spawn a SeisChannel
on each CPU; process data on each CPU separately.
SeisData
objects by channel and segment (as now), then further splitting and forking by subsegment. Is this a good idea? I honestly can't tell.batch_read
function in my old commits. In Julia 0.5 it was a significant speedup. Once single-CPU file read became well-optimized, the speedup was <20%; but memory overhead can't be reduced below 100%.Hello jpjones76,
I found an error when using SeisIO.get_data. When downloading a specific channel, it returns unknown error message, which is not simply like 'no data found' or 'Document is empty'.
I would like to ask if this is an error associated with SeisIO or server error.
using SeisIO
get_data("FDSN", "TA.353A..LHZ", s="2012-08-20T12:00:00", t = t, src="IRIS", v=1) # this works
get_data("FDSN", "TA.355A..LHZ", s="2012-08-20T12:00:00", t = t, src="IRIS", v=1) # this does not work
julia> get_data("FDSN", "TA.355A..LHZ", s="2012-08-20T12:00:00", t = t, src="IRIS", v=1)
[ Info: 2019-08-22T16:48:11.050: Querying FDSN stations
[ Info: 2019-08-22T16:48:11.357: Building list of channels
[ Info: 2019-08-22T16:48:11.361: Data query begins
ERROR: MethodError: no method matching read(::Base.GenericIOBuffer{Array{UInt8,1}}, ::Int64; all=false)
Closest candidates are:
read(::Base.GenericIOBuffer, ::Integer) at iobuffer.jl:461 got unsupported keyword argument "all"
read(::IO, ::Integer) at io.jl:827 got unsupported keyword argument "all"
read(::IOStream, ::Integer; all) at iostream.jl:512
...
Stacktrace:
[1] blk_201(::SeisData, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Int64) at ~/.julia/dev/SeisIO/src/Formats/SEED/1_mSEEDblk.jl:42
[2] parserec!(::SeisData, ::SeisIO.SeisIOBuf, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Int64, ::Int64, ::Int64) at ~/.julia/dev/SeisIO/src/Formats/SEED/2_parserec.jl:190
[3] parsemseed!(::SeisData, ::Base.GenericIOBuffer{Array{UInt8,1}}, ::Int64, ::Int64, ::Int64) at ~/.julia/dev/SeisIO/src/Formats/SEED/readmseed.jl:13
[4] #FDSNget!#172(::String, ::Int64, ::String, ::Array{Float64,1}, ::Array{Float64,1}, ::String, ::Bool, ::String, ::Int64, ::Int64, ::Int64, ::Bool, ::String, ::Bool, ::typeof(SeisIO.FDSNget!), ::SeisData, ::Array{String,2}) at ~/.julia/dev/SeisIO/src/Web/FDSN.jl:234
[5] (::getfield(SeisIO, Symbol("#kw##FDSNget!")))(::NamedTuple{(:fmt, :nd, :opts, :rad, :reg, :s, :si, :src, :t, :to, :v, :w, :xf, :y),Tuple{String,Int64,String,Array{Float64,1},Array{Float64,1},String,Bool,String,Int64,Int64,Int64,Bool,String,Bool}}, ::typeof(SeisIO.FDSNget!), ::SeisData, ::Array{String,2}) at ./none:0
[6] #get_data#203(::Bool, ::Bool, ::String, ::Int64, ::String, ::Array{Float64,1}, ::Array{Float64,1}, ::Bool, ::Bool, ::String, ::Bool, ::String, ::Bool, ::Int64, ::Int64, ::Bool, ::Bool, ::Int64, ::Bool, ::String, ::Bool, ::typeof(get_data), ::String, ::String) at ~/.julia/dev/SeisIO/src/Wrappers/get_data.jl:82
[7] (::getfield(SeisIO, Symbol("#kw##get_data")))(::NamedTuple{(:s, :t, :src, :v),Tuple{String,Int64,String,Int64}}, ::typeof(get_data), ::String, ::String) at ./none:0
[8] top-level scope at none:0
Best,
Kurama
resample!(S,fs=fs
throws a BoundsError
when trying to upsample data where fs > S.fs
.
MWE:
using SeisIO
S = SeisIO.RandSeis.randSeisData(3,nx=2^14)
SeisData with 3 channels (3 shown)
ID: W7.IJVJP.M4.CH3 0M.OVX..STZ 3A.GCPM..MLE
NAME: 3wVmTMZQ2g0Z6Ls4Axh2JlB4nuSbO7lU5… G103gKlj6wY2d1sQGYSprCrwLePPGzZWC… 9LiHmHKS8LR8pe7pTHOE8pA0ZHvNFg
LOC: [-30.1085, 50.2216, 964.76, 67.77… [-15.6587, -85.0015, 480.462, 53.… -29.9009 N, 131.203 E, 921.742 m
FS: 250.0 62.5 2.0
GAIN: 4.01747e8 7.19092e9 9.03546e7
RESP: a0 1.0, f0 1.0, 8z, 8p a0 1.0, f0 1.0, 8z, 8p a0 1.0, f0 1.0, 8z, 8p
UNITS: m/s m m
SRC: randSeisChannel(c=false, nx=16384… randSeisChannel(c=false, nx=16384… randSeisChannel(c=false, nx=16384…
MISC: 5 entries 5 entries 15 entries
NOTES: 1 entries 1 entries 1 entries
T: 2020-06-16T14:04:30 (5 gaps) 2020-06-16T14:04:30 (8 gaps) 2020-06-16T14:04:31 (7 gaps)
X: +1.194e+00 +9.069e-01 +2.358e+00
+7.154e-01 +1.946e+00 -4.762e-01
... ... ...
+3.401e-01 -1.326e-01 -3.853e-01
(nx = 16384) (nx = 16384) (nx = 16384)
resample(S,fs=100.)
ERROR: BoundsError: attempt to access 32770-element reinterpret(Float32, ::Array{Float64,1}) at index [1:819175]
DSP.jl's version of resample
has no problem upsampling data where fs > S.fs
.
resample(S[2].x,100. / S.fs[2])
26214-element Array{Float64,1}:
0.9069498214529474
1.716448479926333
1.9163589276559438
1.2573744598674774
0.43120842346064603
0.3527387116546516
0.8284999681254623
0.5564058433573061
-0.8164715674304706
-1.713997408026421
⋮
-0.6770823868166385
0.8964191087353106
0.04654695052155877
-1.4902814411925862
-0.2151765050416976
1.0116242219244012
-0.34311131524348026
-1.0160792803040768
0.09180860342822253
I see that SeisIO's version of downsampling is much faster than DSP version:
using BenchmarkTools
# seisio resample
@benchmark resample(S[1],100.)
BenchmarkTools.Trial:
memory estimate: 527.19 KiB
allocs estimate: 200
--------------
minimum time: 290.964 μs (0.00% GC)
median time: 299.393 μs (0.00% GC)
mean time: 327.932 μs (3.95% GC)
maximum time: 2.741 ms (80.16% GC)
--------------
samples: 10000
evals/sample: 1
# DSP resample
@benchmark resample(S[1].x,100. / S.fs[1])
BenchmarkTools.Trial:
memory estimate: 343.80 KiB
allocs estimate: 62
--------------
minimum time: 1.484 ms (0.00% GC)
median time: 1.556 ms (0.00% GC)
mean time: 1.577 ms (0.50% GC)
maximum time: 3.738 ms (50.90% GC)
--------------
samples: 3169
evals/sample: 1
Does it make sense to call DSP.resample
when S.fs > fs
? Happy to submit a PR on this which calls out to DSP.resample
when upscaling is needed.
I have come across some miniseed data where I think the sampling interval may not be read correctly.
The following reproduces the issue:
julia> import SeisIO
julia> s = SeisIO.get_data("FDSN", "II.ALE.00.BH?", s="2001-01-13T17:33:29.58", t="2001-01-13T17:34:35.58")
SeisIO.SeisData with 3 channels (2 shown)
ID: II.ALE.00.BHE II.ALE.00.BHN …
NAME: Alert, NU, Canada II.ALE.00.BHN …
LOC: 82.5033 N, -62.35 E, 60.0 m 0.0 N, 0.0 E, 0.0 m …
FS: 20.0 0.05 …
GAIN: 5.43094e8 1.0 …
RESP: a0 1.0, f0 0.05, 5z, 12p a0 1.0, f0 1.0, 0z, 0p …
UNITS: m/s …
SRC: http://service.iris.edu/fdsnws/da… …
MISC: 4 entries 0 entries …
NOTES: 4 entries 2 entries …
T: 2001-01-13T17:33:29 (0 gaps) 2001-01-13T17:33:29 (0 gaps) …
X: -3.000e+01 -7.630e+02 …
-6.100e+01 -7.400e+02 …
... ... …
-4.020e+02 -8.120e+02 …
(nx = 1319) (nx = 1319) …
C: 0 open, 0 total
julia> sio.fs
3-element Array{Float64,1}:
20.0
0.049999966621421206
0.049999966621421206
All the channels should have the same sampling interval of 0.05 s (sampling rate 20 Hz), but for some reason the sampling interval for the BHN and BHZ components are given as 2 s (0.05 Hz). Obspy does not have the same issue as far as I can tell.
Let me know if I can help to diagnose the problem.
A zipped version of the file (directly obtained from IRIS via FDSN webservices) is attached.
On the dev branch
(@v1.5) pkg> st
Status `~/.julia/environments/v1.5/Project.toml`
[b372bb87] SeisIO v1.1.0 `https://github.com/jpjones76/SeisIO.jl.git#dev`
with the test TDMS data
julia> N = SeisIO.Nodal.read_nodal("Node1_UTC_20200307_170738.006.tdms")
detrend!
fails
julia> detrend!(N)
ERROR: MethodError: no method matching dtr!(::SubArray{Float32,1,Array{Float32,2},Tuple{Base.Slice{Base.OneTo{Int64}},Int64},true}, ::Array{Int64,2}, ::Float64, ::Int64)
Closest candidates are:
dtr!(::Array{T,1}, ::Array{Int64,2}, ::Float64, ::Int64) where T<:AbstractFloat at /home/timclements/.julia/packages/SeisIO/NGyBv/src/Processing/detrend.jl:74
Stacktrace:
[1] detrend!(::SeisIO.Nodal.NodalData; chans::Array{Int64,1}, n::Int64) at /home/timclements/.julia/packages/SeisIO/NGyBv/src/Processing/detrend.jl:140
[2] detrend!(::SeisIO.Nodal.NodalData) at /home/timclements/.julia/packages/SeisIO/NGyBv/src/Processing/detrend.jl:135
[3] top-level scope at REPL[71]:1
[4] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1088
I believe this is an issue with the definition of dtr!
Using the NodalData.x[i]
syntax returns a SubArray
type:
julia> typeof(N.x[1])
SubArray{Float32,1,Array{Float32,2},Tuple{Base.Slice{Base.OneTo{Int64}},Int64},true}
julia> isa(N.x[1],Array)
false
julia> isa(N.x[1],AbstractArray)
true
but dtr!
only accepts Array
s. Changing dtr!
to accept AbstractArray
as function dtr!(x::AbstractArray{T,1}, ti::Array{Int64,2}, fs::Float64, n::Int64) where T <: AbstractFloat
should fix this:
julia> detrend!(N)
works! Should be an easy change.
I have set of somewhat corrupted day-long miniseed files (BH?) that have two channels each. The first channel is the first few seconds of the day (~100 samples). The second channel is the entire daylong trace (3456000 samples). So the first few seconds are repeated across the two channels. When using read_data
, the first channel is included with the second channel giving a single channel of 3456080 samples.
S = read_data("mseed","CIRIO__BHZ___2012132.mseed")
SeisData with 1 channels (1 shown)
ID: CI.RIO..BHZ
NAME: CI.RIO..BHZ
LOC: 0.0 N, 0.0 E, 0.0 m
FS: 40.0
GAIN: 1.0
RESP: a0 1.0, f0 1.0, 0z, 0p
UNITS:
SRC:
MISC: 0 entries
NOTES: 0 entries
T: 2012-05-11T00:00:00.020 (0 gaps)
X: -1.590e+03
-2.958e+03
...
-1.521e+03
(nx = 3456080)
C: 0 open, 0 total
all(S[1].x[1:80] .== S[1].x[81:160])
true
The first 80 samples are definitely repeated. I expect to get two channels when using get_data
as Obspy.read
gives:
import obspy
obspy.read("CIRIO__BHZ__2012132.mseed")
2 Trace(s) in Stream:
CI.RIO..BHZ | 2012-05-11T00:00:00.019500Z - 2012-05-11T00:00:01.994500Z | 40.0 Hz, 80 samples
CI.RIO..BHZ | 2012-05-11T00:00:00.019500Z - 2012-05-11T23:59:59.994500Z | 40.0 Hz, 3456000 samples
I tried to change the nx_new
KW to a smaller number but that didn't give me two channels. Here is a link to an example miniseed file.
The tag name "0.1.2" is not of the appropriate SemVer form (vX.Y.Z).
cc: @jpjones76
When get_data(.., w=true) is in write mode, if the source is "FDSN" the output file name is YYYY.JJJ.HH.MM.SS.000000.FDSNWS.IRIS.mseed whereas if the source is "IRIS" the output file name YYY.JJJ.HH.MM.SS.(NET).STA.LOC.CHAN.R.mseed. e.g.
S = get_data("FDSN", "UW.LON..BHZ", src="IRIS",s="2019-01-01",t=600,w=true)
writes a file named 2019.1.00.00.00.000000.FDSNWS.IRIS.mseed
and
S = get_data("IRIS", "UW.LON..BHZ",s="2019-01-01",t=600,w=true)
writes a file named 2019.1.00.00.00.UW.LON..BHZ.R.mseed
.
This should be a simple fix to FDSNget!
.
I'm trying to download data from the IRIS DMC PH5WS dataselect Web Service (https://service.iris.edu/ph5ws/dataselect/1/).
(@v1.4) pkg> st
Status `~/.julia/environments/v1.4/Project.toml`
[b372bb87] SeisIO v1.0.0
Request data from PH5WS:
julia> S = get_data("FDSN","YW.1002..DPZ",s=s,t=t,src="http://service.iris.edu/ph5ws/",v=2)
[ Info: 2020-07-08T21:19:11 ¦ Querying FDSN stations
Most compact request form = ["YW" "1002" "" "DPZ" ""]
request url:http://service.iris.edu/ph5ws/station/1/query
request body:
level=response
format=xml
YW 1002 * DPZ 2016-06-23T00:00:00 2016-06-23T01:00:00
[ Info: 2020-07-08T21:19:17 ¦ Building list of channels
data query strings:
YW 1002 * DPZ
[ Info: 2020-07-08T21:19:17 ¦ Data query begins
request url: http://service.iris.edu/ph5ws/dataselect/1/query
request body:
format=miniseed
YW 1002 * DPZ 2016-06-23T00:00:00.000000 2016-06-23T01:00:00.000000
┌ Warning: Request failed!
│ URL: http://service.iris.edu/ph5ws/dataselect/1/query
│ POST BODY:
│ format=miniseed
│ YW 1002 * DPZ 2016-06-23T00:00:00.000000 2016-06-23T01:00:00.000000
│
│ RESPONSE: 400 (Bad Request)
└ @ SeisIO ~/.julia/packages/SeisIO/pSAug/src/Web/0_essentials.jl:44
parsable = false
[ Info: 2020-07-08T21:19:24: done FDSNget query.
[ Info: n_badreq = 1
[ Info: 2020-07-08T21:19:24 ¦ Can't prune empty channels; web request wasn't fully parsed.
SeisData with 2 channels (2 shown)
ID: YW.1002..DPZ XX.FAIL..001
NAME: Node at Wavefields Community Expe…
LOC: 36.6223 N, -97.7398 E, 322.3 m 0.0 N, 0.0 E, 0.0 m
FS: 250.0 0.0
GAIN: 1.02964e9 1.0
RESP: a0 0.999813, f0 40.0, 2z, 2p a0 1.0, f0 1.0, 0z, 0p
UNITS: m/s
SRC: http://service.iris.edu/ph5ws/dat…
MISC: 4 entries 3 entries
NOTES: 3 entries 3 entries
T:
X: (empty) (empty)
Station request works well. I believe dataselect is failing because a reqtype
of [fdsn shot, receiver]
is required in PH5 queries. For now, it seems adding reqtype=fdsn
would allow for PH5 queries but shot and receiver queries might require some more work/different syntax.
Here is the working request url:
https://service.iris.edu/ph5ws/dataselect/1/query?reqtype=fdsn&format=mseed&net=YW&sta=1002&cha=DPZ&starttime=2016-06-23T00:00:00&endtime=2016-06-23T01:00:00&nodata=404
I'm working with gappy MSEED data and am unsure if something I'm seeing is expected behavior or not:
julia> st[1].t
21×2 Array{Int64,2}:
1 1420070400000000
4208601 13000000
4557601 6000000
4815601 19000000
5036201 16000000
5719401 12000000
5812401 34000000
5941001 4000000
6007601 2000000
8597801 23000000
8598801 48000000
8635601 48000000
8717201 17000000
8721201 15000000
8732601 4000000
9000801 13000000
9254201 49000000
9412001 4000000
9555601 24000000
9556201 58000000
17198200 0
Assuming I'm understanding the structure of this correctly, the first gap is 13 sec long. If I read the same file in Python:
st.print_gaps()
Source Last Sample Next Sample Delta Samples
WR.PEC..EHZ 2015-01-01T05:50:41.995000Z 2015-01-01T05:50:56.000000Z 14.000000 2800
WR.PEC..EHZ 2015-01-01T06:20:00.995000Z 2015-01-01T06:20:07.000000Z 6.000000 1200
WR.PEC..EHZ 2015-01-01T06:41:36.995000Z 2015-01-01T06:41:56.000000Z 19.000000 3800
WR.PEC..EHZ 2015-01-01T07:00:18.995000Z 2015-01-01T07:00:35.000000Z 16.000000 3200
WR.PEC..EHZ 2015-01-01T07:57:30.995000Z 2015-01-01T07:57:43.000000Z 12.000000 2400
WR.PEC..EHZ 2015-01-01T08:05:27.995000Z 2015-01-01T08:06:02.000000Z 34.000000 6800
WR.PEC..EHZ 2015-01-01T08:16:44.995000Z 2015-01-01T08:16:49.000000Z 4.000000 800
WR.PEC..EHZ 2015-01-01T08:22:21.995000Z 2015-01-01T08:22:24.000000Z 2.000000 400
WR.PEC..EHZ 2015-01-01T11:58:14.995000Z 2015-01-01T11:58:38.000000Z 23.000000 4600
WR.PEC..EHZ 2015-01-01T11:58:42.995000Z 2015-01-01T11:59:31.000000Z 48.000000 9600
WR.PEC..EHZ 2015-01-01T12:02:34.995000Z 2015-01-01T12:03:23.000000Z 48.000000 9600
WR.PEC..EHZ 2015-01-01T12:10:10.995000Z 2015-01-01T12:10:28.000000Z 17.000000 3400
WR.PEC..EHZ 2015-01-01T12:10:47.995000Z 2015-01-01T12:11:03.000000Z 15.000000 3000
WR.PEC..EHZ 2015-01-01T12:11:59.995000Z 2015-01-01T12:12:04.000000Z 4.000000 800
WR.PEC..EHZ 2015-01-01T12:34:24.995000Z 2015-01-01T12:34:38.000000Z 13.000000 2600
WR.PEC..EHZ 2015-01-01T12:55:44.995000Z 2015-01-01T12:56:34.000000Z 49.000000 9800
WR.PEC..EHZ 2015-01-01T13:09:42.995000Z 2015-01-01T13:09:46.000000Z 3.000000 600
WR.PEC..EHZ 2015-01-01T13:21:44.995000Z 2015-01-01T13:22:09.000000Z 24.000000 4800
WR.PEC..EHZ 2015-01-01T13:22:11.995000Z 2015-01-01T13:23:10.000000Z 58.000000 11600
The first gap in ObsPy is instead listed as 14 sec, but the rest match the SeisIO durations. Am I missing something here?
WR.PEC.EHZ.mseed.zip
As I am doing this instrument deconvolution code, I have ran into a small difference in behaviors and I would like to know if this is expected. Here is a minimum working example.
MATLAB: (using the latest IrisFetch.m and IRIS-WS.jar files)
javaaddpath("./IRIS-WS-2.0.19.jar");
tc1 = [2017, 7, 4, 11, 18, 0];
tc2 = [2017, 7, 4, 11, 20, 0];
dum = irisFetch.Traces('AV','CLES','--','BHZ',datestr(tc1,31),datestr(tc2,31),'includePZ');
dum.sacpz.zeros =
1.0e+03 *
0.000000000000000 + 0.000000000000000i
0.000000000000000 + 0.000000000000000i
0.000000000000000 + 0.000000000000000i
-0.392000000000000 + 0.000000000000000i
-1.960000000000000 + 0.000000000000000i
-1.490000000000000 + 1.740000000000000i
-1.490000000000000 - 1.740000000000000i
dum.sacpz.poles =
1.0e+04 *
-0.000003691000000 + 0.000003702000000i
-0.000003691000000 - 0.000003702000000i
-0.034300000000000 + 0.000000000000000i
-0.037000000000000 + 0.046700000000000i
-0.037000000000000 - 0.046700000000000i
-0.083600000000000 + 0.152200000000000i
-0.083600000000000 - 0.152200000000000i
-0.490000000000000 + 0.470000000000000i
-0.490000000000000 - 0.470000000000000i
-0.690000000000000 + 0.000000000000000i
-1.500000000000000 + 0.000000000000000i
dum.sacpz.units =
'M'
The unit indicate meters.
SeisIO.jl
S = get_data("FDSN", "AV.CLES..BHZ", src="IRIS", s="2017-07-04T11:18:00", t="2017-07-04T11:20:00")
S[1].resp.z =
6-element Array{Complex{Float32},1}:
0.0f0 + 0.0f0im
0.0f0 + 0.0f0im
-392.0f0 + 0.0f0im
-1960.0f0 + 0.0f0im
-1490.0f0 + 1740.0f0im
-1490.0f0 - 1740.0f0im
S[1].resp.p =
11-element Array{Complex{Float32},1}:
-0.03691f0 + 0.03702f0im
-0.03691f0 - 0.03702f0im
-343.0f0 + 0.0f0im
-370.0f0 + 467.0f0im
-370.0f0 - 467.0f0im
-836.0f0 + 1522.0f0im
-836.0f0 - 1522.0f0im
-4900.0f0 + 4700.0f0im
-4900.0f0 - 4700.0f0im
-6900.0f0 + 0.0f0im
-15000.0f0 + 0.0f0im
S[1].units =
"m/s"
So these two calls result in a different number of zeros, which can be related to the different units.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.