Data-Files¶
This is the grammar of data files which can be parsed with the mpylab.tools.dataparser.DatFile class:
line : FUNIT unit # frequency unit used from here
| UNIT unit # unit used from here
| UNIT from_unit to_unit # values are in from_unit and are converted to to_unit
| RELERROR fp_value # use relative error fp_value from here
| ABSERROR value # use absolute error value from here
| freq value value value # value, lower, and upper bound for this freq (triple will be sorted)
| freq value # value for this freq (RELERROR or ABSERROR will be used)
value : fp_value # floating point value
| ( fp_value , fp_value ) # complex: (real part, imaginary part)
| [ fp_value , fp_value ] # complex: [magnitude, angle in deg]
Allowed units and unit conversions are taken from a dictionary uconv in mpylab.tools.uconv.UConv:
uconv={ "1": (units.ONE, _ident),
"dimensionless": (units.ONE, _ident),
"dbm": (si.WATT, _mulfac(_dBfac(10), 1e-3)),
"w": (si.WATT, _ident),
"dbuv": (si.VOLT, _mulfac(_dBfac(20), 1e-6)),
"v": (si.VOLT, _ident),
"db": (POWERRATIO, _dBfac(10)),
"hz": (si.HERTZ, _ident),
"khz": (si.HERTZ, _mulfac(_ident,1e3)),
"mhz": (si.HERTZ, _mulfac(_ident,1e6)),
"ghz": (si.HERTZ, _mulfac(_ident,1e9)),
"v/m": (EFIELD, _ident),
"dbv/m": (EFIELD, _dBfac(20)),
"m": (si.METER, _ident),
"cm": (si.METER, _mulfac(_ident,1e-2)),
"mm": (si.METER, _mulfac(_ident,1e-3)),
"deg": (si.RADIAN, _mulfac(_ident, math.pi/180.0)),
"rad": (si.RADIAN, _ident),
"steps": (units.ONE, _ident),
"db1/m": (EFIELD/si.VOLT, _dBfac(20)),
"dbi": (POWERRATIO, _dBfac(10)),
"dbd": (POWERRATIO, _mulfac(_dBfac(10),1.64)), # 1.64: Directivity of a half wave dipole
"1/m": (EFIELD/si.VOLT, _ident),
"a/m": (HFIELD, _ident),
"dba/m": (HFIELD, _dBfac(20)),
"w/m2": (POYNTING, _ident),
"dbw/m2": (POYNTING, _dBfac(20)),
"s/m": (HFIELD/si.VOLT, _ident),
"dbs/m": (HFIELD/si.VOLT, _dBfac(20)),
"amplituderatio": (AMPLITUDERATIO, _ident),
"powerratio": (POWERRATIO, _ident),
"h": (si.HENRY,_ident),
"f": (si.FARAD,_ident)}
Example data files are:
FUNIT: Hz
UNIT: powerratio
ABSERROR: [0.1, 1]
10 [1, 0]
20 [0.9, 40]
30 [0.8, 70]
40 [0.7, 120]
50 [0.6, 180]
60 [0.5, 260]
70 [0.4, 310]
80 [0.3, 10]
90 [0.2, 50]