Description of data
Description of Receiver and Data
The ELF/VLF/LF receiver has been built for many decades based on design principles that are described in this paper. Much of the data come from two versions of the AWESOME receiver, one build in 2005 at Stanford University and described in this paper, and an upgraded version built in 2015 at Georgia Tech and described in this paper.
Most of the data is collected on two air-core loop antennas, oriented orthogonal, to collect the two horizontal components of the magnetic field. The north-south, or N/S antenna is sensitive mostly to waves arriving from the north of from the south direction, meaning it picks up the magnetic field component in the east-west direction. The other antenna is the east-west antenna, which is the opposite.
Broadband data contain direct samples of the receiver output, usually at 100 kHz or 1 MHz sampling frequency. These files essentially contain everything that the receiver records, entirely uncompressed. The files are very large, for instance just one minute of VLF data will produce a ~12 MB file for each antenna channel. This adds up to 35 GB per day if you have two antenna channels.
Narrowband data are the amplitudes and phase of specific frequencies, usually corresponding to VLF transmitters that are used for communications and navigation. Sampling rate is usually either 1 Hz or 50 Hz. They are also useful as a diagnostic of the ionosphere. Most of these transmitters use minimum shift keying (MSK) modulation, and the recording software extracts the amplitude, and the phase is calculated by demodulating the MSK demodulation. Details of the demodulation algorithm and examples of its application can be found in this paper
File Naming Convention
All files give the data, time, and basic information about the recording
Narrowband files
Filename: XXYYMMDDHHMMSSZZZ_ACCT.mat
XX – Station ID
YY – Year
MM — Month
DD — Day
HH — Hour
MM — Minute
SS — Second
ZZZ — Transmitter Callsign
A — Usually not used
CC — 00 for N/S channel, 01 for E/W channel
T — Type of data
A is low resolution (1 Hz sampling rate) amplitude
B is low resolution (1 Hz sampling rate) phase
C is high resolution (50 Hz sampling rate) amplitude
D is high resolution (50 Hz sampling rate) phase
F is high resolution (50 Hz sampling rate) effective group delay
Narrowband files available here are in 24-hour blocks, so the start time of all files is 00:00:00 UT, and the end time is 24:00:00 UT. Even if only a small amount amount of data was recorded on a given day, the file on WALDO will contain 24-hours worth of samples. This is done to make the analysis easier, since all files have the same start time. The raw original data actually starts a new set of files whenever the computer or software reboots, but we’ve made the effort of stitching them together. Where data were not actually recorded, the value will be “NaN” or not a number.
Broadband files
Filename: XXYYMMDDHHMMSS_ACC.mat
XX – Station ID
YY – Year
MM — Month
DD — Day
HH — Hour
MM — Minute
SS — Second
A — Sampling rate. 0 for 100 kHz sampled data (VLF), 1 for 1 MHz sampled data (LF), 2 for 25 kHz sampled data (Siple station experiment).
CC — 00 for N/S channel, 01 for E/W channel
File Format
The file format is very similar to the Matlab v4 format. Data files can therefore be directly loaded into Matlab with the load comment. The only difference is that the Matlab v4 format normally does not allow int16s when you directly save from Matlab, but broadband data are nonetheless saved as int16s. The files can be loaded directly into Matlab, however if the file size is larger than ~100 MB, Matlab cannot read it in. For these cases you can use the matGetVariable.m function (you also need matReadHeader.m) which is under the “Scripts” page. This script allows you to extract specific variables from the file, or a specific portion of the data (and it may be quicker than loading the whole file, anyways).
matGetVariable is used like this:
Output = matGetVariable(‘C:\textbackslash Folder\textbackslash Filename.mat’,’variable name’,’length’,’offset’);
Which will load the variable ‘variable name’ from the file, skipping the number of samples given by offset, and a length given by offset. To extract the entire variable, run it like this:
Output = matGetVariable(‘C:\textbackslash Folder\textbackslash Filename.mat’,’variable name’);
The list of variables is below.
The file format can also be read into other programs if needed, as the format is fairly simple. The files consist of a series of variable in order. The last variable is the actual data. The list of variables, in order, is:
start_year
start_month
start_day
start_hour
start_minute
start_second
latitude
longitude
altitude
Fs
gps_quality
adc_channel_number
adc_sn
adc_type
antenna_bearings
antenna_description
cal_factor
computer_sn
gps_sn
hardware_description
is_broadband
station_description
station_name
VERSION
is_amp
is_msk
Fc
call_sign
filter_taps
data
NOTE: The five variables is_amp, is_msk, Fc, call_sign, and filter_taps are only present in narrowband data. Fs is the sampling rate of the data, usually 100 kHz or 1 MHz. Fc is the center frequency of the VLF transmitter (for narrowband data).
All times are given in UT, frequencies in Hz.
Variables (apart from broadband data) are stored either as unsigned character strings or doubles, depending on what the variable is. Far instance, hardware-description is a character string, but Fs (the sampling rate) is a double.
Broadband data are saved as int16. Narrowband data are saved as doubles.
Each variable is specified as follows, in order:
- An int32 that says the type of data stored. 0 for double, 10 for single, 30 for int16, 50 for uchar
- An int32 that gives the length of the variable
- An int32 that gives the number of columns (set to 1, as all data is assumed to be just one long column)
- An int32 set to 0 to indicate that variable is NOT a complex number
- An int32 that gives the length of the NAME of the variable
- The variable name stored as a character string
An empty character (0 in ascii) - The variable, stored in the format specified in #1