import numpy as np
import math
import xml.etree.ElementTree as ET
from typing import List, Tuple
[docs]def getCalName(format, ext: str, sensor: str, serial: int, chopper) -> str:
"""Get the calibration file name
Parameters
----------
format : str
Calibration format
ext : str
Calibration file extension
sensor : str
Sensor name
serial : int
The sensor serial number
chopper : bool
Boolean flag for chopper on or off
Returns
-------
out : str
Name of calibration file
"""
if format == "induction":
return inductionName(ext, sensor, serial, chopper)
elif format == "metronix":
return metronixName(ext, sensor, serial, chopper)
elif format == "rsp":
return rspName(ext, sensor, serial, chopper)
elif format == "rspx":
return rspxName(ext, sensor, serial, chopper)
else:
return metronixName(ext, sensor, serial, chopper)
[docs]def inductionName(ext: str, sensor: str, serial: int, chopper: bool) -> str:
"""Get internal format induction coil calibration file name
Parameters
----------
ext : str
Calibration file extension
sensor : str
Sensor name
serial : int
The sensor serial number
chopper : bool
Boolean flag for chopper on or off
Returns
-------
out : str
Name of calibration file
"""
return "IC_{}.{}".format(serial, ext)
[docs]def metronixName(ext: str, sensor: str, serial: int, chopper: bool) -> str:
"""Get Metronix calibration file name
Parameters
----------
ext : str
Calibration file extension
sensor : str
Sensor name
serial : int
The sensor serial number
chopper : bool
Boolean flag for chopper on or off
Returns
-------
out : str
Name of calibration file
"""
if sensor == "" and not serial > 0:
return None
return "{}{}.{}".format(sensor, serial, ext)
[docs]def rspName(ext: str, sensor: str, serial: int, chopper: bool) -> List[str]:
"""Get RSP calibration file name
Parameters
----------
ext : str
Calibration file extension
sensor : str
Sensor name
serial : int
The sensor serial number
chopper : bool
Boolean flag for chopper on or off
Returns
-------
out : List[str]
Name of calibration files
"""
if len(sensor) < 5:
# not possible to get a sensor number
return None
board = "HF"
if chopper:
board = "LF"
# try to turn the sensor into an integer serial number
try:
sensorNum = int(sensor[3:])
except:
sensorNum = 0
names = []
names.append("TYPE-{:03d}_{}-ID-{:06d}.{}".format(sensorNum, board, serial, ext))
names.append("TYPE-{:03d}_BB-ID-{:06d}.{}".format(sensorNum, serial, ext))
return names
[docs]def rspxName(ext: str, sensor: str, serial: int, chopper: bool) -> List[str]:
"""Get RSPX calibration file name
Parameters
----------
ext : str
Calibration file extension
sensor : str
Sensor name
serial : int
The sensor serial number
chopper : bool
Boolean flag for chopper on or off
Returns
-------
out : List[str]
Name of calibration files
"""
if len(sensor) < 6:
# not possible to get a sensor number
return None
board = "HF"
if chopper:
board = "LF"
sensorNum = int(sensor[3:5])
names = []
names.append("TYPE-{:03d}_{}-ID-{:06d}.{}".format(sensorNum, board, serial, ext))
names.append("TYPE-{:03d}_BB-ID-{:06d}.{}".format(sensorNum, serial, ext))
return names
[docs]def defaultCalibration():
"""Default calibration data
Returns
-------
data : np.ndarray
Data lines converted to a float array
staticGain : float
Static gain
"""
return [1] * 10, 1