Module: SeisRuby::Data::Sac::Head

Defined in:
lib/seis_ruby/data/sac/head.rb

Defined Under Namespace

Modules: EnumeratedValueConverter, FloatConverter, IntegerConverter, LogicalConverter, StringConverter Classes: Field

Constant Summary collapse

NAMES =

SAC header field names.

[
  :delta,     :depmin,   :depmax,   :scale,    :odelta,
  :b,         :e,        :o,        :a,        :internal1,
  :t0,        :t1,       :t2,       :t3,       :t4,
  :t5,        :t6,       :t7,       :t8,       :t9,
  :f,         :resp0,    :resp1,    :resp2,    :resp3,
  :resp4,     :resp5,    :resp6,    :resp7,    :resp8,
  :resp9,     :stla,     :stlo,     :stel,     :stdp,
  :evla,      :evlo,     :evel,     :evdp,     :mag,
  :user0,     :user1,    :user2,    :user3,    :user4,
  :user5,     :user6,    :user7,    :user8,    :user9,
  :dist,      :az,       :baz,      :gcarc,    :internal2,
  :internal3, :depmen,   :cmpaz,    :cmpinc,   :xminimum,
  :xmaximum,  :yminimum, :ymaximum, :adjtm,    :unused1,
  :unused2,   :unused3,  :unused4,  :unused5,  :unused6,
  :nzyear,    :nzjday,   :nzhour,   :nzmin,    :nzsec,
  :nzmsec,    :nvhdr,    :norid,    :nevid,    :npts,
  :nsnpts,    :nwfid,    :nxsize,   :nysize,   :unused7,
  :iftype,    :idep,     :iztype,   :unused8,  :iinst,
  :istreg,    :ievreg,   :ievtyp,   :iqual,    :isynth,
  :imagtyp,   :imagsrc,  :unused9,  :unused10, :unused11,
  :unused12,  :unused13, :unused14, :unused15, :unused16,
  :leven,     :lpspol,   :lovrok,   :lcalda,   :unused17,
  :kstnm,     :kevnm,
  :khole,     :ko,       :ka,
  :kt0,       :kt1,      :kt2,
  :kt3,       :kt4,      :kt5,
  :kt6,       :kt7,      :kt8,
  :kt9,       :kf,       :kuser0,
  :kuser1,    :kuser2,   :kcmpnm,
  :knetwk,    :kdatrd,   :kinst,
]
ENUMERATED_VALUES =

Enumerated values and their meanings.

[
  :itime,    :irlim,  :iamph,  :ixy,
  :iunkn,    :idisp,  :ivel,   :iacc,
  :ib,       :iday,   :io,     :ia,
  :it0,      :it1,    :it2,    :it3,
  :it4,      :it5,    :it6,    :it7,
  :it8,      :it9,    :iradnv, :itannv,
  :iradev,   :itanev, :inorth, :ieast,
  :ihorza,   :idown,  :iup,    :illlbb,
  :iwwsn1,   :iwwsn2, :ihglp,  :isro,
  :inucl,    :ipren,  :ipostn, :iquake,
  :ipreq,    :ipostq, :ichem,  :iother,
  :igood,    :iglch,  :idrop,  :ilowsn,
  :irldta,   :ivolts, :ixyz,   :imb,
  :ims,      :iml,    :imw,    :imd,
  :imx,      :ineic,  :ipde,   :iisc,
  :ireb,     :iusgs,  :ibrk,   :icaltech,
  :illnl,    :ievloc, :ijsop,  :iuser,
  :iunknown, :iqb,    :iqb1,   :iqb2,
  :iqbx,     :iqmt,   :ieq,    :ieq1,
  :ieq2,     :ime,    :iex,    :inu,
  :inc,      :io,     :il,     :ir,
  :it,       :iu,
].map.with_index.with_object({}){|(v, i), h| h[i + 1] = v}
CONVERTERS =
[FloatConverter]*70\
+ [IntegerConverter]*15\
+ [EnumeratedValueConverter]*20\
+ [LogicalConverter]*5\
+ [StringConverter]*23
FIELDS =
NAMES\
.zip(CONVERTERS)\
.map{|name, converter| Field.new(name, converter)}

Class Method Summary collapse

Class Method Details

.convert_from_head(array) ⇒ Hash

Parameters:

  • array (Array)

Returns:

  • (Hash)


156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/seis_ruby/data/sac/head.rb', line 156

def convert_from_head(array)
  name_val = FIELDS\
    .zip(array)\
    .map{|field, val|
    begin
      [field.name, field.converter.from_head(val)]
    rescue ArgumentError => e
      $stderr.puts "Field name: #{field.name.inspect}"
      raise e
    end
  }
  Hash[name_val]
end

.convert_to_head(hash) ⇒ Array

Parameters:

  • hash (Hash)

Returns:

  • (Array)


172
173
174
# File 'lib/seis_ruby/data/sac/head.rb', line 172

def convert_to_head(hash)
  FIELDS.map{|field| field.converter.to_head(hash[field.name])}
end