Nodal
The Nodal submodule is intended to handle data from nodal arrays. Nodal arrays differ from standard seismic data in that the start and end times of data segments are usually synchronized.
Reading Nodal Data Files
SeisBase.Nodal.read_nodal
— FunctionS = read_nodal(fmt, filestr [, keywords])
Read nodal data from file filestr
into new NodalData object S
.
Keywords
KW | Type | Default | Used By | Meaning |
---|---|---|---|---|
chans | ChanSpec | Int64[] | all | channel numbers to read in |
nn | String | "N0" | all | network name in :id |
s | TimeSpec | silixa | start time [1] | |
t | TimeSpec | silixa | end time | |
v | Integer | 0 | silixa | verbosity |
- Special behavior: Real values supplied to
s=
andt=
are treated as seconds from file begin; most SeisBase functions treat Real as seconds relative to current time.
Non-Standard Behavior
Real values supplied to keywords $s=$ and $t=$ are treated as seconds relative to file begin time. Most SeisBase functions that accept TimeSpec arguments treat Real values as seconds relative to $now()$.
Supported File Formats
File Format | String | Notes |
---|---|---|
Silixa TDMS | silixa | Limited support; see below |
SEG Y | segy | Field values are different from read_data output |
Silixa TDMS Support Status
- Currently only reads file header and samples from first block
- Not yet supported (test files needed):
- first block additional samples
- second block
- second block additional samples
- Awaiting manufacturer clarification:
- parameters in :info
- position along cable; currently loc.(x,y,z) = 0.0 for all channels
- frequency response; currently $:resp$ is an all-pass placeholder
Nodal SEG Y Support Status
See SEG Y Support.
See also: TimeSpec
, parsetimewin
, read_data
Working with NodalData objects
NodalData objects have one major structural difference from SeisData objects: the usual data field :x is a set of views to an Array{Float32, 2} (equivalent to a Matrix{Float32}) stored in field :data. This allows the user to apply two-dimensional data processing operations directly to the data matrix.
NodalData Assumptions
S.t[i]
is the same for all i.S.fs[i]
is constant for all i.length(S.x[i])
is constant for all i.
Other Differences from SeisData objects
- Operations like push! and append! must regenerate
:data
usinghcat()
, and therefore consume a lot of memory. - Attempting to push! or append! channels of unequal length throws an error.
- Attempting to push! or append! same-length channels with different
:t
or:fs
won't synchronize them! You will instead have columns in:data
that aren't time-aligned. - Irregularly-sampled data (
:fs = 0.0
) are not supported.
Types
SeisBase.NodalLoc
— TypeNodalLoc
Instrument position along a nodal array
Nodal location. Currently only stores position along optical cable.
- x::Float64 (meters)
- y::Float64 (meters)
- z::Float64 (meters)
SeisBase.Nodal.NodalData
— TypeNodalData
SeisData variant for multichannel nodal array data.
NodalChannel
SeisChannel variant for a channel from a nodal array.
Fields
Field | Description |
---|---|
:n | Number of sensors |
:ox | Origin longitude |
:oy | Origin latitude |
:oz | Origin elevation |
:info | Critical array info, shared by all sensors. [1] |
:id | Channel id. Uses NET.STA.LOC.CHA format when possible |
:name | Freeform channel name |
:loc | Location (position) vector; only accepts NodalLoc |
:fs | Sampling frequency in Hz |
:gain | Scalar gain |
:resp | Instrument response |
:units | String describing data units. UCUM standards are assumed. |
:src | Freeform string describing data source. |
:misc | Dictionary for non-critical information. |
:notes | Timestamped notes; includes automatically-logged information. |
:t | Matrix of time gaps in integer μs, formatted [Sample# Length] |
:data | Matrix underlying time-series data |
:x | Views into :data corresponding to each channel |
- Not present in, or retained by, NodalChannel objects.
See also: SeisData
, InstrumentPosition
, InstrumentResponse
SeisBase.Nodal.NodalChannel
— TypeNodalChannel
A single channel of data from a nodal array. Similar to a SeisChannel object.
See NodalData
.