iqdat_mapping¶
IQDAT SDARN FIELDS
This conversion is done in pyDARNio here in the __convert_bfiq_record method: Link to Source
SDARN DMAP FIELD NAME
type
SDARN description
|
Borealis Conversion |
---|---|
radar.revision.major
char
Major version number
|
borealis_git_hash major version number
or 255 if not a commit with a version tag
|
radar.revision.minor
char
Minor version number
|
borealis_git_hash minor version number
or 255 if not a commit with a version tag
|
origin.code
char
Code indicating origin of data
|
= 100, this can be used as a flag that the
origin code was Borealis
|
origin.time
string
ASCII representation of when
the data was generated
|
timestamp_of_write conversion
|
origin.command
string
The command line or control
program used to generate the
data
|
Borealis vXXX + borealis_git_hash +
experiment_name
|
cp
short
Control program identifier
|
experiment_id, truncated to short
|
stid
short
Station identifier
|
station conversion
|
time.yr
short
Year
|
sqn_timestamps [0] conversion
|
time.mo
short
Month
|
sqn_timestamps [0] conversion
|
time.dy
short
Day
|
sqn_timestamps [0] conversion
|
time.hr
short
Hour
|
sqn_timestamps [0] conversion
|
time.mt
short
Minute
|
sqn_timestamps [0] conversion
|
time.sc
short
Second
|
sqn_timestamps [0] conversion
|
time.us
short
Microsecond
|
sqn_timestamps [0] conversion
|
txpow
short
Transmitted power (kW)
|
= -1 (filler)
|
nave
short
Number of pulse sequences
transmitted
|
num_sequences
|
atten
short
Attenuation level
|
= 0 (filler)
|
lagfr
short
Lag to first range
(microseconds)
|
first_range_rtt
|
smsep
short
Sample separation
(microseconds)
|
(rx_sample_rate)^ -1
|
ercod
short
Error code
|
= 0 (filler)
|
stat.agc
short
AGC status word
|
= agc_status_word
|
stat.lopwr
short
LOPWR status word
|
= lp_status_word
|
noise.search
float
Calculated noise from clear
frequency search
|
noise_at_freq [0] conversion
|
noise.mean
float
Average noise across frequency
band
|
= 0 (filler)
|
channel
short
Channel number for a stereo
radar (zero for all others)
|
slice_id
|
bmnum
short
Beam number
|
beam_nums [i]
|
bmazm
float
Beam azimuth
|
beam_azms [i]
|
scan
short
Scan flag
|
scan_start_marker (0 or 1)
|
offset
short
Offset between channels for a
stereo radar (zero for all
others)
|
= 0 (filler)
|
rxrise
short
Receiver rise time
(microseconds)
|
= 0.0
|
intt.sc
short
Whole number of seconds of
integration time.
|
int_time conversion
|
intt.us
short
Fractional number of
microseconds of integration
time
|
int_time conversion
|
txpl
short
Transmit pulse length
(microseconds)
|
tx_pulse_len
|
mpinc
short
Multi-pulse increment
(microseconds)
|
tau_spacing
|
mppul
short
Number of pulses in sequence
|
len(pulses)
|
mplgs
short
Number of lags in sequence
|
lags.shape[0]
|
nrang
short
Number of ranges
|
num_ranges
|
frang
short
Distance to first range
(kilometers)
|
first_range
|
rsep
short
Range separation (kilometers)
|
range_sep
|
xcf
short
XCF flag
|
If xcfs exist, then =1
|
tfreq
short
Transmitted frequency
|
freq
|
mxpwr
int
Maximum power (kHz)
|
= -1 (filler)
|
lvmax
int
Maximum noise level allowed
|
= 20000 (filler)
|
iqdata.revision.major
int
Major version number of the
iqdata library
|
= 1 (meaning Borealis conversion)
|
iqdata.revision.minor
int
Minor version number of the
iqdata library
|
= 0 (Borealis conversion)
|
combf
string
Comment buffer
|
Original Borealis filename, ‘converted
from Borealis file ’ , number of beams in
this original record (len(beam_nums)),
experiment_comment and slice_comment
from the file
|
seqnum
int
Number of pulse sequences
transmitted
|
num_sequences
|
chnnum
int
Number of channels sampled
(both I and Q quadrature
samples)
|
len(antenna_arrays_order)
|
smpnum
int
Number of samples taken per
sequence
|
num_samps
|
skpnum
int
Number of samples to skip
before the first valid sample
|
math.ceil(first_range/range_sep). In
theory this should =0 due to Borealis
functionality(no rise time).
However make_raw in RST requires this to
be indicative of the first range so we
provide this.
|
ptab[mppul]
short
Pulse table
|
pulses
|
ltab[2][mplgs]
short
Lag table
|
np.transpose(lags)
|
tsc[seqnum]
int
Seconds component of time past
epoch of pulse sequence
|
sqn_timestamps conversion
|
tus[seqnum]
int
Microsecond component of time
past epoch of pulse sequence
|
sqn_timestamps conversion
|
tatten[seqnum]
short
Attenuator setting for each
pulse sequence
|
= [0,0…] (fillers)
|
tnoise[seqnum]
float
Noise value for each pulse
sequence
|
noise_at_freq conversion
|
toff[seqnum]
int
Offset into the sample buffer
for each pulse sequence
|
Offset = 2 * num_samps *
len(antenna_arrays_order), toff = [i *
offset for i in range(v[‘num_sequences’])]
|
tsze[seqnum]
int
Number of words stored for this
pulse sequence
|
= [offset, offset, offset….]
|
data[totnum]
int
Array of raw I and Q samples,
arranged: [[[smpnum(i),
smpnum(q)] * chnnum] * seqnum],
so totnum =
2*seqnum*chnnum*smpnum
|
Data conversion for correct dimensions
and scaled to max int (-32768 to 32767)
|
If blanked_samples != ptab, or pulse_phase_offset contains non-zeroes, no conversion to iqdat is possible.