Skip to content

Instrument Formats ​

FormatRead a runRead a TimeArrayWrite
LEMI-424read_lemi424load_lemi424write_lemi424
GEOMAG-02read_geomagload_geomagwrite_geomag
Metronix ADUread_metronixload_metronixwrite_metronix

Don't know the format? read_timekeeper and write_timekeeper pick it for you.

Channel names ​

Every format uses the same names:

ComponentMeaningUnits
:bx, :by, :bzmagnetic field, geographic N / E / downnT
:e1, :e2electric field, dipole 1 / 2mV/km
:temperature_e, :temperature_helectronics / sensor temperature°C
:batterysupply voltageV
:elevationGPS elevationm

default_components gives the five signal channels (bx, by, bz, e1, e2); components gives every channel in the run.

LEMI-424 ​

julia
using Timekeepers

run = read_lemi424("data/LEMI090.txt")
ta  = load_lemi424("data/LEMI090.txt")     # straight to a TimeArray
write_lemi424("data/LEMI090_copy.txt", ta) # same 24-field layout, nothing lost
  • Whitespace-separated ASCII, one line per sample; LEMI424_COLUMNS names the 24 fields.

  • Extra columns are ignored; missing trailing columns come back as NaN.

  • include_aux = false reads only the five signal channels.

  • 7-column .xyz exports (date time Bx By Bz Ex Ey) open in run_tkapp only.

GEOMAG-02 ​

julia
run = read_geomag("data/MS_26_250523000000.TXT")
sampling_rate(run)                     # 10.0 for a 0.10 s interval
run.metadata[:instrument_model]        # "GEOMAG-02"
  • ASCII with a ; header (model, interval, position), detected by the GEOMAG token.

  • Reads the five signal channels plus both temperatures; write_geomag writes header and data back.

Metronix ADU (ATS) ​

julia
run = read_metronix("data/RK137/meas_2025-04-01_07-00-05")
components(run)     # [:bx, :by, :bz, :e1, :e2]
sampling_rate(run)  # 128.0
  • A run is one .ats file per channel plus an .xml, inside a meas_* directory.

  • Pass the run's .xml, one of its .ats files, or a meas_* directory that holds only that run. A directory with several runs gives an error listing them.

  • METRONIX_CHANNEL_MAP: Ex → :e1, Ey → :e2, Hx → :bx, Hy → :by, Hz → :bz; unknown types keep their own name.

  • write_metronix needs a run read by read_metronix (it reuses its XML).

  • To cut masked intervals out of a whole site, see Metronix Sites.

Metadata ​

In run.metadata, or TimeSeries.meta(ta):

KeyPresent forMeaning
:sample_rateallsamples per second
:start_timealltimestamp of the first sample
:instrument_modelGEOMAG, Metronixinstrument identification
:aux_columnsLEMI-424, GEOMAGauxiliary values, for lossless writes
:site, :n_filessite loadssite name and number of runs joined
:metronix_xml_pathMetronixXML template for the writer
:metronix_prefix, :metronix_run_token, :metronix_freq_tokenMetronixfilename tokens the writer keeps
:mask_intervals, :masked_samplesafter a maskintervals cut and number of samples