You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
684 lines
55 KiB
684 lines
55 KiB
from dataclasses import dataclass,field
|
|
from typing import Any,List
|
|
from enum import Enum
|
|
import numpy as np
|
|
import struct
|
|
|
|
class RamsesType(Enum):
|
|
SAM = 1
|
|
SAMIP = 2
|
|
|
|
class AirWater(Enum):
|
|
Air = 1
|
|
Water = 2
|
|
|
|
|
|
@dataclass
|
|
class SamCal(object):
|
|
SAMSN: str = None
|
|
DarkPixelStart:int = 0
|
|
DarkPixelStop: int = 0
|
|
Firmware: str = None
|
|
IDDataBack: str = None
|
|
IDDataCal: str = None
|
|
IDDataCalAQ: str = None
|
|
IntegrationTime: int = None
|
|
Reverse: float = None
|
|
SerialNo_MMS: str = None
|
|
WavelengthRange: str = None
|
|
c0s: float = None
|
|
c1s: float = None
|
|
c2s: float = None
|
|
c3s: float = None
|
|
c4s: float = None
|
|
cs: int or str = None
|
|
|
|
|
|
|
|
@dataclass
|
|
class IPCal(object):
|
|
IPSN: str = None
|
|
Incl_Orientation: str = None
|
|
Incl_Xgain: float = None
|
|
Incl_Xoffset: float = None
|
|
Incl_Ygain: float = None
|
|
Incl_Yoffset: float = None
|
|
Incl_KBG: float = None
|
|
Incl_Kref: float = None
|
|
Press_Current_mA: float = None
|
|
Press_Surface_bar: float = None
|
|
Press_Gain: float = None
|
|
WithIncl: float = None
|
|
WithPress: float = None
|
|
Press_Sens_mV_bar_4mA: float = None
|
|
Press_Sens_mV_bar_1mA: float = None
|
|
Press_Type: str = None
|
|
CalibrationDate: str = None
|
|
def __post_init__(self):
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class RamsesCal(object):
|
|
SN: str = ""
|
|
typ: RamsesType = RamsesType.SAM
|
|
samsn:str = ""
|
|
inifile: str = None
|
|
calfile: str = None
|
|
calaqfile:str = None
|
|
backfile:str = None
|
|
b0: List[str] = None
|
|
b1: List[str] = None
|
|
cal: List[str] = None
|
|
calaq: List[str] = None
|
|
samcal:SamCal = None
|
|
ipcal:IPCal = None
|
|
def __post_init__(self):
|
|
assert self.SN != None, " Pls pass the SN when initiating..."
|
|
|
|
|
|
def set_samcal_from_dict(self, samcal:dict):
|
|
SAMSN_ = samcal['SAMSN']
|
|
DarkPixelStart_ = int(samcal['DarkPixelStart'])
|
|
DarkPixelStop_ = int(samcal['DarkPixelStop'])
|
|
Firmware_ = samcal['Firmware']
|
|
IDDataBack_ = samcal['IDDataBack']
|
|
IDDataCal_ = samcal['IDDataCal']
|
|
IDDataCalAQ_ = samcal['IDDataCalAQ']
|
|
IntegrationTime_ = int(samcal['IntegrationTime'])
|
|
Reverse_ = samcal['Reverse']
|
|
SerialNo_MMS_ = samcal['SerialNo_MMS']
|
|
if samcal['WavelengthRange']:
|
|
WavelengthRange_ = samcal['WavelengthRange']
|
|
else:
|
|
WavelengthRange_ = "310-1100"
|
|
|
|
c0s_ = float(samcal['c0s'])
|
|
c1s_ = float(['c1s'])
|
|
c2s_ = float(['c2s'])
|
|
c3s_ = float(['c3s'])
|
|
c4s_ = float(['c4s'])
|
|
if samcal['cs_']:
|
|
cs_ = samcal['cs']
|
|
else:
|
|
cs_ = 0
|
|
|
|
self.samcal= SamCal(SAMSN_ ,DarkPixelStart_ ,DarkPixelStop_
|
|
,Firmware_ ,IDDataBack_ ,IDDataCal_ ,IDDataCalAQ_
|
|
,IntegrationTime_,Reverse_ ,SerialNo_MMS_, WavelengthRange_
|
|
,c0s_ ,c1s_ ,c2s_,c3s_,c4s_ ,cs_,)
|
|
pass
|
|
|
|
def set_samcal_from_dict(self, ipcal:dict):
|
|
IPSN_ = ipcal['IPSN'] # = float(ipcal['IPSN'] )
|
|
Incl_Orientation_ = ipcal['Incl_Orientation']
|
|
Incl_Xgain_ = float(ipcal['Incl_Xgain'] )
|
|
Incl_Xoffset_ = float(ipcal['Incl_Xoffset'] )
|
|
Incl_Ygain_ = float(ipcal['Incl_Ygain'] )
|
|
Incl_Yoffset_ = float(ipcal['Incl_Yoffset'] )
|
|
Incl_KBG_ = float(ipcal['Incl_KBG'] )
|
|
Incl_Kref_ = float(ipcal['Incl_Kref'] )
|
|
Press_Current_mA_ = float(ipcal['Press_Current_mA'] )
|
|
Press_Surface_bar_ = float(ipcal['Press_Surface_bar'] )
|
|
Press_Gain_ = float(ipcal['Press_Gain'] )
|
|
WithIncl_ = float(ipcal['WithIncl'] )
|
|
WithPress_ = float(ipcal['WithPress'] )
|
|
Press_Sens_mV_bar_4mA_ = float(ipcal['Press_Sens_mV_bar_4mA'] )
|
|
Press_Sens_mV_bar_1mA_ = float(ipcal['Press_Sens_mV_bar_1mA'] )
|
|
Press_Type_ = ipcal['Press_Type']
|
|
CalibrationDate_ = ipcal['CalibrationDate']
|
|
|
|
self.ipcal = IPCal( IPSN_ ,Incl_Xgain_
|
|
,Incl_Xoffset_ ,Incl_Ygain_,Incl_Yoffset_ ,Incl_KBG_,Incl_Kref_
|
|
,Press_Current_mA_ ,Press_Surface_bar_ ,Press_Gain_,WithIncl_ ,WithPress_,
|
|
Press_Sens_mV_bar_4mA_,Press_Sens_mV_bar_1mA_ ,Press_Type_
|
|
,CalibrationDate_ )
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class RamsesFactory(object):
|
|
SN: str = None
|
|
typ: RamsesType = RamsesType.SAM
|
|
airwater: AirWater = AirWater.Air
|
|
raw_data: bytes # 原始的字节 未去遮罩
|
|
data_after_remove_mask : bytes # 去遮罩后
|
|
data_valid_buf: bytes # 去掉帧头帧尾后的buf
|
|
ip_buf:bytes
|
|
data_Int_from_Hex: List[int] # 去遮罩后
|
|
data_after_cal: List[float]
|
|
Wavelength: List[float]
|
|
integratedTime: int
|
|
CalData: RamsesCal
|
|
|
|
def set_data_valid_buf(self, data_int:list):
|
|
self.data_Int_from_Hex = data_int
|
|
pass
|
|
|
|
|
|
def remove_frame_head_tail(self,):
|
|
assert self.data_after_remove_mask != None , "please remove mask in advance"
|
|
res = {}
|
|
buf = self.data_after_remove_mask
|
|
len_ = len(buf)
|
|
if self.typ == RamsesType.SAMIP:
|
|
assert len_ == 602, "SAMIP sensor , wrong the num of bytes"
|
|
self.buf_ip = self.data_after_remove_mask[:26]
|
|
buf = buf[26:]
|
|
# self.ip = self.decode_ip_buf(self.buf_ip, self.cal_cfg)
|
|
# self.buf = self.buf[26:]
|
|
len_ = len_ - 26
|
|
assert len_ == 576, "SAMIP sensor , wrong the num of bytes"
|
|
|
|
for i in range( 576 ):
|
|
res.update( {i+1: {}} )
|
|
self.data_valid_buf = buf[7:71] + buf[79:143] + \
|
|
buf[151:215] + buf[223:287] + \
|
|
buf[295:359] + buf[367:431] + \
|
|
buf[439:503] + buf[511:575]
|
|
|
|
pass
|
|
|
|
|
|
def process_from_hex_2_int(self,):
|
|
"""
|
|
@description :从data_after_remove_mask 到 data_Int_from_Hex
|
|
"""
|
|
assert self.data_after_remove_mask != None , "please remove mask in advance"
|
|
assert self.data_valid_buf != None , "please remove frame head and tail"
|
|
|
|
self.integratedTime = 2 << int(self.data_after_remove_mask[0]) # integrated time
|
|
|
|
self.data_Int_from_Hex = struct.unpack(
|
|
"<HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
|
|
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
|
|
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
|
|
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", self.buf[2:])
|
|
pass
|
|
|
|
def get_wavelenth(self,):
|
|
self.Wavelength = []
|
|
for i in range(1,256):
|
|
tmp = self.CalData.samcal.c0s + self.CalData.samcal.c1s*i \
|
|
+ self.CalData.samcal.c2s*i*i + self.CalData.samcal.c3s*i*i*i
|
|
|
|
def calibrate_data(self,):
|
|
self.__CalibrateSpectrumData()
|
|
pass
|
|
|
|
# # 转换一个传感器的部分
|
|
# def __ConvertBytesToInt(self ) -> None:
|
|
# self.integratedTime = 2 << int(self.data_valid_buf[0]) # integrated time
|
|
# self.data_Int_from_Hex = struct.unpack(
|
|
# "<HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
|
|
# HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
|
|
# HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH \
|
|
# HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", self.data_valid_buf[2:])
|
|
# # print( self.light_int )
|
|
|
|
def __CalibrateSpectrumData(self ,) :
|
|
t0 = 8092
|
|
# log.debug(f" __CalibrateSpectrumData ..... ", __name__)
|
|
|
|
raw = np.asarray(self.data_Int_from_Hex, dtype=float)
|
|
# B0 = np.asarray(self.cal_cfg["b0"], dtype=float)
|
|
# B1 = np.asarray(self.cal_cfg["b1"], dtype=float)
|
|
B0 = np.asarray(self.CalData.b0, dtype=float)
|
|
B1 = np.asarray(self.CalData.b1, dtype=float)
|
|
|
|
Mn = raw/65535
|
|
Bn = B0 + B1 * ( self.integratedTime/t0 )
|
|
Cn = Mn-Bn
|
|
|
|
Offset = self.getOffset(
|
|
Cn, int(self.CalData.samcal.DarkPixelStart), int(self.CalData.samcal.DarkPixelStart))
|
|
Dn = Cn - Offset
|
|
En = Dn * ( t0/self.it )
|
|
if self.mode == 0:
|
|
Fn = En/np.asarray(self.CalData.cal, dtype=float) # 空气的标定文件
|
|
else:
|
|
Fn = En/np.asarray(self.CalData.calaq, dtype=float) # 水中的标定文件
|
|
# Fn = En/np.asarray(self.cal_cfg["cal"], dtype=float) # 空气或水中的标定文件
|
|
self.data_after_cal = Fn
|
|
# print(self.spectrum)
|
|
|
|
|
|
def getOffset(self, data: np.ndarray, start: int, stop: int):
|
|
''' 计算光谱时候的 offset '''
|
|
ret = 0.0
|
|
for i in range(start-1, stop, 1):
|
|
ret = ret + data[i]
|
|
return ret / (stop - start + 1)
|
|
|
|
def removeMask(self, ):
|
|
'''去除遮罩 0x64 0x65 0x66 0x67'''
|
|
ret = b''
|
|
flag = False
|
|
buf = self.raw_data
|
|
blen = len(buf)
|
|
for i in range(blen):
|
|
if flag == False and buf[i] == 64 :
|
|
flag = True
|
|
continue
|
|
if flag == False and buf[i] != 64 :
|
|
ret = ret + buf[i].to_bytes( 1, byteorder = 'big' )
|
|
continue
|
|
if flag == True and buf[i] == 100:
|
|
ret = ret + b'\x40'
|
|
flag = False
|
|
continue
|
|
if flag == True and buf[i] == 101:
|
|
ret = ret + b'\x23'
|
|
flag = False
|
|
continue
|
|
if flag == True and buf[i] == 102:
|
|
ret = ret + b'\x11'
|
|
flag = False
|
|
continue
|
|
if flag == True and buf[i] == 103:
|
|
ret = ret + b'\x13'
|
|
flag = False
|
|
continue
|
|
self.data_after_remove_mask = ret
|
|
# return ret
|
|
pass
|
|
|
|
def decode_ip_buf(self, buf, ip_cal:dict):
|
|
tmpbuf = buf
|
|
if len(tmpbuf) ==26 and tmpbuf[0] == 0x13:
|
|
tmpbuf = tmpbuf[2:]
|
|
|
|
# Incl_XGain = float(ip_cal['Incl_XOffset'] )
|
|
# Incl_XOffset = float(ip_cal['Incl_XOffset'] )
|
|
# Incl_YGain = float(ip_cal['Incl_YGain'] )
|
|
# Incl_YOffset = float(ip_cal['Incl_YOffset'] )
|
|
|
|
Incl_XGain = float(ip_cal['Incl_XOffset'] )
|
|
Incl_XOffset = float(ip_cal['Incl_XOffset'] )
|
|
Incl_YGain = float(ip_cal['Incl_YGain'] )
|
|
Incl_YOffset = float(ip_cal['Incl_YOffset'] )
|
|
|
|
Incl_KRef = float(ip_cal['Incl_KRef'] )
|
|
Press_Sens_mV_bar_1mA = float(ip_cal['Press_Sens_mV_bar_1mA'] )
|
|
Incl_KBG = float(ip_cal['Incl_KBG'] )
|
|
Press_Sens_mV_bar_4mA = float(ip_cal['Press_Sens_mV_bar_4mA'] )
|
|
Press_Gain = float(ip_cal['Press_Gain'] )
|
|
Press_Surface_bar = float(ip_cal['Press_Surface_bar'] )
|
|
|
|
|
|
ip_info = struct.unpack("<BBBBBBBBBBBBBBBBBBBBBBBB", buf)
|
|
byte11 = ip_info[11]
|
|
byte12 = ip_info[12]
|
|
byte13 = ip_info[13]
|
|
byte14 = ip_info[14]
|
|
byte15 = ip_info[15]
|
|
byte16 = ip_info[16]
|
|
byte17 = ip_info[17]
|
|
byte18 = ip_info[18]
|
|
byte19 = ip_info[19]
|
|
byte20 = ip_info[20]
|
|
byte21 = ip_info[21]
|
|
byte22 = ip_info[22]
|
|
|
|
X = (byte11 -Incl_XOffset) / Incl_XGain # 单位 度
|
|
Y = (byte12 - Incl_YOffset ) / Incl_YGain # 单位 度
|
|
npress = byte14 *256 + byte13
|
|
nbg = byte18 * 256 + byte17
|
|
nrefh = byte20 * 256 + byte19
|
|
nrefl = byte22 * 256 + byte21
|
|
noffset = nrefl - ( Incl_KRef * (nrefh-nrefl))
|
|
VPress = Incl_KBG * (npress-noffset) / (nbg- noffset) #电压值
|
|
press_sens = Press_Sens_mV_bar_4mA
|
|
if press_sens <= 0:
|
|
press_sens = 4* Press_Sens_mV_bar_1mA
|
|
p_bar = 1000 * VPress / (press_sens * Press_Gain )
|
|
press_delta = p_bar - 1.021
|
|
depth_m = press_delta * 10
|
|
return [depth_m,X,Y]
|
|
pass
|
|
|
|
pass
|
|
|
|
|
|
class RamsesTest(object):
|
|
def __init__(self,):
|
|
self.info_query = "23 00 00 80 b0 00 00 01"
|
|
self.it_query = "23 00 00 00 78 05 00 01"
|
|
self.cmd = "23 00 00 00 a8 00 81 01"
|
|
self.raw_data = "\
|
|
23 a0 00 00 07 fe fe 0b 09 5b 09 4e 09 55 09 54 09 4a 09 4d 09 49 09 4e 09 3b 09 3f 09 46 09 41 09 3a 09 41 09 4b 09 46 09 4c 09 51 09 4c 09 51 09 43 09 4d 09 4a 09 57 09 4f 09 53 09 4a 09 52 09 56 09 76 09 78 09 c1 \
|
|
23 a0 00 00 06 fe fe 86 09 8c 09 91 09 9e 09 ad 09 bf 09 e6 09 2f 0a 77 0a 62 0a 20 0a 04 0a 00 0a 04 0a 07 0a f4 09 f1 09 e2 09 ee 09 de 09 e7 09 ed 09 0b 0a 26 0a 31 0a 2d 0a 2c 0a 1f 0a 12 0a 23 0a 32 0a 44 0a 97 \
|
|
23 a0 00 00 05 fe fe 57 0a 6d 0a 76 0a 86 0a b6 0a 08 0b 16 0c 0f 0e 27 10 7d 10 05 0f 0f 0d c9 0b 0e 0b bf 0a 90 0a 89 0a b1 0a 14 0b 8f 0b 18 0c 65 0c 84 0c 7e 0c 8d 0c a3 0c 2f 0d 55 0f 44 12 4e 13 0c 12 47 10 36 \
|
|
23 a0 00 00 04 fe fe 31 0f a2 0e 18 0e 64 0d a2 0c 18 0c d8 0b bf 0b c4 0b b3 0b b1 0b a8 0b a1 0b a7 0b 93 0b 7b 0b 78 0b 6a 0b 5b 0b 46 0b 23 0b f9 0a ea 0a ec 0a 33 0b 98 0b c0 0b 61 0b e6 0a 80 0a 4c 0a 4a 0a e9 \
|
|
23 a0 00 00 03 fe fe 53 0a 7c 0a 93 0a c6 0a d1 0a ec 0a e0 0a e0 0a a0 0a 53 0a 35 0a 4c 0a 68 0a 8f 0a 86 0a 7b 0a 6b 0a 53 0a 34 0a 26 0a 14 0a 02 0a 03 0a f8 09 dd 09 c5 09 aa 09 98 09 90 09 8d 09 95 09 90 09 c1 \
|
|
23 a0 00 00 02 fe fe 9a 09 8e 09 93 09 8a 09 87 09 85 09 7b 09 7f 09 7b 09 70 09 6b 09 64 09 6e 09 76 09 6c 09 64 09 5f 09 58 09 54 09 3e 09 49 09 45 09 43 09 3f 09 35 09 40 09 36 09 36 09 41 09 34 09 3a 09 37 09 8a \
|
|
23 a0 00 00 01 fe fe 2e 09 35 09 34 09 33 09 39 09 2e 09 36 09 3f 09 42 09 38 09 35 09 43 09 3a 09 3e 09 43 09 40 09 3c 09 45 09 42 09 46 09 43 09 43 09 3f 09 47 09 46 09 35 09 44 09 44 09 3d 09 3c 09 47 09 3c 09 83 \
|
|
23 a0 00 00 00 fe fe 4d 09 37 09 43 09 43 09 44 09 45 09 55 09 49 09 41 09 4e 09 52 09 43 09 51 09 46 09 4b 09 58 09 54 09 4a 09 55 09 56 09 55 09 56 09 57 09 5d 09 74 09 66 09 72 09 71 09 69 09 73 09 5c 09 57 09 8a \
|
|
"
|
|
self.data_after_remove_maske = None
|
|
self.data_Int_from_Hex = ['2395', '2382', '2389', '2388', '2378', '2381', '2377', '2382', '2363', '2367', '2374', '2369', '2362', '2369', '2379', '2374', '2380', '2385', '2380', '2385', '2371', '2381', '2378', '2391', '2383', '2387', '2378', '2386', '2390', '2422', '2424', '2438', '2444', '2449', '2462', '2477', '2495', '2534', '2607', '2679', '2658', '2592', '2564', '2560', '2564', '2567', '2548', '2545', '2530', '2542', '2526', '2535', '2541', '2571', '2598', '2609', '2605', '2604', '2591', '2578', '2595', '2610', '2628', '2647', '2669', '2678', '2694', '2742', '2824', '3094', '3599', '4135', '4221', '3845', '3343', '3017', '2830', '2751', '2704', '2697', '2737', '2836', '2959', '3096', '3173', '3204', '3198', '3213', '3235', '3375', '3925', '4676', '4942', '4620', '4167', '3889', '3746', '3608', '3428', '3234', '3096', '3032', '3007', '3012', '2995', '2993', '2984', '2977', '2983', '2963', '2939', '2936', '2922', '2907', '2886', '2851', '2809', '2794', '2796', '2867', '2968', '3008', '2913', '2790', '2688', '2636', '2634', '2643', '2684', '2707', '2758', '2769', '2796', '2784', '2784', '2720', '2643', '2613', '2636', '2664', '2703', '2694', '2683', '2667', '2643', '2612', '2598', '2580', '2562', '2563', '2552', '2525', '2501', '2474', '2456', '2448', '2445', '2453', '2448', '2458', '2446', '2451', '2442', '2439', '2437', '2427', '2431', '2427', '2416', '2411', '2404', '2414', '2422', '2412', '2404', '2399', '2392', '2388', '2366', '2377', '2373', '2371', '2367', '2357', '2368', '2358', '2358', '2369', '2356', '2362', '2359', '2350', '2357', '2356', '2355', '2361', '2350', '2358', '2367', '2370', '2360', '2357', '2371', '2362', '2366', '2371', '2368', '2364', '2373', '2370', '2374', '2371', '2371', '2367', '2375', '2374', '2357', '2372', '2372', '2365', '2364', '2375', '2364', '2381', '2359', '2371', '2371', '2372', '2373', '2389', '2377', '2369', '2382', '2386', '2371', '2385', '2374', '2379', '2392', '2388', '2378', '2389', '2390', '2389', '2390', '2391', '2397', '2420', '2406', '2418', '2417', '2409', '2419', '2396', '2391']
|
|
self.data_after_cal = ['-NAN', '-NAN', '-NAN', '-NAN', '-0.000374079098737787', '-0.000350299564017366', '-0.000308288008900915', '-0.000406703215465772', '-0.000782517236811813', '-0.000573793416652615', '-0.00047858675513217', '-0.000458967816052652', '-0.000504287959184394', '-0.000447624498184785', '-0.000329929609474648', '-0.000311089539389908', '-0.000241426218650632', '-0.000155549081409335', '-0.000206674384776802', '-0.000184117260326514', '-0.000400515105322605', '-0.000261175276588761', '-0.000236936402106257', '-0.000119852454613561', '-0.000208571462271621', '-0.000206679452776187', '-0.000226110950449552', '-0.000173668389025741', '-3.47786870511508e-05', '0.000431565020333614', '0.00060663534388101', '0.000686332535266336', '0.000633997985788337', '0.000683426784665538', '0.000810376424462623', '0.000977487972122931', '0.0011488859191218', '0.0014900751089907', '0.00236075482596874', '0.00317145485715499', '0.00306344143526345', '0.00239474261673403', '0.00205440437580532', '0.00204355781858809', '0.00204429770678325', '0.00209619386228008', '0.00207745353977213', '0.00199742689110857', '0.00192757766039574', '0.0020065090567182', '0.00182051371982471', '0.00186917458547627', '0.00194444798970978', '0.00234835283496405', '0.00266579974374106', '0.0027830862127088', '0.00271431366916961', '0.00260138246593869', '0.00239968576472302', '0.00226612671845309', '0.00233318764447794', '0.002477902713819', '0.00267311416614577', '0.00282127726501227', '0.00294799569217471', '0.00306502167633045', '0.00322048967901495', '0.00358661823161985', '0.00444376849744876', '0.00709769628665171', '0.0122939906493291', '0.0178687992140181', '0.0190586666416918', '0.0153888081761835', '0.0103872547168006', '0.00698417532956371', '0.00509764884563052', '0.00422591904697052', '0.00386707466583264', '0.00384686852617558', '0.00447141724614518', '0.00590161416357564', '0.007873557921568', '0.00996619981983026', '0.0113439756242113', '0.012084175791068', '0.0123503468366184', '0.0128315769774279', '0.0134171101680466', '0.0158548765344763', '0.0251673080552834', '0.0379065605827745', '0.042387765328768', '0.0369642797766271', '0.0295323766185935', '0.0249389916459621', '0.0225330956746252', '0.0203635029149668', '0.017488211846103', '0.0144173463999943', '0.0123843317165635', '0.0114019411929529', '0.0111789416833658', '0.0111983305027625', '0.0111816710067684', '0.0109885513820978', '0.0109633402330548', '0.0110017793246396', '0.0109832096077767', '0.0106716412939721', '0.0104078212338621', '0.0103919268874104', '0.0102905529527295', '0.0100064099889762', '0.00964945409395506', '0.00899980577717771', '0.00831372402870705', '0.00800337054781435', '0.00810514020113715', '0.00971396906367039', '0.0117824377898393', '0.0126979589566504', '0.0109268574102577', '0.0081569795955378', '0.00608231125321172', '0.00536903424151555', '0.00515095650570321', '0.00546548370495543', '0.0064179576919473', '0.00721254810630632', '0.00825843331877762', '0.00887563044281818', '0.00948465628057633', '0.00943521661796268', '0.00941805233807299', '0.00817507910055595', '0.0063828758650207', '0.00570037632756356', '0.00633569879150338', '0.00732621550364458', '0.00831023416555818', '0.00836735731185972', '0.00820248787987211', '0.00795009752959998', '0.00744731623661109', '0.00671449314373285', '0.00645207600119107', '0.00616258170999556', '0.00590238723485042', '0.00588270560496661', '0.00585040636258424', '0.00518275446860646', '0.00440486341620425', '0.00315120935801831', '0.00253079254867871', '0.00251838946943526', '0.00243187254323672', '0.00259689067651864', '0.00289685708625053', '0.00315532785371054', '0.00296567127201329', '0.00334361133423194', '0.00319068613593708', '0.00309682930380023', '0.00286002840321542', '0.00253771928508401', '0.00264889595570155', '0.00240781581677323', '0.0020407357823836', '0.00180265159879711', '0.00157073370925985', '0.00157924570585415', '0.00202043219973252', '0.00159325094929071', '0.00085772022208578', '0.000251532984769505', '0.000311108954835756', '-0.000875645379648505', '-0.00268532065037732', '-0.00208008227276827', '-0.00274502459967993', '-0.00305638482684573', '-0.00361809694485078', '-0.00429916070213808', '-0.00391814239802678', '-0.00452869412271439', '-0.00479470431408746', '-0.00469215687138475', '-0.00632120636391946', '-0.00651219754894255', '-0.00647707031799787', '-0.00911082930810711', '-0.00782001901579526', '-0.00839643026395382', '-0.00830231747176574', '-0.00852361857772266', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN', '-NAN']
|
|
self.wavelength =['304.48099608248', '307.81937464637', '311.15832552384', '314.49783768875', '317.83790011496', '321.17850177633', '324.51963164672', '327.86127869999', '331.20343191', '334.54608025061', '337.88921269568', '341.23281821907', '344.57688579464', '347.92140439625', '351.26636299776', '354.61175057303', '357.95755609592', '361.30376854029', '364.65037688', '367.99737008891', '371.34473714088', '374.69246700977', '378.04054866944', '381.38897109375', '384.73772325656', '388.08679413173', '391.43617269312', '394.78584791459', '398.13580877', '401.48604423321', '404.83654327808', '408.18729487847', '411.53828800824', '414.88951164125', '418.24095475136', '421.59260631243', '424.94445529832', '428.29649068289', '431.64870144', '435.00107654351', '438.35360496728', '441.70627568517', '445.05907767104', '448.41199989875', '451.76503134216', '455.11816097513', '458.47137777152', '461.82467070519', '465.17802875', '468.53144087981', '471.88489606848', '475.23838328987', '478.59189151784', '481.94540972625', '485.29892688896', '488.65243197983', '492.00591397272', '495.35936184149', '498.71276456', '502.06611110211', '505.41939044168', '508.77259155257', '512.12570340864', '515.47871498375', '518.83161525176', '522.18439318653', '525.53703776192', '528.88953795179', '532.24188273', '535.59406107041', '538.94606194688', '542.29787433327', '545.64948720344', '549.00088953125', '552.35207029056', '555.70301845523', '559.05372299912', '562.40417289609', '565.75435712', '569.10426464471', '572.45388444408', '575.80320549197', '579.15221676224', '582.50090722875', '585.84926586536', '589.19728164593', '592.54494354432', '595.89224053439', '599.23916159', '602.58569568501', '605.93183179328', '609.27755888867', '612.62286594504', '615.96774193625', '619.31217583616', '622.65615661863', '625.99967325752', '629.34271472669', '632.68527', '636.02732805131', '639.36887785448', '642.70990838337', '646.05040861184', '649.39036751375', '652.72977406296', '656.06861723333', '659.40688599872', '662.74456933299', '666.08165621', '669.41813560361', '672.75399648768', '676.08922783607', '679.42381862264', '682.75775782125', '686.09103440576', '689.42363735003', '692.75555562792', '696.08677821329', '699.41729408', '702.74709220191', '706.07616155288', '709.40449110677', '712.73206983744', '716.05888671875', '719.38493072456', '722.71019082873', '726.03465600512', '729.35831522759', '732.68115747', '736.00317170621', '739.32434691008', '742.64467205547', '745.96413611624', '749.28272806625', '752.60043687936', '755.91725152943', '759.23316099032', '762.54815423589', '765.86222024', '769.17534797651', '772.48752641928', '775.79874454217', '779.10899131904', '782.41825572375', '785.72652673016', '789.03379331213', '792.34004444352', '795.64526909819', '798.94945625', '802.25259487281', '805.55467394048', '808.85568242687', '812.15560930584', '815.45444355125', '818.75217413696', '822.04879003683', '825.34428022472', '828.63863367449', '831.93183936', '835.22388625511', '838.51476333368', '841.80445956957', '845.09296393664', '848.38026540875', '851.66635295976', '854.95121556353', '858.23484219392', '861.51722182479', '864.79834343', '868.07819598341', '871.35676845888', '874.63404983027', '877.91002907144', '881.18469515625', '884.45803705856', '887.73004375223', '891.00070421112', '894.27000740909', '897.53794232', '900.80449791771', '904.06966317608', '907.33342706897', '910.59577857024', '913.85670665375', '917.11620029336', '920.37424846293', '923.63084013632', '926.88596428739', '930.13960989', '933.39176591801', '936.64242134528', '939.89156514567', '943.13918629304', '946.38527376125', '949.62981652416', '952.87280355563', '956.11422382952', '959.35406631969', '962.59232', '965.82897384431', '969.06401682648', '972.29743792037', '975.52922609984', '978.75937033875', '981.98785961096', '985.21468289033', '988.43982915072', '991.66328736599', '994.88504651', '998.10509555661', '1001.32342347968', '1004.54001925307', '1007.75487185064', '1010.96797024625', '1014.17930341376', '1017.38886032703', '1020.59662995992', '1023.80260128629', '1027.00676328', '1030.20910491491', '1033.40961516488', '1036.60828300377', '1039.80509740544', '1043.00004734375', '1046.19312179256', '1049.38430972573', '1052.57360011712', '1055.76098194059', '1058.94644417', '1062.12997577921', '1065.31156574208', '1068.49120303247', '1071.66887662424', '1074.84457549125', '1078.01828860736', '1081.19000494643', '1084.35971348232', '1087.52740318889', '1090.69306304', '1093.85668200951', '1097.01824907128', '1100.17775319917', '1103.33518336704', '1106.49052854875', '1109.64377771816', '1112.79491984913', '1115.94394391552', '1119.09083889119', '1122.23559375', '1125.37819746581', '1128.51863901248', '1131.65690736387', '1134.79299149384', '1137.92688037625', '1141.05856298496']
|
|
|
|
self.calcfg = {
|
|
|
|
"b0" :['0.0167342121256965', '0.0166272578208838', '0.0166286620082263', '0.0167322590351011', '0.0166920032801035', '0.0166775698812814', '0.0166447407209946', '0.0166906961017275', '0.0166809423386799', '0.0166877673382172', '0.0166557529834584', '0.0166967839378053', '0.0166669086656532', '0.0166892149702227', '0.0166767580418549', '0.0166905701296523', '0.0166797450805357', '0.0166853286793596', '0.0166606032573071', '0.0166908025324281', '0.0166781405941041', '0.0166909536291278', '0.016658955500689', '0.0166904685842953', '0.0166691280074769', '0.0167018280551104', '0.0166777291783793', '0.0166913413160407', '0.0166761335902522', '0.016706050038872', '0.0166582396233696', '0.0166925097855527', '0.0166940355830564', '0.0167090314943029', '0.0166814589637695', '0.0167022263850933', '0.0166789583657336', '0.0167125271321517', '0.0167029600590216', '0.0167033172125368', '0.0166891849602547', '0.016717239220566', '0.0166950287036272', '0.0167214463738202', '0.0167003460512228', '0.0167208076151397', '0.0167006723223871', '0.0167002158917102', '0.016694364122416', '0.0167280688060731', '0.0166797285052627', '0.0167266316426611', '0.0167086472969212', '0.0167237098582131', '0.0167077462999733', '0.0167322560689996', '0.0167032709762488', '0.0167360191794125', '0.0167094863546909', '0.0167321362036039', '0.0167044837628067', '0.0167368275293078', '0.0167091722968856', '0.0167287705507912', '0.0167181887219972', '0.0167349817417959', '0.0167306388457792', '0.0167342461486254', '0.0167197319671568', '0.0167519464465281', '0.0166999253882404', '0.0167488868255989', '0.016719535855505', '0.0167381012081846', '0.016714746997405', '0.0167499849810578', '0.0167221554465538', '0.0167373439799208', '0.0167244929090075', '0.0167622135196106', '0.0167296907401605', '0.0167466896422982', '0.0167188426601383', '0.0167413380972971', '0.0167347596331369', '0.0167533143427464', '0.0167352247876418', '0.0167353516320998', '0.0167414953006763', '0.016749848191436', '0.0167323993142541', '0.0167619493621011', '0.0167279053215378', '0.0167620692274968', '0.0167349965723033', '0.0167560658380733', '0.0167266768320897', '0.0167505611026539', '0.0167372640696571', '0.0167451675088022', '0.0167349737158742', '0.0167567040733241', '0.0167333020559676', '0.0167609921837014', '0.0167265123006951', '0.0167540701751976', '0.0167341789751504', '0.0167567098310506', '0.0167278048230401', '0.0167495269800919', '0.0167406579876722', '0.0167589262067727', '0.0167242688811064', '0.0167535141184058', '0.016737757663841', '0.0167484752353975', '0.0167302035267659', '0.0167375224694401', '0.0167320194787863', '0.016746486202631', '0.016722477006851', '0.0167550999358457', '0.0167311361039708', '0.0167435888449013', '0.016719886378911', '0.0167514476180474', '0.016733504972205', '0.0167560567652923', '0.0167352814925233', '0.016753138644852', '0.0167400480176239', '0.0167452113024184', '0.0167247150176664', '0.0167355227936036', '0.0167245276298426', '0.0167448593832', '0.0167307758098776', '0.0167412056695892', '0.0167255880983649', '0.0167422534013228', '0.0167193516082593', '0.0167385023297925', '0.016705906968094', '0.0167404309936697', '0.0167155682585657', '0.0167350478684115', '0.0167151202027635', '0.0167373663129203', '0.016693902980872', '0.0167265196287105', '0.0167148515088635', '0.0167491921595762', '0.0167138374511057', '0.01672268288919', '0.016713883163964', '0.0167278643195466', '0.016726385107284', '0.0167313726941841', '0.0167074498643005', '0.0167181608057478', '0.0167095725461107', '0.0167157395945461', '0.0167250866527359', '0.0167240209499168', '0.016707788697777', '0.016726686602777', '0.0167067578902697', '0.0167323436562319', '0.0166997167142764', '0.016728047519933', '0.0167000236185428', '0.0167135718977838', '0.0167101554722925', '0.0167162518577217', '0.016698760233783', '0.0167259262339352', '0.0167001843114531', '0.0167124269826071', '0.0166979893963477', '0.0167173175605408', '0.0167030137978017', '0.0167130235179605', '0.0166889363311589', '0.0167049515344599', '0.0166891643720208', '0.0167144257860609', '0.0166950775570635', '0.0167066258115149', '0.0166899927867203', '0.0167204148684066', '0.0166873287041492', '0.0167186125255577', '0.0166735365066795', '0.0167133203025865', '0.0166931954784274', '0.0167035377509067', '0.0166783023338738', '0.0167123730693506', '0.016688532417926', '0.0167097555720206', '0.0166789950058109', '0.0166970927613137', '0.0166853232705863', '0.0166682147971699', '0.0166882733202367', '0.0166994431350328', '0.016669055250752', '0.0167072431095787', '0.0166842073185183', '0.0167115228450812', '0.0166787196818017', '0.0166820776576458', '0.0166828917652676', '0.0166828919397441', '0.0166886184348693', '0.0167101844354013', '0.0166679419158325', '0.0167196613041506', '0.0166913228215255', '0.0166967333396033', '0.0166900756630856', '0.0166983214252384', '0.0166703969754865', '0.0167076025312892', '0.0166881337389899', '0.0167046749891148', '0.0166851051748882', '0.0166903757627661', '0.0166863544270468', '0.0167023502634498', '0.0166933265103228', '0.0166808331163543', '0.0166929039280982', '0.0166964178859856', '0.0166797501403559', '0.0166952298750991', '0.0166972180354827', '0.0166983521331127', '0.0166914643220144', '0.0167088154923236', '0.0166859086394399', '0.0167097267833884', '0.0166896925125632', '0.0167073085382882', '0.0167009005377256', '0.0167047615294878', '0.0166963988680408', '0.0167178228446541', '0.0167224817177181', '0.0167383386707806', '0.0167398232918166', '0.0167536060675521', '0.0167773394158932', '0.016865794494642', '0.0172802874625528'],
|
|
"b1" : ['0.0168913253365429', '0.0166791480947141', '0.0169747489414428', '0.0167706507685505', '0.0167499611810745', '0.0168839981052519', '0.0168264213414614', '0.0170086107873105', '0.0168850491418118', '0.0168500119713871', '0.0170821184095186', '0.0168872250545704', '0.0168648846362113', '0.016992469931055', '0.0171467378688764', '0.0169317564663933', '0.0170060449035047', '0.0169903947404513', '0.0169514527972631', '0.016996943775266', '0.0168920295188188', '0.0169695187209796', '0.0169094752244822', '0.0170826763090113', '0.0170169785814538', '0.0170845636711249', '0.0169070530050327', '0.0170568509390025', '0.0169742290964211', '0.0169703541737244', '0.016693127352278', '0.0167815989351284', '0.016990941642551', '0.0169070091900225', '0.016947108477903', '0.0168397329001644', '0.0169154708984108', '0.0170660484253514', '0.0169203949374878', '0.0169889800916751', '0.0168200981896078', '0.0166983649043365', '0.0169160836103067', '0.0169049146230597', '0.0172020140827875', '0.0172544859614827', '0.0168596984053201', '0.0170316986792703', '0.0167926783721753', '0.0169303102219324', '0.0169470697251848', '0.0169785680043656', '0.0169713491759485', '0.0168609210361233', '0.016910657531511', '0.0168641905785195', '0.0169026608557411', '0.017002157237797', '0.017056576353301', '0.0168407017181195', '0.0171230816037162', '0.0170056650570416', '0.0169474424146144', '0.0169244955685839', '0.0171115600016459', '0.0168694972570483', '0.0167703526170068', '0.0170216701042216', '0.016901836749513', '0.0170673187115242', '0.0170244000761134', '0.0168948935541682', '0.0167532385787514', '0.0169219944472036', '0.0167925835851213', '0.0168808996334135', '0.0168016955361912', '0.0170095228726826', '0.0168141370789144', '0.016859864413586', '0.0169525347312605', '0.0169839569014993', '0.0168162084291586', '0.0169273999277077', '0.0169807152889901', '0.0170102816927999', '0.0169689170064767', '0.0170848820718366', '0.0171890165607514', '0.0172478463290971', '0.0171135568140042', '0.016861817410934', '0.0170351581448981', '0.0171095326409737', '0.0169284916371655', '0.0167662697912137', '0.0169589875825269', '0.0169346709501011', '0.0170533392793984', '0.0170522329067499', '0.016856227418614', '0.0169100022265374', '0.0168937077559035', '0.0171910392082551', '0.0169340819786091', '0.0172338230819611', '0.0170901543616921', '0.0167868528959956', '0.0171335879543943', '0.0171073040105534', '0.0169701885145821', '0.0170029078535099', '0.0169215596137755', '0.0169346131701474', '0.0169591706978485', '0.0169375894487302', '0.0168295302870074', '0.016924547064313', '0.0169383559495664', '0.0167915482591228', '0.0170090248478852', '0.0169868139543769', '0.0168841494503271', '0.0172432628600796', '0.0172512663437595', '0.0166901924448404', '0.0170508184325355', '0.0169314384148052', '0.0170312671625162', '0.0167689058488605', '0.0171305203799934', '0.0168542409054016', '0.0171618674886609', '0.0170515112682947', '0.0172975114287112', '0.0169936038844669', '0.0169549054549809', '0.0169298114988878', '0.0170253563256194', '0.0168266819622194', '0.0170997161585044', '0.0168946802396562', '0.016992920125921', '0.016921162311133', '0.0169877344187152', '0.0169613225210795', '0.0170480064166006', '0.0169424862561673', '0.0169208393718146', '0.0171000242600703', '0.0170023016004004', '0.0168152008584853', '0.0168970548037361', '0.0170935871193654', '0.0170835660504739', '0.0168896237081778', '0.0169240319324598', '0.0171229468420115', '0.0169091491430516', '0.0171242712423403', '0.0169583039985427', '0.016980123873633', '0.0168419522788097', '0.0168699013676008', '0.0170141937971587', '0.0168653728855483', '0.0170303089928306', '0.0169958541605496', '0.0169007481821674', '0.0168055502097199', '0.016751384907064', '0.0170459629962434', '0.0171742067381729', '0.017009789952227', '0.017035314726827', '0.0170120934696568', '0.0168354903503301', '0.0170146720964735', '0.0168405631160553', '0.0169598953038541', '0.0170114023795155', '0.0169785282042766', '0.0170050780057293', '0.0167849335890737', '0.0170350095928116', '0.0167703564573663', '0.0168229929478329', '0.0170766078428147', '0.0169629183649976', '0.0170641607141142', '0.0169760169583123', '0.0169847640752334', '0.017033343924176', '0.0169504539546795', '0.0168980927481615', '0.0170428481155964', '0.0169532237266603', '0.0169255748841544', '0.0170238355432726', '0.017064109218385', '0.0168959845653789', '0.016870468169745', '0.0172003683141964', '0.0169669170520062', '0.0170209620815863', '0.0171222604650386', '0.0171542234277143', '0.0169524532109029', '0.017089563819144', '0.0169282528366317', '0.017089845561879', '0.0170309442231979', '0.0171422081648913', '0.0169198881846007', '0.0169923559422037', '0.0170145441426787', '0.0167905391173934', '0.0169942132796888', '0.0170522837042319', '0.016866790501875', '0.0168580034103032', '0.0170697227765472', '0.0168474858876703', '0.0171097497958451', '0.0168593377606543', '0.0169034298004424', '0.0170586911694318', '0.016946299558551', '0.016882736372607', '0.0172839598475418', '0.0170588570031359', '0.0169339589125446', '0.0171035821785497', '0.01705823067542', '0.0169105737418501', '0.0171094713697842', '0.0168824476474002', '0.0169520237888903', '0.0171060674148068', '0.0170696843729526', '0.0168485220864778', '0.0170749217504493', '0.0168917989226893', '0.0169097503338691', '0.0168361954054149', '0.016864311200719', '0.0169334457008711', '0.0173226382024216', '0.017014697931619', '0.0171750945594558', '0.0171205895595492', '0.0170395124142804', '0.017286882535654', '0.017103441481744', '0.0182295080172893'],
|
|
"cal": ['+NAN', '+NAN', '+NAN', '+NAN', '0.63607834406219', '0.718127096538326', '0.812216798598817', '0.914442457893824', '1.03343454996493', '1.15933885373154', '1.29479643420084', '1.43677001665361', '1.56848190839848', '1.67447970580786', '1.73889146263122', '1.73244260903254', '1.69192414835577', '1.61622082709111', '1.5270353751059', '1.46047364317447', '1.41296265347303', '1.39311700938614', '1.39852760194912', '1.42554260762195', '1.4700968507055', '1.53635620441153', '1.62082921439482', '1.7237742274692', '1.84755749123585', '1.98432162640748', '2.12689147788928', '2.27366206436985', '2.41515311346652', '2.54267625633242', '2.65248757975216', '2.73468816910085', '2.77942967914337', '2.79565522877852', '2.77806955157777', '2.73891358506136', '2.69063680629234', '2.6282750012231', '2.56338981635672', '2.49687123158122', '2.4309933291301', '2.36993023507549', '2.32161558853422', '2.28314087424895', '2.25846162084215', '2.24994522727437', '2.25549954861938', '2.27668712518828', '2.30493256690767', '2.33255656715114', '2.35720768052834', '2.37757260164886', '2.40002374613635', '2.42905705371268', '2.4673307146952', '2.51294806887351', '2.56575613007937', '2.62193109349514', '2.67842958533042', '2.73753357518048', '2.7913329207665', '2.8423865946084', '2.89027340109411', '2.93157202353872', '2.96274906831744', '2.98346548286676', '2.98798866816702', '2.97297872291037', '2.93559195933884', '2.87662286787444', '2.80380712732453', '2.72275302648293', '2.6373282860483', '2.55448424591999', '2.47778601018081', '2.40377038673745', '2.33484934711808', '2.2698793292122', '2.20651375086021', '2.14704740380438', '2.08988763493926', '2.0346458333411', '1.98224825426305', '1.93452491480363', '1.89146397238956', '1.8653548650058', '1.84879059497611', '1.8371693859594', '1.83197484046632', '1.83105981302589', '1.83169544364263', '1.83369029033973', '1.82985806236537', '1.81684973319988', '1.7961872241934', '1.76710061502081', '1.73459539138238', '1.70421983997876', '1.67561137148482', '1.65483955955664', '1.64005456402998', '1.63103006074007', '1.62646109446179', '1.62483351776729', '1.61794627041935', '1.60638099649103', '1.59160518167625', '1.57856502215575', '1.56723770329055', '1.55884357172436', '1.55081356970191', '1.5440909800073', '1.53473504989623', '1.52335047710565', '1.51140772671503', '1.49628095199023', '1.48082183121466', '1.4668009209167', '1.45300293604089', '1.43913779397284', '1.42471804569399', '1.41116472805909', '1.39601546893463', '1.3795217760198', '1.36066889187826', '1.3395095955925', '1.31771535033317', '1.29387042583309', '1.26955248066416', '1.24679628762607', '1.22528340309588', '1.20486570624273', '1.18549206002717', '1.16756178865017', '1.15111957559202', '1.13469169498467', '1.11621030173639', '1.09569135455521', '1.07275908862679', '1.04573742076401', '1.01572627731635', '0.98381634710957', '0.950352559222019', '0.915760692099546', '0.881456713194727', '0.848044938315892', '0.816038892625263', '0.785024915273114', '0.754850603543375', '0.725690734641156', '0.697449171016547', '0.669846688269734', '0.643097402076866', '0.615807664216611', '0.589686777991522', '0.563134754809732', '0.537416951715189', '0.512092492411016', '0.487999533569422', '0.464888888064952', '0.442938789447448', '0.422687485052752', '0.403811887358409', '0.386602162003576', '0.370223420179536', '0.355850417036878', '0.342554004485098', '0.330263308885894', '0.318892349787717', '0.308390808825048', '0.29923285616278', '0.290049870831026', '0.280987628676386', '0.272166680353347', '0.263184326446838', '0.254328565772045', '0.245533707259442', '0.236284846332185', '0.227364007848682', '0.218575558150069', '0.209919539318749', '0.201723665364338', '0.193439417628863', '0.185095630044576', '0.176908759167827', '0.168492281717065', '0.15971620196905', '0.151519711134016', '0.143896290701505', '0.137256829327417', '0.131333761731513', '0.125851036682123', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN'],
|
|
"calaq": ['+NAN', '+NAN', '+NAN', '+NAN', '0.356482954042082', '0.402818840212745', '0.455981796582809', '0.513790947820199', '0.581106393394544', '0.652400597895999', '0.729165245163259', '0.809695951374305', '0.88453433247143', '0.944944312747719', '0.981931183530144', '0.97890644433893', '0.956596648488616', '0.914337507780978', '0.864381326448261', '0.827167246646249', '0.800694416668645', '0.78986648983256', '0.793342729280327', '0.809072983311401', '0.834767169405595', '0.872805947088459', '0.921221494674019', '0.980173791184887', '1.05102154902541', '1.12930675423331', '1.21095167248078', '1.29504423201304', '1.3761833690735', '1.44941098633961', '1.51258129060157', '1.56003462286042', '1.58613256964525', '1.59595706282003', '1.58646705138274', '1.56463589386165', '1.53756622064089', '1.50241608927798', '1.4657899060372', '1.42819643066784', '1.39093699353292', '1.35640193401339', '1.3291366616142', '1.3074826757329', '1.29371125003749', '1.28918595210661', '1.29271559006051', '1.30520259911165', '1.32173660739306', '1.33791597187085', '1.35239128956384', '1.36440760724462', '1.37762092569269', '1.39461338947335', '1.4169141265919', '1.44343724653861', '1.47409755299312', '1.50670023106802', '1.53949706626466', '1.57379985877493', '1.60506087092559', '1.63474977349559', '1.66262314886676', '1.6867112751644', '1.70497845407306', '1.71722612221823', '1.72015067971529', '1.71182391495322', '1.69060216043102', '1.65693636912006', '1.615276853664', '1.56885138733016', '1.51988696317221', '1.47238950135993', '1.42841545003656', '1.38597016134539', '1.34644570226061', '1.30918427370975', '1.272833651334', '1.23871854263795', '1.20592126590957', '1.17421842576069', '1.14414540628486', '1.11675959841052', '1.09205554594672', '1.07713100431408', '1.06771250877206', '1.06114445201819', '1.05828511190168', '1.05789551638809', '1.05839987869692', '1.05968794981088', '1.05760658826783', '1.05021868492741', '1.03840218029399', '1.02171038385539', '1.00303608270452', '0.985587384786529', '0.969155119807841', '0.957250725878805', '0.948805673627153', '0.943690255948233', '0.94115052725798', '0.940311121408207', '0.936426058319819', '0.929831072715321', '0.92137487467603', '0.913920568414937', '0.907455306712896', '0.902686110798026', '0.898125710110949', '0.894320543495939', '0.888988205031672', '0.882478589132188', '0.875643320641074', '0.866960905236801', '0.85808331524723', '0.850036611133456', '0.842116721554211', '0.834155584125161', '0.825870667226897', '0.818085734330888', '0.80937333573889', '0.799879100950076', '0.789014440994224', '0.776809660553211', '0.764233867550572', '0.750465870807386', '0.736420569195548', '0.723278335744868', '0.710854686038585', '0.699063893618938', '0.687876475273581', '0.67752433279025', '0.668033624297236', '0.658549260619002', '0.647871055584177', '0.636008041103345', '0.622741859229467', '0.607099198838907', '0.589718195082128', '0.571231808679594', '0.551840143680759', '0.531790313016104', '0.511904550502093', '0.492533916324242', '0.473976829140493', '0.455993213863435', '0.438494694002521', '0.421582939065556', '0.405202246583534', '0.389190520866554', '0.373672278430399', '0.357837814065771', '0.342680416381626', '0.327270394695731', '0.312343150425572', '0.297642550528398', '0.283655852976372', '0.270238359496543', '0.257493807901754', '0.245735256551437', '0.234775054990433', '0.224782070488707', '0.21527102824311', '0.206925139776841', '0.19920428909151', '0.192067375381572', '0.18546450086342', '0.17936649692309', '0.1740492565549', '0.168716810424925', '0.163453964529452', '0.158330867670766', '0.153113270397234', '0.147968724530474', '0.142859028020375', '0.137484591721589', '0.132300435162079', '0.12719275157505', '0.122161584010771', '0.117397671330868', '0.112581820604776', '0.107730813198643', '0.102970640334024', '0.0980763328283588', '0.0929722067690889', '0.0882049761452578', '0.0837708982222196', '0.0799092380316381', '0.0764642971780796', '0.0732754076052096', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN', '+NAN'],
|
|
'SAMSN': '85C2', 'DarkPixelStart': '237', 'DarkPixelStop': '254',
|
|
'Firmware': '2.06', 'IDDataBack': 'DLAB_2018-07-02_16-15-52_275_586',
|
|
'IDDataCal': 'DLAB_2018-07-03_17-15-16_983_888', 'IDDataCalAQ': 'DLAB_2018-07-03_17-15-53_767_889',
|
|
'IntegrationTime': '0', 'Reverse': '0', 'SerialNo_MMS': '',
|
|
'c0s': '297.806', 'c1s': '3.3369', 'c2s': '0.000302696', 'c3s': '-1.83769e-06', 'c4s': '+0.000000000E+00'
|
|
|
|
}
|
|
self.samcal= None
|
|
self.ipcal = None
|
|
self.ramsescal = None
|
|
|
|
pass
|
|
|
|
def get_sam_cal(self,):
|
|
self.samcal = SamCal( '85C2', 237, 254, '2.06'
|
|
,'DLAB_2018-07-02_16-15-52_275_586','DLAB_2018-07-03_17-15-16_983_888','DLAB_2018-07-03_17-15-53_767_889'
|
|
,0 , 0 , ' ', ' '
|
|
,float('297.806'),float('3369'),float('000302696'),float('-1.83769e-06'),float('+0.000000000E+00'),0)
|
|
def get_ip_cal(self,):
|
|
self.ipcal = IPCal( )
|
|
|
|
def get_ramses_cal(self,):
|
|
self.ramsescal = RamsesCal( '85C2', RamsesType.SAM, '85C2'
|
|
,"SAM_85C2.ini" , " Cal_SAM_85C2.dat"," CalAQ_SAM_85C2.dat","Back_SAM_85C2.dat"
|
|
,self.calcfg['b0'],self.calcfg['b1'],self.calcfg['cal'],self.calcfg['calaq'] )
|
|
|
|
@dataclass
|
|
class InfoFrame(object):
|
|
infoBytes:bytes
|
|
time_str:str
|
|
time_stamp:int
|
|
year:str
|
|
month:str
|
|
day:str
|
|
hour:str
|
|
minute:str
|
|
second:str
|
|
Roll: int
|
|
Pitch:int
|
|
Yaw:int
|
|
Hx:int
|
|
Hy:int
|
|
lon:int
|
|
lat:int
|
|
satelite_num:int
|
|
PDOP:int
|
|
HDOP:int
|
|
VDOP:int
|
|
Temperature:int
|
|
Humidity:int
|
|
Battery:int
|
|
ErrorCode:int
|
|
Azimuth:int
|
|
RunAngle:int
|
|
MeasureGroupNum:int
|
|
Tiltx:int
|
|
Tilty:int
|
|
Depth:int
|
|
SN1:str
|
|
SN2:str
|
|
SN3:str
|
|
MeasureInterval :int
|
|
MeasureRepeat: int
|
|
|
|
|
|
# ret.update({"time": time_})
|
|
# ret.update({"year": temp[0]})
|
|
# ret.update({"month": temp[1]})
|
|
# ret.update({"day": temp[2]})int
|
|
# ret.update({"hour": temp[3]})
|
|
# ret.update({"minute": temp[4]})
|
|
# ret.update({"second": temp[5]})
|
|
# ret.update({"Roll": temp[6]})
|
|
# ret.update({"Pitch": temp[7]})
|
|
# ret.update({"Yaw": temp[8]})
|
|
# ret.update({"Hx": temp[9]})
|
|
# ret.update({"Hy": temp[10]})
|
|
# ret.update({"Hz": temp[11]})
|
|
# ret.update({"lon": temp[12]})
|
|
# ret.update({"lat": temp[13]})
|
|
# ret.update({"satelite_num": temp[14]})
|
|
# ret.update({"PDOP": temp[15]})
|
|
# ret.update({"HDOP": temp[16]})
|
|
# ret.update({"VDOP": temp[17]})
|
|
# ret.update({"Temperature": temp[18]})
|
|
# ret.update({"Humidity": temp[19]})
|
|
# ret.update({"Battery": temp[20]})
|
|
# ret.update({"ErrorCode": temp[21]})
|
|
# ret.update({"Azimuth": temp[22]})
|
|
# ret.update({"RunAngle": temp[23]})
|
|
# ret.update({"MeasuyeGroupNum": temp[24]})
|
|
# ret.update({"Tiltx": temp[25]})
|
|
# ret.update({"Tilty": temp[26]})
|
|
# ret.update({"Depth": temp[27]})
|
|
|
|
# ret.update({"Sensor1": hex(temp[28])[2:].upper()}) # 28 27 转16进制
|
|
# ret.update({"Sensor2": hex(temp[29])[2:].upper()}) # 30 29
|
|
# ret.update({"Sensor3": hex(temp[30])[2:].upper()}) # 32 31
|
|
# ret.update({"Measure_Num": temp[31]}) # 33
|
|
# ret.update({"Measure_Interval": temp[32]}) # 34
|
|
# ret.update({"Measure_Repeat": temp[33]}) # 35
|
|
|
|
|
|
@dataclass
|
|
class DataFrame(object):
|
|
''' AWRAMS 数据无需 remove_mask
|
|
多组 15 + 26 + 576*3
|
|
'''
|
|
deviceID:int
|
|
measureId: int
|
|
dataBytes:bytes
|
|
groupNUm: int = 1
|
|
data_group:List[bytes] # 多组 每组三个传感器 [ Group1, group2, group3 group4 group5 ]
|
|
data_group_senor_bytes:List[List[bytes]] # [ [IP_byte, Sennsor1_byte,sensor2_byte,sensor3_byte], ] 先分测量组再传感器
|
|
data_sensor_group_bytes:List[List[bytes]] # [ [sensor1_grp1,sensor1_grp2,sensor1_grp3,sensor1_grp4,sensor1_grp5], ] 先传感器,再测量组
|
|
# data_group_senor_int:List[List[bytes]] # [ [ Sennsor1_int,sensor2_int,sensor3_int], ] 丢弃Ip_byte
|
|
# data_after_avg:List[List[int]] # [ [sensor1_grp1,sensor1_grp2,sensor1_grp3,sensor1_grp4,sensor1_grp5] ]
|
|
|
|
def set_data_bytes(self, byt:bytes):
|
|
self.dataBytes = byt
|
|
pass
|
|
|
|
|
|
def set_data_group(self,groups:list):
|
|
self.data_group = groups
|
|
self.groupNUm =len(self.data_group)
|
|
pass
|
|
|
|
def split_by_sensor(self,):
|
|
for i in range(3):
|
|
sensor = []
|
|
for j in range(self.groupNUm):
|
|
buf = self.data_group[j][41:]
|
|
sensor.append ( self.data_group[j][i*576, 576+i*576] )
|
|
pass
|
|
self.data_sensor_group_bytes.append(sensor)
|
|
|
|
pass
|
|
|
|
|
|
def split_by_measure(self,):
|
|
for i in range(self.groupNUm):
|
|
buf = self.data_group[i][41:]
|
|
measureGroup = [ ]
|
|
measureGroup.append( buf[0:576] )
|
|
measureGroup.append( buf[576:576+576] )
|
|
measureGroup.append( buf[576+576:576+576+576] )
|
|
self.data_group_senor_bytes.append(measureGroup)
|
|
pass
|
|
|
|
|
|
|
|
# def process_bytes_into_group(self,):
|
|
# '''去 AA 的头和帧号校验等'''
|
|
# len_ = len(self.dataBytes)
|
|
# assert len_%(602+15) == 0
|
|
# self.groupNUm = len_/617
|
|
# for i in range(self.groupNUm):
|
|
# self.data_group.append( self.dataBytes[i*617:i*617+617] )
|
|
# pass
|
|
|
|
# def process_group_2_sensor(self,):
|
|
# ''' 可以加入remove mask , awrams 不需要 '''
|
|
# self.groupNUm = len(self.data_group)
|
|
# for i in range(self.groupNUm):
|
|
# buf = self.data_group[i] #含三个传感器数据
|
|
# # buf2 = buf[26+7:26+71] + buf[26+79:26+143] + \
|
|
# # buf[26+151:26+215] + buf[26+223:26+287] + \
|
|
# # buf[26+295:359] + buf[26+367:26+431] + \
|
|
# # buf[26+439:26+503] + buf[26+511:26+575]
|
|
|
|
# pass
|
|
|
|
def Process_GrpSensor_2_Sensorgrp(self,):
|
|
"""
|
|
@description :
|
|
|
|
@param :
|
|
|
|
@Returns :
|
|
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
def split_onegroup_3_sensor(self, buf:bytes):
|
|
''' discard 26 '''
|
|
assert len(buf) == 15+602+602+602
|
|
ret = []
|
|
buf = buf[41:]
|
|
offset = 576
|
|
for i in range(3):
|
|
tmp_buf = buf[offset*i:offset*i+576]
|
|
ret.append(tmp_buf)
|
|
self.data_group_senor_bytes.append(ret)
|
|
pass
|
|
|
|
def deal_byte_2_int(self,):
|
|
"""
|
|
@description : 将byte处理int
|
|
@param : 数据buf 标定文件(传序号进去)
|
|
@Returns : List[int]
|
|
"""
|
|
# 调用 AWRAMS factory
|
|
|
|
pass
|
|
|
|
|
|
def get_avg(self,):
|
|
for i in range(3):
|
|
total = np.array([])
|
|
for j in range(self.groupNUm):
|
|
total = total + np.array([self.data_group_senor_int[j][i]])
|
|
self.data_after_avg.append(total/self.groupNUm)
|
|
pass
|
|
|
|
|
|
|
|
def removeMask(self, byt:bytes)-> bytes:
|
|
'''去除遮罩 0x64 0x65 0x66 0x67'''
|
|
ret = b''
|
|
flag = False
|
|
buf = byt
|
|
blen = len(buf)
|
|
for i in range(blen):
|
|
if flag == False and buf[i] == 64 :
|
|
flag = True
|
|
continue
|
|
if flag == False and buf[i] != 64 :
|
|
ret = ret + buf[i].to_bytes( 1, byteorder = 'big' )
|
|
continue
|
|
if flag == True and buf[i] == 100:
|
|
ret = ret + b'\x40'
|
|
flag = False
|
|
continue
|
|
if flag == True and buf[i] == 101:
|
|
ret = ret + b'\x23'
|
|
flag = False
|
|
continue
|
|
if flag == True and buf[i] == 102:
|
|
ret = ret + b'\x11'
|
|
flag = False
|
|
continue
|
|
if flag == True and buf[i] == 103:
|
|
ret = ret + b'\x13'
|
|
flag = False
|
|
continue
|
|
return ret
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class AWRAMSData(object):
|
|
info_frame:InfoFrame
|
|
data_frame:DataFrame # 数据只到分组成byte结束
|
|
dataFactory:List[RamsesFactory] # 多个工厂,每个工厂有自己的 标定文件及参数,工厂标记序列哈,只处理相同序列号的产品数据
|
|
|
|
data_after_avg:List[int]
|
|
pass
|
|
|
|
def get_datafactory_by_data_frame(self,):
|
|
"""
|
|
@description : 调用工厂得到整数值
|
|
@param : 576字节数据, 数据id(第几个传感器,还是序列号?)
|
|
@Returns : List[int]
|
|
"""
|
|
pass
|
|
|
|
|
|
## 封装该类的 处理buf hex2int函数
|
|
|
|
|
|
@dataclass
|
|
class AWRAMS(object):
|
|
Lsky:List[List[float],List[float]] # 无需记录原始波长,记录插值后的波长
|
|
Esky:List[List[float],List[float]]
|
|
Lwater:List[List[float],List[float]]
|
|
beginWavelength: float
|
|
endWavelength: float
|
|
wavelengthInterv: float
|
|
Lw:np.ndarray
|
|
Rs:np.ndarray
|
|
Lw:np.ndarray
|
|
|
|
|
|
def test_01():
|
|
"""
|
|
@description :调用RamsesTest RamsesFactory 获得结果和已知的比较
|
|
"""
|
|
rt =RamsesTest( )
|
|
rt.get_ip_cal()
|
|
rt.get_sam_cal()
|
|
rt.get_ramses_cal()
|
|
|
|
rc = RamsesFactory(SN="8C52")
|
|
# 1. samcal, ipcal
|
|
|
|
# 2. ramsescal
|
|
|
|
# 3.
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# 由于很多数据,要到整数这一步取平均, 需要将平均后的整数值传进去,在处理
|
|
|
|
rc= RamsesCal()
|
|
print(rc)
|
|
|
|
# rt =RamsesTest()
|
|
# rt.get_sam_cal()
|
|
# rt.get_ramses_cal()
|
|
# print(rt.samcal)
|
|
pass
|
|
|
|
|