diff --git a/README.md b/README.md new file mode 100644 index 0000000..48f48a8 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# 手持式桌面数据处理 +数据处理不需要ID, 默认值为100 + +# 数据目录格式 +info 和sensor文件分别在不同目录,对应的文件名一样 +data/2023_01/11/info +data/2023_01/11/sensor + +# 输出目录 +data/output + +格式 + +信息 +抬头 +数据(时间--值) + +# issue +桌面版 id 不能改 +如何展示数据,综合处理数据,得到所有的Rs Lw + +## 错误 +pyinstaller -F -i icon.ico app.py +pyinstaller -F -w -i icon.ico app.py +ModuleNotFoundError: No module named 'pkg_resources.py2_warn' +pip install setuptools --upgrade +app.spec + hiddenimports=['pkg_resources.py2_warn'], \ No newline at end of file diff --git a/Ramses.py b/Ramses.py new file mode 100644 index 0000000..bb1e35f --- /dev/null +++ b/Ramses.py @@ -0,0 +1,286 @@ +#! python3 +# -*- encoding: utf-8 -*- +''' +@File : Ramses.py +@Time : 2023/03/03 11:09:50 +@Author : Jim @ Yiwin +@Version : 1.0 +@Contact : jim@yi-win.com +@Desc : +@para : 23 ..07 .... 06 05 04 03 02 01 00 + ip信息不包含 +''' + +import struct +import numpy as np +from pathlib import Path +from tools.mylogger import log +from myconfig import RamsesAWRAMS, RamsesSURFACE, RamsesPROFILE, DeviceType + + +class Ramses(object): + + def __init__(self,): + """ + @description :处理Ramses的数据标定 Hex -- realWavelength Intensity + @param : 23 ..07 .... 06 05 04 03 02 01 00 + ip信息不包含 + @Returns : realWavelength Intensity + """ + self.buf = b'' + self.mode = 0 # 默认0 空气中,1:水中 + self.buf_ip = b'' + self.it = None + self.light_int = None # 未标定的整数值 + self.spectrum = None # 光谱强度 + self.ip = [] + # self.current_buf = "" + # self.current_buf_seq = 0 + # self.current_it_int = {"it": 0, "light_int": []} # 积分时间及换算的整数值 + # self.res = {"wavelength": [], "light": []} + self.cal_cfg = {} + # self.current_cal = {} # 当前传感器的序列号 + pass + + def setBuf( self, buf: bytes ): + self.buf = buf + pass + + def setMode( self, mode = 1 ): + self.mode = mode + pass + + def setCalCfg(self, d: dict): + self.cal_cfg = d + pass + + def getRealWavelength(self, d: dict): + self.cal_cfg = d + pass + + def getSpectrum(self): + return self.spectrum + + def resetPara(self, ): + self.buf = b'' + self.it = None + self.light_int = None + self.spectrum = None # 光谱强度 + self.cal_cfg = {} + pass + + def resetItSpectrum(self, ): + self.it = None + self.spectrum = None # 光谱强度 + pass + + def printPara(self, ): + print(f"**************Ramses printPara*******************") + print(f"{self.buf}") + print(f"{self.cal_cfg}") + print(f"{self.it}") + print(f"{self.light_int}") + print(f"{self.spectrum}") + print(f"**************Ramses printPara*******************") + pass + + def dealBuf(self, ip_included:bool=False): + """多个传感器的数据处理, 头部是否包含Ip帧的信息""" + log.info(f" dealBuf ", __name__) + + res = {} + len_ = len(self.buf) + if len_ < 576: + return + if ip_included: + self.buf_ip = self.buf[:26] + self.ip = self.decode_ip_buf(self.buf_ip, self.cal_cfg) + self.buf = self.buf[26:] + len_ = len_ - 26 + if len_ % 576 != 0: + return + + for i in range( int(len_/576) ): + res.update( {i+1: {}} ) + temp_buf = self.buf[7:71] + self.buf[79:143] + \ + self.buf[151:215] + self.buf[223:287] + \ + self.buf[295:359] + self.buf[367:431] + \ + self.buf[439:503] + self.buf[511:575] + self.ConvertAndCalibrate( temp_buf ) + # print(len(temp_buf)) + # temp = self.__ConvertBytesToInt(temp_buf) + # res.update( { i+1: temp } ) + # print(res) + pass + + def ConvertAndCalibrate(self,) -> None: + '''单个成功数据转化 标定''' + log.debug(f" ConvertAndCalibrate ", __name__) + temp = self.__ConvertBytesToInt( ) + # print( f"int : {self.it} {temp}" ) + self.__CalibrateSpectrumData( ) + pass + + # 转换一个传感器的部分 + def __ConvertBytesToInt(self ) -> None: + res = {} + d = [] # List [ Tuple[ it:int, sing_set:tuple[int] ] ] + + # self.it = 2 << int(self.buf[1]) # integrated time + self.it = 2 << int(self.buf[0]) # integrated time + self.light_int = struct.unpack( + " bytes: + '''去除遮罩 0x64 0x65 0x66 0x67''' + ret = b'' + flag = False + 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 + + 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_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(">>> AWRAMSData deviceid is empty" + pass + + def build_datafactory_by_configSensor(self,calcfg:dict): + """ + @description : 调用工厂得到整数值 + @param : 576字节数据, 数据id(第几个传感器,还是序列号?) + @Returns : List[int] + """ + assert self.configSensor != None, ">>>> AWRAMSData configSensor is None" + self.ramsesFactoryHandle = [None,None,None] + for i in range(0, len( self.configSensor)): + cfg = calcfg[self.configFunc[i]] + tmp_ramses_factory_handle = RamsesFactoryHandle( sn= self.configSensor[i], cfg=cfg ) + self.ramsesFactoryHandle[i] = tmp_ramses_factory_handle + + def set_data_frame( self, data_frame:List[bytes], pth:Path, func ): + """ + @description : data_frame + """ + log.info(f" 处理 data_frame:List[bytes] ",__name__,"set_data_frame") + self.data_frame = DataFrame() + self.currentPath= pth + self.data_frame.set_data_bytes_list(data_frame ) + + # 对数据进行分组 split_by_sensor(self,) + self.data_frame.split_by_sensor() + self.spectrum =[] + self.wavelength =[] + + # 分组后的数据 传给RamsesFactory 的 deal_raw_data_list, 返回平均值 + for i in range( len(self.data_frame.data_sensor_group_bytes) ): + log.info( f" {i} ......... {len(self.data_frame.data_sensor_group_bytes[i])}",__name__, "set_data_frame ") + # log.info( f" {i} ......... ",__name__, "set_data_frame ") + self.ramsesFactoryHandle[i].deal_raw_data_list( self.data_frame.data_sensor_group_bytes[i] ) + self.ramsesFactoryHandle[i].rf.get_wavelenth() + self.spectrum.append (self.ramsesFactoryHandle[i].rf.data_after_cal) + self.wavelength.append (self.ramsesFactoryHandle[i].rf.Wavelength) + + # 补充IP解析数据 + + # 回调函数 + func( self.wavelength, self.spectrum ) + + def set_info_frame(self, info_frame:bytes): + self.info_frame = InfoFrame() + self.info_frame.set_info_frame(info_frame) #已经解析 + pass + + + +class mycfg(object): + sensor_cfg = { 2: {1: {'FUNC': 'Lsky', 'SN': '85B5'}, 2: {'FUNC': 'Esky', 'SN': '50ED'}, 3: {'FUNC': 'Lwater', 'SN': '852F'}} } + + cal_cfg = { 2: + {'Lsky': {'SN': '85B5', 'FUNC': 'Lsky', 'TYPE': 'SAM', 'samsn': '85B5', 'inifile': 'SAM_85B5.ini', 'calfile': 'Cal_SAM_85B5.dat', 'calaqfile': 'CalAQ_SAM_85B5.dat', 'backfile': 'Back_SAM_85B5.dat', 'cal': ['+NAN', '+NAN', '+NAN', '0.380824258865919', '0.480956813156357', '0.57671205380196', '0.643896236957154', '0.711054782209677', '0.758265752350778', '0.808854255795615', '0.869466331079482', '0.925321324749243', '1.00927399148091', '1.08699883630787', '1.18347377446848', '1.29079925777138', '1.39953731633192', '1.49536024576308', '1.57053962346542', '1.61051680455964', '1.60891142181803', '1.58014917632373', '1.54292073894688', '1.49782795775685', '1.46270054563491', '1.43754722159869', '1.42339247548624', '1.42249669690879', '1.43289834559721', '1.45081833970432', '1.48383024473758', '1.53350351710437', '1.59283171118034', '1.66682243068085', '1.75523084376357', '1.8490542829721', '1.94827772413977', '2.05297044933559', '2.15300125225733', '2.24489521732098', '2.32484518002751', '2.37710624055378', '2.41032149129472', '2.41401311078449', '2.39196623346607', '2.35386541795861', '2.30358502851024', '2.24350994611066', '2.18566570348128', '2.13007635400607', '2.08048312730197', '2.03943635277338', '1.9990019487276', '1.9542919602901', '1.90697476815729', '1.86132580586718', '1.81936966943287', '1.78948757961567', '1.77036444175303', '1.76067051308416', '1.76079151769139', '1.76865840458355', '1.78533977613825', '1.81054315659671', '1.84219534093402', '1.88262260694772', '1.92633682221336', '1.96919363361994', '2.00638558730966', '2.03543177536163', '2.05645335730185', '2.06889953924594', '2.07668786673546', '2.07746404954558', '2.07708946852551', '2.07239270419962', '2.06329693588947', '2.05235510505223', '2.03788342455449', '2.01750123705209', '1.99316265318269', '1.96344779927853', '1.92810068074762', '1.89032139564187', '1.84840056738145', '1.80188008685176', '1.7531429855323', '1.70184883503381', '1.64693756964496', '1.59639297188055', '1.55743828612696', '1.53081670223502', '1.509066853406', '1.48974595694359', '1.47286758281018', '1.45660325947575', '1.43667408186819', '1.40947906533906', '1.37746325817173', '1.3399910234164', '1.29987620320872', '1.26173586555032', '1.22580130202006', '1.19650560480134', '1.17258287879559', '1.15326969493003', '1.13448708666807', '1.11395465030131', '1.08753684763482', '1.06275254011917', '1.0408908566722', '1.02045255259373', '1.00192289281247', '0.987093337695555', '0.973433543184599', '0.961454156421677', '0.949336048850277', '0.937190359719721', '0.925018119816345', '0.911316167695048', '0.897751565127677', '0.885763756400802', '0.875253674622747', '0.866439225407856', '0.859594015285511', '0.856442344648432', '0.854520610650332', '0.853095084706978', '0.851996897997662', '0.849373999218705', '0.845008414644852', '0.837447706997702', '0.828042280687475', '0.816973957953628', '0.804392597259629', '0.790971383923797', '0.777350907812577', '0.764886212005326', '0.753124860834896', '0.74238339492221', '0.731621293455726', '0.720137856580817', '0.707681887074656', '0.692857487682284', '0.676149155140644', '0.657691286728854', '0.637091724889135', '0.615841105000382', '0.593277961352052', '0.571635565839856', '0.550558744253774', '0.529727893337181', '0.50958610090654', '0.490923786532866', '0.472942835508178', '0.455966760194577', '0.439389399108222', '0.42326262400571', '0.408064966451864', '0.392531100434587', '0.376760145430696', '0.361340837642809', '0.345797349215964', '0.330538900755072', '0.315423852713651', '0.300655326757946', '0.286125136929255', '0.27220666979537', '0.258963801456755', '0.246515726736969', '0.23471243489257', '0.223963260764627', '0.213811227531161', '0.204848303945938', '0.196342813423038', '0.188347519381911', '0.180847277367304', '0.173574321958823', '0.166782572540461', '0.159983659268987', '0.153496471427164', '0.146983276179518', '0.140664487031456', '0.134679615950644', '0.128426075217298', '0.122768803469292', '0.116973531179931', '0.111227699506044', '0.10561644888568', '0.0999165260100575', '0.09399466356358', '0.0884689961099718', '0.0833768260697751', '0.0789223013382674', '0.0748108094846383', '0.0710379549143775', '+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', '0.213368170535889', '0.269708461889978', '0.323681305990691', '0.361686162925288', '0.399727885563257', '0.426595980991839', '0.455395402116462', '0.489873358069589', '0.521706723967902', '0.569424753191682', '0.613678281579101', '0.668568867138568', '0.729648774358889', '0.791588424733509', '0.846278067578305', '0.889326585618736', '0.912464300651466', '0.912041091772509', '0.896201537846271', '0.875528861051999', '0.850358796139941', '0.830813460904554', '0.816907084374381', '0.809230927534884', '0.809079793968319', '0.815347896421343', '0.825892411944005', '0.84503183706585', '0.873670658313288', '0.907826486501149', '0.950360287322641', '1.00114116281862', '1.05504053595122', '1.11205216981838', '1.17221784963607', '1.22975299376536', '1.2826684244193', '1.32878263374036', '1.35908629098684', '1.37850707003827', '1.38104038663283', '1.36883708486346', '1.34742818899357', '1.31902470629713', '1.28498732451399', '1.25220172471482', '1.22068349763187', '1.1925789464318', '1.16935370804616', '1.14646179324841', '1.12109994325093', '1.09422415317439', '1.06828767805555', '1.04445396328421', '1.02753751191562', '1.01678817181089', '1.01144651696064', '1.01173798764201', '1.0164772818471', '1.02628160092791', '1.04098599390468', '1.05940120890642', '1.08286747681355', '1.10823034660724', '1.13310605067389', '1.1547273364889', '1.17166412724341', '1.183983471337', '1.19136561427902', '1.19606418873222', '1.19672161290192', '1.19671286046196', '1.19421014531398', '1.18916801665381', '1.18305692745573', '1.17490571141989', '1.16334076115534', '1.14948755782896', '1.13252619591223', '1.11230773028189', '1.09067725991727', '1.06664792919033', '1.03995448729021', '1.01197155529512', '0.982502268789757', '0.950934147643801', '0.921876981717461', '0.899503833526815', '0.884246887000271', '0.871798641947689', '0.860748919530635', '0.851106201938694', '0.841814387319495', '0.830400473286421', '0.814782119978127', '0.796371468702983', '0.774800085650998', '0.751694156127581', '0.729723545880894', '0.70902256138046', '0.69215621992056', '0.678393548274155', '0.667293944696908', '0.65649797079901', '0.6446860376968', '0.629464240966416', '0.615183928901848', '0.602591773736883', '0.590820336228123', '0.580150915843665', '0.571621329022329', '0.563766808252911', '0.556883367165026', '0.549917569359012', '0.542933812612894', '0.535932724580549', '0.528043359268253', '0.520231538772767', '0.513331529426342', '0.507286194391832', '0.502222099629004', '0.498298138845332', '0.496514280280116', '0.495442722847893', '0.494658216836534', '0.494062920786886', '0.492582820232232', '0.490091285479962', '0.485745623273317', '0.480328740541132', '0.473945880321646', '0.466683779528739', '0.458932848241851', '0.451064706693729', '0.443865689279125', '0.437073402888952', '0.430871678484112', '0.424656716266769', '0.418021794802865', '0.410821018781503', '0.402243888142941', '0.392571430814996', '0.381881477324506', '0.36994612437875', '0.35763078427341', '0.344551257226534', '0.332004497779552', '0.319784344441634', '0.307705241065949', '0.296024637721301', '0.285201831804588', '0.27477331903475', '0.2649271655017', '0.255311286750044', '0.245955888598912', '0.237139128199368', '0.228125758026999', '0.218973368669899', '0.210024147431339', '0.201001563461602', '0.192143502318544', '0.183367668918973', '0.17479218252589', '0.166354193257315', '0.158270839921817', '0.15057933833141', '0.14334907901495', '0.136492914420144', '0.130248971747009', '0.124351585245978', '0.119145124817533', '0.114204124468303', '0.10955932586493', '0.105201972954921', '0.100976345428583', '0.0970301944120184', '0.0930794320815323', '0.0893096045786908', '0.0855242301014967', '0.0818515687486457', '0.0783728272346642', '0.0747373637294556', '0.0714485344156491', '0.0680790457826121', '0.0647379875159452', '0.0614749247480892', '0.0581599202112611', '0.0547153945113677', '0.0515011739034831', '0.0485390098580295', '0.045947792932824', '0.0435560478479539', '0.0413612446534424', '+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'], 'b0': ['0.0164817607719245', '0.0163219290778752', '0.0163731972698131', '0.0164399246082603', '0.0164430241843214', '0.0163983356778795', '0.0163990512062458', '0.0163901000353671', '0.0164207307910173', '0.0164008709967505', '0.0164082743860791', '0.0163908071888585', '0.0164252516531235', '0.0163975419840151', '0.0164170151382283', '0.0163836419600322', '0.0164195574361616', '0.0163940245365965', '0.0164118187028877', '0.016392199511795', '0.0164065571877907', '0.0163945228416475', '0.0164219489863484', '0.0163932453242865', '0.0164305632429927', '0.0163847816409121', '0.0164318688510797', '0.0164176912348923', '0.0164202520273408', '0.0164088639423701', '0.0164306347783817', '0.0164189001829659', '0.0164341838060573', '0.0164138319878957', '0.0164304957205646', '0.016429661373662', '0.0164248637917341', '0.0164295341802509', '0.0164375396881828', '0.0164033339078497', '0.0164426914575244', '0.0164161851532397', '0.0164508810382254', '0.0164265781983975', '0.0164319475400075', '0.016422878946405', '0.0164658096015204', '0.016435585550728', '0.016451332060129', '0.0164379950720003', '0.0164365183024095', '0.0164243435026367', '0.0164365261538547', '0.0164254425304785', '0.0164527732365019', '0.0164500622197366', '0.0164541095524632', '0.0164375095037381', '0.0164747180256422', '0.0164484643634142', '0.0164537975883766', '0.0164461544682567', '0.0164698387886849', '0.0164431478882013', '0.0164654240083262', '0.0164472887403633', '0.0164750846008916', '0.016451503570586', '0.0164619681511328', '0.0164507452954629', '0.0164756266995587', '0.0164519861727467', '0.0164677262265151', '0.0164529956941139', '0.0164743584294553', '0.0164623034950781', '0.0164737165301967', '0.0164694078315855', '0.0164841373171273', '0.0164653304888909', '0.0164847460658397', '0.0164548329322745', '0.0164595881163988', '0.016470273409792', '0.0164793578807614', '0.0164794932745707', '0.0164779744561293', '0.0164553809631447', '0.0164876681992408', '0.0164698851994495', '0.0164899871671793', '0.0164501525985938', '0.0164753983097437', '0.0164809215396783', '0.0164902986078362', '0.0164763052388946', '0.0164924607213486', '0.0164652690731423', '0.0164867010756773', '0.0164660367699995', '0.0164911903575265', '0.0164677717648968', '0.0165022066329511', '0.0164662370690886', '0.016489524978776', '0.0164685029961533', '0.0164921269476923', '0.0164558499561338', '0.0164738716398572', '0.0164762743565437', '0.0164791764251406', '0.0164705429760749', '0.0164789927013245', '0.016473611669785', '0.0164614993326202', '0.0164598238342293', '0.0164727508024456', '0.0164582863467961', '0.0164685862214717', '0.0164525792185689', '0.0164773030703324', '0.0164670838038268', '0.0164831073820027', '0.0164667688736388', '0.0164761180255473', '0.0164464892887724', '0.0164720077067831', '0.0164452072350208', '0.0164870899839261', '0.016459772189168', '0.0164701266750064', '0.0164611727125027', '0.0164680781457335', '0.0164568425532749', '0.0164788192716254', '0.0164516724638946', '0.016478949431138', '0.0164561298165336', '0.0164755542917869', '0.0164556124935377', '0.0164507196474088', '0.0164471687004911', '0.0164601098013086', '0.0164608579567913', '0.0164729301643477', '0.0164409632672129', '0.0164714560119053', '0.016453806137728', '0.016458409701723', '0.016446300156183', '0.0164759950195736', '0.0164447300416335', '0.0164623949207948', '0.0164359400870948', '0.0164562215912033', '0.0164493753055259', '0.0164598233107996', '0.0164437951962332', '0.0164648208428636', '0.0164373709693507', '0.0164554146371204', '0.0164451486108972', '0.0164645650602289', '0.0164504392635794', '0.0164504671798287', '0.0164356687760464', '0.0164534369453303', '0.0164388145883954', '0.0164527186253391', '0.0164332435518838', '0.0164442846029797', '0.0164340580084587', '0.0164485673045837', '0.0164290273258486', '0.016450102349345', '0.0164311430285965', '0.0164412099770665', '0.0164335047432918', '0.0164442961184326', '0.0164228450979527', '0.016437492579512', '0.0164196870722445', '0.016438840061973', '0.0164283787964808', '0.0164416083070495', '0.016412027202375', '0.016431280341648', '0.0164384511537241', '0.0164345854510949', '0.0164129589071972', '0.0164313105260926', '0.0164068407121982', '0.0164422922551586', '0.0164141230147952', '0.0164350718917399', '0.0163981727167739', '0.0164302013786105', '0.0164117635682952', '0.0164348827591505', '0.0164084963202615', '0.0164184283983518', '0.0164093013551022', '0.0164248964188505', '0.0163861197016389', '0.0164414938504271', '0.0163912936295035', '0.0164153211453222', '0.0164085420331198', '0.0164144138672182', '0.0163877472189763', '0.016438808830669', '0.0163928122734684', '0.016421485227656', '0.0164041312657219', '0.0164178255818423', '0.0163971898903201', '0.0164201696744052', '0.0163995320636409', '0.0164209146893099', '0.0164032430055628', '0.0164164507065617', '0.0163974777766416', '0.0164176661102679', '0.0163930417101427', '0.0164141233637484', '0.01640118889304', '0.0164288055661428', '0.0164032700494293', '0.0164078024269885', '0.0163929630212149', '0.0164272534226787', '0.0163858681064416', '0.0164185958958479', '0.0164030676566215', '0.0164018004333774', '0.0163995488133905', '0.0164085041717066', '0.0163987202242144', '0.0164206611748704', '0.0164022528510935', '0.0164241117977671', '0.016396216660077', '0.0164233505565425', '0.0164139434784166', '0.0164194745597963', '0.0163983088084895', '0.016435900480916', '0.0164233186273323', '0.0164390513530853', '0.0164271529241811', '0.0164633723384753', '0.016452145295368', '0.0165066871909724', '0.0165379624630295', '0.0170330815720343'], 'b1': ['0.0184759992200316', '0.018442149942613', '0.0187318928446685', '0.0186864332877884', '0.0188479230215774', '0.0188454845678811', '0.0188404723750983', '0.0187262068433619', '0.0187526368954241', '0.018602897614217', '0.0187456469175185', '0.0186707166166917', '0.0185607140585195', '0.0187588039890341', '0.0188965777575295', '0.0187075898280626', '0.0187674584136427', '0.0186381709667486', '0.0186427120172502', '0.0187927918685168', '0.0186624507666358', '0.0187624519813991', '0.0187392302005435', '0.0185522851677484', '0.0186472895511667', '0.018535703368402', '0.0186348291557698', '0.0186553691437886', '0.0187121064399131', '0.0186093935822463', '0.0187113848014579', '0.0186487433017847', '0.0187725126758178', '0.0187999361590481', '0.0187205484228188', '0.0188728539369552', '0.0187682175828836', '0.0187626176405413', '0.0188624825225437', '0.0187837980957813', '0.0188658971257905', '0.0186604942780519', '0.0189255700275998', '0.0186329430155887', '0.0188553270600577', '0.0187585744402754', '0.0188853157288465', '0.0188095644639038', '0.0189702224107457', '0.0190654765920908', '0.0188298321355244', '0.0189752702141345', '0.0190654219542494', '0.0188267308706973', '0.0190373731906741', '0.0189250398834323', '0.0189864086530676', '0.0190345625712336', '0.0188082665969675', '0.0190122781872102', '0.0188972889222771', '0.0185940174812091', '0.0187732280300485', '0.0188341576022108', '0.0188008229329601', '0.0188143481552986', '0.0188958311567378', '0.0186248391588775', '0.0188025980518404', '0.0189280180821948', '0.0188994067059584', '0.0187979548826894', '0.0188527726973303', '0.0189566842708345', '0.0188313071826812', '0.0188952770976046', '0.0189118414407716', '0.0185289364804688', '0.0186616668096203', '0.0188390641851084', '0.0188772853626504', '0.0188133788136582', '0.019095000402823', '0.0189106139222383', '0.0190673035558238', '0.0189999768176074', '0.0188888352437313', '0.0191460724704944', '0.0188107766209993', '0.0192259407753418', '0.0189064331672789', '0.0190127816234232', '0.0187168141969277', '0.0190825361670666', '0.0190127334443682', '0.0191085322585096', '0.0188582193744177', '0.0188903102908881', '0.0189330562846849', '0.0190078099289766', '0.0189027331554994', '0.0189810824236179', '0.0189551510946003', '0.0189044651576166', '0.0187674423539577', '0.0189472727717265', '0.0189907035714401', '0.019064578646224', '0.0188920054604669', '0.0190449437611056', '0.018889919447032', '0.0187988736014097', '0.0192020416947266', '0.0188233049209339', '0.0187371501222097', '0.0189721827396891', '0.0188261000043749', '0.0186942695412699', '0.0189034198815958', '0.0187198665844525', '0.0186137942850658', '0.0189533499660128', '0.0187808211189513', '0.0188594921044556', '0.0188539249797306', '0.0188040633235368', '0.0187732121449252', '0.018962250173627', '0.0190127418233343', '0.0191750319229475', '0.0189599365316131', '0.0190203120446422', '0.0190216017071741', '0.0186128352425711', '0.019228758377254', '0.0189206767113985', '0.0188962342199195', '0.0191006190232771', '0.0190500058785614', '0.0187485043195198', '0.0190170367417068', '0.0188547895842948', '0.0188974739577785', '0.0189445812034293', '0.0189157249169963', '0.0191215468876016', '0.0187773754437052', '0.0190317306552542', '0.0190325910703354', '0.0190408668704134', '0.0189401984804746', '0.0190495591749313', '0.0187950388279255', '0.0189297027780659', '0.0189593482583683', '0.0190509148218212', '0.0188672314761416', '0.0189148159737365', '0.0191385526975449', '0.0190494453606418', '0.0190579196374793', '0.019121285044911', '0.019044043895059', '0.0186976181601587', '0.0189873739797868', '0.0191378319318987', '0.0190663267080262', '0.0190936695437077', '0.0191095358142617', '0.0189574708462769', '0.0187806189763942', '0.0189485074472935', '0.0187745148995917', '0.018830215822347', '0.0188787988134019', '0.0189920377472294', '0.0188564391932454', '0.0190900863137682', '0.0189570108759505', '0.0190537807773504', '0.0188639551258354', '0.0189272838752905', '0.0189407244351591', '0.0191445909645512', '0.0190009035661702', '0.0190382999392369', '0.0191088417565699', '0.0189974830278224', '0.0189503359820826', '0.0189001894410414', '0.0186533777428459', '0.0188463448084005', '0.0188216286040289', '0.0190486301570651', '0.0189039538661228', '0.018976088908947', '0.0186541344682217', '0.0187053388537327', '0.0188468777455567', '0.0189798348304782', '0.0190289182901957', '0.0189938748355464', '0.0188985777120001', '0.0189140892729893', '0.0189945299659582', '0.0190288961208479', '0.0188169428418004', '0.0190174979339657', '0.0187582286333621', '0.0188360660863014', '0.0188666440757058', '0.018693495185153', '0.0187786836097873', '0.0186433495169208', '0.0188323175463432', '0.018976409578962', '0.0187435457172076', '0.018987845122068', '0.0186761889543627', '0.0190061624147675', '0.0187835201934057', '0.0188749633416704', '0.0189686084124011', '0.0188226435062976', '0.0187423426373254', '0.018996327428748', '0.0186609085131884', '0.0187348848338127', '0.0187956862776184', '0.0190963977699816', '0.0185138758125928', '0.0187250730645117', '0.0188906307863414', '0.0188630606712045', '0.0188464739841278', '0.0189781192371696', '0.0187965507076208', '0.0186990834318551', '0.0186847039040981', '0.0187928330651002', '0.0187593187717638', '0.0188783466983562', '0.0187352552539389', '0.0188740873905896', '0.0187454707846687', '0.0189869951806945', '0.0189396802065091', '0.0187842685398153', '0.0186674191444085', '0.0189300391586424', '0.0190247289817084', '0.01897844723878', '0.0188266460336656', '0.019144633383067', '0.0204797029287844'], 'SAMSN': '85B5', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Firmware': '2.06', 'IDDataBack': 'DLAB_2018-06-11_15-23-57_730_586', 'IDDataCal': 'DLAB_2018-06-13_11-56-08_604_111', 'IDDataCalAQ': 'DLAB_2018-06-13_11-58-21_312_112', 'IntegrationTime': '0', 'Reverse': '0', 'SerialNo_MMS': '', 'c0s': '300.14', 'c1s': '3.3268', 'c2s': '0.000314225', 'c3s': '-1.90331e-06', 'c4s': '+0.000000000E+00'}, + 'Esky': {'SN': '50ED', 'FUNC': 'Esky', 'TYPE': 'SAMIP', 'samsn': '859F', 'inifile': 'SAMIP_50ED_ALL.ini', 'calfile': 'Cal_SAM_859F.dat', 'calaqfile': 'CalAQ_SAM_859F.dat', 'backfile': 'Back_SAM_859F.dat', 'cal': ['+NAN', '+NAN', '+NAN', '+NAN', '0.549282530081406', '0.621825635483575', '0.705214779700439', '0.782494923890489', '0.848306874043027', '0.952625287085828', '1.06364941208026', '1.17099618224932', '1.27964867192574', '1.37878597375063', '1.42771820575638', '1.4380590385421', '1.41583530083466', '1.35751030831315', '1.28801896577964', '1.23773169248486', '1.19003370359023', '1.16911032524399', '1.16789019991587', '1.17908641221467', '1.20561721452238', '1.24993325867368', '1.3042108426727', '1.37841324495146', '1.46663415660191', '1.55813913029349', '1.66686169700722', '1.78274771118438', '1.89315285694338', '2.00609300108623', '2.10386062632617', '2.18077321675475', '2.23620955735442', '2.266135432154', '2.26878990322214', '2.25797663538301', '2.22685859649013', '2.17776313289299', '2.1222752364519', '2.06098344374156', '1.99948809108821', '1.94462577242816', '1.8989381397134', '1.8637403074385', '1.84137175128878', '1.82996842025894', '1.82735603324287', '1.82819560800875', '1.82831225824908', '1.82476779554239', '1.82142520789599', '1.82469614734563', '1.83514598035505', '1.85423698694933', '1.88102853388183', '1.91679111910883', '1.95713305118927', '2.0033013266641', '2.05191276620812', '2.10100127704333', '2.15116215495783', '2.19982933350689', '2.24341508467426', '2.28026480621138', '2.30634686430023', '2.31796219508283', '2.31589695847203', '2.29809543158409', '2.2668387918562', '2.22596956700897', '2.17822422289454', '2.1262484698939', '2.07154274835781', '2.01784816285075', '1.9635850159156', '1.90957838150673', '1.85662335754133', '1.80118393109592', '1.74752896056537', '1.69458207285898', '1.64238998731142', '1.59255947952261', '1.55042463825823', '1.52145095482736', '1.50182839545807', '1.48602912306116', '1.47501182897849', '1.46801797625318', '1.46252443118698', '1.4571840542778', '1.44881752975571', '1.433373570625', '1.4106211402034', '1.38310053980989', '1.35343439202405', '1.32469024445085', '1.29921323938482', '1.2757042981125', '1.25356245928469', '1.23230080447944', '1.20776661327865', '1.18172190161938', '1.16211138784545', '1.14836490545677', '1.13698033747357', '1.12673020620722', '1.115430409999', '1.10428562795353', '1.0934141739792', '1.0851095103506', '1.08102444265095', '1.08007408967758', '1.08238869164072', '1.08781099449618', '1.09202496629142', '1.09279743926351', '1.08928198225434', '1.08099296127192', '1.06779395728469', '1.05125732218958', '1.03307124483462', '1.01642561672595', '1.0017478853335', '0.98877464388953', '0.978591382441999', '0.970432000434175', '0.962460675619692', '0.953651636148435', '0.943103023421902', '0.930554197290447', '0.915976069829803', '0.89827602173614', '0.878650755188226', '0.859108524352699', '0.840122962860222', '0.820853477964574', '0.803547895709764', '0.786651104537257', '0.769194844035412', '0.751217544779413', '0.731862968408631', '0.710478767970412', '0.687207420135085', '0.662469528888512', '0.636358233772055', '0.609121332586544', '0.580838486227566', '0.552767035926316', '0.525876935395925', '0.499896413074609', '0.475284681533185', '0.452387885405863', '0.431848904268036', '0.413013739466993', '0.395710805209202', '0.380181587532903', '0.365591896979342', '0.352105459639395', '0.339276260510366', '0.32616389487977', '0.313880254968568', '0.301213081346406', '0.28867892621412', '0.276332017077307', '0.263867205519659', '0.251559483539307', '0.239917175566115', '0.228872841726392', '0.218348838385983', '0.208663588155861', '0.199488791575245', '0.191252859631973', '0.183364916996847', '0.175877803627425', '0.169219899131997', '0.162866423884395', '0.156727192611269', '0.151124000714184', '0.145138407523578', '0.13971586046093', '0.134506608902369', '0.129059486722317', '0.124203168251957', '0.119075347065844', '0.113513221481262', '0.107843336832916', '0.101790305051534', '0.0961960826886135', '0.0914035900672732', '0.0868727278958915', '0.082573024301116', '+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', '+NAN'], 'calaq': ['+NAN', '+NAN', '+NAN', '+NAN', '0.308009257704273', '0.348985396550329', '0.39611199753429', '0.43986968240828', '0.477232425339663', '0.536318311921194', '0.599255756896796', '0.660195405447511', '0.721940911560072', '0.778381764258939', '0.806518994572799', '0.812862184246214', '0.800779958731845', '0.768238986615194', '0.729324871828135', '0.701235591002145', '0.674572715683613', '0.663056816542841', '0.662699926877705', '0.669382520005193', '0.684772623825422', '0.710275115045633', '0.74145572495904', '0.783988164111933', '0.834525694448954', '0.886966821712609', '0.949247521262016', '1.01565043430167', '1.07897249264832', '1.14377888540009', '1.19997013476615', '1.24429313837597', '1.2763795229717', '1.29391228294411', '1.29587029284695', '1.29012478792631', '1.27276079346714', '1.2450982196578', '1.21375364521069', '1.17906121512383', '1.14422362714978', '1.11315509839511', '1.08731507394343', '1.06746197368796', '1.05494171300318', '1.04869254224893', '1.04747349722362', '1.04822757370139', '1.04856210675178', '1.04679141002185', '1.04513065036628', '1.04725995618916', '1.0535067386541', '1.06471361999517', '1.08034380002613', '1.10113009018595', '1.12455239246124', '1.15132895471663', '1.1795169782144', '1.20798673857183', '1.23708055274173', '1.26532262623006', '1.29064822236823', '1.31210337451311', '1.32736540301797', '1.33430139824988', '1.33335932325033', '1.32335113190924', '1.30558590461423', '1.28227321775146', '1.25498704776805', '1.22525023251367', '1.19392661641762', '1.16317225749886', '1.13207700011805', '1.10111674556499', '1.07075040366943', '1.03893893539784', '1.0081446443131', '0.97774721715577', '0.947774052897518', '0.919152947182789', '0.894963764571428', '0.87836395884067', '0.867156996532193', '0.858153034494107', '0.851906778357719', '0.847981268808314', '0.844919850173329', '0.841944554421527', '0.83721825473176', '0.828398944802337', '0.815351600734525', '0.799543228463232', '0.782489183888857', '0.765962841341892', '0.751320667184625', '0.737812095757199', '0.725090001717255', '0.712873061263532', '0.698758948036327', '0.683766639638848', '0.672493396285743', '0.664610527729123', '0.658092136872804', '0.652228157780532', '0.645754399378545', '0.639368207275896', '0.633138158063289', '0.628392493836991', '0.626088937445665', '0.625599854321674', '0.627001238574581', '0.630202545823175', '0.632703647598273', '0.633210363154327', '0.63123164301687', '0.626485370072314', '0.618891745640103', '0.609361448964366', '0.598872648152344', '0.58927447780469', '0.580815044730471', '0.573341941514821', '0.567484926926375', '0.562800136636572', '0.558223116403165', '0.553158922485434', '0.547084299354418', '0.539847820827437', '0.531432360197925', '0.521203701656628', '0.509855867118928', '0.498554054755033', '0.487573187562371', '0.476425489189536', '0.466415695619565', '0.456641365086098', '0.446540473657011', '0.436135290849149', '0.424928637592468', '0.412541586513936', '0.399056656796071', '0.384717912438278', '0.369579305401316', '0.353784632326527', '0.337380068381195', '0.321095903578543', '0.305495669126019', '0.290421643260465', '0.276140762920409', '0.262854333224098', '0.250936131068681', '0.240006392992584', '0.229965608856624', '0.220954309792884', '0.212487857424938', '0.204661532835082', '0.197216204057537', '0.189605277840326', '0.182475141050851', '0.175121099828465', '0.167843462384963', '0.160673785509465', '0.153434661065448', '0.146286002352245', '0.139523451810534', '0.133107862589632', '0.126994143420237', '0.121367561058691', '0.116037239577153', '0.111252442566666', '0.106669531239736', '0.102319284531729', '0.098450973344807', '0.0947593486764351', '0.0911919684356708', '0.0879361030612687', '0.0844573547823388', '0.0813058869947144', '0.0782782092672921', '0.0751117681314502', '0.0722888539254525', '0.0693076153913147', '0.0660732713239472', '0.0627758734115707', '0.0592551057473219', '0.0560010918166818', '0.0532135140872552', '0.0505779890461858', '0.0480767985810033', '+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', '+NAN'], 'b0': ['0.0165892037855774', '0.0165122714877024', '0.0164973019224162', '0.0166164505683762', '0.0165490556826164', '0.0165598147795938', '0.0164974439463348', '0.0165638938670541', '0.0165295399561229', '0.0165679375357729', '0.0165135498774463', '0.0165496044113927', '0.0165162233817516', '0.0165748471564411', '0.0165168071803162', '0.016561615028724', '0.0165228899565738', '0.0165630265440819', '0.0165138880130166', '0.016557182975186', '0.0165155392591658', '0.0165657065040199', '0.016518681058554', '0.0165595148543898', '0.0165168741793146', '0.0165713147040385', '0.0165192898072665', '0.0165624174464164', '0.0165336104942318', '0.0165711529642688', '0.0165277786152653', '0.0165778362888406', '0.0165368341231259', '0.0165763434674064', '0.0165347332508855', '0.0165844704110229', '0.0165276158286362', '0.016561547855249', '0.0165227810832013', '0.0165862270410135', '0.0165383602695828', '0.0165776928691096', '0.0165375732058275', '0.0165658438170714', '0.0165459794864142', '0.0165800024153139', '0.0165525603932462', '0.0165907623846741', '0.0165508449397234', '0.0165903560287695', '0.0165476473078365', '0.0165857165226035', '0.0165481178711146', '0.0165957271151451', '0.0165507685189908', '0.0165883062781607', '0.0165548565047555', '0.0166030835702795', '0.0165500053585241', '0.0165961038100348', '0.0165517131350783', '0.0166133108627067', '0.0165473248751564', '0.0165983146025071', '0.0165525591719102', '0.0166064242729443', '0.0165435383848847', '0.0165950365369267', '0.0165586482293239', '0.0166092385798323', '0.0165697841956677', '0.0165967129077004', '0.0165732545344154', '0.0166026855892496', '0.0165687354170748', '0.0166129015407006', '0.0165534954131229', '0.0166168593669527', '0.0165646865140591', '0.0166018156491291', '0.0165586096700045', '0.0166129247460829', '0.0165712166482126', '0.0166143243970348', '0.0165701301826831', '0.0166189659969196', '0.0165676643054824', '0.0166299271377517', '0.0165751742999882', '0.0166072596667062', '0.0165629157514673', '0.0166089130065742', '0.0165693558557167', '0.0166203017894511', '0.0165698981288603', '0.0166107804291794', '0.0165637935430329', '0.0166245248200721', '0.0165754381085446', '0.0166166770389491', '0.01656780789969', '0.0166270111110302', '0.0165662229546329', '0.0166136421936913', '0.0165698424708382', '0.0166173691874565', '0.0165821997730911', '0.0166164975025705', '0.0165739878593907', '0.016623824645643', '0.0165631308810639', '0.0166247172677161', '0.0165669479047333', '0.0166042075482691', '0.0165806895040011', '0.0166075213815439', '0.0165708319274012', '0.0166233251192561', '0.0165772010196913', '0.016621139974838', '0.0165690780890356', '0.0166295818486425', '0.0165801878838955', '0.0166132293821539', '0.0165742146789166', '0.0166257485986531', '0.0165839324997932', '0.0166274820232614', '0.0165711257459257', '0.0166118375826471', '0.0165702390560556', '0.0166138555785223', '0.0165495885340259', '0.0166076853895089', '0.0165715106412136', '0.0165914878582042', '0.0165708420470416', '0.0166090042578143', '0.0165677817282062', '0.0166140523880802', '0.0165772907006423', '0.0166172060518744', '0.0165733789362016', '0.0166208616847272', '0.0165699940909675', '0.0166094990733341', '0.0165568282643426', '0.0166152531357555', '0.0165675189665092', '0.0166057366608274', '0.0165695308557048', '0.0165973481768498', '0.0165636400036615', '0.0166118299056785', '0.0165665354421491', '0.0165949780872796', '0.0165594520428288', '0.0166050473039449', '0.0165700478297475', '0.0166062033856213', '0.0165620390067611', '0.0165990297819202', '0.016574294763657', '0.0165960321001693', '0.016567221483977', '0.0166072507684017', '0.0165554031398131', '0.0166002793830319', '0.0165516576515327', '0.0166026362123836', '0.0165560230550254', '0.0166113124082061', '0.0165672890064051', '0.016604050693843', '0.0165640243755198', '0.0166057021144688', '0.0165508046356384', '0.0165935180674385', '0.0165675029146658', '0.0165893028882626', '0.0165492090475113', '0.0165956159735774', '0.0165528561310127', '0.0166073952349921', '0.0165463099450159', '0.0166001891786512', '0.0165482056328235', '0.0165952621351168', '0.0165536456374398', '0.0165997360630289', '0.0165524916494821', '0.0165986206343906', '0.0165521507222869', '0.016599824522644', '0.0165434263709342', '0.0166010940140834', '0.0165431388335659', '0.0165863373101985', '0.0165434326520903', '0.0166064767903884', '0.016561522556148', '0.0165987263671851', '0.0165499257972134', '0.0165839637310972', '0.0165457994266058', '0.0165795458101604', '0.0165524665248577', '0.016595737060309', '0.0165466772181714', '0.0165879578484734', '0.0165430683450362', '0.0165948067512992', '0.0165396531408809', '0.0165652856665609', '0.0165523227561735', '0.0165783818770389', '0.0165503544861175', '0.016572293692008', '0.0165450638334354', '0.0165749698134617', '0.01655305398743', '0.0165967214570518', '0.0165454616399886', '0.0165946692637712', '0.0165392806334286', '0.0165890797327443', '0.0165355112418597', '0.0165804930433963', '0.0165460245013662', '0.0165847202614547', '0.0165448417247764', '0.0165611542361331', '0.0165515342966058', '0.0165765880835414', '0.0165339756736686', '0.0165878632821788', '0.0165440089481629', '0.0165963711081224', '0.0165516928957975', '0.0165934388550809', '0.0165544309564294', '0.0165877533619469', '0.0165399865655842', '0.0165907330726123', '0.016550628937744', '0.0166034288593887', '0.0165659505967252', '0.0166105647761531', '0.0165655829746165', '0.0166172674676229', '0.0165796119367761', '0.0166424952076873', '0.0166246136286404', '0.0167334388455894', '0.0171297295465388'], 'b1': ['0.018605511502516', '0.0184837131056956', '0.0183851120510798', '0.0184840774161591', '0.0185292503425739', '0.0186302980552904', '0.0183759157866635', '0.0186312056020559', '0.0185970883722841', '0.018610557385725', '0.018696732782741', '0.0185527901750176', '0.0184841121539561', '0.0185602766066645', '0.0183555554227304', '0.0185179326286786', '0.0185996666499772', '0.0186817794703681', '0.0184706934143117', '0.0185104139030999', '0.0185717901788923', '0.0185864488309574', '0.0184904599190226', '0.0185467707606851', '0.0185513739551852', '0.0186439978394227', '0.0185915799003217', '0.0186942077463949', '0.0186620183770728', '0.0186390987626822', '0.0185678106936811', '0.0186122998615499', '0.0184338018739524', '0.0186563994074951', '0.0186582494133848', '0.0184381484626158', '0.0187957369005385', '0.0184585601477162', '0.018382363401076', '0.0185619393077496', '0.0188072553604966', '0.018482204891798', '0.0185649745882186', '0.0189122127337069', '0.0186279875553889', '0.0184615582465232', '0.0185698745377681', '0.0185120261558266', '0.0184379972921025', '0.0185804266236362', '0.0185466583428899', '0.0185885491584593', '0.0184078979511364', '0.0184049089295427', '0.0184970417714545', '0.0184417327399261', '0.0183843069720872', '0.0185357707492544', '0.018271672720313', '0.018684147226538', '0.0187957920620654', '0.0182829548236024', '0.0184118543941909', '0.0184413151881155', '0.0184057733595452', '0.0182871827102461', '0.0183972310036081', '0.0185852110132782', '0.0183187237570663', '0.0184794824260633', '0.0185034061198914', '0.0181402547467266', '0.0184165518520597', '0.0183788985240326', '0.0181609569026518', '0.0186252303518572', '0.0183105499010758', '0.0181418076484435', '0.0183057028437498', '0.018502016957137', '0.0184040678908206', '0.0184980723842845', '0.0184303921584359', '0.0185389638335849', '0.0182085812003356', '0.0184602108040376', '0.0184275042081207', '0.0185323186152219', '0.0182322636497648', '0.0183371464850892', '0.0182259586523378', '0.018483065481441', '0.0182905728748417', '0.0184016187888549', '0.0183132295991711', '0.0181924879994499', '0.0184099916452902', '0.0187024550929006', '0.0183715293979111', '0.0183022039271567', '0.0184077949596782', '0.0183611756142407', '0.018411879705651', '0.0183403743072167', '0.0184016243748323', '0.0184520221102946', '0.0183486391099018', '0.01861046347148', '0.0185649627180167', '0.0184582639163523', '0.0186787228933602', '0.0185190477294169', '0.0186510274428554', '0.0186025957968757', '0.0183767100428249', '0.0183237705130843', '0.0183277608211268', '0.0185572685578353', '0.0184446809140601', '0.0186042166031303', '0.0186733833972142', '0.0186773335560441', '0.0184308924525366', '0.0186073100126766', '0.0183468275076066', '0.0185506345114271', '0.0186062746866781', '0.0184876664066378', '0.0182968567502917', '0.0184814123812545', '0.0186338901878814', '0.0185727479994544', '0.0184737700659259', '0.0185519168423637', '0.0184109360245942', '0.0186137698464147', '0.0184927182249478', '0.0183322589294271', '0.0184634239629744', '0.0185381407747276', '0.0183129747389523', '0.018566407740545', '0.0184619363473684', '0.0185385801467623', '0.0184219012982279', '0.0184126872285087', '0.0186440826764544', '0.0184714934310123', '0.0186275679088368', '0.0184197444127049', '0.0184460824707018', '0.018243945325', '0.018415498022511', '0.0184500097619367', '0.0185133976878398', '0.0184093356420695', '0.0185570035730324', '0.0186677780434563', '0.0187476308123041', '0.0184833070749635', '0.0183987680202018', '0.0183971864903508', '0.0184699862644854', '0.0186248246702486', '0.0185793174579989', '0.0187341727962561', '0.0185118727160099', '0.0185141533658448', '0.0185683596905223', '0.0185158860662092', '0.0183562021741761', '0.018351702145696', '0.0183285858001638', '0.0184325741808572', '0.0182299784613234', '0.0183180300484981', '0.0186951084852505', '0.0184788363728647', '0.0183958849576168', '0.0184240855899527', '0.0185323332784126', '0.0186074587393249', '0.0186410439047495', '0.0184129410413568', '0.0183934452819879', '0.0185733495393955', '0.0185109349700541', '0.0185722325184776', '0.0184577447695778', '0.0184457087339014', '0.0183168259212451', '0.0184703884548581', '0.0184217183574681', '0.0185029386434078', '0.0186379566048659', '0.018342027581965', '0.0184254820843023', '0.0186074793376165', '0.0184241568111645', '0.0182465302360413', '0.0184340305499022', '0.0186743681002925', '0.0184118549178763', '0.0184971573313619', '0.0183981095731159', '0.018496162154576', '0.0184611797965545', '0.0186299800037023', '0.018466689839573', '0.0186946017323634', '0.0185245357776493', '0.018476103782546', '0.0182796915654308', '0.0185767679830018', '0.0183549425362727', '0.0183019200896801', '0.0185407187032971', '0.0184576592342989', '0.0184396004676159', '0.0183728665412509', '0.018711382183031', '0.0185027394684012', '0.0184419015411806', '0.0184852501222893', '0.0186597281263393', '0.0187948452388963', '0.0182642088071376', '0.0186078693086637', '0.0186437127800135', '0.0185804302894338', '0.0185832597615481', '0.0185230038233477', '0.0187595940557125', '0.0185726041605364', '0.018819251596084', '0.0186927800054842', '0.0187059691963698', '0.0186125063681518', '0.0187091867193515', '0.0187669087185543', '0.0187420275532877', '0.0185165169325316', '0.0184496782690904', '0.0184827699483242', '0.0184833114390083', '0.0188096297500146', '0.0186457825592016', '0.0186986550572133', '0.018635516056428', '0.0185666859920442', '0.0185794000257273', '0.0185533461543306', '0.0186423201260233', '0.0186220849228963', '0.0196555486961812'], 'SAMSN': '859F', 'c0s': '+3.019290000E+02', 'c1s': '+3.345130000E+00', 'c2s': '+2.651460000E-04', 'c3s': '-1.753680000E-06', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Reverse': '0', 'c4s': '+0.000000000E+00', 'IDDataCal': 'DLAB_2019-08-28_14-44-55_098_198', 'IDDataBack': 'DLAB_2019-08-28_12-24-09_763_812', 'IDDataCalAQ': 'DLAB_2019-08-28_14-47-19_914_233', 'Firmware': '2.06', 'IPSN': 'C121', 'Incl_Orientation': 'up', 'Incl_Xgain': '1.0', 'Incl_Xoffset': '125', 'Incl_Ygain': '0.9375', 'Incl_Yoffset': '126', 'Incl_KBG': '1.2073', 'Incl_Kref': '0.1275', 'Press_Current_mA': '1.08', 'Press_Surface_bar': '5.57', 'Press_Gain': '2.7', 'WithIncl': '1', 'WithPress': '1', 'Press_Sens_mV_bar_4mA': '71.36', 'Press_Sens_mV_bar_1mA': '17.84', 'Press_Type': 'PA-10/TAB/10bar', 'CalibrationDate': '08.06.2018'}, + 'Lwater': {'SN': '852F', 'FUNC': 'Lwater', 'TYPE': 'SAM', 'samsn': '852F', 'inifile': 'SAM_852F.ini', 'calfile': 'Cal_SAM_852F.dat', 'calaqfile': 'CalAQ_SAM_852F.dat', 'backfile': 'Back_SAM_852F.dat', 'cal': ['+NAN', '+NAN', '+NAN', '+NAN', '0.099081925071204', '0.107353085872454', '0.113070264290883', '0.114376499819276', '0.116544285861757', '0.1185169696214', '0.121561138979849', '0.126964155564462', '0.134364254054539', '0.144053858633949', '0.154882735476408', '0.16719673162462', '0.181437615712041', '0.194237970806716', '0.20386154720656', '0.211556336359081', '0.211417859085921', '0.208790218500257', '0.20437467341685', '0.198246352046376', '0.192966396099738', '0.18897229193584', '0.186243043953596', '0.18578727224224', '0.187114583931684', '0.189090911319999', '0.193600418301244', '0.200054490546523', '0.208072057884887', '0.218285958582262', '0.230634876630779', '0.243459214546046', '0.257752719558026', '0.272580246630834', '0.286712281491418', '0.300342726342385', '0.312249154496702', '0.321331680226083', '0.327112591435919', '0.329469692698771', '0.327542874308678', '0.322985767437387', '0.316224456423823', '0.308782990589082', '0.301183418606427', '0.293575702556702', '0.286696408065096', '0.280798842600295', '0.275808444038661', '0.271299340181449', '0.266225534078626', '0.260785177597799', '0.255342424416527', '0.250947812402455', '0.24777514930692', '0.246247860756574', '0.246092032695547', '0.247219177075727', '0.249675195006791', '0.253195744885965', '0.257788026175471', '0.26369589320837', '0.270555680751329', '0.277823002163503', '0.284937579021833', '0.291097253127256', '0.296043211270752', '0.299540235735164', '0.301795150475552', '0.303069111244916', '0.30355995799167', '0.303606664702465', '0.303007474849756', '0.302001653949665', '0.300361927400822', '0.297986890885497', '0.295325565249305', '0.291656567474701', '0.287335862742648', '0.282306131698578', '0.276702242286357', '0.270280607979823', '0.263050805729498', '0.255009286552014', '0.247098798503932', '0.2398191835424', '0.23466817932016', '0.230585310303585', '0.227279061892254', '0.224693206022759', '0.222993136629962', '0.221791418806722', '0.220695274517678', '0.219442816624831', '0.217000405185694', '0.213283732282521', '0.208384750595562', '0.202985389753009', '0.197924660371165', '0.193409646692029', '0.189628652821804', '0.186318519164064', '0.183315563032657', '0.180098687261504', '0.176492614557115', '0.172650422408531', '0.168979191040057', '0.166106531649937', '0.163622827054655', '0.161570328667133', '0.159693607722301', '0.157690305409947', '0.15544650006387', '0.153185383511044', '0.150954772341381', '0.148960802743881', '0.147350785081686', '0.146182367433256', '0.145312879880878', '0.144781245193999', '0.14473607505965', '0.144976432177203', '0.145464936657928', '0.145889790468872', '0.146174517595681', '0.14615421098877', '0.145743119998859', '0.144922809795091', '0.143805231938307', '0.142492952453543', '0.141053445832183', '0.139720571628269', '0.138186469198598', '0.136919534961634', '0.135732624874463', '0.134597268963386', '0.133432724955799', '0.13211501546202', '0.130478475600008', '0.128290801143951', '0.125726707508103', '0.122634784100445', '0.119472073398083', '0.116199128230447', '0.112813911251756', '0.109547291781198', '0.106268392530964', '0.10313443150471', '0.100113578226984', '0.097073834113113', '0.0941199411272616', '0.0911853891891621', '0.0882319764053268', '0.085267274530049', '0.0822333903307463', '0.0792187073154596', '0.0760907077820793', '0.0728848234132589', '0.0697048920692252', '0.0665600438164166', '0.0635411651500916', '0.0606319242880778', '0.0578670530064308', '0.0553155735461356', '0.0529193006810867', '0.050722718025932', '0.0486788470977319', '0.0467747209472673', '0.0450423813898501', '0.0434307741189043', '0.041915712424757', '0.0405250313895705', '0.0390895391040532', '0.0377897158697839', '0.0365016922380464', '0.0351788001916396', '0.0338645937424847', '0.0325302009051183', '0.0312848146149282', '0.0300375958148976', '0.0288302935207691', '0.027652203865544', '0.0264621566936286', '0.0252688692008588', '0.0241226625595337', '0.0229255436965288', '0.0217207281738409', '0.0205701146867025', '0.0193892949195812', '0.0183936626191952', '0.017494647116465', '0.0167605279940225', '+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.0757791569140749', '0.0831133762408903', '0.0873256015093429', '0.088798490578607', '0.0893180250587088', '0.0912184306930603', '0.0934315009445713', '0.0978927038642625', '0.10316713605413', '0.111042352696646', '0.119482024262908', '0.129446496806651', '0.140324929207819', '0.149929004563169', '0.157951375798488', '0.163167079267684', '0.163684554455683', '0.161710955408623', '0.158158176144384', '0.153120816765498', '0.149159625705894', '0.146361065436421', '0.144318454214309', '0.144129633718655', '0.144738939517372', '0.146583353055999', '0.149927549178646', '0.154781330782628', '0.161281049713208', '0.169324782015295', '0.178566729488516', '0.188750791302883', '0.199826540979236', '0.211193704798505', '0.222305048038871', '0.232787040612667', '0.242185638548782', '0.249199329450493', '0.253905646769863', '0.255480704613068', '0.254086308176615', '0.250712203525897', '0.245637528877396', '0.239859851966525', '0.233843628655063', '0.228059104546805', '0.222661940533832', '0.218199567518201', '0.214240155949967', '0.21061280671042', '0.206823867975479', '0.202504211638902', '0.198378089686984', '0.195008429198418', '0.192596053511712', '0.1913409806608', '0.191204589224151', '0.191982450755957', '0.193875999271111', '0.196568015329539', '0.200197325412529', '0.204781342874412', '0.210052890237844', '0.215505542064364', '0.22102191587617', '0.225647984382987', '0.229501509141454', '0.232213608637945', '0.233859853462842', '0.234864695710533', '0.235347731196379', '0.235169523165461', '0.2348286160222', '0.23395735104209', '0.232593294508701', '0.230910869907075', '0.228844605598996', '0.226021135136259', '0.222713212172475', '0.218813740820075', '0.214437631947854', '0.20945948892298', '0.203847193841702', '0.197707092492944', '0.191556734852924', '0.18600061167507', '0.181873354953207', '0.178782316057322', '0.176167924779435', '0.174141863608666', '0.172744990342331', '0.171801376758966', '0.170954015345458', '0.169960140045412', '0.168049955384139', '0.165224777136175', '0.161531979240228', '0.157405412608478', '0.153570487964493', '0.150141271545146', '0.14725256652001', '0.144660342475923', '0.142269456600007', '0.139762314536934', '0.136963054606891', '0.133984343960448', '0.131197679174342', '0.129003116254732', '0.127069994503092', '0.125436648144931', '0.12397269238396', '0.122419985358787', '0.120693422850158', '0.118931546980571', '0.117166660339047', '0.115631793601506', '0.114393230429202', '0.113425752529033', '0.112707849783804', '0.112359222280159', '0.11219082672674', '0.112343608199868', '0.112664705152637', '0.112877954686814', '0.112998494144185', '0.112887922565457', '0.11253063359053', '0.111841159102354', '0.110997003525569', '0.109948198155768', '0.108874849717231', '0.107795318097265', '0.106637360724801', '0.105678694194695', '0.104756017092462', '0.103825430274706', '0.102939456306441', '0.102001186921616', '0.100737446991222', '0.0991453606719906', '0.0971498679860747', '0.0948117209915638', '0.0924075366042346', '0.0899484551808979', '0.0873520434504222', '0.0848497958878303', '0.0823900490277647', '0.0799786063537234', '0.0776610830064481', '0.0752837851752474', '0.0729604964467151', '0.0707262742573907', '0.0684046065784823', '0.0660274200992436', '0.0636252573638505', '0.0612270512870042', '0.0587905905539405', '0.0563195707029216', '0.0538582650571118', '0.0514203967394221', '0.0490721477077881', '0.0468328465329872', '0.044723244642693', '0.0427398639178554', '0.0408841538190041', '0.0391762093418711', '0.0375882143782858', '0.0361234008364646', '0.0347811387811729', '0.0335210387242261', '0.0323747022105674', '0.0312594345687719', '0.030174948252246', '0.0291339080526091', '0.0281312995576928', '0.027138393963344', '0.0260756668210364', '0.0250906058668046', '0.0240551778532538', '0.0230712653382013', '0.0221310389230639', '0.0211757703478467', '0.0202209094313405', '0.0192572613107586', '0.0182920464007378', '0.0172950661682144', '0.0163207919630062', '0.0153269728531649', '0.0143853788804443', '0.0135213976548868', '0.0127456574145877', '0.0120278700767597', '+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'], 'b0': ['0.0181271394490075', '0.0179948670252732', '0.0180195207374602', '0.0181005261905924', '0.018089553708784', '0.0180460947386496', '0.0180426749981038', '0.0180534564280807', '0.0180790359128869', '0.0180635226786445', '0.0180649523395645', '0.0180630058790784', '0.0180600544336154', '0.0180597668962471', '0.0180588020408788', '0.0180498552319141', '0.0180704773142647', '0.0180562171706652', '0.0180717635554537', '0.0180430410499234', '0.0180523488508876', '0.0180618142041841', '0.0180579205853055', '0.0180626933915622', '0.0180613022899616', '0.0180574472304024', '0.0180710633810246', '0.0180638238251844', '0.0180615148024098', '0.0180669541091198', '0.0180750465063777', '0.0180621163975833', '0.0180742925931686', '0.0180599654505706', '0.0180625609638543', '0.018079003460247', '0.0180789446616468', '0.0180641596925595', '0.0180789860125912', '0.0180726758933779', '0.0180883707577176', '0.0180761767655234', '0.0180788425928601', '0.0180748167207502', '0.018087924097728', '0.0180769134055532', '0.0180908061015206', '0.0180821035597377', '0.0180826006434528', '0.0180812086694694', '0.0180992416941691', '0.0180889166948691', '0.0180883470289057', '0.0180961206574913', '0.0180961166445305', '0.0180882432153534', '0.0180960383045557', '0.0180981065496797', '0.0180892262162838', '0.018090062656905', '0.0181151497688632', '0.0180994168686337', '0.0180945880554018', '0.0181024354875717', '0.0180812022138367', '0.018095840622615', '0.0181047246200187', '0.0180913783846324', '0.0181042299789754', '0.018097802960468', '0.0180910716548426', '0.0181013286082848', '0.0180952437383085', '0.0181025522123893', '0.0180982995207534', '0.0180837411967154', '0.0181112380044225', '0.0181073538072781', '0.018103745283096', '0.0180962696604722', '0.0181080471771214', '0.0180900361364681', '0.0181011494208593', '0.0181086649986149', '0.0181182547536976', '0.0181057997445719', '0.0181089392757648', '0.0181055429150778', '0.0181146218027973', '0.0181128730242519', '0.0181162224507446', '0.018127437978399', '0.0181252793544177', '0.0181109518628667', '0.0181264111838525', '0.018109165222908', '0.0181143328696165', '0.0181233651720949', '0.0181237422159377', '0.0181142894249535', '0.0181268594141312', '0.0181223244194237', '0.0181331201564784', '0.0181055589669212', '0.0181385395728607', '0.0181050559510032', '0.0181237826944993', '0.0181113664191696', '0.0181140599882791', '0.0181137768128247', '0.0181257021111189', '0.0181361358093148', '0.0181222916178307', '0.0181118017381829', '0.0181256476744327', '0.0181248496186543', '0.0181254770363585', '0.0181331583668447', '0.0181230066227672', '0.0181144363342157', '0.0181321676889458', '0.0181179351126425', '0.0181364284065034', '0.0181453949313192', '0.0181325621804444', '0.0181156688366246', '0.0181297948077507', '0.0181383919656923', '0.0181374979478067', '0.0181199012889798', '0.0181422937849691', '0.0181196791803209', '0.0181355928382649', '0.0181084210803862', '0.018133168137532', '0.0181404589894803', '0.0181418954549861', '0.0181177946590129', '0.0181147076452641', '0.0181089181641013', '0.0181443674388664', '0.0181377502409103', '0.0181289850620429', '0.0181158340659255', '0.0181305586661236', '0.0181270701818138', '0.0181084884283378', '0.0181265399475526', '0.0181359089897888', '0.0181099418180697', '0.0181312042293899', '0.0181193782082575', '0.0181291396482737', '0.0181114958807759', '0.018131541667054', '0.0181167600130213', '0.018133784563213', '0.01811013496362', '0.018139256671516', '0.0181215378790981', '0.0181241962039428', '0.0181255386265836', '0.0181152391008612', '0.0181239868320727', '0.018128921378099', '0.0181191986718789', '0.0181302022105147', '0.0181156925654366', '0.018128299020215', '0.0181149622065629', '0.0181265924649967', '0.0181200464534764', '0.018134817115486', '0.0181138528846042', '0.0181302275096157', '0.0181219730236349', '0.0181227435121171', '0.0181128882037125', '0.0181298839652721', '0.0181217728990224', '0.0181271213034454', '0.0181002302783493', '0.0181198512142075', '0.0181077788321745', '0.0181113704321304', '0.0181110165936699', '0.0181200574454996', '0.0181026958065969', '0.0181267051768535', '0.018099050467861', '0.0181217983725999', '0.0181250125797599', '0.018113538826799', '0.0181123129544992', '0.0181229691103072', '0.0181081715789076', '0.0181231769118883', '0.0181145502674084', '0.0181123405217955', '0.0181137211548025', '0.0181167594895916', '0.0181050918931742', '0.0181182652222911', '0.0181006336681525', '0.0181259247432075', '0.018101253059935', '0.018119688602055', '0.018109630726366', '0.0181146952574284', '0.0181041917686091', '0.0181114787820732', '0.0181135109105496', '0.0181156468525783', '0.0180992396004504', '0.0181260718269463', '0.0181003136781442', '0.0181070481243477', '0.0181074850136501', '0.0181076732738566', '0.0181037805273608', '0.0181054610855719', '0.0180953817492662', '0.0181251186615074', '0.0181015350140535', '0.0181170220768121', '0.0180958751689736', '0.0181153706561862', '0.0181087792807607', '0.0181190203568361', '0.0181090340165361', '0.0181264401469612', '0.0181213607853913', '0.0181053968781984', '0.0181112694102031', '0.0181143349633352', '0.0181028416689998', '0.0181058145750794', '0.018112246653407', '0.018102646778684', '0.0181018787328736', '0.0181089858610059', '0.0181129695097887', '0.0181304682872664', '0.0181118867082669', '0.0181302966023328', '0.0181224601621861', '0.0181439211278299', '0.0181333813478864', '0.0181515932110585', '0.0181361972250634', '0.0181645852590311', '0.018168622995547', '0.0182029242145575', '0.01826668143855', '0.0187321041138753'], 'b1': ['0.0246216519286131', '0.024510637261161', '0.0246496004937187', '0.0246158903420498', '0.0244170047588795', '0.0245126709060577', '0.0246256846551714', '0.0247016785610073', '0.0245795106168697', '0.024601391414026', '0.0247430929974417', '0.0246690990460763', '0.0246595979967682', '0.024549218035998', '0.0245417076893854', '0.0249321420235364', '0.0245095865737246', '0.0245109975567032', '0.0246271043662396', '0.0249088567021879', '0.0244657876231882', '0.0248177038501861', '0.0247746806522609', '0.0246467759093347', '0.0244827044066167', '0.0246539416709665', '0.024721638131062', '0.0244816703025508', '0.0248143197952532', '0.0247325126325631', '0.0245241834309148', '0.0244880571694591', '0.0247891481591618', '0.0245174540737672', '0.0248839095525633', '0.0244844522938572', '0.024819053561975', '0.0246153722426461', '0.0244569738236619', '0.024594164032081', '0.024739169721128', '0.0246157473759408', '0.0245033974853286', '0.0247480762129667', '0.0246028704761041', '0.0245055458173238', '0.02469614722145', '0.0244073975760008', '0.0245040215437411', '0.0244248794159556', '0.0244697287048048', '0.0246472875499521', '0.0246650067939463', '0.0244401485106133', '0.0243791267698239', '0.0246499286698909', '0.0243780806209942', '0.0247780093711051', '0.0247202135322636', '0.0245516643449751', '0.0244492274695042', '0.0246700816544131', '0.0246774251199509', '0.0245070955769284', '0.0246320020464858', '0.0244041100537399', '0.0245954472358265', '0.0243854736620815', '0.0245493665880845', '0.0247136054955626', '0.0246331129577409', '0.0247415952572516', '0.0248944354541623', '0.0247328998106215', '0.0246575704615342', '0.0247710366748172', '0.0247250916615888', '0.0247268100478861', '0.0248027810861271', '0.0248363912138882', '0.0249100102065207', '0.0245452771289432', '0.0246815472221476', '0.0246684887780455', '0.0248864084046402', '0.024731509076811', '0.0246692868745663', '0.0245807166643024', '0.0247555966841634', '0.024710914276389', '0.0247437058838994', '0.0247758020372237', '0.0244627418690115', '0.0246814871728906', '0.0246144002825787', '0.0247326369205602', '0.0247778595970861', '0.0250858798171903', '0.02491093660596', '0.0248098248290651', '0.0248231980080813', '0.0247223508668658', '0.0247285340201608', '0.0245271073409594', '0.0246145044959695', '0.0247301532553592', '0.0247854968501228', '0.0249164176717207', '0.0248323871154641', '0.0245063201734407', '0.0249895534773082', '0.0247316035147414', '0.0250480786353239', '0.0245604978699841', '0.0248995078707639', '0.0247918838915929', '0.0246323141629729', '0.0246174315481265', '0.0245240120112333', '0.0247643169185683', '0.0246655463644507', '0.024543567994421', '0.0246558676112366', '0.0245943996905025', '0.0250753080058395', '0.0250045579362867', '0.0246554029277417', '0.0250264155167244', '0.0246469593737799', '0.024665052703698', '0.0248279473108028', '0.0246961217354281', '0.0245553355540586', '0.0245557204628138', '0.0247270518159704', '0.0247966155635732', '0.0247140158903397', '0.0247626610253931', '0.0248185803249523', '0.024609407466155', '0.0247364268316634', '0.0246575409605911', '0.0248112543155938', '0.0245781406559126', '0.0247824863574285', '0.0246500847281345', '0.0247009649523946', '0.0248219430833464', '0.024708337569752', '0.0246372621170157', '0.0247286281089676', '0.0245687148427376', '0.0244441117615777', '0.0246077550642157', '0.0247010606122576', '0.0247215691791535', '0.0245714196777312', '0.024795434478477', '0.0244320022353862', '0.0247462735133231', '0.0246903013215404', '0.0245514873393163', '0.0245751469211505', '0.0246573018109337', '0.0244665511564739', '0.0246441606245413', '0.0244944379267046', '0.0247590790173862', '0.0244953459971555', '0.0247222716158114', '0.0246553421802375', '0.0246119307568831', '0.0246354342804737', '0.0243070187840778', '0.0247393772751007', '0.0245134415963769', '0.0247120136665658', '0.0245733489346753', '0.0244120664057354', '0.0245414062211677', '0.0248899691161084', '0.0246153303478156', '0.0247247613906751', '0.0246353044064992', '0.0248533992931349', '0.0244737232023303', '0.0247406206787574', '0.0245452593236402', '0.0245186117675831', '0.024411721471631', '0.0246871115538839', '0.0245525059073826', '0.0247245782753535', '0.0246827284818056', '0.0247343388980489', '0.0248475752134495', '0.024459163701364', '0.0247058137553385', '0.0246986457244034', '0.024567998615698', '0.0243962081650239', '0.02490341386546', '0.024537072550077', '0.0244906673919604', '0.0245997164936153', '0.0246575069210413', '0.0242198948182748', '0.024409780344485', '0.0242338197871209', '0.0244076180475463', '0.0245564188845504', '0.0246008453847352', '0.0245239058776628', '0.0246243248187984', '0.0246248141155061', '0.0243052663582307', '0.0245985008452839', '0.0243217586073769', '0.0246622282938758', '0.0246268287331674', '0.0244327690853459', '0.0245608707339754', '0.0244063069139137', '0.0246343666605434', '0.0244305303303416', '0.0247014261446536', '0.0246118652962104', '0.0246281107149804', '0.0246470772029907', '0.0247607972291217', '0.0247295342592388', '0.0246461279359564', '0.0245565616760977', '0.0244480411475541', '0.0245717391258137', '0.0246028116487796', '0.0248620650642601', '0.0244563693161703', '0.0245400739655581', '0.024658254394642', '0.0247536939606119', '0.024581995678565', '0.024518225986019', '0.0249431329577538', '0.024793957860264', '0.0246779200026361', '0.0246277942344484', '0.0245882612250266', '0.0245443142460891', '0.0244427728726199', '0.0245225095578749', '0.0246755827947801', '0.0244593372157869', '0.0246154502717679', '0.0255941653568822'], 'SAMSN': '852F', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Firmware': '2.06', 'IDDataBack': 'DLAB_2016-11-29_14-47-59_729_812', 'IDDataCal': 'DLAB_2016-12-07_12-00-24_364_510', 'IDDataCalAQ': 'DLAB_2016-12-07_12-02-43_591_545', 'IntegrationTime': '0', 'Reverse': '0', 'SerialNo_MMS': '103307', 'WavelengthRange': '310..1100', 'c0s': '299.895', 'c1s': '3.31161', 'c2s': '0.00031652', 'c3s': '-1.73194e-06', 'c4s': '+0.000000000E+00', 'cs': '102842'}}, 3: {'Lsky': {'SN': '85B5', 'FUNC': 'Lsky', 'TYPE': 'SAM', 'samsn': '85B5', 'inifile': 'SAM_85B5.ini', 'calfile': 'Cal_SAM_85B5.dat', 'calaqfile': 'CalAQ_SAM_85B5.dat', 'backfile': 'Back_SAM_85B5.dat', 'cal': ['+NAN', '+NAN', '+NAN', '0.380824258865919', '0.480956813156357', '0.57671205380196', '0.643896236957154', '0.711054782209677', '0.758265752350778', '0.808854255795615', '0.869466331079482', '0.925321324749243', '1.00927399148091', '1.08699883630787', '1.18347377446848', '1.29079925777138', '1.39953731633192', '1.49536024576308', '1.57053962346542', '1.61051680455964', '1.60891142181803', '1.58014917632373', '1.54292073894688', '1.49782795775685', '1.46270054563491', '1.43754722159869', '1.42339247548624', '1.42249669690879', '1.43289834559721', '1.45081833970432', '1.48383024473758', '1.53350351710437', '1.59283171118034', '1.66682243068085', '1.75523084376357', '1.8490542829721', '1.94827772413977', '2.05297044933559', '2.15300125225733', '2.24489521732098', '2.32484518002751', '2.37710624055378', '2.41032149129472', '2.41401311078449', '2.39196623346607', '2.35386541795861', '2.30358502851024', '2.24350994611066', '2.18566570348128', '2.13007635400607', '2.08048312730197', '2.03943635277338', '1.9990019487276', '1.9542919602901', '1.90697476815729', '1.86132580586718', '1.81936966943287', '1.78948757961567', '1.77036444175303', '1.76067051308416', '1.76079151769139', '1.76865840458355', '1.78533977613825', '1.81054315659671', '1.84219534093402', '1.88262260694772', '1.92633682221336', '1.96919363361994', '2.00638558730966', '2.03543177536163', '2.05645335730185', '2.06889953924594', '2.07668786673546', '2.07746404954558', '2.07708946852551', '2.07239270419962', '2.06329693588947', '2.05235510505223', '2.03788342455449', '2.01750123705209', '1.99316265318269', '1.96344779927853', '1.92810068074762', '1.89032139564187', '1.84840056738145', '1.80188008685176', '1.7531429855323', '1.70184883503381', '1.64693756964496', '1.59639297188055', '1.55743828612696', '1.53081670223502', '1.509066853406', '1.48974595694359', '1.47286758281018', '1.45660325947575', '1.43667408186819', '1.40947906533906', '1.37746325817173', '1.3399910234164', '1.29987620320872', '1.26173586555032', '1.22580130202006', '1.19650560480134', '1.17258287879559', '1.15326969493003', '1.13448708666807', '1.11395465030131', '1.08753684763482', '1.06275254011917', '1.0408908566722', '1.02045255259373', '1.00192289281247', '0.987093337695555', '0.973433543184599', '0.961454156421677', '0.949336048850277', '0.937190359719721', '0.925018119816345', '0.911316167695048', '0.897751565127677', '0.885763756400802', '0.875253674622747', '0.866439225407856', '0.859594015285511', '0.856442344648432', '0.854520610650332', '0.853095084706978', '0.851996897997662', '0.849373999218705', '0.845008414644852', '0.837447706997702', '0.828042280687475', '0.816973957953628', '0.804392597259629', '0.790971383923797', '0.777350907812577', '0.764886212005326', '0.753124860834896', '0.74238339492221', '0.731621293455726', '0.720137856580817', '0.707681887074656', '0.692857487682284', '0.676149155140644', '0.657691286728854', '0.637091724889135', '0.615841105000382', '0.593277961352052', '0.571635565839856', '0.550558744253774', '0.529727893337181', '0.50958610090654', '0.490923786532866', '0.472942835508178', '0.455966760194577', '0.439389399108222', '0.42326262400571', '0.408064966451864', '0.392531100434587', '0.376760145430696', '0.361340837642809', '0.345797349215964', '0.330538900755072', '0.315423852713651', '0.300655326757946', '0.286125136929255', '0.27220666979537', '0.258963801456755', '0.246515726736969', '0.23471243489257', '0.223963260764627', '0.213811227531161', '0.204848303945938', '0.196342813423038', '0.188347519381911', '0.180847277367304', '0.173574321958823', '0.166782572540461', '0.159983659268987', '0.153496471427164', '0.146983276179518', '0.140664487031456', '0.134679615950644', '0.128426075217298', '0.122768803469292', '0.116973531179931', '0.111227699506044', '0.10561644888568', '0.0999165260100575', '0.09399466356358', '0.0884689961099718', '0.0833768260697751', '0.0789223013382674', '0.0748108094846383', '0.0710379549143775', '+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', '0.213368170535889', '0.269708461889978', '0.323681305990691', '0.361686162925288', '0.399727885563257', '0.426595980991839', '0.455395402116462', '0.489873358069589', '0.521706723967902', '0.569424753191682', '0.613678281579101', '0.668568867138568', '0.729648774358889', '0.791588424733509', '0.846278067578305', '0.889326585618736', '0.912464300651466', '0.912041091772509', '0.896201537846271', '0.875528861051999', '0.850358796139941', '0.830813460904554', '0.816907084374381', '0.809230927534884', '0.809079793968319', '0.815347896421343', '0.825892411944005', '0.84503183706585', '0.873670658313288', '0.907826486501149', '0.950360287322641', '1.00114116281862', '1.05504053595122', '1.11205216981838', '1.17221784963607', '1.22975299376536', '1.2826684244193', '1.32878263374036', '1.35908629098684', '1.37850707003827', '1.38104038663283', '1.36883708486346', '1.34742818899357', '1.31902470629713', '1.28498732451399', '1.25220172471482', '1.22068349763187', '1.1925789464318', '1.16935370804616', '1.14646179324841', '1.12109994325093', '1.09422415317439', '1.06828767805555', '1.04445396328421', '1.02753751191562', '1.01678817181089', '1.01144651696064', '1.01173798764201', '1.0164772818471', '1.02628160092791', '1.04098599390468', '1.05940120890642', '1.08286747681355', '1.10823034660724', '1.13310605067389', '1.1547273364889', '1.17166412724341', '1.183983471337', '1.19136561427902', '1.19606418873222', '1.19672161290192', '1.19671286046196', '1.19421014531398', '1.18916801665381', '1.18305692745573', '1.17490571141989', '1.16334076115534', '1.14948755782896', '1.13252619591223', '1.11230773028189', '1.09067725991727', '1.06664792919033', '1.03995448729021', '1.01197155529512', '0.982502268789757', '0.950934147643801', '0.921876981717461', '0.899503833526815', '0.884246887000271', '0.871798641947689', '0.860748919530635', '0.851106201938694', '0.841814387319495', '0.830400473286421', '0.814782119978127', '0.796371468702983', '0.774800085650998', '0.751694156127581', '0.729723545880894', '0.70902256138046', '0.69215621992056', '0.678393548274155', '0.667293944696908', '0.65649797079901', '0.6446860376968', '0.629464240966416', '0.615183928901848', '0.602591773736883', '0.590820336228123', '0.580150915843665', '0.571621329022329', '0.563766808252911', '0.556883367165026', '0.549917569359012', '0.542933812612894', '0.535932724580549', '0.528043359268253', '0.520231538772767', '0.513331529426342', '0.507286194391832', '0.502222099629004', '0.498298138845332', '0.496514280280116', '0.495442722847893', '0.494658216836534', '0.494062920786886', '0.492582820232232', '0.490091285479962', '0.485745623273317', '0.480328740541132', '0.473945880321646', '0.466683779528739', '0.458932848241851', '0.451064706693729', '0.443865689279125', '0.437073402888952', '0.430871678484112', '0.424656716266769', '0.418021794802865', '0.410821018781503', '0.402243888142941', '0.392571430814996', '0.381881477324506', '0.36994612437875', '0.35763078427341', '0.344551257226534', '0.332004497779552', '0.319784344441634', '0.307705241065949', '0.296024637721301', '0.285201831804588', '0.27477331903475', '0.2649271655017', '0.255311286750044', '0.245955888598912', '0.237139128199368', '0.228125758026999', '0.218973368669899', '0.210024147431339', '0.201001563461602', '0.192143502318544', '0.183367668918973', '0.17479218252589', '0.166354193257315', '0.158270839921817', '0.15057933833141', '0.14334907901495', '0.136492914420144', '0.130248971747009', '0.124351585245978', '0.119145124817533', '0.114204124468303', '0.10955932586493', '0.105201972954921', '0.100976345428583', '0.0970301944120184', '0.0930794320815323', '0.0893096045786908', '0.0855242301014967', '0.0818515687486457', '0.0783728272346642', '0.0747373637294556', '0.0714485344156491', '0.0680790457826121', '0.0647379875159452', '0.0614749247480892', '0.0581599202112611', '0.0547153945113677', '0.0515011739034831', '0.0485390098580295', '0.045947792932824', '0.0435560478479539', '0.0413612446534424', '+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'], 'b0': ['0.0164817607719245', '0.0163219290778752', '0.0163731972698131', '0.0164399246082603', '0.0164430241843214', '0.0163983356778795', '0.0163990512062458', '0.0163901000353671', '0.0164207307910173', '0.0164008709967505', '0.0164082743860791', '0.0163908071888585', '0.0164252516531235', '0.0163975419840151', '0.0164170151382283', '0.0163836419600322', '0.0164195574361616', '0.0163940245365965', '0.0164118187028877', '0.016392199511795', '0.0164065571877907', '0.0163945228416475', '0.0164219489863484', '0.0163932453242865', '0.0164305632429927', '0.0163847816409121', '0.0164318688510797', '0.0164176912348923', '0.0164202520273408', '0.0164088639423701', '0.0164306347783817', '0.0164189001829659', '0.0164341838060573', '0.0164138319878957', '0.0164304957205646', '0.016429661373662', '0.0164248637917341', '0.0164295341802509', '0.0164375396881828', '0.0164033339078497', '0.0164426914575244', '0.0164161851532397', '0.0164508810382254', '0.0164265781983975', '0.0164319475400075', '0.016422878946405', '0.0164658096015204', '0.016435585550728', '0.016451332060129', '0.0164379950720003', '0.0164365183024095', '0.0164243435026367', '0.0164365261538547', '0.0164254425304785', '0.0164527732365019', '0.0164500622197366', '0.0164541095524632', '0.0164375095037381', '0.0164747180256422', '0.0164484643634142', '0.0164537975883766', '0.0164461544682567', '0.0164698387886849', '0.0164431478882013', '0.0164654240083262', '0.0164472887403633', '0.0164750846008916', '0.016451503570586', '0.0164619681511328', '0.0164507452954629', '0.0164756266995587', '0.0164519861727467', '0.0164677262265151', '0.0164529956941139', '0.0164743584294553', '0.0164623034950781', '0.0164737165301967', '0.0164694078315855', '0.0164841373171273', '0.0164653304888909', '0.0164847460658397', '0.0164548329322745', '0.0164595881163988', '0.016470273409792', '0.0164793578807614', '0.0164794932745707', '0.0164779744561293', '0.0164553809631447', '0.0164876681992408', '0.0164698851994495', '0.0164899871671793', '0.0164501525985938', '0.0164753983097437', '0.0164809215396783', '0.0164902986078362', '0.0164763052388946', '0.0164924607213486', '0.0164652690731423', '0.0164867010756773', '0.0164660367699995', '0.0164911903575265', '0.0164677717648968', '0.0165022066329511', '0.0164662370690886', '0.016489524978776', '0.0164685029961533', '0.0164921269476923', '0.0164558499561338', '0.0164738716398572', '0.0164762743565437', '0.0164791764251406', '0.0164705429760749', '0.0164789927013245', '0.016473611669785', '0.0164614993326202', '0.0164598238342293', '0.0164727508024456', '0.0164582863467961', '0.0164685862214717', '0.0164525792185689', '0.0164773030703324', '0.0164670838038268', '0.0164831073820027', '0.0164667688736388', '0.0164761180255473', '0.0164464892887724', '0.0164720077067831', '0.0164452072350208', '0.0164870899839261', '0.016459772189168', '0.0164701266750064', '0.0164611727125027', '0.0164680781457335', '0.0164568425532749', '0.0164788192716254', '0.0164516724638946', '0.016478949431138', '0.0164561298165336', '0.0164755542917869', '0.0164556124935377', '0.0164507196474088', '0.0164471687004911', '0.0164601098013086', '0.0164608579567913', '0.0164729301643477', '0.0164409632672129', '0.0164714560119053', '0.016453806137728', '0.016458409701723', '0.016446300156183', '0.0164759950195736', '0.0164447300416335', '0.0164623949207948', '0.0164359400870948', '0.0164562215912033', '0.0164493753055259', '0.0164598233107996', '0.0164437951962332', '0.0164648208428636', '0.0164373709693507', '0.0164554146371204', '0.0164451486108972', '0.0164645650602289', '0.0164504392635794', '0.0164504671798287', '0.0164356687760464', '0.0164534369453303', '0.0164388145883954', '0.0164527186253391', '0.0164332435518838', '0.0164442846029797', '0.0164340580084587', '0.0164485673045837', '0.0164290273258486', '0.016450102349345', '0.0164311430285965', '0.0164412099770665', '0.0164335047432918', '0.0164442961184326', '0.0164228450979527', '0.016437492579512', '0.0164196870722445', '0.016438840061973', '0.0164283787964808', '0.0164416083070495', '0.016412027202375', '0.016431280341648', '0.0164384511537241', '0.0164345854510949', '0.0164129589071972', '0.0164313105260926', '0.0164068407121982', '0.0164422922551586', '0.0164141230147952', '0.0164350718917399', '0.0163981727167739', '0.0164302013786105', '0.0164117635682952', '0.0164348827591505', '0.0164084963202615', '0.0164184283983518', '0.0164093013551022', '0.0164248964188505', '0.0163861197016389', '0.0164414938504271', '0.0163912936295035', '0.0164153211453222', '0.0164085420331198', '0.0164144138672182', '0.0163877472189763', '0.016438808830669', '0.0163928122734684', '0.016421485227656', '0.0164041312657219', '0.0164178255818423', '0.0163971898903201', '0.0164201696744052', '0.0163995320636409', '0.0164209146893099', '0.0164032430055628', '0.0164164507065617', '0.0163974777766416', '0.0164176661102679', '0.0163930417101427', '0.0164141233637484', '0.01640118889304', '0.0164288055661428', '0.0164032700494293', '0.0164078024269885', '0.0163929630212149', '0.0164272534226787', '0.0163858681064416', '0.0164185958958479', '0.0164030676566215', '0.0164018004333774', '0.0163995488133905', '0.0164085041717066', '0.0163987202242144', '0.0164206611748704', '0.0164022528510935', '0.0164241117977671', '0.016396216660077', '0.0164233505565425', '0.0164139434784166', '0.0164194745597963', '0.0163983088084895', '0.016435900480916', '0.0164233186273323', '0.0164390513530853', '0.0164271529241811', '0.0164633723384753', '0.016452145295368', '0.0165066871909724', '0.0165379624630295', '0.0170330815720343'], 'b1': ['0.0184759992200316', '0.018442149942613', '0.0187318928446685', '0.0186864332877884', '0.0188479230215774', '0.0188454845678811', '0.0188404723750983', '0.0187262068433619', '0.0187526368954241', '0.018602897614217', '0.0187456469175185', '0.0186707166166917', '0.0185607140585195', '0.0187588039890341', '0.0188965777575295', '0.0187075898280626', '0.0187674584136427', '0.0186381709667486', '0.0186427120172502', '0.0187927918685168', '0.0186624507666358', '0.0187624519813991', '0.0187392302005435', '0.0185522851677484', '0.0186472895511667', '0.018535703368402', '0.0186348291557698', '0.0186553691437886', '0.0187121064399131', '0.0186093935822463', '0.0187113848014579', '0.0186487433017847', '0.0187725126758178', '0.0187999361590481', '0.0187205484228188', '0.0188728539369552', '0.0187682175828836', '0.0187626176405413', '0.0188624825225437', '0.0187837980957813', '0.0188658971257905', '0.0186604942780519', '0.0189255700275998', '0.0186329430155887', '0.0188553270600577', '0.0187585744402754', '0.0188853157288465', '0.0188095644639038', '0.0189702224107457', '0.0190654765920908', '0.0188298321355244', '0.0189752702141345', '0.0190654219542494', '0.0188267308706973', '0.0190373731906741', '0.0189250398834323', '0.0189864086530676', '0.0190345625712336', '0.0188082665969675', '0.0190122781872102', '0.0188972889222771', '0.0185940174812091', '0.0187732280300485', '0.0188341576022108', '0.0188008229329601', '0.0188143481552986', '0.0188958311567378', '0.0186248391588775', '0.0188025980518404', '0.0189280180821948', '0.0188994067059584', '0.0187979548826894', '0.0188527726973303', '0.0189566842708345', '0.0188313071826812', '0.0188952770976046', '0.0189118414407716', '0.0185289364804688', '0.0186616668096203', '0.0188390641851084', '0.0188772853626504', '0.0188133788136582', '0.019095000402823', '0.0189106139222383', '0.0190673035558238', '0.0189999768176074', '0.0188888352437313', '0.0191460724704944', '0.0188107766209993', '0.0192259407753418', '0.0189064331672789', '0.0190127816234232', '0.0187168141969277', '0.0190825361670666', '0.0190127334443682', '0.0191085322585096', '0.0188582193744177', '0.0188903102908881', '0.0189330562846849', '0.0190078099289766', '0.0189027331554994', '0.0189810824236179', '0.0189551510946003', '0.0189044651576166', '0.0187674423539577', '0.0189472727717265', '0.0189907035714401', '0.019064578646224', '0.0188920054604669', '0.0190449437611056', '0.018889919447032', '0.0187988736014097', '0.0192020416947266', '0.0188233049209339', '0.0187371501222097', '0.0189721827396891', '0.0188261000043749', '0.0186942695412699', '0.0189034198815958', '0.0187198665844525', '0.0186137942850658', '0.0189533499660128', '0.0187808211189513', '0.0188594921044556', '0.0188539249797306', '0.0188040633235368', '0.0187732121449252', '0.018962250173627', '0.0190127418233343', '0.0191750319229475', '0.0189599365316131', '0.0190203120446422', '0.0190216017071741', '0.0186128352425711', '0.019228758377254', '0.0189206767113985', '0.0188962342199195', '0.0191006190232771', '0.0190500058785614', '0.0187485043195198', '0.0190170367417068', '0.0188547895842948', '0.0188974739577785', '0.0189445812034293', '0.0189157249169963', '0.0191215468876016', '0.0187773754437052', '0.0190317306552542', '0.0190325910703354', '0.0190408668704134', '0.0189401984804746', '0.0190495591749313', '0.0187950388279255', '0.0189297027780659', '0.0189593482583683', '0.0190509148218212', '0.0188672314761416', '0.0189148159737365', '0.0191385526975449', '0.0190494453606418', '0.0190579196374793', '0.019121285044911', '0.019044043895059', '0.0186976181601587', '0.0189873739797868', '0.0191378319318987', '0.0190663267080262', '0.0190936695437077', '0.0191095358142617', '0.0189574708462769', '0.0187806189763942', '0.0189485074472935', '0.0187745148995917', '0.018830215822347', '0.0188787988134019', '0.0189920377472294', '0.0188564391932454', '0.0190900863137682', '0.0189570108759505', '0.0190537807773504', '0.0188639551258354', '0.0189272838752905', '0.0189407244351591', '0.0191445909645512', '0.0190009035661702', '0.0190382999392369', '0.0191088417565699', '0.0189974830278224', '0.0189503359820826', '0.0189001894410414', '0.0186533777428459', '0.0188463448084005', '0.0188216286040289', '0.0190486301570651', '0.0189039538661228', '0.018976088908947', '0.0186541344682217', '0.0187053388537327', '0.0188468777455567', '0.0189798348304782', '0.0190289182901957', '0.0189938748355464', '0.0188985777120001', '0.0189140892729893', '0.0189945299659582', '0.0190288961208479', '0.0188169428418004', '0.0190174979339657', '0.0187582286333621', '0.0188360660863014', '0.0188666440757058', '0.018693495185153', '0.0187786836097873', '0.0186433495169208', '0.0188323175463432', '0.018976409578962', '0.0187435457172076', '0.018987845122068', '0.0186761889543627', '0.0190061624147675', '0.0187835201934057', '0.0188749633416704', '0.0189686084124011', '0.0188226435062976', '0.0187423426373254', '0.018996327428748', '0.0186609085131884', '0.0187348848338127', '0.0187956862776184', '0.0190963977699816', '0.0185138758125928', '0.0187250730645117', '0.0188906307863414', '0.0188630606712045', '0.0188464739841278', '0.0189781192371696', '0.0187965507076208', '0.0186990834318551', '0.0186847039040981', '0.0187928330651002', '0.0187593187717638', '0.0188783466983562', '0.0187352552539389', '0.0188740873905896', '0.0187454707846687', '0.0189869951806945', '0.0189396802065091', '0.0187842685398153', '0.0186674191444085', '0.0189300391586424', '0.0190247289817084', '0.01897844723878', '0.0188266460336656', '0.019144633383067', '0.0204797029287844'], 'SAMSN': '85B5', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Firmware': '2.06', 'IDDataBack': 'DLAB_2018-06-11_15-23-57_730_586', 'IDDataCal': 'DLAB_2018-06-13_11-56-08_604_111', 'IDDataCalAQ': 'DLAB_2018-06-13_11-58-21_312_112', 'IntegrationTime': '0', 'Reverse': '0', 'SerialNo_MMS': '', 'c0s': '300.14', 'c1s': '3.3268', 'c2s': '0.000314225', 'c3s': '-1.90331e-06', 'c4s': '+0.000000000E+00'}, 'Esky': {'SN': '50ED', 'FUNC': 'Esky', 'TYPE': 'SAMIP', 'samsn': '859F', 'inifile': 'SAMIP_50ED_ALL.ini', 'calfile': 'Cal_SAM_859F.dat', 'calaqfile': 'CalAQ_SAM_859F.dat', 'backfile': 'Back_SAM_859F.dat', 'cal': ['+NAN', '+NAN', '+NAN', '+NAN', '0.549282530081406', '0.621825635483575', '0.705214779700439', '0.782494923890489', '0.848306874043027', '0.952625287085828', '1.06364941208026', '1.17099618224932', '1.27964867192574', '1.37878597375063', '1.42771820575638', '1.4380590385421', '1.41583530083466', '1.35751030831315', '1.28801896577964', '1.23773169248486', '1.19003370359023', '1.16911032524399', '1.16789019991587', '1.17908641221467', '1.20561721452238', '1.24993325867368', '1.3042108426727', '1.37841324495146', '1.46663415660191', '1.55813913029349', '1.66686169700722', '1.78274771118438', '1.89315285694338', '2.00609300108623', '2.10386062632617', '2.18077321675475', '2.23620955735442', '2.266135432154', '2.26878990322214', '2.25797663538301', '2.22685859649013', '2.17776313289299', '2.1222752364519', '2.06098344374156', '1.99948809108821', '1.94462577242816', '1.8989381397134', '1.8637403074385', '1.84137175128878', '1.82996842025894', '1.82735603324287', '1.82819560800875', '1.82831225824908', '1.82476779554239', '1.82142520789599', '1.82469614734563', '1.83514598035505', '1.85423698694933', '1.88102853388183', '1.91679111910883', '1.95713305118927', '2.0033013266641', '2.05191276620812', '2.10100127704333', '2.15116215495783', '2.19982933350689', '2.24341508467426', '2.28026480621138', '2.30634686430023', '2.31796219508283', '2.31589695847203', '2.29809543158409', '2.2668387918562', '2.22596956700897', '2.17822422289454', '2.1262484698939', '2.07154274835781', '2.01784816285075', '1.9635850159156', '1.90957838150673', '1.85662335754133', '1.80118393109592', '1.74752896056537', '1.69458207285898', '1.64238998731142', '1.59255947952261', '1.55042463825823', '1.52145095482736', '1.50182839545807', '1.48602912306116', '1.47501182897849', '1.46801797625318', '1.46252443118698', '1.4571840542778', '1.44881752975571', '1.433373570625', '1.4106211402034', '1.38310053980989', '1.35343439202405', '1.32469024445085', '1.29921323938482', '1.2757042981125', '1.25356245928469', '1.23230080447944', '1.20776661327865', '1.18172190161938', '1.16211138784545', '1.14836490545677', '1.13698033747357', '1.12673020620722', '1.115430409999', '1.10428562795353', '1.0934141739792', '1.0851095103506', '1.08102444265095', '1.08007408967758', '1.08238869164072', '1.08781099449618', '1.09202496629142', '1.09279743926351', '1.08928198225434', '1.08099296127192', '1.06779395728469', '1.05125732218958', '1.03307124483462', '1.01642561672595', '1.0017478853335', '0.98877464388953', '0.978591382441999', '0.970432000434175', '0.962460675619692', '0.953651636148435', '0.943103023421902', '0.930554197290447', '0.915976069829803', '0.89827602173614', '0.878650755188226', '0.859108524352699', '0.840122962860222', '0.820853477964574', '0.803547895709764', '0.786651104537257', '0.769194844035412', '0.751217544779413', '0.731862968408631', '0.710478767970412', '0.687207420135085', '0.662469528888512', '0.636358233772055', '0.609121332586544', '0.580838486227566', '0.552767035926316', '0.525876935395925', '0.499896413074609', '0.475284681533185', '0.452387885405863', '0.431848904268036', '0.413013739466993', '0.395710805209202', '0.380181587532903', '0.365591896979342', '0.352105459639395', '0.339276260510366', '0.32616389487977', '0.313880254968568', '0.301213081346406', '0.28867892621412', '0.276332017077307', '0.263867205519659', '0.251559483539307', '0.239917175566115', '0.228872841726392', '0.218348838385983', '0.208663588155861', '0.199488791575245', '0.191252859631973', '0.183364916996847', '0.175877803627425', '0.169219899131997', '0.162866423884395', '0.156727192611269', '0.151124000714184', '0.145138407523578', '0.13971586046093', '0.134506608902369', '0.129059486722317', '0.124203168251957', '0.119075347065844', '0.113513221481262', '0.107843336832916', '0.101790305051534', '0.0961960826886135', '0.0914035900672732', '0.0868727278958915', '0.082573024301116', '+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', '+NAN'], 'calaq': ['+NAN', '+NAN', '+NAN', '+NAN', '0.308009257704273', '0.348985396550329', '0.39611199753429', '0.43986968240828', '0.477232425339663', '0.536318311921194', '0.599255756896796', '0.660195405447511', '0.721940911560072', '0.778381764258939', '0.806518994572799', '0.812862184246214', '0.800779958731845', '0.768238986615194', '0.729324871828135', '0.701235591002145', '0.674572715683613', '0.663056816542841', '0.662699926877705', '0.669382520005193', '0.684772623825422', '0.710275115045633', '0.74145572495904', '0.783988164111933', '0.834525694448954', '0.886966821712609', '0.949247521262016', '1.01565043430167', '1.07897249264832', '1.14377888540009', '1.19997013476615', '1.24429313837597', '1.2763795229717', '1.29391228294411', '1.29587029284695', '1.29012478792631', '1.27276079346714', '1.2450982196578', '1.21375364521069', '1.17906121512383', '1.14422362714978', '1.11315509839511', '1.08731507394343', '1.06746197368796', '1.05494171300318', '1.04869254224893', '1.04747349722362', '1.04822757370139', '1.04856210675178', '1.04679141002185', '1.04513065036628', '1.04725995618916', '1.0535067386541', '1.06471361999517', '1.08034380002613', '1.10113009018595', '1.12455239246124', '1.15132895471663', '1.1795169782144', '1.20798673857183', '1.23708055274173', '1.26532262623006', '1.29064822236823', '1.31210337451311', '1.32736540301797', '1.33430139824988', '1.33335932325033', '1.32335113190924', '1.30558590461423', '1.28227321775146', '1.25498704776805', '1.22525023251367', '1.19392661641762', '1.16317225749886', '1.13207700011805', '1.10111674556499', '1.07075040366943', '1.03893893539784', '1.0081446443131', '0.97774721715577', '0.947774052897518', '0.919152947182789', '0.894963764571428', '0.87836395884067', '0.867156996532193', '0.858153034494107', '0.851906778357719', '0.847981268808314', '0.844919850173329', '0.841944554421527', '0.83721825473176', '0.828398944802337', '0.815351600734525', '0.799543228463232', '0.782489183888857', '0.765962841341892', '0.751320667184625', '0.737812095757199', '0.725090001717255', '0.712873061263532', '0.698758948036327', '0.683766639638848', '0.672493396285743', '0.664610527729123', '0.658092136872804', '0.652228157780532', '0.645754399378545', '0.639368207275896', '0.633138158063289', '0.628392493836991', '0.626088937445665', '0.625599854321674', '0.627001238574581', '0.630202545823175', '0.632703647598273', '0.633210363154327', '0.63123164301687', '0.626485370072314', '0.618891745640103', '0.609361448964366', '0.598872648152344', '0.58927447780469', '0.580815044730471', '0.573341941514821', '0.567484926926375', '0.562800136636572', '0.558223116403165', '0.553158922485434', '0.547084299354418', '0.539847820827437', '0.531432360197925', '0.521203701656628', '0.509855867118928', '0.498554054755033', '0.487573187562371', '0.476425489189536', '0.466415695619565', '0.456641365086098', '0.446540473657011', '0.436135290849149', '0.424928637592468', '0.412541586513936', '0.399056656796071', '0.384717912438278', '0.369579305401316', '0.353784632326527', '0.337380068381195', '0.321095903578543', '0.305495669126019', '0.290421643260465', '0.276140762920409', '0.262854333224098', '0.250936131068681', '0.240006392992584', '0.229965608856624', '0.220954309792884', '0.212487857424938', '0.204661532835082', '0.197216204057537', '0.189605277840326', '0.182475141050851', '0.175121099828465', '0.167843462384963', '0.160673785509465', '0.153434661065448', '0.146286002352245', '0.139523451810534', '0.133107862589632', '0.126994143420237', '0.121367561058691', '0.116037239577153', '0.111252442566666', '0.106669531239736', '0.102319284531729', '0.098450973344807', '0.0947593486764351', '0.0911919684356708', '0.0879361030612687', '0.0844573547823388', '0.0813058869947144', '0.0782782092672921', '0.0751117681314502', '0.0722888539254525', '0.0693076153913147', '0.0660732713239472', '0.0627758734115707', '0.0592551057473219', '0.0560010918166818', '0.0532135140872552', '0.0505779890461858', '0.0480767985810033', '+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', '+NAN'], 'b0': ['0.0165892037855774', '0.0165122714877024', '0.0164973019224162', '0.0166164505683762', '0.0165490556826164', '0.0165598147795938', '0.0164974439463348', '0.0165638938670541', '0.0165295399561229', '0.0165679375357729', '0.0165135498774463', '0.0165496044113927', '0.0165162233817516', '0.0165748471564411', '0.0165168071803162', '0.016561615028724', '0.0165228899565738', '0.0165630265440819', '0.0165138880130166', '0.016557182975186', '0.0165155392591658', '0.0165657065040199', '0.016518681058554', '0.0165595148543898', '0.0165168741793146', '0.0165713147040385', '0.0165192898072665', '0.0165624174464164', '0.0165336104942318', '0.0165711529642688', '0.0165277786152653', '0.0165778362888406', '0.0165368341231259', '0.0165763434674064', '0.0165347332508855', '0.0165844704110229', '0.0165276158286362', '0.016561547855249', '0.0165227810832013', '0.0165862270410135', '0.0165383602695828', '0.0165776928691096', '0.0165375732058275', '0.0165658438170714', '0.0165459794864142', '0.0165800024153139', '0.0165525603932462', '0.0165907623846741', '0.0165508449397234', '0.0165903560287695', '0.0165476473078365', '0.0165857165226035', '0.0165481178711146', '0.0165957271151451', '0.0165507685189908', '0.0165883062781607', '0.0165548565047555', '0.0166030835702795', '0.0165500053585241', '0.0165961038100348', '0.0165517131350783', '0.0166133108627067', '0.0165473248751564', '0.0165983146025071', '0.0165525591719102', '0.0166064242729443', '0.0165435383848847', '0.0165950365369267', '0.0165586482293239', '0.0166092385798323', '0.0165697841956677', '0.0165967129077004', '0.0165732545344154', '0.0166026855892496', '0.0165687354170748', '0.0166129015407006', '0.0165534954131229', '0.0166168593669527', '0.0165646865140591', '0.0166018156491291', '0.0165586096700045', '0.0166129247460829', '0.0165712166482126', '0.0166143243970348', '0.0165701301826831', '0.0166189659969196', '0.0165676643054824', '0.0166299271377517', '0.0165751742999882', '0.0166072596667062', '0.0165629157514673', '0.0166089130065742', '0.0165693558557167', '0.0166203017894511', '0.0165698981288603', '0.0166107804291794', '0.0165637935430329', '0.0166245248200721', '0.0165754381085446', '0.0166166770389491', '0.01656780789969', '0.0166270111110302', '0.0165662229546329', '0.0166136421936913', '0.0165698424708382', '0.0166173691874565', '0.0165821997730911', '0.0166164975025705', '0.0165739878593907', '0.016623824645643', '0.0165631308810639', '0.0166247172677161', '0.0165669479047333', '0.0166042075482691', '0.0165806895040011', '0.0166075213815439', '0.0165708319274012', '0.0166233251192561', '0.0165772010196913', '0.016621139974838', '0.0165690780890356', '0.0166295818486425', '0.0165801878838955', '0.0166132293821539', '0.0165742146789166', '0.0166257485986531', '0.0165839324997932', '0.0166274820232614', '0.0165711257459257', '0.0166118375826471', '0.0165702390560556', '0.0166138555785223', '0.0165495885340259', '0.0166076853895089', '0.0165715106412136', '0.0165914878582042', '0.0165708420470416', '0.0166090042578143', '0.0165677817282062', '0.0166140523880802', '0.0165772907006423', '0.0166172060518744', '0.0165733789362016', '0.0166208616847272', '0.0165699940909675', '0.0166094990733341', '0.0165568282643426', '0.0166152531357555', '0.0165675189665092', '0.0166057366608274', '0.0165695308557048', '0.0165973481768498', '0.0165636400036615', '0.0166118299056785', '0.0165665354421491', '0.0165949780872796', '0.0165594520428288', '0.0166050473039449', '0.0165700478297475', '0.0166062033856213', '0.0165620390067611', '0.0165990297819202', '0.016574294763657', '0.0165960321001693', '0.016567221483977', '0.0166072507684017', '0.0165554031398131', '0.0166002793830319', '0.0165516576515327', '0.0166026362123836', '0.0165560230550254', '0.0166113124082061', '0.0165672890064051', '0.016604050693843', '0.0165640243755198', '0.0166057021144688', '0.0165508046356384', '0.0165935180674385', '0.0165675029146658', '0.0165893028882626', '0.0165492090475113', '0.0165956159735774', '0.0165528561310127', '0.0166073952349921', '0.0165463099450159', '0.0166001891786512', '0.0165482056328235', '0.0165952621351168', '0.0165536456374398', '0.0165997360630289', '0.0165524916494821', '0.0165986206343906', '0.0165521507222869', '0.016599824522644', '0.0165434263709342', '0.0166010940140834', '0.0165431388335659', '0.0165863373101985', '0.0165434326520903', '0.0166064767903884', '0.016561522556148', '0.0165987263671851', '0.0165499257972134', '0.0165839637310972', '0.0165457994266058', '0.0165795458101604', '0.0165524665248577', '0.016595737060309', '0.0165466772181714', '0.0165879578484734', '0.0165430683450362', '0.0165948067512992', '0.0165396531408809', '0.0165652856665609', '0.0165523227561735', '0.0165783818770389', '0.0165503544861175', '0.016572293692008', '0.0165450638334354', '0.0165749698134617', '0.01655305398743', '0.0165967214570518', '0.0165454616399886', '0.0165946692637712', '0.0165392806334286', '0.0165890797327443', '0.0165355112418597', '0.0165804930433963', '0.0165460245013662', '0.0165847202614547', '0.0165448417247764', '0.0165611542361331', '0.0165515342966058', '0.0165765880835414', '0.0165339756736686', '0.0165878632821788', '0.0165440089481629', '0.0165963711081224', '0.0165516928957975', '0.0165934388550809', '0.0165544309564294', '0.0165877533619469', '0.0165399865655842', '0.0165907330726123', '0.016550628937744', '0.0166034288593887', '0.0165659505967252', '0.0166105647761531', '0.0165655829746165', '0.0166172674676229', '0.0165796119367761', '0.0166424952076873', '0.0166246136286404', '0.0167334388455894', '0.0171297295465388'], 'b1': ['0.018605511502516', '0.0184837131056956', '0.0183851120510798', '0.0184840774161591', '0.0185292503425739', '0.0186302980552904', '0.0183759157866635', '0.0186312056020559', '0.0185970883722841', '0.018610557385725', '0.018696732782741', '0.0185527901750176', '0.0184841121539561', '0.0185602766066645', '0.0183555554227304', '0.0185179326286786', '0.0185996666499772', '0.0186817794703681', '0.0184706934143117', '0.0185104139030999', '0.0185717901788923', '0.0185864488309574', '0.0184904599190226', '0.0185467707606851', '0.0185513739551852', '0.0186439978394227', '0.0185915799003217', '0.0186942077463949', '0.0186620183770728', '0.0186390987626822', '0.0185678106936811', '0.0186122998615499', '0.0184338018739524', '0.0186563994074951', '0.0186582494133848', '0.0184381484626158', '0.0187957369005385', '0.0184585601477162', '0.018382363401076', '0.0185619393077496', '0.0188072553604966', '0.018482204891798', '0.0185649745882186', '0.0189122127337069', '0.0186279875553889', '0.0184615582465232', '0.0185698745377681', '0.0185120261558266', '0.0184379972921025', '0.0185804266236362', '0.0185466583428899', '0.0185885491584593', '0.0184078979511364', '0.0184049089295427', '0.0184970417714545', '0.0184417327399261', '0.0183843069720872', '0.0185357707492544', '0.018271672720313', '0.018684147226538', '0.0187957920620654', '0.0182829548236024', '0.0184118543941909', '0.0184413151881155', '0.0184057733595452', '0.0182871827102461', '0.0183972310036081', '0.0185852110132782', '0.0183187237570663', '0.0184794824260633', '0.0185034061198914', '0.0181402547467266', '0.0184165518520597', '0.0183788985240326', '0.0181609569026518', '0.0186252303518572', '0.0183105499010758', '0.0181418076484435', '0.0183057028437498', '0.018502016957137', '0.0184040678908206', '0.0184980723842845', '0.0184303921584359', '0.0185389638335849', '0.0182085812003356', '0.0184602108040376', '0.0184275042081207', '0.0185323186152219', '0.0182322636497648', '0.0183371464850892', '0.0182259586523378', '0.018483065481441', '0.0182905728748417', '0.0184016187888549', '0.0183132295991711', '0.0181924879994499', '0.0184099916452902', '0.0187024550929006', '0.0183715293979111', '0.0183022039271567', '0.0184077949596782', '0.0183611756142407', '0.018411879705651', '0.0183403743072167', '0.0184016243748323', '0.0184520221102946', '0.0183486391099018', '0.01861046347148', '0.0185649627180167', '0.0184582639163523', '0.0186787228933602', '0.0185190477294169', '0.0186510274428554', '0.0186025957968757', '0.0183767100428249', '0.0183237705130843', '0.0183277608211268', '0.0185572685578353', '0.0184446809140601', '0.0186042166031303', '0.0186733833972142', '0.0186773335560441', '0.0184308924525366', '0.0186073100126766', '0.0183468275076066', '0.0185506345114271', '0.0186062746866781', '0.0184876664066378', '0.0182968567502917', '0.0184814123812545', '0.0186338901878814', '0.0185727479994544', '0.0184737700659259', '0.0185519168423637', '0.0184109360245942', '0.0186137698464147', '0.0184927182249478', '0.0183322589294271', '0.0184634239629744', '0.0185381407747276', '0.0183129747389523', '0.018566407740545', '0.0184619363473684', '0.0185385801467623', '0.0184219012982279', '0.0184126872285087', '0.0186440826764544', '0.0184714934310123', '0.0186275679088368', '0.0184197444127049', '0.0184460824707018', '0.018243945325', '0.018415498022511', '0.0184500097619367', '0.0185133976878398', '0.0184093356420695', '0.0185570035730324', '0.0186677780434563', '0.0187476308123041', '0.0184833070749635', '0.0183987680202018', '0.0183971864903508', '0.0184699862644854', '0.0186248246702486', '0.0185793174579989', '0.0187341727962561', '0.0185118727160099', '0.0185141533658448', '0.0185683596905223', '0.0185158860662092', '0.0183562021741761', '0.018351702145696', '0.0183285858001638', '0.0184325741808572', '0.0182299784613234', '0.0183180300484981', '0.0186951084852505', '0.0184788363728647', '0.0183958849576168', '0.0184240855899527', '0.0185323332784126', '0.0186074587393249', '0.0186410439047495', '0.0184129410413568', '0.0183934452819879', '0.0185733495393955', '0.0185109349700541', '0.0185722325184776', '0.0184577447695778', '0.0184457087339014', '0.0183168259212451', '0.0184703884548581', '0.0184217183574681', '0.0185029386434078', '0.0186379566048659', '0.018342027581965', '0.0184254820843023', '0.0186074793376165', '0.0184241568111645', '0.0182465302360413', '0.0184340305499022', '0.0186743681002925', '0.0184118549178763', '0.0184971573313619', '0.0183981095731159', '0.018496162154576', '0.0184611797965545', '0.0186299800037023', '0.018466689839573', '0.0186946017323634', '0.0185245357776493', '0.018476103782546', '0.0182796915654308', '0.0185767679830018', '0.0183549425362727', '0.0183019200896801', '0.0185407187032971', '0.0184576592342989', '0.0184396004676159', '0.0183728665412509', '0.018711382183031', '0.0185027394684012', '0.0184419015411806', '0.0184852501222893', '0.0186597281263393', '0.0187948452388963', '0.0182642088071376', '0.0186078693086637', '0.0186437127800135', '0.0185804302894338', '0.0185832597615481', '0.0185230038233477', '0.0187595940557125', '0.0185726041605364', '0.018819251596084', '0.0186927800054842', '0.0187059691963698', '0.0186125063681518', '0.0187091867193515', '0.0187669087185543', '0.0187420275532877', '0.0185165169325316', '0.0184496782690904', '0.0184827699483242', '0.0184833114390083', '0.0188096297500146', '0.0186457825592016', '0.0186986550572133', '0.018635516056428', '0.0185666859920442', '0.0185794000257273', '0.0185533461543306', '0.0186423201260233', '0.0186220849228963', '0.0196555486961812'], 'SAMSN': '859F', 'c0s': '+3.019290000E+02', 'c1s': '+3.345130000E+00', 'c2s': '+2.651460000E-04', 'c3s': '-1.753680000E-06', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Reverse': '0', 'c4s': '+0.000000000E+00', 'IDDataCal': 'DLAB_2019-08-28_14-44-55_098_198', 'IDDataBack': 'DLAB_2019-08-28_12-24-09_763_812', 'IDDataCalAQ': 'DLAB_2019-08-28_14-47-19_914_233', 'Firmware': '2.06', 'IPSN': 'C121', 'Incl_Orientation': 'up', 'Incl_Xgain': '1.0', 'Incl_Xoffset': '125', 'Incl_Ygain': '0.9375', 'Incl_Yoffset': '126', 'Incl_KBG': '1.2073', 'Incl_Kref': '0.1275', 'Press_Current_mA': '1.08', 'Press_Surface_bar': '5.57', 'Press_Gain': '2.7', 'WithIncl': '1', 'WithPress': '1', 'Press_Sens_mV_bar_4mA': '71.36', 'Press_Sens_mV_bar_1mA': '17.84', 'Press_Type': 'PA-10/TAB/10bar', 'CalibrationDate': '08.06.2018'}, 'Lwater': {'SN': '852F', 'FUNC': 'Lwater', 'TYPE': 'SAM', 'samsn': '852F', 'inifile': 'SAM_852F.ini', 'calfile': 'Cal_SAM_852F.dat', 'calaqfile': 'CalAQ_SAM_852F.dat', 'backfile': 'Back_SAM_852F.dat', 'cal': ['+NAN', '+NAN', '+NAN', '+NAN', '0.099081925071204', '0.107353085872454', '0.113070264290883', '0.114376499819276', '0.116544285861757', '0.1185169696214', '0.121561138979849', '0.126964155564462', '0.134364254054539', '0.144053858633949', '0.154882735476408', '0.16719673162462', '0.181437615712041', '0.194237970806716', '0.20386154720656', '0.211556336359081', '0.211417859085921', '0.208790218500257', '0.20437467341685', '0.198246352046376', '0.192966396099738', '0.18897229193584', '0.186243043953596', '0.18578727224224', '0.187114583931684', '0.189090911319999', '0.193600418301244', '0.200054490546523', '0.208072057884887', '0.218285958582262', '0.230634876630779', '0.243459214546046', '0.257752719558026', '0.272580246630834', '0.286712281491418', '0.300342726342385', '0.312249154496702', '0.321331680226083', '0.327112591435919', '0.329469692698771', '0.327542874308678', '0.322985767437387', '0.316224456423823', '0.308782990589082', '0.301183418606427', '0.293575702556702', '0.286696408065096', '0.280798842600295', '0.275808444038661', '0.271299340181449', '0.266225534078626', '0.260785177597799', '0.255342424416527', '0.250947812402455', '0.24777514930692', '0.246247860756574', '0.246092032695547', '0.247219177075727', '0.249675195006791', '0.253195744885965', '0.257788026175471', '0.26369589320837', '0.270555680751329', '0.277823002163503', '0.284937579021833', '0.291097253127256', '0.296043211270752', '0.299540235735164', '0.301795150475552', '0.303069111244916', '0.30355995799167', '0.303606664702465', '0.303007474849756', '0.302001653949665', '0.300361927400822', '0.297986890885497', '0.295325565249305', '0.291656567474701', '0.287335862742648', '0.282306131698578', '0.276702242286357', '0.270280607979823', '0.263050805729498', '0.255009286552014', '0.247098798503932', '0.2398191835424', '0.23466817932016', '0.230585310303585', '0.227279061892254', '0.224693206022759', '0.222993136629962', '0.221791418806722', '0.220695274517678', '0.219442816624831', '0.217000405185694', '0.213283732282521', '0.208384750595562', '0.202985389753009', '0.197924660371165', '0.193409646692029', '0.189628652821804', '0.186318519164064', '0.183315563032657', '0.180098687261504', '0.176492614557115', '0.172650422408531', '0.168979191040057', '0.166106531649937', '0.163622827054655', '0.161570328667133', '0.159693607722301', '0.157690305409947', '0.15544650006387', '0.153185383511044', '0.150954772341381', '0.148960802743881', '0.147350785081686', '0.146182367433256', '0.145312879880878', '0.144781245193999', '0.14473607505965', '0.144976432177203', '0.145464936657928', '0.145889790468872', '0.146174517595681', '0.14615421098877', '0.145743119998859', '0.144922809795091', '0.143805231938307', '0.142492952453543', '0.141053445832183', '0.139720571628269', '0.138186469198598', '0.136919534961634', '0.135732624874463', '0.134597268963386', '0.133432724955799', '0.13211501546202', '0.130478475600008', '0.128290801143951', '0.125726707508103', '0.122634784100445', '0.119472073398083', '0.116199128230447', '0.112813911251756', '0.109547291781198', '0.106268392530964', '0.10313443150471', '0.100113578226984', '0.097073834113113', '0.0941199411272616', '0.0911853891891621', '0.0882319764053268', '0.085267274530049', '0.0822333903307463', '0.0792187073154596', '0.0760907077820793', '0.0728848234132589', '0.0697048920692252', '0.0665600438164166', '0.0635411651500916', '0.0606319242880778', '0.0578670530064308', '0.0553155735461356', '0.0529193006810867', '0.050722718025932', '0.0486788470977319', '0.0467747209472673', '0.0450423813898501', '0.0434307741189043', '0.041915712424757', '0.0405250313895705', '0.0390895391040532', '0.0377897158697839', '0.0365016922380464', '0.0351788001916396', '0.0338645937424847', '0.0325302009051183', '0.0312848146149282', '0.0300375958148976', '0.0288302935207691', '0.027652203865544', '0.0264621566936286', '0.0252688692008588', '0.0241226625595337', '0.0229255436965288', '0.0217207281738409', '0.0205701146867025', '0.0193892949195812', '0.0183936626191952', '0.017494647116465', '0.0167605279940225', '+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.0757791569140749', '0.0831133762408903', '0.0873256015093429', '0.088798490578607', '0.0893180250587088', '0.0912184306930603', '0.0934315009445713', '0.0978927038642625', '0.10316713605413', '0.111042352696646', '0.119482024262908', '0.129446496806651', '0.140324929207819', '0.149929004563169', '0.157951375798488', '0.163167079267684', '0.163684554455683', '0.161710955408623', '0.158158176144384', '0.153120816765498', '0.149159625705894', '0.146361065436421', '0.144318454214309', '0.144129633718655', '0.144738939517372', '0.146583353055999', '0.149927549178646', '0.154781330782628', '0.161281049713208', '0.169324782015295', '0.178566729488516', '0.188750791302883', '0.199826540979236', '0.211193704798505', '0.222305048038871', '0.232787040612667', '0.242185638548782', '0.249199329450493', '0.253905646769863', '0.255480704613068', '0.254086308176615', '0.250712203525897', '0.245637528877396', '0.239859851966525', '0.233843628655063', '0.228059104546805', '0.222661940533832', '0.218199567518201', '0.214240155949967', '0.21061280671042', '0.206823867975479', '0.202504211638902', '0.198378089686984', '0.195008429198418', '0.192596053511712', '0.1913409806608', '0.191204589224151', '0.191982450755957', '0.193875999271111', '0.196568015329539', '0.200197325412529', '0.204781342874412', '0.210052890237844', '0.215505542064364', '0.22102191587617', '0.225647984382987', '0.229501509141454', '0.232213608637945', '0.233859853462842', '0.234864695710533', '0.235347731196379', '0.235169523165461', '0.2348286160222', '0.23395735104209', '0.232593294508701', '0.230910869907075', '0.228844605598996', '0.226021135136259', '0.222713212172475', '0.218813740820075', '0.214437631947854', '0.20945948892298', '0.203847193841702', '0.197707092492944', '0.191556734852924', '0.18600061167507', '0.181873354953207', '0.178782316057322', '0.176167924779435', '0.174141863608666', '0.172744990342331', '0.171801376758966', '0.170954015345458', '0.169960140045412', '0.168049955384139', '0.165224777136175', '0.161531979240228', '0.157405412608478', '0.153570487964493', '0.150141271545146', '0.14725256652001', '0.144660342475923', '0.142269456600007', '0.139762314536934', '0.136963054606891', '0.133984343960448', '0.131197679174342', '0.129003116254732', '0.127069994503092', '0.125436648144931', '0.12397269238396', '0.122419985358787', '0.120693422850158', '0.118931546980571', '0.117166660339047', '0.115631793601506', '0.114393230429202', '0.113425752529033', '0.112707849783804', '0.112359222280159', '0.11219082672674', '0.112343608199868', '0.112664705152637', '0.112877954686814', '0.112998494144185', '0.112887922565457', '0.11253063359053', '0.111841159102354', '0.110997003525569', '0.109948198155768', '0.108874849717231', '0.107795318097265', '0.106637360724801', '0.105678694194695', '0.104756017092462', '0.103825430274706', '0.102939456306441', '0.102001186921616', '0.100737446991222', '0.0991453606719906', '0.0971498679860747', '0.0948117209915638', '0.0924075366042346', '0.0899484551808979', '0.0873520434504222', '0.0848497958878303', '0.0823900490277647', '0.0799786063537234', '0.0776610830064481', '0.0752837851752474', '0.0729604964467151', '0.0707262742573907', '0.0684046065784823', '0.0660274200992436', '0.0636252573638505', '0.0612270512870042', '0.0587905905539405', '0.0563195707029216', '0.0538582650571118', '0.0514203967394221', '0.0490721477077881', '0.0468328465329872', '0.044723244642693', '0.0427398639178554', '0.0408841538190041', '0.0391762093418711', '0.0375882143782858', '0.0361234008364646', '0.0347811387811729', '0.0335210387242261', '0.0323747022105674', '0.0312594345687719', '0.030174948252246', '0.0291339080526091', '0.0281312995576928', '0.027138393963344', '0.0260756668210364', '0.0250906058668046', '0.0240551778532538', '0.0230712653382013', '0.0221310389230639', '0.0211757703478467', '0.0202209094313405', '0.0192572613107586', '0.0182920464007378', '0.0172950661682144', '0.0163207919630062', '0.0153269728531649', '0.0143853788804443', '0.0135213976548868', '0.0127456574145877', '0.0120278700767597', '+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'], 'b0': ['0.0181271394490075', '0.0179948670252732', '0.0180195207374602', '0.0181005261905924', '0.018089553708784', '0.0180460947386496', '0.0180426749981038', '0.0180534564280807', '0.0180790359128869', '0.0180635226786445', '0.0180649523395645', '0.0180630058790784', '0.0180600544336154', '0.0180597668962471', '0.0180588020408788', '0.0180498552319141', '0.0180704773142647', '0.0180562171706652', '0.0180717635554537', '0.0180430410499234', '0.0180523488508876', '0.0180618142041841', '0.0180579205853055', '0.0180626933915622', '0.0180613022899616', '0.0180574472304024', '0.0180710633810246', '0.0180638238251844', '0.0180615148024098', '0.0180669541091198', '0.0180750465063777', '0.0180621163975833', '0.0180742925931686', '0.0180599654505706', '0.0180625609638543', '0.018079003460247', '0.0180789446616468', '0.0180641596925595', '0.0180789860125912', '0.0180726758933779', '0.0180883707577176', '0.0180761767655234', '0.0180788425928601', '0.0180748167207502', '0.018087924097728', '0.0180769134055532', '0.0180908061015206', '0.0180821035597377', '0.0180826006434528', '0.0180812086694694', '0.0180992416941691', '0.0180889166948691', '0.0180883470289057', '0.0180961206574913', '0.0180961166445305', '0.0180882432153534', '0.0180960383045557', '0.0180981065496797', '0.0180892262162838', '0.018090062656905', '0.0181151497688632', '0.0180994168686337', '0.0180945880554018', '0.0181024354875717', '0.0180812022138367', '0.018095840622615', '0.0181047246200187', '0.0180913783846324', '0.0181042299789754', '0.018097802960468', '0.0180910716548426', '0.0181013286082848', '0.0180952437383085', '0.0181025522123893', '0.0180982995207534', '0.0180837411967154', '0.0181112380044225', '0.0181073538072781', '0.018103745283096', '0.0180962696604722', '0.0181080471771214', '0.0180900361364681', '0.0181011494208593', '0.0181086649986149', '0.0181182547536976', '0.0181057997445719', '0.0181089392757648', '0.0181055429150778', '0.0181146218027973', '0.0181128730242519', '0.0181162224507446', '0.018127437978399', '0.0181252793544177', '0.0181109518628667', '0.0181264111838525', '0.018109165222908', '0.0181143328696165', '0.0181233651720949', '0.0181237422159377', '0.0181142894249535', '0.0181268594141312', '0.0181223244194237', '0.0181331201564784', '0.0181055589669212', '0.0181385395728607', '0.0181050559510032', '0.0181237826944993', '0.0181113664191696', '0.0181140599882791', '0.0181137768128247', '0.0181257021111189', '0.0181361358093148', '0.0181222916178307', '0.0181118017381829', '0.0181256476744327', '0.0181248496186543', '0.0181254770363585', '0.0181331583668447', '0.0181230066227672', '0.0181144363342157', '0.0181321676889458', '0.0181179351126425', '0.0181364284065034', '0.0181453949313192', '0.0181325621804444', '0.0181156688366246', '0.0181297948077507', '0.0181383919656923', '0.0181374979478067', '0.0181199012889798', '0.0181422937849691', '0.0181196791803209', '0.0181355928382649', '0.0181084210803862', '0.018133168137532', '0.0181404589894803', '0.0181418954549861', '0.0181177946590129', '0.0181147076452641', '0.0181089181641013', '0.0181443674388664', '0.0181377502409103', '0.0181289850620429', '0.0181158340659255', '0.0181305586661236', '0.0181270701818138', '0.0181084884283378', '0.0181265399475526', '0.0181359089897888', '0.0181099418180697', '0.0181312042293899', '0.0181193782082575', '0.0181291396482737', '0.0181114958807759', '0.018131541667054', '0.0181167600130213', '0.018133784563213', '0.01811013496362', '0.018139256671516', '0.0181215378790981', '0.0181241962039428', '0.0181255386265836', '0.0181152391008612', '0.0181239868320727', '0.018128921378099', '0.0181191986718789', '0.0181302022105147', '0.0181156925654366', '0.018128299020215', '0.0181149622065629', '0.0181265924649967', '0.0181200464534764', '0.018134817115486', '0.0181138528846042', '0.0181302275096157', '0.0181219730236349', '0.0181227435121171', '0.0181128882037125', '0.0181298839652721', '0.0181217728990224', '0.0181271213034454', '0.0181002302783493', '0.0181198512142075', '0.0181077788321745', '0.0181113704321304', '0.0181110165936699', '0.0181200574454996', '0.0181026958065969', '0.0181267051768535', '0.018099050467861', '0.0181217983725999', '0.0181250125797599', '0.018113538826799', '0.0181123129544992', '0.0181229691103072', '0.0181081715789076', '0.0181231769118883', '0.0181145502674084', '0.0181123405217955', '0.0181137211548025', '0.0181167594895916', '0.0181050918931742', '0.0181182652222911', '0.0181006336681525', '0.0181259247432075', '0.018101253059935', '0.018119688602055', '0.018109630726366', '0.0181146952574284', '0.0181041917686091', '0.0181114787820732', '0.0181135109105496', '0.0181156468525783', '0.0180992396004504', '0.0181260718269463', '0.0181003136781442', '0.0181070481243477', '0.0181074850136501', '0.0181076732738566', '0.0181037805273608', '0.0181054610855719', '0.0180953817492662', '0.0181251186615074', '0.0181015350140535', '0.0181170220768121', '0.0180958751689736', '0.0181153706561862', '0.0181087792807607', '0.0181190203568361', '0.0181090340165361', '0.0181264401469612', '0.0181213607853913', '0.0181053968781984', '0.0181112694102031', '0.0181143349633352', '0.0181028416689998', '0.0181058145750794', '0.018112246653407', '0.018102646778684', '0.0181018787328736', '0.0181089858610059', '0.0181129695097887', '0.0181304682872664', '0.0181118867082669', '0.0181302966023328', '0.0181224601621861', '0.0181439211278299', '0.0181333813478864', '0.0181515932110585', '0.0181361972250634', '0.0181645852590311', '0.018168622995547', '0.0182029242145575', '0.01826668143855', '0.0187321041138753'], 'b1': ['0.0246216519286131', '0.024510637261161', '0.0246496004937187', '0.0246158903420498', '0.0244170047588795', '0.0245126709060577', '0.0246256846551714', '0.0247016785610073', '0.0245795106168697', '0.024601391414026', '0.0247430929974417', '0.0246690990460763', '0.0246595979967682', '0.024549218035998', '0.0245417076893854', '0.0249321420235364', '0.0245095865737246', '0.0245109975567032', '0.0246271043662396', '0.0249088567021879', '0.0244657876231882', '0.0248177038501861', '0.0247746806522609', '0.0246467759093347', '0.0244827044066167', '0.0246539416709665', '0.024721638131062', '0.0244816703025508', '0.0248143197952532', '0.0247325126325631', '0.0245241834309148', '0.0244880571694591', '0.0247891481591618', '0.0245174540737672', '0.0248839095525633', '0.0244844522938572', '0.024819053561975', '0.0246153722426461', '0.0244569738236619', '0.024594164032081', '0.024739169721128', '0.0246157473759408', '0.0245033974853286', '0.0247480762129667', '0.0246028704761041', '0.0245055458173238', '0.02469614722145', '0.0244073975760008', '0.0245040215437411', '0.0244248794159556', '0.0244697287048048', '0.0246472875499521', '0.0246650067939463', '0.0244401485106133', '0.0243791267698239', '0.0246499286698909', '0.0243780806209942', '0.0247780093711051', '0.0247202135322636', '0.0245516643449751', '0.0244492274695042', '0.0246700816544131', '0.0246774251199509', '0.0245070955769284', '0.0246320020464858', '0.0244041100537399', '0.0245954472358265', '0.0243854736620815', '0.0245493665880845', '0.0247136054955626', '0.0246331129577409', '0.0247415952572516', '0.0248944354541623', '0.0247328998106215', '0.0246575704615342', '0.0247710366748172', '0.0247250916615888', '0.0247268100478861', '0.0248027810861271', '0.0248363912138882', '0.0249100102065207', '0.0245452771289432', '0.0246815472221476', '0.0246684887780455', '0.0248864084046402', '0.024731509076811', '0.0246692868745663', '0.0245807166643024', '0.0247555966841634', '0.024710914276389', '0.0247437058838994', '0.0247758020372237', '0.0244627418690115', '0.0246814871728906', '0.0246144002825787', '0.0247326369205602', '0.0247778595970861', '0.0250858798171903', '0.02491093660596', '0.0248098248290651', '0.0248231980080813', '0.0247223508668658', '0.0247285340201608', '0.0245271073409594', '0.0246145044959695', '0.0247301532553592', '0.0247854968501228', '0.0249164176717207', '0.0248323871154641', '0.0245063201734407', '0.0249895534773082', '0.0247316035147414', '0.0250480786353239', '0.0245604978699841', '0.0248995078707639', '0.0247918838915929', '0.0246323141629729', '0.0246174315481265', '0.0245240120112333', '0.0247643169185683', '0.0246655463644507', '0.024543567994421', '0.0246558676112366', '0.0245943996905025', '0.0250753080058395', '0.0250045579362867', '0.0246554029277417', '0.0250264155167244', '0.0246469593737799', '0.024665052703698', '0.0248279473108028', '0.0246961217354281', '0.0245553355540586', '0.0245557204628138', '0.0247270518159704', '0.0247966155635732', '0.0247140158903397', '0.0247626610253931', '0.0248185803249523', '0.024609407466155', '0.0247364268316634', '0.0246575409605911', '0.0248112543155938', '0.0245781406559126', '0.0247824863574285', '0.0246500847281345', '0.0247009649523946', '0.0248219430833464', '0.024708337569752', '0.0246372621170157', '0.0247286281089676', '0.0245687148427376', '0.0244441117615777', '0.0246077550642157', '0.0247010606122576', '0.0247215691791535', '0.0245714196777312', '0.024795434478477', '0.0244320022353862', '0.0247462735133231', '0.0246903013215404', '0.0245514873393163', '0.0245751469211505', '0.0246573018109337', '0.0244665511564739', '0.0246441606245413', '0.0244944379267046', '0.0247590790173862', '0.0244953459971555', '0.0247222716158114', '0.0246553421802375', '0.0246119307568831', '0.0246354342804737', '0.0243070187840778', '0.0247393772751007', '0.0245134415963769', '0.0247120136665658', '0.0245733489346753', '0.0244120664057354', '0.0245414062211677', '0.0248899691161084', '0.0246153303478156', '0.0247247613906751', '0.0246353044064992', '0.0248533992931349', '0.0244737232023303', '0.0247406206787574', '0.0245452593236402', '0.0245186117675831', '0.024411721471631', '0.0246871115538839', '0.0245525059073826', '0.0247245782753535', '0.0246827284818056', '0.0247343388980489', '0.0248475752134495', '0.024459163701364', '0.0247058137553385', '0.0246986457244034', '0.024567998615698', '0.0243962081650239', '0.02490341386546', '0.024537072550077', '0.0244906673919604', '0.0245997164936153', '0.0246575069210413', '0.0242198948182748', '0.024409780344485', '0.0242338197871209', '0.0244076180475463', '0.0245564188845504', '0.0246008453847352', '0.0245239058776628', '0.0246243248187984', '0.0246248141155061', '0.0243052663582307', '0.0245985008452839', '0.0243217586073769', '0.0246622282938758', '0.0246268287331674', '0.0244327690853459', '0.0245608707339754', '0.0244063069139137', '0.0246343666605434', '0.0244305303303416', '0.0247014261446536', '0.0246118652962104', '0.0246281107149804', '0.0246470772029907', '0.0247607972291217', '0.0247295342592388', '0.0246461279359564', '0.0245565616760977', '0.0244480411475541', '0.0245717391258137', '0.0246028116487796', '0.0248620650642601', '0.0244563693161703', '0.0245400739655581', '0.024658254394642', '0.0247536939606119', '0.024581995678565', '0.024518225986019', '0.0249431329577538', '0.024793957860264', '0.0246779200026361', '0.0246277942344484', '0.0245882612250266', '0.0245443142460891', '0.0244427728726199', '0.0245225095578749', '0.0246755827947801', '0.0244593372157869', '0.0246154502717679', '0.0255941653568822'], 'SAMSN': '852F', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Firmware': '2.06', 'IDDataBack': 'DLAB_2016-11-29_14-47-59_729_812', 'IDDataCal': 'DLAB_2016-12-07_12-00-24_364_510', 'IDDataCalAQ': 'DLAB_2016-12-07_12-02-43_591_545', 'IntegrationTime': '0', 'Reverse': '0', 'SerialNo_MMS': '103307', 'WavelengthRange': '310..1100', 'c0s': '299.895', 'c1s': '3.31161', 'c2s': '0.00031652', 'c3s': '-1.73194e-06', 'c4s': '+0.000000000E+00', 'cs': '102842'}}} + + + ## 封装该类的 处理buf hex2int函数 + + +@dataclass +class AWRAMS(object): + deviceid:int = None + configSensor:List[str] =None # 序列号 + configFunc:List[str] =None # 功能 Lsky Esky Lwater + calibrationCfg:dict =None + data : AWRAMSData =None + wavelength:List[np.ndarray] =None + spectrum:List[np.ndarray] =None + beginWavelength: float =None + endWavelength: float =None + rowFactor:float =None + wvInterval: float =None + newWavelength:np.ndarray=None + Lsky:np.ndarray =None # 无需记录原始波长,记录插值后的波长 + Esky:np.ndarray =None + Lwater:np.ndarray =None + Lw:np.ndarray =None + Rs:np.ndarray =None + + afterdeal = [] + afterresult =[] + + def __post_init__(self): + assert self.deviceid != None + self.data = AWRAMSData(deviceid=self.deviceid ) + pass + + def set_cfg_calibration(self,calcfg:dict): + assert self.deviceid != None + # assert self.deviceid in calcfg.keys(), f">>>> No calibrations data for the current id {self.deviceid}" + self.calibrationCfg = calcfg + pass + + def set_retrieve(self,rtv:dict): + self.beginWavelength = float(rtv["beginWL"]) + self.endWavelength = float(rtv["endWL"]) + self.wvInterval = float(rtv["interval"]) + self.rowFactor = float(rtv["rowFactor"]) + self.newWavelength = np.arange(self.beginWavelength,self.endWavelength,self.wvInterval) + pass + + + def config_awrams(self, cfg:dict): + assert self.deviceid in cfg.keys(), f'>>>> Cannot get the configuration of device id {self.deviceid}' + self.configSensor = [None,None,None] + self.configFunc = [None,None,None] + + # Lsky Esky Lwater + # {1: {'FUNC': 'Lsky', 'SN': '85B5'}, 2: {'FUNC': 'Esky', 'SN': '50ED'}, 3: {'FUNC': 'Lwater', 'SN': '852F'}} + for k,v in cfg.items() : + if v["FUNC"] == "Lsky": + self.configSensor[0] = v["SN"] + self.configFunc[0] = v["FUNC"] + if v["FUNC"] == "Esky": + self.configSensor[1] = v["SN"] + self.configFunc[1] = v["FUNC"] + if v["FUNC"] == "Lwater": + self.configSensor[2] = v["SN"] + self.configFunc[2] = v["FUNC"] + + # 将传感器配置传给 AWRAMSDATA + self.data = AWRAMSData( deviceid=self.deviceid, configSensor=self.configSensor, configFunc=self.configFunc ) + # 将标定配置传给 AWRAMSData 建立工厂 + self.data.build_datafactory_by_configSensor( self.calibrationCfg) + pass + + def callback( self, wavelength:list, spectrum:list ): + ''' 处理返回的数据, 生成Lsky Esky Lwater Lw Rs ''' + log.info( " call back for Lw Rs , 插值, 计算, 保存.................. " ) + self.wavelength = wavelength + self.spectrum = spectrum + + self.Lsky = np.interp( self.newWavelength, self.wavelength[0], self.spectrum[0]) + self.Esky = np.interp( self.newWavelength, self.wavelength[1], self.spectrum[1]) + self.Lwater = np.interp( self.newWavelength, self.wavelength[2], self.spectrum[2]) + self.Lw = self.Lwater - self.rowFactor * self.Lsky + self.Rs = self.Lw/self.Esky + + self.save() + + # 保存 进一步处理 + + def save(self, mode=0): + ''' 保存在原文件所在目录 ''' + pth = self.data.currentPath + fanme = "20"+self.data.info_frame.year+"_"+self.data.info_frame.month+"_" \ + +self.data.info_frame.day+"_"+self.data.info_frame.hour+"_" \ + +self.data.info_frame.minute+"_"+self.data.info_frame.second \ + +".csv" + save_fpath = pth.joinpath(fanme) + ret = "" + ret = ret + str(self.deviceid)+"_"+pth.parts[-1] + TOKEN + self.list2str(list(self.newWavelength)) + ret = ret + NEWLINE + "Lsky" + TOKEN + self.list2str( list(self.Lsky) ) + ret = ret + NEWLINE + "Esky" + TOKEN + self.list2str( list(self.Esky) ) + ret = ret + NEWLINE + "Lwater" + TOKEN + self.list2str( list(self.Lwater) ) + ret = ret + NEWLINE + "Lw" + TOKEN + self.list2str( list(self.Lw) ) + ret = ret + NEWLINE + "Rs" + TOKEN + self.list2str( list(self.Rs) ) + save_fpath.write_text( ret ) + pass + + def list2str( self, lst:list, token=";" ): + ''' 保存在原文件所在目录 ''' + ret= "" + for i in range(len(lst)): + if i == 0: + ret = ret + str(lst[i]) + else: + ret = ret + TOKEN + str(lst[i]) + return ret + pass + + def registet_func(self, func:Callable): + self.afterdeal.append(func) + pass + + def execute_func(self, ): + for f in self.afterdeal: + f() + pass + +@dataclass +class Handheld(object): + deviceid:int = None + configSensor:List[str] =None # 序列号 + configFunc:List[str] =None # 功能 Lsky Esky Lwater + calibrationCfg:dict =None + data : AWRAMSData =None + wavelength:List[np.ndarray] =None + spectrum:List[np.ndarray] =None + beginWavelength: float =None + endWavelength: float =None + rowFactor:float =None + wvInterval: float =None + newWavelength:np.ndarray=None + Lsky:np.ndarray =None # 无需记录原始波长,记录插值后的波长 + Esky:np.ndarray =None + Lwater:np.ndarray =None + Lw:np.ndarray =None + Rs:np.ndarray =None + + afterdeal = [] + afterresult =[] + + def __post_init__(self): + assert self.deviceid != None + self.data = AWRAMSData(deviceid=self.deviceid ) + pass + + def set_cfg_calibration(self,calcfg:dict): + assert self.deviceid != None + # assert self.deviceid in calcfg.keys(), f">>>> No calibrations data for the current id {self.deviceid}" + self.calibrationCfg = calcfg + pass + + def set_retrieve(self,rtv:dict): + self.beginWavelength = float(rtv["beginWL"]) + self.endWavelength = float(rtv["endWL"]) + self.wvInterval = float(rtv["interval"]) + self.rowFactor = float(rtv["rowFactor"]) + self.newWavelength = np.arange(self.beginWavelength,self.endWavelength,self.wvInterval) + pass + + def config_awrams(self, cfg:dict): + assert self.deviceid in cfg.keys(), f'>>>> Cannot get the configuration of device id {self.deviceid}' + self.configSensor = [None,None,None] + self.configFunc = [None,None,None] + + # Lsky Esky Lwater + # {1: {'FUNC': 'Lsky', 'SN': '85B5'}, 2: {'FUNC': 'Esky', 'SN': '50ED'}, 3: {'FUNC': 'Lwater', 'SN': '852F'}} + for k,v in cfg.items() : + if v["FUNC"] == "Lsky": + self.configSensor[0] = v["SN"] + self.configFunc[0] = v["FUNC"] + if v["FUNC"] == "Esky": + self.configSensor[1] = v["SN"] + self.configFunc[1] = v["FUNC"] + if v["FUNC"] == "Lwater": + self.configSensor[2] = v["SN"] + self.configFunc[2] = v["FUNC"] + + # 将传感器配置传给 AWRAMSDATA + self.data = AWRAMSData( deviceid=self.deviceid, configSensor=self.configSensor, configFunc=self.configFunc ) + # 将标定配置传给 AWRAMSData 建立工厂 + self.data.build_datafactory_by_configSensor( self.calibrationCfg) + pass + + def callback( self, wavelength:list, spectrum:list ): + ''' 处理返回的数据, 生成Lsky Esky Lwater Lw Rs ''' + log.info( " call back for Lw Rs , 插值, 计算, 保存.................. " ) + self.wavelength = wavelength + self.spectrum = spectrum + + self.Lsky = np.interp( self.newWavelength, self.wavelength[0], self.spectrum[0]) + self.Esky = np.interp( self.newWavelength, self.wavelength[1], self.spectrum[1]) + self.Lwater = np.interp( self.newWavelength, self.wavelength[2], self.spectrum[2]) + self.Lw = self.Lwater - self.rowFactor * self.Lsky + self.Rs = self.Lw/self.Esky + + # 展示数据 + msg = {"flag":"data", "data": + [ self.meauretime, self.newWavelength, self.Rs ] } + pub.sendMessage('update' , msg=msg) + + self.save_handheld() + + # 保存 进一步处理 + + def save(self, mode=0): + ''' 保存在原文件所在目录 ''' + pth = self.data.currentPath + fanme = "20"+self.data.info_frame.year+"_"+self.data.info_frame.month+"_" \ + +self.data.info_frame.day+"_"+self.data.info_frame.hour+"_" \ + +self.data.info_frame.minute+"_"+self.data.info_frame.second \ + +".csv" + save_fpath = pth.joinpath(fanme) + ret = "" + ret = ret + str(self.deviceid)+"_"+pth.parts[-1] + TOKEN + self.list2str(list(self.newWavelength)) + ret = ret + NEWLINE + "Lsky" + TOKEN + self.list2str( list(self.Lsky) ) + ret = ret + NEWLINE + "Esky" + TOKEN + self.list2str( list(self.Esky) ) + ret = ret + NEWLINE + "Lwater" + TOKEN + self.list2str( list(self.Lwater) ) + ret = ret + NEWLINE + "Lw" + TOKEN + self.list2str( list(self.Lw) ) + ret = ret + NEWLINE + "Rs" + TOKEN + self.list2str( list(self.Rs) ) + save_fpath.write_text( ret ) + pass + + def save_handheld(self, mode=0): + ''' 保存到五个文件 Lsky Esky Lwater Lw Rs ''' + pth = DATA_DIR + pth = pth.joinpath("output", + self.data.info_frame.year+"_"+self.data.info_frame.month+"_" + +self.data.info_frame.day+"_"+self.data.info_frame.hour+"_" + +self.data.info_frame.minute+"_"+self.data.info_frame.second + ) + if not pth.exists(): + pth.mkdir(parents=True) + header = str(self.deviceid) + TOKEN + self.list2str(list(self.newWavelength)) + + Lsky_fpath = pth.joinpath( "Lsky"+SAVE_EXT_NAME ) + Esky_fpath = pth.joinpath( "Esky"+SAVE_EXT_NAME ) + Lwater_fpath = pth.joinpath( "Lwater"+SAVE_EXT_NAME ) + Lw_fpath = pth.joinpath( "Lw"+SAVE_EXT_NAME ) + Rs_fpath = pth.joinpath( "Rs"+SAVE_EXT_NAME ) + + if not Lsky_fpath.exists(): + Lsky_fpath.write_text( header ) + if not Esky_fpath.exists(): + Esky_fpath.write_text( header ) + if not Lwater_fpath.exists(): + Lwater_fpath.write_text( header ) + if not Lw_fpath.exists(): + Lw_fpath.write_text( header ) + if not Rs_fpath.exists(): + Rs_fpath.write_text( header ) + + # 添加时间 + Lsky = NEWLINE + self.meauretime+ TOKEN + self.list2str( list(self.Lsky) ) + Esky = NEWLINE + self.meauretime+ TOKEN + self.list2str( list(self.Esky) ) + Lwater = NEWLINE + self.meauretime+ TOKEN + self.list2str( list(self.Lwater) ) + Lw = NEWLINE + self.meauretime+ TOKEN + self.list2str( list(self.Lw) ) + Rs = NEWLINE + self.meauretime+ TOKEN + self.list2str( list(self.Rs) ) + + # 追加写入 + with open(Lsky_fpath, 'a') as f: + f.write( Lsky ) + with open(Esky_fpath, 'a') as f: + f.write( Esky ) + with open(Lwater_fpath, 'a') as f: + f.write( Lwater ) + with open(Lw_fpath, 'a') as f: + f.write( Lw ) + with open(Rs_fpath, 'a') as f: + f.write( Rs ) + pass + + + def list2str( self, lst:list, token=";" ): + ''' 保存在原文件所在目录 ''' + ret= "" + for i in range(len(lst)): + if i == 0: + ret = ret + str(lst[i]) + else: + ret = ret + TOKEN + str(lst[i]) + return ret + pass + + def registet_func(self, func:Callable): + self.afterdeal.append(func) + pass + + def execute_func(self, ): + for f in self.afterdeal: + f() + pass + + def deal_sensor_byte(self, byt:bytes): + """ + @description : 处理sensor.bin字节, 1754bytes= 26+3*576 + """ + readout = byt + assert len(readout)%1754 == 0, f" wrong bytes number, sensor.bin" + locale.setlocale(locale.LC_ALL, '') + self.meauretime = self.data.info_frame.time_str + bytes_list = [] + for i in range( int(len(readout)/1754)): + self.cur_datetime = datetime.strptime(self.meauretime, STD_TIME_STR_FMT) + self.cur_datetime= self.cur_datetime + timedelta( seconds=self.data.info_frame.MeasureInterval) * i + self.meauretime = datetime.strftime(self.cur_datetime, STD_TIME_STR_FMT) + tmp_byte = [ readout[ i*1754 : i*1754+1754 ] ] + self.data.set_data_frame( tmp_byte, None, self.callback ) + pass + + +class AwramsHandle(object): + def __init__(self, deviceid=2, cfg=None, calcfg=None, rtv=None): + self.sensor_cfg = cfg + self.calcfg = calcfg + self.retrieve = rtv + + self.device_id = deviceid + self.aw = AWRAMS( deviceid=self.device_id ) + self.aw.set_cfg_calibration( self.calcfg ) + self.aw.set_retrieve( self.retrieve) + self.aw.config_awrams( self.sensor_cfg ) + + self.afterdeal = [] + + pass + + def read_one_folder_awrams_online(self, pth:Path): + ''' self.data 传数据 info_frame, data_frame''' + log.info(f" 读一个文件夹进行处理 {pth}" ,__name__,"read_one_folder_awrams_online") + bytes_list = [] + + bin_files = pth.glob('*.bin') + for bf in bin_files: + if bf.name != "info.bin": + bytes_list.append( self.read_bin(bf) ) + + self.aw.data.set_data_frame( bytes_list, pth, self.aw.callback ) # 目录也要传过去 + pass + + def read_bin(self,fpath: Path): + assert fpath.exists(), f">>>> not find {fpath} " + ret = b'' + with open(fpath, 'rb') as file: + ret = file.read() + return ret + pass + + pass + +class HandheldHandle(object): + def __init__(self, deviceid=2, cfg=None, calcfg=None, rtv=None): + self.sensor_cfg = cfg + self.calcfg = calcfg + self.retrieve = rtv + + self.device_id = deviceid + self.aw = Handheld( deviceid=self.device_id ) + self.aw.set_cfg_calibration( self.calcfg ) + self.aw.set_retrieve( self.retrieve) + self.aw.config_awrams( self.sensor_cfg ) + + self.afterdeal = [] + + pass + + def deal_sensor_bin(self, pth:Path): + ''' 要分离出每组时间 ''' + # print(self.aw.data.info_frame ) + byt = self.read_bin(pth) + self.aw.deal_sensor_byte( byt ) + pass + + def read_folders_from_SD(self, pth:Path): + ''' self.data 传数据 info_frame, data_frame''' + log.info(f" 读 SD文件夹进行处理 {pth}" ,__name__,"read_one_folder_awrams_online") + fs = None + filelist = [] + fs = pth.glob( "*/*/info/*" ) + msg = {"flag":"notice", "data": "开始处理数据 " } + pub.sendMessage('update' , msg=msg) + for f in fs: + if f.stat().st_size == 0: + continue + mypath = f.parent.parent + log.info(f" mypath {mypath}") + sensor_path = mypath.joinpath( 'sensor', f.name ) + if not sensor_path.exists() or sensor_path.stat().st_size == 0: + continue + + # 处理SD 需要多处理info_frame + self.aw.data.set_info_frame( self.read_bin(f) ) + + # 按单次测量的处理 + self.deal_sensor_bin( sensor_path) + + msg = {"flag":"notice", "data": "完成数据处理 " } + pub.sendMessage('update' , msg=msg) + pass + + def read_bin(self,fpath: Path): + assert fpath.exists(), f">>>> not find {fpath} " + ret = b'' + with open(fpath, 'rb') as file: + ret = file.read() + return ret + pass + + pass + + +class ExternalFun(object): + def __init__(self, aw:AWRAMSData=None): + pass + + @staticmethod + def get_par_400_700( aw:AWRAMSData ): + par_400_700 = 0.0 + for i in range( 50, 350, 1 ): + par_400_700 = par_400_700 + aw.Esky + return par_400_700 + pass + + @staticmethod + def get_par_350_950( aw:AWRAMSData): + par_350_950 = 0.0 + for i in range( 0, 600, 1 ): + par_350_950 = par_350_950 + aw.Esky + return par_350_950 + pass + + @staticmethod + def get_chl( aw:AWRAMSData ): + return 0.0 + pass + pass + + + +class Acfg: + cfg= {1: {'FUNC': 'Lsky', 'SN': '85C2'}, 2: {'FUNC': 'Esky', 'SN': '50ED'}, 3: {'FUNC': 'Lwater', 'SN': '852F'}} + calcfg= {'Lsky': {'SN': '85C2', 'FUNC': 'Lsky', 'TYPE': 'SAM', 'samsn': '85C2', 'inifile': 'SAM_85C2.ini', 'calfile': 'Cal_SAM_85C2.dat', 'calaqfile': 'CalAQ_SAM_85C2.dat', 'backfile': 'Back_SAM_85C2.dat', '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'], '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'], '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'}, 'Esky': {'SN': '50ED', 'FUNC': 'Esky', 'TYPE': 'SAMIP', 'samsn': '859F', 'inifile': 'SAMIP_50ED_ALL.ini', 'calfile': 'Cal_SAM_859F.dat', 'calaqfile': 'CalAQ_SAM_859F.dat', 'backfile': 'Back_SAM_859F.dat', 'cal': ['+NAN', '+NAN', '+NAN', '+NAN', '0.549282530081406', '0.621825635483575', '0.705214779700439', '0.782494923890489', '0.848306874043027', '0.952625287085828', '1.06364941208026', '1.17099618224932', '1.27964867192574', '1.37878597375063', '1.42771820575638', '1.4380590385421', '1.41583530083466', '1.35751030831315', '1.28801896577964', '1.23773169248486', '1.19003370359023', '1.16911032524399', '1.16789019991587', '1.17908641221467', '1.20561721452238', '1.24993325867368', '1.3042108426727', '1.37841324495146', '1.46663415660191', '1.55813913029349', '1.66686169700722', '1.78274771118438', '1.89315285694338', '2.00609300108623', '2.10386062632617', '2.18077321675475', '2.23620955735442', '2.266135432154', '2.26878990322214', '2.25797663538301', '2.22685859649013', '2.17776313289299', '2.1222752364519', '2.06098344374156', '1.99948809108821', '1.94462577242816', '1.8989381397134', '1.8637403074385', '1.84137175128878', '1.82996842025894', '1.82735603324287', '1.82819560800875', '1.82831225824908', '1.82476779554239', '1.82142520789599', '1.82469614734563', '1.83514598035505', '1.85423698694933', '1.88102853388183', '1.91679111910883', '1.95713305118927', '2.0033013266641', '2.05191276620812', '2.10100127704333', '2.15116215495783', '2.19982933350689', '2.24341508467426', '2.28026480621138', '2.30634686430023', '2.31796219508283', '2.31589695847203', '2.29809543158409', '2.2668387918562', '2.22596956700897', '2.17822422289454', '2.1262484698939', '2.07154274835781', '2.01784816285075', '1.9635850159156', '1.90957838150673', '1.85662335754133', '1.80118393109592', '1.74752896056537', '1.69458207285898', '1.64238998731142', '1.59255947952261', '1.55042463825823', '1.52145095482736', '1.50182839545807', '1.48602912306116', '1.47501182897849', '1.46801797625318', '1.46252443118698', '1.4571840542778', '1.44881752975571', '1.433373570625', '1.4106211402034', '1.38310053980989', '1.35343439202405', '1.32469024445085', '1.29921323938482', '1.2757042981125', '1.25356245928469', '1.23230080447944', '1.20776661327865', '1.18172190161938', '1.16211138784545', '1.14836490545677', '1.13698033747357', '1.12673020620722', '1.115430409999', '1.10428562795353', '1.0934141739792', '1.0851095103506', '1.08102444265095', '1.08007408967758', '1.08238869164072', '1.08781099449618', '1.09202496629142', '1.09279743926351', '1.08928198225434', '1.08099296127192', '1.06779395728469', '1.05125732218958', '1.03307124483462', '1.01642561672595', '1.0017478853335', '0.98877464388953', '0.978591382441999', '0.970432000434175', '0.962460675619692', '0.953651636148435', '0.943103023421902', '0.930554197290447', '0.915976069829803', '0.89827602173614', '0.878650755188226', '0.859108524352699', '0.840122962860222', '0.820853477964574', '0.803547895709764', '0.786651104537257', '0.769194844035412', '0.751217544779413', '0.731862968408631', '0.710478767970412', '0.687207420135085', '0.662469528888512', '0.636358233772055', '0.609121332586544', '0.580838486227566', '0.552767035926316', '0.525876935395925', '0.499896413074609', '0.475284681533185', '0.452387885405863', '0.431848904268036', '0.413013739466993', '0.395710805209202', '0.380181587532903', '0.365591896979342', '0.352105459639395', '0.339276260510366', '0.32616389487977', '0.313880254968568', '0.301213081346406', '0.28867892621412', '0.276332017077307', '0.263867205519659', '0.251559483539307', '0.239917175566115', '0.228872841726392', '0.218348838385983', '0.208663588155861', '0.199488791575245', '0.191252859631973', '0.183364916996847', '0.175877803627425', '0.169219899131997', '0.162866423884395', '0.156727192611269', '0.151124000714184', '0.145138407523578', '0.13971586046093', '0.134506608902369', '0.129059486722317', '0.124203168251957', '0.119075347065844', '0.113513221481262', '0.107843336832916', '0.101790305051534', '0.0961960826886135', '0.0914035900672732', '0.0868727278958915', '0.082573024301116', '+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', '+NAN'], 'calaq': ['+NAN', '+NAN', '+NAN', '+NAN', '0.308009257704273', '0.348985396550329', '0.39611199753429', '0.43986968240828', '0.477232425339663', '0.536318311921194', '0.599255756896796', '0.660195405447511', '0.721940911560072', '0.778381764258939', '0.806518994572799', '0.812862184246214', '0.800779958731845', '0.768238986615194', '0.729324871828135', '0.701235591002145', '0.674572715683613', '0.663056816542841', '0.662699926877705', '0.669382520005193', '0.684772623825422', '0.710275115045633', '0.74145572495904', '0.783988164111933', '0.834525694448954', '0.886966821712609', '0.949247521262016', '1.01565043430167', '1.07897249264832', '1.14377888540009', '1.19997013476615', '1.24429313837597', '1.2763795229717', '1.29391228294411', '1.29587029284695', '1.29012478792631', '1.27276079346714', '1.2450982196578', '1.21375364521069', '1.17906121512383', '1.14422362714978', '1.11315509839511', '1.08731507394343', '1.06746197368796', '1.05494171300318', '1.04869254224893', '1.04747349722362', '1.04822757370139', '1.04856210675178', '1.04679141002185', '1.04513065036628', '1.04725995618916', '1.0535067386541', '1.06471361999517', '1.08034380002613', '1.10113009018595', '1.12455239246124', '1.15132895471663', '1.1795169782144', '1.20798673857183', '1.23708055274173', '1.26532262623006', '1.29064822236823', '1.31210337451311', '1.32736540301797', '1.33430139824988', '1.33335932325033', '1.32335113190924', '1.30558590461423', '1.28227321775146', '1.25498704776805', '1.22525023251367', '1.19392661641762', '1.16317225749886', '1.13207700011805', '1.10111674556499', '1.07075040366943', '1.03893893539784', '1.0081446443131', '0.97774721715577', '0.947774052897518', '0.919152947182789', '0.894963764571428', '0.87836395884067', '0.867156996532193', '0.858153034494107', '0.851906778357719', '0.847981268808314', '0.844919850173329', '0.841944554421527', '0.83721825473176', '0.828398944802337', '0.815351600734525', '0.799543228463232', '0.782489183888857', '0.765962841341892', '0.751320667184625', '0.737812095757199', '0.725090001717255', '0.712873061263532', '0.698758948036327', '0.683766639638848', '0.672493396285743', '0.664610527729123', '0.658092136872804', '0.652228157780532', '0.645754399378545', '0.639368207275896', '0.633138158063289', '0.628392493836991', '0.626088937445665', '0.625599854321674', '0.627001238574581', '0.630202545823175', '0.632703647598273', '0.633210363154327', '0.63123164301687', '0.626485370072314', '0.618891745640103', '0.609361448964366', '0.598872648152344', '0.58927447780469', '0.580815044730471', '0.573341941514821', '0.567484926926375', '0.562800136636572', '0.558223116403165', '0.553158922485434', '0.547084299354418', '0.539847820827437', '0.531432360197925', '0.521203701656628', '0.509855867118928', '0.498554054755033', '0.487573187562371', '0.476425489189536', '0.466415695619565', '0.456641365086098', '0.446540473657011', '0.436135290849149', '0.424928637592468', '0.412541586513936', '0.399056656796071', '0.384717912438278', '0.369579305401316', '0.353784632326527', '0.337380068381195', '0.321095903578543', '0.305495669126019', '0.290421643260465', '0.276140762920409', '0.262854333224098', '0.250936131068681', '0.240006392992584', '0.229965608856624', '0.220954309792884', '0.212487857424938', '0.204661532835082', '0.197216204057537', '0.189605277840326', '0.182475141050851', '0.175121099828465', '0.167843462384963', '0.160673785509465', '0.153434661065448', '0.146286002352245', '0.139523451810534', '0.133107862589632', '0.126994143420237', '0.121367561058691', '0.116037239577153', '0.111252442566666', '0.106669531239736', '0.102319284531729', '0.098450973344807', '0.0947593486764351', '0.0911919684356708', '0.0879361030612687', '0.0844573547823388', '0.0813058869947144', '0.0782782092672921', '0.0751117681314502', '0.0722888539254525', '0.0693076153913147', '0.0660732713239472', '0.0627758734115707', '0.0592551057473219', '0.0560010918166818', '0.0532135140872552', '0.0505779890461858', '0.0480767985810033', '+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', '+NAN'], 'b0': ['0.0165892037855774', '0.0165122714877024', '0.0164973019224162', '0.0166164505683762', '0.0165490556826164', '0.0165598147795938', '0.0164974439463348', '0.0165638938670541', '0.0165295399561229', '0.0165679375357729', '0.0165135498774463', '0.0165496044113927', '0.0165162233817516', '0.0165748471564411', '0.0165168071803162', '0.016561615028724', '0.0165228899565738', '0.0165630265440819', '0.0165138880130166', '0.016557182975186', '0.0165155392591658', '0.0165657065040199', '0.016518681058554', '0.0165595148543898', '0.0165168741793146', '0.0165713147040385', '0.0165192898072665', '0.0165624174464164', '0.0165336104942318', '0.0165711529642688', '0.0165277786152653', '0.0165778362888406', '0.0165368341231259', '0.0165763434674064', '0.0165347332508855', '0.0165844704110229', '0.0165276158286362', '0.016561547855249', '0.0165227810832013', '0.0165862270410135', '0.0165383602695828', '0.0165776928691096', '0.0165375732058275', '0.0165658438170714', '0.0165459794864142', '0.0165800024153139', '0.0165525603932462', '0.0165907623846741', '0.0165508449397234', '0.0165903560287695', '0.0165476473078365', '0.0165857165226035', '0.0165481178711146', '0.0165957271151451', '0.0165507685189908', '0.0165883062781607', '0.0165548565047555', '0.0166030835702795', '0.0165500053585241', '0.0165961038100348', '0.0165517131350783', '0.0166133108627067', '0.0165473248751564', '0.0165983146025071', '0.0165525591719102', '0.0166064242729443', '0.0165435383848847', '0.0165950365369267', '0.0165586482293239', '0.0166092385798323', '0.0165697841956677', '0.0165967129077004', '0.0165732545344154', '0.0166026855892496', '0.0165687354170748', '0.0166129015407006', '0.0165534954131229', '0.0166168593669527', '0.0165646865140591', '0.0166018156491291', '0.0165586096700045', '0.0166129247460829', '0.0165712166482126', '0.0166143243970348', '0.0165701301826831', '0.0166189659969196', '0.0165676643054824', '0.0166299271377517', '0.0165751742999882', '0.0166072596667062', '0.0165629157514673', '0.0166089130065742', '0.0165693558557167', '0.0166203017894511', '0.0165698981288603', '0.0166107804291794', '0.0165637935430329', '0.0166245248200721', '0.0165754381085446', '0.0166166770389491', '0.01656780789969', '0.0166270111110302', '0.0165662229546329', '0.0166136421936913', '0.0165698424708382', '0.0166173691874565', '0.0165821997730911', '0.0166164975025705', '0.0165739878593907', '0.016623824645643', '0.0165631308810639', '0.0166247172677161', '0.0165669479047333', '0.0166042075482691', '0.0165806895040011', '0.0166075213815439', '0.0165708319274012', '0.0166233251192561', '0.0165772010196913', '0.016621139974838', '0.0165690780890356', '0.0166295818486425', '0.0165801878838955', '0.0166132293821539', '0.0165742146789166', '0.0166257485986531', '0.0165839324997932', '0.0166274820232614', '0.0165711257459257', '0.0166118375826471', '0.0165702390560556', '0.0166138555785223', '0.0165495885340259', '0.0166076853895089', '0.0165715106412136', '0.0165914878582042', '0.0165708420470416', '0.0166090042578143', '0.0165677817282062', '0.0166140523880802', '0.0165772907006423', '0.0166172060518744', '0.0165733789362016', '0.0166208616847272', '0.0165699940909675', '0.0166094990733341', '0.0165568282643426', '0.0166152531357555', '0.0165675189665092', '0.0166057366608274', '0.0165695308557048', '0.0165973481768498', '0.0165636400036615', '0.0166118299056785', '0.0165665354421491', '0.0165949780872796', '0.0165594520428288', '0.0166050473039449', '0.0165700478297475', '0.0166062033856213', '0.0165620390067611', '0.0165990297819202', '0.016574294763657', '0.0165960321001693', '0.016567221483977', '0.0166072507684017', '0.0165554031398131', '0.0166002793830319', '0.0165516576515327', '0.0166026362123836', '0.0165560230550254', '0.0166113124082061', '0.0165672890064051', '0.016604050693843', '0.0165640243755198', '0.0166057021144688', '0.0165508046356384', '0.0165935180674385', '0.0165675029146658', '0.0165893028882626', '0.0165492090475113', '0.0165956159735774', '0.0165528561310127', '0.0166073952349921', '0.0165463099450159', '0.0166001891786512', '0.0165482056328235', '0.0165952621351168', '0.0165536456374398', '0.0165997360630289', '0.0165524916494821', '0.0165986206343906', '0.0165521507222869', '0.016599824522644', '0.0165434263709342', '0.0166010940140834', '0.0165431388335659', '0.0165863373101985', '0.0165434326520903', '0.0166064767903884', '0.016561522556148', '0.0165987263671851', '0.0165499257972134', '0.0165839637310972', '0.0165457994266058', '0.0165795458101604', '0.0165524665248577', '0.016595737060309', '0.0165466772181714', '0.0165879578484734', '0.0165430683450362', '0.0165948067512992', '0.0165396531408809', '0.0165652856665609', '0.0165523227561735', '0.0165783818770389', '0.0165503544861175', '0.016572293692008', '0.0165450638334354', '0.0165749698134617', '0.01655305398743', '0.0165967214570518', '0.0165454616399886', '0.0165946692637712', '0.0165392806334286', '0.0165890797327443', '0.0165355112418597', '0.0165804930433963', '0.0165460245013662', '0.0165847202614547', '0.0165448417247764', '0.0165611542361331', '0.0165515342966058', '0.0165765880835414', '0.0165339756736686', '0.0165878632821788', '0.0165440089481629', '0.0165963711081224', '0.0165516928957975', '0.0165934388550809', '0.0165544309564294', '0.0165877533619469', '0.0165399865655842', '0.0165907330726123', '0.016550628937744', '0.0166034288593887', '0.0165659505967252', '0.0166105647761531', '0.0165655829746165', '0.0166172674676229', '0.0165796119367761', '0.0166424952076873', '0.0166246136286404', '0.0167334388455894', '0.0171297295465388'], 'b1': ['0.018605511502516', '0.0184837131056956', '0.0183851120510798', '0.0184840774161591', '0.0185292503425739', '0.0186302980552904', '0.0183759157866635', '0.0186312056020559', '0.0185970883722841', '0.018610557385725', '0.018696732782741', '0.0185527901750176', '0.0184841121539561', '0.0185602766066645', '0.0183555554227304', '0.0185179326286786', '0.0185996666499772', '0.0186817794703681', '0.0184706934143117', '0.0185104139030999', '0.0185717901788923', '0.0185864488309574', '0.0184904599190226', '0.0185467707606851', '0.0185513739551852', '0.0186439978394227', '0.0185915799003217', '0.0186942077463949', '0.0186620183770728', '0.0186390987626822', '0.0185678106936811', '0.0186122998615499', '0.0184338018739524', '0.0186563994074951', '0.0186582494133848', '0.0184381484626158', '0.0187957369005385', '0.0184585601477162', '0.018382363401076', '0.0185619393077496', '0.0188072553604966', '0.018482204891798', '0.0185649745882186', '0.0189122127337069', '0.0186279875553889', '0.0184615582465232', '0.0185698745377681', '0.0185120261558266', '0.0184379972921025', '0.0185804266236362', '0.0185466583428899', '0.0185885491584593', '0.0184078979511364', '0.0184049089295427', '0.0184970417714545', '0.0184417327399261', '0.0183843069720872', '0.0185357707492544', '0.018271672720313', '0.018684147226538', '0.0187957920620654', '0.0182829548236024', '0.0184118543941909', '0.0184413151881155', '0.0184057733595452', '0.0182871827102461', '0.0183972310036081', '0.0185852110132782', '0.0183187237570663', '0.0184794824260633', '0.0185034061198914', '0.0181402547467266', '0.0184165518520597', '0.0183788985240326', '0.0181609569026518', '0.0186252303518572', '0.0183105499010758', '0.0181418076484435', '0.0183057028437498', '0.018502016957137', '0.0184040678908206', '0.0184980723842845', '0.0184303921584359', '0.0185389638335849', '0.0182085812003356', '0.0184602108040376', '0.0184275042081207', '0.0185323186152219', '0.0182322636497648', '0.0183371464850892', '0.0182259586523378', '0.018483065481441', '0.0182905728748417', '0.0184016187888549', '0.0183132295991711', '0.0181924879994499', '0.0184099916452902', '0.0187024550929006', '0.0183715293979111', '0.0183022039271567', '0.0184077949596782', '0.0183611756142407', '0.018411879705651', '0.0183403743072167', '0.0184016243748323', '0.0184520221102946', '0.0183486391099018', '0.01861046347148', '0.0185649627180167', '0.0184582639163523', '0.0186787228933602', '0.0185190477294169', '0.0186510274428554', '0.0186025957968757', '0.0183767100428249', '0.0183237705130843', '0.0183277608211268', '0.0185572685578353', '0.0184446809140601', '0.0186042166031303', '0.0186733833972142', '0.0186773335560441', '0.0184308924525366', '0.0186073100126766', '0.0183468275076066', '0.0185506345114271', '0.0186062746866781', '0.0184876664066378', '0.0182968567502917', '0.0184814123812545', '0.0186338901878814', '0.0185727479994544', '0.0184737700659259', '0.0185519168423637', '0.0184109360245942', '0.0186137698464147', '0.0184927182249478', '0.0183322589294271', '0.0184634239629744', '0.0185381407747276', '0.0183129747389523', '0.018566407740545', '0.0184619363473684', '0.0185385801467623', '0.0184219012982279', '0.0184126872285087', '0.0186440826764544', '0.0184714934310123', '0.0186275679088368', '0.0184197444127049', '0.0184460824707018', '0.018243945325', '0.018415498022511', '0.0184500097619367', '0.0185133976878398', '0.0184093356420695', '0.0185570035730324', '0.0186677780434563', '0.0187476308123041', '0.0184833070749635', '0.0183987680202018', '0.0183971864903508', '0.0184699862644854', '0.0186248246702486', '0.0185793174579989', '0.0187341727962561', '0.0185118727160099', '0.0185141533658448', '0.0185683596905223', '0.0185158860662092', '0.0183562021741761', '0.018351702145696', '0.0183285858001638', '0.0184325741808572', '0.0182299784613234', '0.0183180300484981', '0.0186951084852505', '0.0184788363728647', '0.0183958849576168', '0.0184240855899527', '0.0185323332784126', '0.0186074587393249', '0.0186410439047495', '0.0184129410413568', '0.0183934452819879', '0.0185733495393955', '0.0185109349700541', '0.0185722325184776', '0.0184577447695778', '0.0184457087339014', '0.0183168259212451', '0.0184703884548581', '0.0184217183574681', '0.0185029386434078', '0.0186379566048659', '0.018342027581965', '0.0184254820843023', '0.0186074793376165', '0.0184241568111645', '0.0182465302360413', '0.0184340305499022', '0.0186743681002925', '0.0184118549178763', '0.0184971573313619', '0.0183981095731159', '0.018496162154576', '0.0184611797965545', '0.0186299800037023', '0.018466689839573', '0.0186946017323634', '0.0185245357776493', '0.018476103782546', '0.0182796915654308', '0.0185767679830018', '0.0183549425362727', '0.0183019200896801', '0.0185407187032971', '0.0184576592342989', '0.0184396004676159', '0.0183728665412509', '0.018711382183031', '0.0185027394684012', '0.0184419015411806', '0.0184852501222893', '0.0186597281263393', '0.0187948452388963', '0.0182642088071376', '0.0186078693086637', '0.0186437127800135', '0.0185804302894338', '0.0185832597615481', '0.0185230038233477', '0.0187595940557125', '0.0185726041605364', '0.018819251596084', '0.0186927800054842', '0.0187059691963698', '0.0186125063681518', '0.0187091867193515', '0.0187669087185543', '0.0187420275532877', '0.0185165169325316', '0.0184496782690904', '0.0184827699483242', '0.0184833114390083', '0.0188096297500146', '0.0186457825592016', '0.0186986550572133', '0.018635516056428', '0.0185666859920442', '0.0185794000257273', '0.0185533461543306', '0.0186423201260233', '0.0186220849228963', '0.0196555486961812'], 'SAMSN': '859F', 'c0s': '+3.019290000E+02', 'c1s': '+3.345130000E+00', 'c2s': '+2.651460000E-04', 'c3s': '-1.753680000E-06', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Reverse': '0', 'c4s': '+0.000000000E+00', 'IDDataCal': 'DLAB_2019-08-28_14-44-55_098_198', 'IDDataBack': 'DLAB_2019-08-28_12-24-09_763_812', 'IDDataCalAQ': 'DLAB_2019-08-28_14-47-19_914_233', 'Firmware': '2.06', 'IPSN': 'C121', 'Incl_Orientation': 'up', 'Incl_Xgain': '1.0', 'Incl_Xoffset': '125', 'Incl_Ygain': '0.9375', 'Incl_Yoffset': '126', 'Incl_KBG': '1.2073', 'Incl_Kref': '0.1275', 'Press_Current_mA': '1.08', 'Press_Surface_bar': '5.57', 'Press_Gain': '2.7', 'WithIncl': '1', 'WithPress': '1', 'Press_Sens_mV_bar_4mA': '71.36', 'Press_Sens_mV_bar_1mA': '17.84', 'Press_Type': 'PA-10/TAB/10bar', 'CalibrationDate': '08.06.2018'}, 'Lwater': {'SN': '852F', 'FUNC': 'Lwater', 'TYPE': 'SAM', 'samsn': '852F', 'inifile': 'SAM_852F.ini', 'calfile': 'Cal_SAM_852F.dat', 'calaqfile': 'CalAQ_SAM_852F.dat', 'backfile': 'Back_SAM_852F.dat', 'cal': ['+NAN', '+NAN', '+NAN', '+NAN', '0.099081925071204', '0.107353085872454', '0.113070264290883', '0.114376499819276', '0.116544285861757', '0.1185169696214', '0.121561138979849', '0.126964155564462', '0.134364254054539', '0.144053858633949', '0.154882735476408', '0.16719673162462', '0.181437615712041', '0.194237970806716', '0.20386154720656', '0.211556336359081', '0.211417859085921', '0.208790218500257', '0.20437467341685', '0.198246352046376', '0.192966396099738', '0.18897229193584', '0.186243043953596', '0.18578727224224', '0.187114583931684', '0.189090911319999', '0.193600418301244', '0.200054490546523', '0.208072057884887', '0.218285958582262', '0.230634876630779', '0.243459214546046', '0.257752719558026', '0.272580246630834', '0.286712281491418', '0.300342726342385', '0.312249154496702', '0.321331680226083', '0.327112591435919', '0.329469692698771', '0.327542874308678', '0.322985767437387', '0.316224456423823', '0.308782990589082', '0.301183418606427', '0.293575702556702', '0.286696408065096', '0.280798842600295', '0.275808444038661', '0.271299340181449', '0.266225534078626', '0.260785177597799', '0.255342424416527', '0.250947812402455', '0.24777514930692', '0.246247860756574', '0.246092032695547', '0.247219177075727', '0.249675195006791', '0.253195744885965', '0.257788026175471', '0.26369589320837', '0.270555680751329', '0.277823002163503', '0.284937579021833', '0.291097253127256', '0.296043211270752', '0.299540235735164', '0.301795150475552', '0.303069111244916', '0.30355995799167', '0.303606664702465', '0.303007474849756', '0.302001653949665', '0.300361927400822', '0.297986890885497', '0.295325565249305', '0.291656567474701', '0.287335862742648', '0.282306131698578', '0.276702242286357', '0.270280607979823', '0.263050805729498', '0.255009286552014', '0.247098798503932', '0.2398191835424', '0.23466817932016', '0.230585310303585', '0.227279061892254', '0.224693206022759', '0.222993136629962', '0.221791418806722', '0.220695274517678', '0.219442816624831', '0.217000405185694', '0.213283732282521', '0.208384750595562', '0.202985389753009', '0.197924660371165', '0.193409646692029', '0.189628652821804', '0.186318519164064', '0.183315563032657', '0.180098687261504', '0.176492614557115', '0.172650422408531', '0.168979191040057', '0.166106531649937', '0.163622827054655', '0.161570328667133', '0.159693607722301', '0.157690305409947', '0.15544650006387', '0.153185383511044', '0.150954772341381', '0.148960802743881', '0.147350785081686', '0.146182367433256', '0.145312879880878', '0.144781245193999', '0.14473607505965', '0.144976432177203', '0.145464936657928', '0.145889790468872', '0.146174517595681', '0.14615421098877', '0.145743119998859', '0.144922809795091', '0.143805231938307', '0.142492952453543', '0.141053445832183', '0.139720571628269', '0.138186469198598', '0.136919534961634', '0.135732624874463', '0.134597268963386', '0.133432724955799', '0.13211501546202', '0.130478475600008', '0.128290801143951', '0.125726707508103', '0.122634784100445', '0.119472073398083', '0.116199128230447', '0.112813911251756', '0.109547291781198', '0.106268392530964', '0.10313443150471', '0.100113578226984', '0.097073834113113', '0.0941199411272616', '0.0911853891891621', '0.0882319764053268', '0.085267274530049', '0.0822333903307463', '0.0792187073154596', '0.0760907077820793', '0.0728848234132589', '0.0697048920692252', '0.0665600438164166', '0.0635411651500916', '0.0606319242880778', '0.0578670530064308', '0.0553155735461356', '0.0529193006810867', '0.050722718025932', '0.0486788470977319', '0.0467747209472673', '0.0450423813898501', '0.0434307741189043', '0.041915712424757', '0.0405250313895705', '0.0390895391040532', '0.0377897158697839', '0.0365016922380464', '0.0351788001916396', '0.0338645937424847', '0.0325302009051183', '0.0312848146149282', '0.0300375958148976', '0.0288302935207691', '0.027652203865544', '0.0264621566936286', '0.0252688692008588', '0.0241226625595337', '0.0229255436965288', '0.0217207281738409', '0.0205701146867025', '0.0193892949195812', '0.0183936626191952', '0.017494647116465', '0.0167605279940225', '+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.0757791569140749', '0.0831133762408903', '0.0873256015093429', '0.088798490578607', '0.0893180250587088', '0.0912184306930603', '0.0934315009445713', '0.0978927038642625', '0.10316713605413', '0.111042352696646', '0.119482024262908', '0.129446496806651', '0.140324929207819', '0.149929004563169', '0.157951375798488', '0.163167079267684', '0.163684554455683', '0.161710955408623', '0.158158176144384', '0.153120816765498', '0.149159625705894', '0.146361065436421', '0.144318454214309', '0.144129633718655', '0.144738939517372', '0.146583353055999', '0.149927549178646', '0.154781330782628', '0.161281049713208', '0.169324782015295', '0.178566729488516', '0.188750791302883', '0.199826540979236', '0.211193704798505', '0.222305048038871', '0.232787040612667', '0.242185638548782', '0.249199329450493', '0.253905646769863', '0.255480704613068', '0.254086308176615', '0.250712203525897', '0.245637528877396', '0.239859851966525', '0.233843628655063', '0.228059104546805', '0.222661940533832', '0.218199567518201', '0.214240155949967', '0.21061280671042', '0.206823867975479', '0.202504211638902', '0.198378089686984', '0.195008429198418', '0.192596053511712', '0.1913409806608', '0.191204589224151', '0.191982450755957', '0.193875999271111', '0.196568015329539', '0.200197325412529', '0.204781342874412', '0.210052890237844', '0.215505542064364', '0.22102191587617', '0.225647984382987', '0.229501509141454', '0.232213608637945', '0.233859853462842', '0.234864695710533', '0.235347731196379', '0.235169523165461', '0.2348286160222', '0.23395735104209', '0.232593294508701', '0.230910869907075', '0.228844605598996', '0.226021135136259', '0.222713212172475', '0.218813740820075', '0.214437631947854', '0.20945948892298', '0.203847193841702', '0.197707092492944', '0.191556734852924', '0.18600061167507', '0.181873354953207', '0.178782316057322', '0.176167924779435', '0.174141863608666', '0.172744990342331', '0.171801376758966', '0.170954015345458', '0.169960140045412', '0.168049955384139', '0.165224777136175', '0.161531979240228', '0.157405412608478', '0.153570487964493', '0.150141271545146', '0.14725256652001', '0.144660342475923', '0.142269456600007', '0.139762314536934', '0.136963054606891', '0.133984343960448', '0.131197679174342', '0.129003116254732', '0.127069994503092', '0.125436648144931', '0.12397269238396', '0.122419985358787', '0.120693422850158', '0.118931546980571', '0.117166660339047', '0.115631793601506', '0.114393230429202', '0.113425752529033', '0.112707849783804', '0.112359222280159', '0.11219082672674', '0.112343608199868', '0.112664705152637', '0.112877954686814', '0.112998494144185', '0.112887922565457', '0.11253063359053', '0.111841159102354', '0.110997003525569', '0.109948198155768', '0.108874849717231', '0.107795318097265', '0.106637360724801', '0.105678694194695', '0.104756017092462', '0.103825430274706', '0.102939456306441', '0.102001186921616', '0.100737446991222', '0.0991453606719906', '0.0971498679860747', '0.0948117209915638', '0.0924075366042346', '0.0899484551808979', '0.0873520434504222', '0.0848497958878303', '0.0823900490277647', '0.0799786063537234', '0.0776610830064481', '0.0752837851752474', '0.0729604964467151', '0.0707262742573907', '0.0684046065784823', '0.0660274200992436', '0.0636252573638505', '0.0612270512870042', '0.0587905905539405', '0.0563195707029216', '0.0538582650571118', '0.0514203967394221', '0.0490721477077881', '0.0468328465329872', '0.044723244642693', '0.0427398639178554', '0.0408841538190041', '0.0391762093418711', '0.0375882143782858', '0.0361234008364646', '0.0347811387811729', '0.0335210387242261', '0.0323747022105674', '0.0312594345687719', '0.030174948252246', '0.0291339080526091', '0.0281312995576928', '0.027138393963344', '0.0260756668210364', '0.0250906058668046', '0.0240551778532538', '0.0230712653382013', '0.0221310389230639', '0.0211757703478467', '0.0202209094313405', '0.0192572613107586', '0.0182920464007378', '0.0172950661682144', '0.0163207919630062', '0.0153269728531649', '0.0143853788804443', '0.0135213976548868', '0.0127456574145877', '0.0120278700767597', '+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'], 'b0': ['0.0181271394490075', '0.0179948670252732', '0.0180195207374602', '0.0181005261905924', '0.018089553708784', '0.0180460947386496', '0.0180426749981038', '0.0180534564280807', '0.0180790359128869', '0.0180635226786445', '0.0180649523395645', '0.0180630058790784', '0.0180600544336154', '0.0180597668962471', '0.0180588020408788', '0.0180498552319141', '0.0180704773142647', '0.0180562171706652', '0.0180717635554537', '0.0180430410499234', '0.0180523488508876', '0.0180618142041841', '0.0180579205853055', '0.0180626933915622', '0.0180613022899616', '0.0180574472304024', '0.0180710633810246', '0.0180638238251844', '0.0180615148024098', '0.0180669541091198', '0.0180750465063777', '0.0180621163975833', '0.0180742925931686', '0.0180599654505706', '0.0180625609638543', '0.018079003460247', '0.0180789446616468', '0.0180641596925595', '0.0180789860125912', '0.0180726758933779', '0.0180883707577176', '0.0180761767655234', '0.0180788425928601', '0.0180748167207502', '0.018087924097728', '0.0180769134055532', '0.0180908061015206', '0.0180821035597377', '0.0180826006434528', '0.0180812086694694', '0.0180992416941691', '0.0180889166948691', '0.0180883470289057', '0.0180961206574913', '0.0180961166445305', '0.0180882432153534', '0.0180960383045557', '0.0180981065496797', '0.0180892262162838', '0.018090062656905', '0.0181151497688632', '0.0180994168686337', '0.0180945880554018', '0.0181024354875717', '0.0180812022138367', '0.018095840622615', '0.0181047246200187', '0.0180913783846324', '0.0181042299789754', '0.018097802960468', '0.0180910716548426', '0.0181013286082848', '0.0180952437383085', '0.0181025522123893', '0.0180982995207534', '0.0180837411967154', '0.0181112380044225', '0.0181073538072781', '0.018103745283096', '0.0180962696604722', '0.0181080471771214', '0.0180900361364681', '0.0181011494208593', '0.0181086649986149', '0.0181182547536976', '0.0181057997445719', '0.0181089392757648', '0.0181055429150778', '0.0181146218027973', '0.0181128730242519', '0.0181162224507446', '0.018127437978399', '0.0181252793544177', '0.0181109518628667', '0.0181264111838525', '0.018109165222908', '0.0181143328696165', '0.0181233651720949', '0.0181237422159377', '0.0181142894249535', '0.0181268594141312', '0.0181223244194237', '0.0181331201564784', '0.0181055589669212', '0.0181385395728607', '0.0181050559510032', '0.0181237826944993', '0.0181113664191696', '0.0181140599882791', '0.0181137768128247', '0.0181257021111189', '0.0181361358093148', '0.0181222916178307', '0.0181118017381829', '0.0181256476744327', '0.0181248496186543', '0.0181254770363585', '0.0181331583668447', '0.0181230066227672', '0.0181144363342157', '0.0181321676889458', '0.0181179351126425', '0.0181364284065034', '0.0181453949313192', '0.0181325621804444', '0.0181156688366246', '0.0181297948077507', '0.0181383919656923', '0.0181374979478067', '0.0181199012889798', '0.0181422937849691', '0.0181196791803209', '0.0181355928382649', '0.0181084210803862', '0.018133168137532', '0.0181404589894803', '0.0181418954549861', '0.0181177946590129', '0.0181147076452641', '0.0181089181641013', '0.0181443674388664', '0.0181377502409103', '0.0181289850620429', '0.0181158340659255', '0.0181305586661236', '0.0181270701818138', '0.0181084884283378', '0.0181265399475526', '0.0181359089897888', '0.0181099418180697', '0.0181312042293899', '0.0181193782082575', '0.0181291396482737', '0.0181114958807759', '0.018131541667054', '0.0181167600130213', '0.018133784563213', '0.01811013496362', '0.018139256671516', '0.0181215378790981', '0.0181241962039428', '0.0181255386265836', '0.0181152391008612', '0.0181239868320727', '0.018128921378099', '0.0181191986718789', '0.0181302022105147', '0.0181156925654366', '0.018128299020215', '0.0181149622065629', '0.0181265924649967', '0.0181200464534764', '0.018134817115486', '0.0181138528846042', '0.0181302275096157', '0.0181219730236349', '0.0181227435121171', '0.0181128882037125', '0.0181298839652721', '0.0181217728990224', '0.0181271213034454', '0.0181002302783493', '0.0181198512142075', '0.0181077788321745', '0.0181113704321304', '0.0181110165936699', '0.0181200574454996', '0.0181026958065969', '0.0181267051768535', '0.018099050467861', '0.0181217983725999', '0.0181250125797599', '0.018113538826799', '0.0181123129544992', '0.0181229691103072', '0.0181081715789076', '0.0181231769118883', '0.0181145502674084', '0.0181123405217955', '0.0181137211548025', '0.0181167594895916', '0.0181050918931742', '0.0181182652222911', '0.0181006336681525', '0.0181259247432075', '0.018101253059935', '0.018119688602055', '0.018109630726366', '0.0181146952574284', '0.0181041917686091', '0.0181114787820732', '0.0181135109105496', '0.0181156468525783', '0.0180992396004504', '0.0181260718269463', '0.0181003136781442', '0.0181070481243477', '0.0181074850136501', '0.0181076732738566', '0.0181037805273608', '0.0181054610855719', '0.0180953817492662', '0.0181251186615074', '0.0181015350140535', '0.0181170220768121', '0.0180958751689736', '0.0181153706561862', '0.0181087792807607', '0.0181190203568361', '0.0181090340165361', '0.0181264401469612', '0.0181213607853913', '0.0181053968781984', '0.0181112694102031', '0.0181143349633352', '0.0181028416689998', '0.0181058145750794', '0.018112246653407', '0.018102646778684', '0.0181018787328736', '0.0181089858610059', '0.0181129695097887', '0.0181304682872664', '0.0181118867082669', '0.0181302966023328', '0.0181224601621861', '0.0181439211278299', '0.0181333813478864', '0.0181515932110585', '0.0181361972250634', '0.0181645852590311', '0.018168622995547', '0.0182029242145575', '0.01826668143855', '0.0187321041138753'], 'b1': ['0.0246216519286131', '0.024510637261161', '0.0246496004937187', '0.0246158903420498', '0.0244170047588795', '0.0245126709060577', '0.0246256846551714', '0.0247016785610073', '0.0245795106168697', '0.024601391414026', '0.0247430929974417', '0.0246690990460763', '0.0246595979967682', '0.024549218035998', '0.0245417076893854', '0.0249321420235364', '0.0245095865737246', '0.0245109975567032', '0.0246271043662396', '0.0249088567021879', '0.0244657876231882', '0.0248177038501861', '0.0247746806522609', '0.0246467759093347', '0.0244827044066167', '0.0246539416709665', '0.024721638131062', '0.0244816703025508', '0.0248143197952532', '0.0247325126325631', '0.0245241834309148', '0.0244880571694591', '0.0247891481591618', '0.0245174540737672', '0.0248839095525633', '0.0244844522938572', '0.024819053561975', '0.0246153722426461', '0.0244569738236619', '0.024594164032081', '0.024739169721128', '0.0246157473759408', '0.0245033974853286', '0.0247480762129667', '0.0246028704761041', '0.0245055458173238', '0.02469614722145', '0.0244073975760008', '0.0245040215437411', '0.0244248794159556', '0.0244697287048048', '0.0246472875499521', '0.0246650067939463', '0.0244401485106133', '0.0243791267698239', '0.0246499286698909', '0.0243780806209942', '0.0247780093711051', '0.0247202135322636', '0.0245516643449751', '0.0244492274695042', '0.0246700816544131', '0.0246774251199509', '0.0245070955769284', '0.0246320020464858', '0.0244041100537399', '0.0245954472358265', '0.0243854736620815', '0.0245493665880845', '0.0247136054955626', '0.0246331129577409', '0.0247415952572516', '0.0248944354541623', '0.0247328998106215', '0.0246575704615342', '0.0247710366748172', '0.0247250916615888', '0.0247268100478861', '0.0248027810861271', '0.0248363912138882', '0.0249100102065207', '0.0245452771289432', '0.0246815472221476', '0.0246684887780455', '0.0248864084046402', '0.024731509076811', '0.0246692868745663', '0.0245807166643024', '0.0247555966841634', '0.024710914276389', '0.0247437058838994', '0.0247758020372237', '0.0244627418690115', '0.0246814871728906', '0.0246144002825787', '0.0247326369205602', '0.0247778595970861', '0.0250858798171903', '0.02491093660596', '0.0248098248290651', '0.0248231980080813', '0.0247223508668658', '0.0247285340201608', '0.0245271073409594', '0.0246145044959695', '0.0247301532553592', '0.0247854968501228', '0.0249164176717207', '0.0248323871154641', '0.0245063201734407', '0.0249895534773082', '0.0247316035147414', '0.0250480786353239', '0.0245604978699841', '0.0248995078707639', '0.0247918838915929', '0.0246323141629729', '0.0246174315481265', '0.0245240120112333', '0.0247643169185683', '0.0246655463644507', '0.024543567994421', '0.0246558676112366', '0.0245943996905025', '0.0250753080058395', '0.0250045579362867', '0.0246554029277417', '0.0250264155167244', '0.0246469593737799', '0.024665052703698', '0.0248279473108028', '0.0246961217354281', '0.0245553355540586', '0.0245557204628138', '0.0247270518159704', '0.0247966155635732', '0.0247140158903397', '0.0247626610253931', '0.0248185803249523', '0.024609407466155', '0.0247364268316634', '0.0246575409605911', '0.0248112543155938', '0.0245781406559126', '0.0247824863574285', '0.0246500847281345', '0.0247009649523946', '0.0248219430833464', '0.024708337569752', '0.0246372621170157', '0.0247286281089676', '0.0245687148427376', '0.0244441117615777', '0.0246077550642157', '0.0247010606122576', '0.0247215691791535', '0.0245714196777312', '0.024795434478477', '0.0244320022353862', '0.0247462735133231', '0.0246903013215404', '0.0245514873393163', '0.0245751469211505', '0.0246573018109337', '0.0244665511564739', '0.0246441606245413', '0.0244944379267046', '0.0247590790173862', '0.0244953459971555', '0.0247222716158114', '0.0246553421802375', '0.0246119307568831', '0.0246354342804737', '0.0243070187840778', '0.0247393772751007', '0.0245134415963769', '0.0247120136665658', '0.0245733489346753', '0.0244120664057354', '0.0245414062211677', '0.0248899691161084', '0.0246153303478156', '0.0247247613906751', '0.0246353044064992', '0.0248533992931349', '0.0244737232023303', '0.0247406206787574', '0.0245452593236402', '0.0245186117675831', '0.024411721471631', '0.0246871115538839', '0.0245525059073826', '0.0247245782753535', '0.0246827284818056', '0.0247343388980489', '0.0248475752134495', '0.024459163701364', '0.0247058137553385', '0.0246986457244034', '0.024567998615698', '0.0243962081650239', '0.02490341386546', '0.024537072550077', '0.0244906673919604', '0.0245997164936153', '0.0246575069210413', '0.0242198948182748', '0.024409780344485', '0.0242338197871209', '0.0244076180475463', '0.0245564188845504', '0.0246008453847352', '0.0245239058776628', '0.0246243248187984', '0.0246248141155061', '0.0243052663582307', '0.0245985008452839', '0.0243217586073769', '0.0246622282938758', '0.0246268287331674', '0.0244327690853459', '0.0245608707339754', '0.0244063069139137', '0.0246343666605434', '0.0244305303303416', '0.0247014261446536', '0.0246118652962104', '0.0246281107149804', '0.0246470772029907', '0.0247607972291217', '0.0247295342592388', '0.0246461279359564', '0.0245565616760977', '0.0244480411475541', '0.0245717391258137', '0.0246028116487796', '0.0248620650642601', '0.0244563693161703', '0.0245400739655581', '0.024658254394642', '0.0247536939606119', '0.024581995678565', '0.024518225986019', '0.0249431329577538', '0.024793957860264', '0.0246779200026361', '0.0246277942344484', '0.0245882612250266', '0.0245443142460891', '0.0244427728726199', '0.0245225095578749', '0.0246755827947801', '0.0244593372157869', '0.0246154502717679', '0.0255941653568822'], 'SAMSN': '852F', 'DarkPixelStart': '237', 'DarkPixelStop': '254', 'Firmware': '2.06', 'IDDataBack': 'DLAB_2016-11-29_14-47-59_729_812', 'IDDataCal': 'DLAB_2016-12-07_12-00-24_364_510', 'IDDataCalAQ': 'DLAB_2016-12-07_12-02-43_591_545', 'IntegrationTime': '0', 'Reverse': '0', 'SerialNo_MMS': '103307', 'WavelengthRange': '310..1100', 'c0s': '299.895', 'c1s': '3.31161', 'c2s': '0.00031652', 'c3s': '-1.73194e-06', 'c4s': '+0.000000000E+00', 'cs': '102842'}} + +def my_init(): + ''' 写个handle 类处理''' + cfg = mycfg.cfg + calcfg = mycfg.cal_cfg + device_id = 2 + + aw = AWRAMS( deviceid=device_id) + + aw.set_cfg_calibration(calcfg) + aw.config_awrams(cfg) + + + +if __name__ == '__main__': + + # my_init() + ah =AwramsHandle( 2, Acfg.cfg, Acfg.calcfg) + fpath = Path.cwd() + # t= ("data", "2","2002","8", "17","51", "info.bin") + # t= ("data" ) + fpath = fpath.joinpath('data\2\2022\8\17\51\0.bin') + # fpath = fpath.joinpath( *t ) + # ah.read_one_folder_awrams_online(fpath) + if fpath.exists(): + print(" exsited") + else: + print("not exsited") + + # ah.read_one_folder_awrams_online(fpath) + + # data\2\2022\8\17\51\0.bin \ No newline at end of file diff --git a/calfile/surface/Back_SAM_852F.dat b/calfile/surface/Back_SAM_852F.dat new file mode 100644 index 0000000..18f8686 --- /dev/null +++ b/calfile/surface/Back_SAM_852F.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = DLAB_2016-11-29_14-47-59_729_812 +IDDevice = SAM_852F +IDDataType = SPECTRUM +IDDataTypeSub1 = BACK +IDDataTypeSub2 = +IDDataTypeSub3 = +DateTime = 2016-11-29 14:41:43 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = SAM Calibration Station +MethodName = SAM_Calibration_Station +Mission = +MissionSub = 0 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = +IDDataCal = +IntegrationTime = 8192 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $03 $05 Intensity counts +Unit3 = $03 $05 Intensity counts +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 12 0 0 + 1 0.0181271394490075 0.0246216519286131 0 + 2 0.0179948670252732 0.024510637261161 0 + 3 0.0180195207374602 0.0246496004937187 0 + 4 0.0181005261905924 0.0246158903420498 0 + 5 0.018089553708784 0.0244170047588795 0 + 6 0.0180460947386496 0.0245126709060577 0 + 7 0.0180426749981038 0.0246256846551714 0 + 8 0.0180534564280807 0.0247016785610073 0 + 9 0.0180790359128869 0.0245795106168697 0 + 10 0.0180635226786445 0.024601391414026 0 + 11 0.0180649523395645 0.0247430929974417 0 + 12 0.0180630058790784 0.0246690990460763 0 + 13 0.0180600544336154 0.0246595979967682 0 + 14 0.0180597668962471 0.024549218035998 0 + 15 0.0180588020408788 0.0245417076893854 0 + 16 0.0180498552319141 0.0249321420235364 0 + 17 0.0180704773142647 0.0245095865737246 0 + 18 0.0180562171706652 0.0245109975567032 0 + 19 0.0180717635554537 0.0246271043662396 0 + 20 0.0180430410499234 0.0249088567021879 0 + 21 0.0180523488508876 0.0244657876231882 0 + 22 0.0180618142041841 0.0248177038501861 0 + 23 0.0180579205853055 0.0247746806522609 0 + 24 0.0180626933915622 0.0246467759093347 0 + 25 0.0180613022899616 0.0244827044066167 0 + 26 0.0180574472304024 0.0246539416709665 0 + 27 0.0180710633810246 0.024721638131062 0 + 28 0.0180638238251844 0.0244816703025508 0 + 29 0.0180615148024098 0.0248143197952532 0 + 30 0.0180669541091198 0.0247325126325631 0 + 31 0.0180750465063777 0.0245241834309148 0 + 32 0.0180621163975833 0.0244880571694591 0 + 33 0.0180742925931686 0.0247891481591618 0 + 34 0.0180599654505706 0.0245174540737672 0 + 35 0.0180625609638543 0.0248839095525633 0 + 36 0.018079003460247 0.0244844522938572 0 + 37 0.0180789446616468 0.024819053561975 0 + 38 0.0180641596925595 0.0246153722426461 0 + 39 0.0180789860125912 0.0244569738236619 0 + 40 0.0180726758933779 0.024594164032081 0 + 41 0.0180883707577176 0.024739169721128 0 + 42 0.0180761767655234 0.0246157473759408 0 + 43 0.0180788425928601 0.0245033974853286 0 + 44 0.0180748167207502 0.0247480762129667 0 + 45 0.018087924097728 0.0246028704761041 0 + 46 0.0180769134055532 0.0245055458173238 0 + 47 0.0180908061015206 0.02469614722145 0 + 48 0.0180821035597377 0.0244073975760008 0 + 49 0.0180826006434528 0.0245040215437411 0 + 50 0.0180812086694694 0.0244248794159556 0 + 51 0.0180992416941691 0.0244697287048048 0 + 52 0.0180889166948691 0.0246472875499521 0 + 53 0.0180883470289057 0.0246650067939463 0 + 54 0.0180961206574913 0.0244401485106133 0 + 55 0.0180961166445305 0.0243791267698239 0 + 56 0.0180882432153534 0.0246499286698909 0 + 57 0.0180960383045557 0.0243780806209942 0 + 58 0.0180981065496797 0.0247780093711051 0 + 59 0.0180892262162838 0.0247202135322636 0 + 60 0.018090062656905 0.0245516643449751 0 + 61 0.0181151497688632 0.0244492274695042 0 + 62 0.0180994168686337 0.0246700816544131 0 + 63 0.0180945880554018 0.0246774251199509 0 + 64 0.0181024354875717 0.0245070955769284 0 + 65 0.0180812022138367 0.0246320020464858 0 + 66 0.018095840622615 0.0244041100537399 0 + 67 0.0181047246200187 0.0245954472358265 0 + 68 0.0180913783846324 0.0243854736620815 0 + 69 0.0181042299789754 0.0245493665880845 0 + 70 0.018097802960468 0.0247136054955626 0 + 71 0.0180910716548426 0.0246331129577409 0 + 72 0.0181013286082848 0.0247415952572516 0 + 73 0.0180952437383085 0.0248944354541623 0 + 74 0.0181025522123893 0.0247328998106215 0 + 75 0.0180982995207534 0.0246575704615342 0 + 76 0.0180837411967154 0.0247710366748172 0 + 77 0.0181112380044225 0.0247250916615888 0 + 78 0.0181073538072781 0.0247268100478861 0 + 79 0.018103745283096 0.0248027810861271 0 + 80 0.0180962696604722 0.0248363912138882 0 + 81 0.0181080471771214 0.0249100102065207 0 + 82 0.0180900361364681 0.0245452771289432 0 + 83 0.0181011494208593 0.0246815472221476 0 + 84 0.0181086649986149 0.0246684887780455 0 + 85 0.0181182547536976 0.0248864084046402 0 + 86 0.0181057997445719 0.024731509076811 0 + 87 0.0181089392757648 0.0246692868745663 0 + 88 0.0181055429150778 0.0245807166643024 0 + 89 0.0181146218027973 0.0247555966841634 0 + 90 0.0181128730242519 0.024710914276389 0 + 91 0.0181162224507446 0.0247437058838994 0 + 92 0.018127437978399 0.0247758020372237 0 + 93 0.0181252793544177 0.0244627418690115 0 + 94 0.0181109518628667 0.0246814871728906 0 + 95 0.0181264111838525 0.0246144002825787 0 + 96 0.018109165222908 0.0247326369205602 0 + 97 0.0181143328696165 0.0247778595970861 0 + 98 0.0181233651720949 0.0250858798171903 0 + 99 0.0181237422159377 0.02491093660596 0 + 100 0.0181142894249535 0.0248098248290651 0 + 101 0.0181268594141312 0.0248231980080813 0 + 102 0.0181223244194237 0.0247223508668658 0 + 103 0.0181331201564784 0.0247285340201608 0 + 104 0.0181055589669212 0.0245271073409594 0 + 105 0.0181385395728607 0.0246145044959695 0 + 106 0.0181050559510032 0.0247301532553592 0 + 107 0.0181237826944993 0.0247854968501228 0 + 108 0.0181113664191696 0.0249164176717207 0 + 109 0.0181140599882791 0.0248323871154641 0 + 110 0.0181137768128247 0.0245063201734407 0 + 111 0.0181257021111189 0.0249895534773082 0 + 112 0.0181361358093148 0.0247316035147414 0 + 113 0.0181222916178307 0.0250480786353239 0 + 114 0.0181118017381829 0.0245604978699841 0 + 115 0.0181256476744327 0.0248995078707639 0 + 116 0.0181248496186543 0.0247918838915929 0 + 117 0.0181254770363585 0.0246323141629729 0 + 118 0.0181331583668447 0.0246174315481265 0 + 119 0.0181230066227672 0.0245240120112333 0 + 120 0.0181144363342157 0.0247643169185683 0 + 121 0.0181321676889458 0.0246655463644507 0 + 122 0.0181179351126425 0.024543567994421 0 + 123 0.0181364284065034 0.0246558676112366 0 + 124 0.0181453949313192 0.0245943996905025 0 + 125 0.0181325621804444 0.0250753080058395 0 + 126 0.0181156688366246 0.0250045579362867 0 + 127 0.0181297948077507 0.0246554029277417 0 + 128 0.0181383919656923 0.0250264155167244 0 + 129 0.0181374979478067 0.0246469593737799 0 + 130 0.0181199012889798 0.024665052703698 0 + 131 0.0181422937849691 0.0248279473108028 0 + 132 0.0181196791803209 0.0246961217354281 0 + 133 0.0181355928382649 0.0245553355540586 0 + 134 0.0181084210803862 0.0245557204628138 0 + 135 0.018133168137532 0.0247270518159704 0 + 136 0.0181404589894803 0.0247966155635732 0 + 137 0.0181418954549861 0.0247140158903397 0 + 138 0.0181177946590129 0.0247626610253931 0 + 139 0.0181147076452641 0.0248185803249523 0 + 140 0.0181089181641013 0.024609407466155 0 + 141 0.0181443674388664 0.0247364268316634 0 + 142 0.0181377502409103 0.0246575409605911 0 + 143 0.0181289850620429 0.0248112543155938 0 + 144 0.0181158340659255 0.0245781406559126 0 + 145 0.0181305586661236 0.0247824863574285 0 + 146 0.0181270701818138 0.0246500847281345 0 + 147 0.0181084884283378 0.0247009649523946 0 + 148 0.0181265399475526 0.0248219430833464 0 + 149 0.0181359089897888 0.024708337569752 0 + 150 0.0181099418180697 0.0246372621170157 0 + 151 0.0181312042293899 0.0247286281089676 0 + 152 0.0181193782082575 0.0245687148427376 0 + 153 0.0181291396482737 0.0244441117615777 0 + 154 0.0181114958807759 0.0246077550642157 0 + 155 0.018131541667054 0.0247010606122576 0 + 156 0.0181167600130213 0.0247215691791535 0 + 157 0.018133784563213 0.0245714196777312 0 + 158 0.01811013496362 0.024795434478477 0 + 159 0.018139256671516 0.0244320022353862 0 + 160 0.0181215378790981 0.0247462735133231 0 + 161 0.0181241962039428 0.0246903013215404 0 + 162 0.0181255386265836 0.0245514873393163 0 + 163 0.0181152391008612 0.0245751469211505 0 + 164 0.0181239868320727 0.0246573018109337 0 + 165 0.018128921378099 0.0244665511564739 0 + 166 0.0181191986718789 0.0246441606245413 0 + 167 0.0181302022105147 0.0244944379267046 0 + 168 0.0181156925654366 0.0247590790173862 0 + 169 0.018128299020215 0.0244953459971555 0 + 170 0.0181149622065629 0.0247222716158114 0 + 171 0.0181265924649967 0.0246553421802375 0 + 172 0.0181200464534764 0.0246119307568831 0 + 173 0.018134817115486 0.0246354342804737 0 + 174 0.0181138528846042 0.0243070187840778 0 + 175 0.0181302275096157 0.0247393772751007 0 + 176 0.0181219730236349 0.0245134415963769 0 + 177 0.0181227435121171 0.0247120136665658 0 + 178 0.0181128882037125 0.0245733489346753 0 + 179 0.0181298839652721 0.0244120664057354 0 + 180 0.0181217728990224 0.0245414062211677 0 + 181 0.0181271213034454 0.0248899691161084 0 + 182 0.0181002302783493 0.0246153303478156 0 + 183 0.0181198512142075 0.0247247613906751 0 + 184 0.0181077788321745 0.0246353044064992 0 + 185 0.0181113704321304 0.0248533992931349 0 + 186 0.0181110165936699 0.0244737232023303 0 + 187 0.0181200574454996 0.0247406206787574 0 + 188 0.0181026958065969 0.0245452593236402 0 + 189 0.0181267051768535 0.0245186117675831 0 + 190 0.018099050467861 0.024411721471631 0 + 191 0.0181217983725999 0.0246871115538839 0 + 192 0.0181250125797599 0.0245525059073826 0 + 193 0.018113538826799 0.0247245782753535 0 + 194 0.0181123129544992 0.0246827284818056 0 + 195 0.0181229691103072 0.0247343388980489 0 + 196 0.0181081715789076 0.0248475752134495 0 + 197 0.0181231769118883 0.024459163701364 0 + 198 0.0181145502674084 0.0247058137553385 0 + 199 0.0181123405217955 0.0246986457244034 0 + 200 0.0181137211548025 0.024567998615698 0 + 201 0.0181167594895916 0.0243962081650239 0 + 202 0.0181050918931742 0.02490341386546 0 + 203 0.0181182652222911 0.024537072550077 0 + 204 0.0181006336681525 0.0244906673919604 0 + 205 0.0181259247432075 0.0245997164936153 0 + 206 0.018101253059935 0.0246575069210413 0 + 207 0.018119688602055 0.0242198948182748 0 + 208 0.018109630726366 0.024409780344485 0 + 209 0.0181146952574284 0.0242338197871209 0 + 210 0.0181041917686091 0.0244076180475463 0 + 211 0.0181114787820732 0.0245564188845504 0 + 212 0.0181135109105496 0.0246008453847352 0 + 213 0.0181156468525783 0.0245239058776628 0 + 214 0.0180992396004504 0.0246243248187984 0 + 215 0.0181260718269463 0.0246248141155061 0 + 216 0.0181003136781442 0.0243052663582307 0 + 217 0.0181070481243477 0.0245985008452839 0 + 218 0.0181074850136501 0.0243217586073769 0 + 219 0.0181076732738566 0.0246622282938758 0 + 220 0.0181037805273608 0.0246268287331674 0 + 221 0.0181054610855719 0.0244327690853459 0 + 222 0.0180953817492662 0.0245608707339754 0 + 223 0.0181251186615074 0.0244063069139137 0 + 224 0.0181015350140535 0.0246343666605434 0 + 225 0.0181170220768121 0.0244305303303416 0 + 226 0.0180958751689736 0.0247014261446536 0 + 227 0.0181153706561862 0.0246118652962104 0 + 228 0.0181087792807607 0.0246281107149804 0 + 229 0.0181190203568361 0.0246470772029907 0 + 230 0.0181090340165361 0.0247607972291217 0 + 231 0.0181264401469612 0.0247295342592388 0 + 232 0.0181213607853913 0.0246461279359564 0 + 233 0.0181053968781984 0.0245565616760977 0 + 234 0.0181112694102031 0.0244480411475541 0 + 235 0.0181143349633352 0.0245717391258137 0 + 236 0.0181028416689998 0.0246028116487796 0 + 237 0.0181058145750794 0.0248620650642601 0 + 238 0.018112246653407 0.0244563693161703 0 + 239 0.018102646778684 0.0245400739655581 0 + 240 0.0181018787328736 0.024658254394642 0 + 241 0.0181089858610059 0.0247536939606119 0 + 242 0.0181129695097887 0.024581995678565 0 + 243 0.0181304682872664 0.024518225986019 0 + 244 0.0181118867082669 0.0249431329577538 0 + 245 0.0181302966023328 0.024793957860264 0 + 246 0.0181224601621861 0.0246779200026361 0 + 247 0.0181439211278299 0.0246277942344484 0 + 248 0.0181333813478864 0.0245882612250266 0 + 249 0.0181515932110585 0.0245443142460891 0 + 250 0.0181361972250634 0.0244427728726199 0 + 251 0.0181645852590311 0.0245225095578749 0 + 252 0.018168622995547 0.0246755827947801 0 + 253 0.0182029242145575 0.0244593372157869 0 + 254 0.01826668143855 0.0246154502717679 0 + 255 0.0187321041138753 0.0255941653568822 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/Back_SAM_859F.dat b/calfile/surface/Back_SAM_859F.dat new file mode 100644 index 0000000..8453235 --- /dev/null +++ b/calfile/surface/Back_SAM_859F.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = DLAB_2018-05-04_11-56-28_529_586 +IDDevice = SAM_859F +IDDataType = SPECTRUM +IDDataTypeSub1 = BACK +IDDataTypeSub2 = +IDDataTypeSub3 = +DateTime = 2018-05-04 11:50:12 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = SAM Calibration Station +MethodName = SAM_Calibration_Station +Mission = +MissionSub = 0 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = +IDDataCal = +IntegrationTime = 8192 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $03 $05 Intensity counts +Unit3 = $03 $05 Intensity counts +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 12 0 0 + 1 0.0165892037855774 0.018605511502516 0 + 2 0.0165122714877024 0.0184837131056956 0 + 3 0.0164973019224162 0.0183851120510798 0 + 4 0.0166164505683762 0.0184840774161591 0 + 5 0.0165490556826164 0.0185292503425739 0 + 6 0.0165598147795938 0.0186302980552904 0 + 7 0.0164974439463348 0.0183759157866635 0 + 8 0.0165638938670541 0.0186312056020559 0 + 9 0.0165295399561229 0.0185970883722841 0 + 10 0.0165679375357729 0.018610557385725 0 + 11 0.0165135498774463 0.018696732782741 0 + 12 0.0165496044113927 0.0185527901750176 0 + 13 0.0165162233817516 0.0184841121539561 0 + 14 0.0165748471564411 0.0185602766066645 0 + 15 0.0165168071803162 0.0183555554227304 0 + 16 0.016561615028724 0.0185179326286786 0 + 17 0.0165228899565738 0.0185996666499772 0 + 18 0.0165630265440819 0.0186817794703681 0 + 19 0.0165138880130166 0.0184706934143117 0 + 20 0.016557182975186 0.0185104139030999 0 + 21 0.0165155392591658 0.0185717901788923 0 + 22 0.0165657065040199 0.0185864488309574 0 + 23 0.016518681058554 0.0184904599190226 0 + 24 0.0165595148543898 0.0185467707606851 0 + 25 0.0165168741793146 0.0185513739551852 0 + 26 0.0165713147040385 0.0186439978394227 0 + 27 0.0165192898072665 0.0185915799003217 0 + 28 0.0165624174464164 0.0186942077463949 0 + 29 0.0165336104942318 0.0186620183770728 0 + 30 0.0165711529642688 0.0186390987626822 0 + 31 0.0165277786152653 0.0185678106936811 0 + 32 0.0165778362888406 0.0186122998615499 0 + 33 0.0165368341231259 0.0184338018739524 0 + 34 0.0165763434674064 0.0186563994074951 0 + 35 0.0165347332508855 0.0186582494133848 0 + 36 0.0165844704110229 0.0184381484626158 0 + 37 0.0165276158286362 0.0187957369005385 0 + 38 0.016561547855249 0.0184585601477162 0 + 39 0.0165227810832013 0.018382363401076 0 + 40 0.0165862270410135 0.0185619393077496 0 + 41 0.0165383602695828 0.0188072553604966 0 + 42 0.0165776928691096 0.018482204891798 0 + 43 0.0165375732058275 0.0185649745882186 0 + 44 0.0165658438170714 0.0189122127337069 0 + 45 0.0165459794864142 0.0186279875553889 0 + 46 0.0165800024153139 0.0184615582465232 0 + 47 0.0165525603932462 0.0185698745377681 0 + 48 0.0165907623846741 0.0185120261558266 0 + 49 0.0165508449397234 0.0184379972921025 0 + 50 0.0165903560287695 0.0185804266236362 0 + 51 0.0165476473078365 0.0185466583428899 0 + 52 0.0165857165226035 0.0185885491584593 0 + 53 0.0165481178711146 0.0184078979511364 0 + 54 0.0165957271151451 0.0184049089295427 0 + 55 0.0165507685189908 0.0184970417714545 0 + 56 0.0165883062781607 0.0184417327399261 0 + 57 0.0165548565047555 0.0183843069720872 0 + 58 0.0166030835702795 0.0185357707492544 0 + 59 0.0165500053585241 0.018271672720313 0 + 60 0.0165961038100348 0.018684147226538 0 + 61 0.0165517131350783 0.0187957920620654 0 + 62 0.0166133108627067 0.0182829548236024 0 + 63 0.0165473248751564 0.0184118543941909 0 + 64 0.0165983146025071 0.0184413151881155 0 + 65 0.0165525591719102 0.0184057733595452 0 + 66 0.0166064242729443 0.0182871827102461 0 + 67 0.0165435383848847 0.0183972310036081 0 + 68 0.0165950365369267 0.0185852110132782 0 + 69 0.0165586482293239 0.0183187237570663 0 + 70 0.0166092385798323 0.0184794824260633 0 + 71 0.0165697841956677 0.0185034061198914 0 + 72 0.0165967129077004 0.0181402547467266 0 + 73 0.0165732545344154 0.0184165518520597 0 + 74 0.0166026855892496 0.0183788985240326 0 + 75 0.0165687354170748 0.0181609569026518 0 + 76 0.0166129015407006 0.0186252303518572 0 + 77 0.0165534954131229 0.0183105499010758 0 + 78 0.0166168593669527 0.0181418076484435 0 + 79 0.0165646865140591 0.0183057028437498 0 + 80 0.0166018156491291 0.018502016957137 0 + 81 0.0165586096700045 0.0184040678908206 0 + 82 0.0166129247460829 0.0184980723842845 0 + 83 0.0165712166482126 0.0184303921584359 0 + 84 0.0166143243970348 0.0185389638335849 0 + 85 0.0165701301826831 0.0182085812003356 0 + 86 0.0166189659969196 0.0184602108040376 0 + 87 0.0165676643054824 0.0184275042081207 0 + 88 0.0166299271377517 0.0185323186152219 0 + 89 0.0165751742999882 0.0182322636497648 0 + 90 0.0166072596667062 0.0183371464850892 0 + 91 0.0165629157514673 0.0182259586523378 0 + 92 0.0166089130065742 0.018483065481441 0 + 93 0.0165693558557167 0.0182905728748417 0 + 94 0.0166203017894511 0.0184016187888549 0 + 95 0.0165698981288603 0.0183132295991711 0 + 96 0.0166107804291794 0.0181924879994499 0 + 97 0.0165637935430329 0.0184099916452902 0 + 98 0.0166245248200721 0.0187024550929006 0 + 99 0.0165754381085446 0.0183715293979111 0 + 100 0.0166166770389491 0.0183022039271567 0 + 101 0.01656780789969 0.0184077949596782 0 + 102 0.0166270111110302 0.0183611756142407 0 + 103 0.0165662229546329 0.018411879705651 0 + 104 0.0166136421936913 0.0183403743072167 0 + 105 0.0165698424708382 0.0184016243748323 0 + 106 0.0166173691874565 0.0184520221102946 0 + 107 0.0165821997730911 0.0183486391099018 0 + 108 0.0166164975025705 0.01861046347148 0 + 109 0.0165739878593907 0.0185649627180167 0 + 110 0.016623824645643 0.0184582639163523 0 + 111 0.0165631308810639 0.0186787228933602 0 + 112 0.0166247172677161 0.0185190477294169 0 + 113 0.0165669479047333 0.0186510274428554 0 + 114 0.0166042075482691 0.0186025957968757 0 + 115 0.0165806895040011 0.0183767100428249 0 + 116 0.0166075213815439 0.0183237705130843 0 + 117 0.0165708319274012 0.0183277608211268 0 + 118 0.0166233251192561 0.0185572685578353 0 + 119 0.0165772010196913 0.0184446809140601 0 + 120 0.016621139974838 0.0186042166031303 0 + 121 0.0165690780890356 0.0186733833972142 0 + 122 0.0166295818486425 0.0186773335560441 0 + 123 0.0165801878838955 0.0184308924525366 0 + 124 0.0166132293821539 0.0186073100126766 0 + 125 0.0165742146789166 0.0183468275076066 0 + 126 0.0166257485986531 0.0185506345114271 0 + 127 0.0165839324997932 0.0186062746866781 0 + 128 0.0166274820232614 0.0184876664066378 0 + 129 0.0165711257459257 0.0182968567502917 0 + 130 0.0166118375826471 0.0184814123812545 0 + 131 0.0165702390560556 0.0186338901878814 0 + 132 0.0166138555785223 0.0185727479994544 0 + 133 0.0165495885340259 0.0184737700659259 0 + 134 0.0166076853895089 0.0185519168423637 0 + 135 0.0165715106412136 0.0184109360245942 0 + 136 0.0165914878582042 0.0186137698464147 0 + 137 0.0165708420470416 0.0184927182249478 0 + 138 0.0166090042578143 0.0183322589294271 0 + 139 0.0165677817282062 0.0184634239629744 0 + 140 0.0166140523880802 0.0185381407747276 0 + 141 0.0165772907006423 0.0183129747389523 0 + 142 0.0166172060518744 0.018566407740545 0 + 143 0.0165733789362016 0.0184619363473684 0 + 144 0.0166208616847272 0.0185385801467623 0 + 145 0.0165699940909675 0.0184219012982279 0 + 146 0.0166094990733341 0.0184126872285087 0 + 147 0.0165568282643426 0.0186440826764544 0 + 148 0.0166152531357555 0.0184714934310123 0 + 149 0.0165675189665092 0.0186275679088368 0 + 150 0.0166057366608274 0.0184197444127049 0 + 151 0.0165695308557048 0.0184460824707018 0 + 152 0.0165973481768498 0.018243945325 0 + 153 0.0165636400036615 0.018415498022511 0 + 154 0.0166118299056785 0.0184500097619367 0 + 155 0.0165665354421491 0.0185133976878398 0 + 156 0.0165949780872796 0.0184093356420695 0 + 157 0.0165594520428288 0.0185570035730324 0 + 158 0.0166050473039449 0.0186677780434563 0 + 159 0.0165700478297475 0.0187476308123041 0 + 160 0.0166062033856213 0.0184833070749635 0 + 161 0.0165620390067611 0.0183987680202018 0 + 162 0.0165990297819202 0.0183971864903508 0 + 163 0.016574294763657 0.0184699862644854 0 + 164 0.0165960321001693 0.0186248246702486 0 + 165 0.016567221483977 0.0185793174579989 0 + 166 0.0166072507684017 0.0187341727962561 0 + 167 0.0165554031398131 0.0185118727160099 0 + 168 0.0166002793830319 0.0185141533658448 0 + 169 0.0165516576515327 0.0185683596905223 0 + 170 0.0166026362123836 0.0185158860662092 0 + 171 0.0165560230550254 0.0183562021741761 0 + 172 0.0166113124082061 0.018351702145696 0 + 173 0.0165672890064051 0.0183285858001638 0 + 174 0.016604050693843 0.0184325741808572 0 + 175 0.0165640243755198 0.0182299784613234 0 + 176 0.0166057021144688 0.0183180300484981 0 + 177 0.0165508046356384 0.0186951084852505 0 + 178 0.0165935180674385 0.0184788363728647 0 + 179 0.0165675029146658 0.0183958849576168 0 + 180 0.0165893028882626 0.0184240855899527 0 + 181 0.0165492090475113 0.0185323332784126 0 + 182 0.0165956159735774 0.0186074587393249 0 + 183 0.0165528561310127 0.0186410439047495 0 + 184 0.0166073952349921 0.0184129410413568 0 + 185 0.0165463099450159 0.0183934452819879 0 + 186 0.0166001891786512 0.0185733495393955 0 + 187 0.0165482056328235 0.0185109349700541 0 + 188 0.0165952621351168 0.0185722325184776 0 + 189 0.0165536456374398 0.0184577447695778 0 + 190 0.0165997360630289 0.0184457087339014 0 + 191 0.0165524916494821 0.0183168259212451 0 + 192 0.0165986206343906 0.0184703884548581 0 + 193 0.0165521507222869 0.0184217183574681 0 + 194 0.016599824522644 0.0185029386434078 0 + 195 0.0165434263709342 0.0186379566048659 0 + 196 0.0166010940140834 0.018342027581965 0 + 197 0.0165431388335659 0.0184254820843023 0 + 198 0.0165863373101985 0.0186074793376165 0 + 199 0.0165434326520903 0.0184241568111645 0 + 200 0.0166064767903884 0.0182465302360413 0 + 201 0.016561522556148 0.0184340305499022 0 + 202 0.0165987263671851 0.0186743681002925 0 + 203 0.0165499257972134 0.0184118549178763 0 + 204 0.0165839637310972 0.0184971573313619 0 + 205 0.0165457994266058 0.0183981095731159 0 + 206 0.0165795458101604 0.018496162154576 0 + 207 0.0165524665248577 0.0184611797965545 0 + 208 0.016595737060309 0.0186299800037023 0 + 209 0.0165466772181714 0.018466689839573 0 + 210 0.0165879578484734 0.0186946017323634 0 + 211 0.0165430683450362 0.0185245357776493 0 + 212 0.0165948067512992 0.018476103782546 0 + 213 0.0165396531408809 0.0182796915654308 0 + 214 0.0165652856665609 0.0185767679830018 0 + 215 0.0165523227561735 0.0183549425362727 0 + 216 0.0165783818770389 0.0183019200896801 0 + 217 0.0165503544861175 0.0185407187032971 0 + 218 0.016572293692008 0.0184576592342989 0 + 219 0.0165450638334354 0.0184396004676159 0 + 220 0.0165749698134617 0.0183728665412509 0 + 221 0.01655305398743 0.018711382183031 0 + 222 0.0165967214570518 0.0185027394684012 0 + 223 0.0165454616399886 0.0184419015411806 0 + 224 0.0165946692637712 0.0184852501222893 0 + 225 0.0165392806334286 0.0186597281263393 0 + 226 0.0165890797327443 0.0187948452388963 0 + 227 0.0165355112418597 0.0182642088071376 0 + 228 0.0165804930433963 0.0186078693086637 0 + 229 0.0165460245013662 0.0186437127800135 0 + 230 0.0165847202614547 0.0185804302894338 0 + 231 0.0165448417247764 0.0185832597615481 0 + 232 0.0165611542361331 0.0185230038233477 0 + 233 0.0165515342966058 0.0187595940557125 0 + 234 0.0165765880835414 0.0185726041605364 0 + 235 0.0165339756736686 0.018819251596084 0 + 236 0.0165878632821788 0.0186927800054842 0 + 237 0.0165440089481629 0.0187059691963698 0 + 238 0.0165963711081224 0.0186125063681518 0 + 239 0.0165516928957975 0.0187091867193515 0 + 240 0.0165934388550809 0.0187669087185543 0 + 241 0.0165544309564294 0.0187420275532877 0 + 242 0.0165877533619469 0.0185165169325316 0 + 243 0.0165399865655842 0.0184496782690904 0 + 244 0.0165907330726123 0.0184827699483242 0 + 245 0.016550628937744 0.0184833114390083 0 + 246 0.0166034288593887 0.0188096297500146 0 + 247 0.0165659505967252 0.0186457825592016 0 + 248 0.0166105647761531 0.0186986550572133 0 + 249 0.0165655829746165 0.018635516056428 0 + 250 0.0166172674676229 0.0185666859920442 0 + 251 0.0165796119367761 0.0185794000257273 0 + 252 0.0166424952076873 0.0185533461543306 0 + 253 0.0166246136286404 0.0186423201260233 0 + 254 0.0167334388455894 0.0186220849228963 0 + 255 0.0171297295465388 0.0196555486961812 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/Back_SAM_85B5.dat b/calfile/surface/Back_SAM_85B5.dat new file mode 100644 index 0000000..97934b7 --- /dev/null +++ b/calfile/surface/Back_SAM_85B5.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = DLAB_2018-06-11_15-23-57_730_586 +IDDevice = SAM_85B5 +IDDataType = SPECTRUM +IDDataTypeSub1 = BACK +IDDataTypeSub2 = +IDDataTypeSub3 = +DateTime = 2018-06-11 15:17:40 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = SAM Calibration Station +MethodName = SAM_Calibration_Station +Mission = +MissionSub = 0 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = +IDDataCal = +IntegrationTime = 8192 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $03 $05 Intensity counts +Unit3 = $03 $05 Intensity counts +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 12 0 0 + 1 0.0164817607719245 0.0184759992200316 0 + 2 0.0163219290778752 0.018442149942613 0 + 3 0.0163731972698131 0.0187318928446685 0 + 4 0.0164399246082603 0.0186864332877884 0 + 5 0.0164430241843214 0.0188479230215774 0 + 6 0.0163983356778795 0.0188454845678811 0 + 7 0.0163990512062458 0.0188404723750983 0 + 8 0.0163901000353671 0.0187262068433619 0 + 9 0.0164207307910173 0.0187526368954241 0 + 10 0.0164008709967505 0.018602897614217 0 + 11 0.0164082743860791 0.0187456469175185 0 + 12 0.0163908071888585 0.0186707166166917 0 + 13 0.0164252516531235 0.0185607140585195 0 + 14 0.0163975419840151 0.0187588039890341 0 + 15 0.0164170151382283 0.0188965777575295 0 + 16 0.0163836419600322 0.0187075898280626 0 + 17 0.0164195574361616 0.0187674584136427 0 + 18 0.0163940245365965 0.0186381709667486 0 + 19 0.0164118187028877 0.0186427120172502 0 + 20 0.016392199511795 0.0187927918685168 0 + 21 0.0164065571877907 0.0186624507666358 0 + 22 0.0163945228416475 0.0187624519813991 0 + 23 0.0164219489863484 0.0187392302005435 0 + 24 0.0163932453242865 0.0185522851677484 0 + 25 0.0164305632429927 0.0186472895511667 0 + 26 0.0163847816409121 0.018535703368402 0 + 27 0.0164318688510797 0.0186348291557698 0 + 28 0.0164176912348923 0.0186553691437886 0 + 29 0.0164202520273408 0.0187121064399131 0 + 30 0.0164088639423701 0.0186093935822463 0 + 31 0.0164306347783817 0.0187113848014579 0 + 32 0.0164189001829659 0.0186487433017847 0 + 33 0.0164341838060573 0.0187725126758178 0 + 34 0.0164138319878957 0.0187999361590481 0 + 35 0.0164304957205646 0.0187205484228188 0 + 36 0.016429661373662 0.0188728539369552 0 + 37 0.0164248637917341 0.0187682175828836 0 + 38 0.0164295341802509 0.0187626176405413 0 + 39 0.0164375396881828 0.0188624825225437 0 + 40 0.0164033339078497 0.0187837980957813 0 + 41 0.0164426914575244 0.0188658971257905 0 + 42 0.0164161851532397 0.0186604942780519 0 + 43 0.0164508810382254 0.0189255700275998 0 + 44 0.0164265781983975 0.0186329430155887 0 + 45 0.0164319475400075 0.0188553270600577 0 + 46 0.016422878946405 0.0187585744402754 0 + 47 0.0164658096015204 0.0188853157288465 0 + 48 0.016435585550728 0.0188095644639038 0 + 49 0.016451332060129 0.0189702224107457 0 + 50 0.0164379950720003 0.0190654765920908 0 + 51 0.0164365183024095 0.0188298321355244 0 + 52 0.0164243435026367 0.0189752702141345 0 + 53 0.0164365261538547 0.0190654219542494 0 + 54 0.0164254425304785 0.0188267308706973 0 + 55 0.0164527732365019 0.0190373731906741 0 + 56 0.0164500622197366 0.0189250398834323 0 + 57 0.0164541095524632 0.0189864086530676 0 + 58 0.0164375095037381 0.0190345625712336 0 + 59 0.0164747180256422 0.0188082665969675 0 + 60 0.0164484643634142 0.0190122781872102 0 + 61 0.0164537975883766 0.0188972889222771 0 + 62 0.0164461544682567 0.0185940174812091 0 + 63 0.0164698387886849 0.0187732280300485 0 + 64 0.0164431478882013 0.0188341576022108 0 + 65 0.0164654240083262 0.0188008229329601 0 + 66 0.0164472887403633 0.0188143481552986 0 + 67 0.0164750846008916 0.0188958311567378 0 + 68 0.016451503570586 0.0186248391588775 0 + 69 0.0164619681511328 0.0188025980518404 0 + 70 0.0164507452954629 0.0189280180821948 0 + 71 0.0164756266995587 0.0188994067059584 0 + 72 0.0164519861727467 0.0187979548826894 0 + 73 0.0164677262265151 0.0188527726973303 0 + 74 0.0164529956941139 0.0189566842708345 0 + 75 0.0164743584294553 0.0188313071826812 0 + 76 0.0164623034950781 0.0188952770976046 0 + 77 0.0164737165301967 0.0189118414407716 0 + 78 0.0164694078315855 0.0185289364804688 0 + 79 0.0164841373171273 0.0186616668096203 0 + 80 0.0164653304888909 0.0188390641851084 0 + 81 0.0164847460658397 0.0188772853626504 0 + 82 0.0164548329322745 0.0188133788136582 0 + 83 0.0164595881163988 0.019095000402823 0 + 84 0.016470273409792 0.0189106139222383 0 + 85 0.0164793578807614 0.0190673035558238 0 + 86 0.0164794932745707 0.0189999768176074 0 + 87 0.0164779744561293 0.0188888352437313 0 + 88 0.0164553809631447 0.0191460724704944 0 + 89 0.0164876681992408 0.0188107766209993 0 + 90 0.0164698851994495 0.0192259407753418 0 + 91 0.0164899871671793 0.0189064331672789 0 + 92 0.0164501525985938 0.0190127816234232 0 + 93 0.0164753983097437 0.0187168141969277 0 + 94 0.0164809215396783 0.0190825361670666 0 + 95 0.0164902986078362 0.0190127334443682 0 + 96 0.0164763052388946 0.0191085322585096 0 + 97 0.0164924607213486 0.0188582193744177 0 + 98 0.0164652690731423 0.0188903102908881 0 + 99 0.0164867010756773 0.0189330562846849 0 + 100 0.0164660367699995 0.0190078099289766 0 + 101 0.0164911903575265 0.0189027331554994 0 + 102 0.0164677717648968 0.0189810824236179 0 + 103 0.0165022066329511 0.0189551510946003 0 + 104 0.0164662370690886 0.0189044651576166 0 + 105 0.016489524978776 0.0187674423539577 0 + 106 0.0164685029961533 0.0189472727717265 0 + 107 0.0164921269476923 0.0189907035714401 0 + 108 0.0164558499561338 0.019064578646224 0 + 109 0.0164738716398572 0.0188920054604669 0 + 110 0.0164762743565437 0.0190449437611056 0 + 111 0.0164791764251406 0.018889919447032 0 + 112 0.0164705429760749 0.0187988736014097 0 + 113 0.0164789927013245 0.0192020416947266 0 + 114 0.016473611669785 0.0188233049209339 0 + 115 0.0164614993326202 0.0187371501222097 0 + 116 0.0164598238342293 0.0189721827396891 0 + 117 0.0164727508024456 0.0188261000043749 0 + 118 0.0164582863467961 0.0186942695412699 0 + 119 0.0164685862214717 0.0189034198815958 0 + 120 0.0164525792185689 0.0187198665844525 0 + 121 0.0164773030703324 0.0186137942850658 0 + 122 0.0164670838038268 0.0189533499660128 0 + 123 0.0164831073820027 0.0187808211189513 0 + 124 0.0164667688736388 0.0188594921044556 0 + 125 0.0164761180255473 0.0188539249797306 0 + 126 0.0164464892887724 0.0188040633235368 0 + 127 0.0164720077067831 0.0187732121449252 0 + 128 0.0164452072350208 0.018962250173627 0 + 129 0.0164870899839261 0.0190127418233343 0 + 130 0.016459772189168 0.0191750319229475 0 + 131 0.0164701266750064 0.0189599365316131 0 + 132 0.0164611727125027 0.0190203120446422 0 + 133 0.0164680781457335 0.0190216017071741 0 + 134 0.0164568425532749 0.0186128352425711 0 + 135 0.0164788192716254 0.019228758377254 0 + 136 0.0164516724638946 0.0189206767113985 0 + 137 0.016478949431138 0.0188962342199195 0 + 138 0.0164561298165336 0.0191006190232771 0 + 139 0.0164755542917869 0.0190500058785614 0 + 140 0.0164556124935377 0.0187485043195198 0 + 141 0.0164507196474088 0.0190170367417068 0 + 142 0.0164471687004911 0.0188547895842948 0 + 143 0.0164601098013086 0.0188974739577785 0 + 144 0.0164608579567913 0.0189445812034293 0 + 145 0.0164729301643477 0.0189157249169963 0 + 146 0.0164409632672129 0.0191215468876016 0 + 147 0.0164714560119053 0.0187773754437052 0 + 148 0.016453806137728 0.0190317306552542 0 + 149 0.016458409701723 0.0190325910703354 0 + 150 0.016446300156183 0.0190408668704134 0 + 151 0.0164759950195736 0.0189401984804746 0 + 152 0.0164447300416335 0.0190495591749313 0 + 153 0.0164623949207948 0.0187950388279255 0 + 154 0.0164359400870948 0.0189297027780659 0 + 155 0.0164562215912033 0.0189593482583683 0 + 156 0.0164493753055259 0.0190509148218212 0 + 157 0.0164598233107996 0.0188672314761416 0 + 158 0.0164437951962332 0.0189148159737365 0 + 159 0.0164648208428636 0.0191385526975449 0 + 160 0.0164373709693507 0.0190494453606418 0 + 161 0.0164554146371204 0.0190579196374793 0 + 162 0.0164451486108972 0.019121285044911 0 + 163 0.0164645650602289 0.019044043895059 0 + 164 0.0164504392635794 0.0186976181601587 0 + 165 0.0164504671798287 0.0189873739797868 0 + 166 0.0164356687760464 0.0191378319318987 0 + 167 0.0164534369453303 0.0190663267080262 0 + 168 0.0164388145883954 0.0190936695437077 0 + 169 0.0164527186253391 0.0191095358142617 0 + 170 0.0164332435518838 0.0189574708462769 0 + 171 0.0164442846029797 0.0187806189763942 0 + 172 0.0164340580084587 0.0189485074472935 0 + 173 0.0164485673045837 0.0187745148995917 0 + 174 0.0164290273258486 0.018830215822347 0 + 175 0.016450102349345 0.0188787988134019 0 + 176 0.0164311430285965 0.0189920377472294 0 + 177 0.0164412099770665 0.0188564391932454 0 + 178 0.0164335047432918 0.0190900863137682 0 + 179 0.0164442961184326 0.0189570108759505 0 + 180 0.0164228450979527 0.0190537807773504 0 + 181 0.016437492579512 0.0188639551258354 0 + 182 0.0164196870722445 0.0189272838752905 0 + 183 0.016438840061973 0.0189407244351591 0 + 184 0.0164283787964808 0.0191445909645512 0 + 185 0.0164416083070495 0.0190009035661702 0 + 186 0.016412027202375 0.0190382999392369 0 + 187 0.016431280341648 0.0191088417565699 0 + 188 0.0164384511537241 0.0189974830278224 0 + 189 0.0164345854510949 0.0189503359820826 0 + 190 0.0164129589071972 0.0189001894410414 0 + 191 0.0164313105260926 0.0186533777428459 0 + 192 0.0164068407121982 0.0188463448084005 0 + 193 0.0164422922551586 0.0188216286040289 0 + 194 0.0164141230147952 0.0190486301570651 0 + 195 0.0164350718917399 0.0189039538661228 0 + 196 0.0163981727167739 0.018976088908947 0 + 197 0.0164302013786105 0.0186541344682217 0 + 198 0.0164117635682952 0.0187053388537327 0 + 199 0.0164348827591505 0.0188468777455567 0 + 200 0.0164084963202615 0.0189798348304782 0 + 201 0.0164184283983518 0.0190289182901957 0 + 202 0.0164093013551022 0.0189938748355464 0 + 203 0.0164248964188505 0.0188985777120001 0 + 204 0.0163861197016389 0.0189140892729893 0 + 205 0.0164414938504271 0.0189945299659582 0 + 206 0.0163912936295035 0.0190288961208479 0 + 207 0.0164153211453222 0.0188169428418004 0 + 208 0.0164085420331198 0.0190174979339657 0 + 209 0.0164144138672182 0.0187582286333621 0 + 210 0.0163877472189763 0.0188360660863014 0 + 211 0.016438808830669 0.0188666440757058 0 + 212 0.0163928122734684 0.018693495185153 0 + 213 0.016421485227656 0.0187786836097873 0 + 214 0.0164041312657219 0.0186433495169208 0 + 215 0.0164178255818423 0.0188323175463432 0 + 216 0.0163971898903201 0.018976409578962 0 + 217 0.0164201696744052 0.0187435457172076 0 + 218 0.0163995320636409 0.018987845122068 0 + 219 0.0164209146893099 0.0186761889543627 0 + 220 0.0164032430055628 0.0190061624147675 0 + 221 0.0164164507065617 0.0187835201934057 0 + 222 0.0163974777766416 0.0188749633416704 0 + 223 0.0164176661102679 0.0189686084124011 0 + 224 0.0163930417101427 0.0188226435062976 0 + 225 0.0164141233637484 0.0187423426373254 0 + 226 0.01640118889304 0.018996327428748 0 + 227 0.0164288055661428 0.0186609085131884 0 + 228 0.0164032700494293 0.0187348848338127 0 + 229 0.0164078024269885 0.0187956862776184 0 + 230 0.0163929630212149 0.0190963977699816 0 + 231 0.0164272534226787 0.0185138758125928 0 + 232 0.0163858681064416 0.0187250730645117 0 + 233 0.0164185958958479 0.0188906307863414 0 + 234 0.0164030676566215 0.0188630606712045 0 + 235 0.0164018004333774 0.0188464739841278 0 + 236 0.0163995488133905 0.0189781192371696 0 + 237 0.0164085041717066 0.0187965507076208 0 + 238 0.0163987202242144 0.0186990834318551 0 + 239 0.0164206611748704 0.0186847039040981 0 + 240 0.0164022528510935 0.0187928330651002 0 + 241 0.0164241117977671 0.0187593187717638 0 + 242 0.016396216660077 0.0188783466983562 0 + 243 0.0164233505565425 0.0187352552539389 0 + 244 0.0164139434784166 0.0188740873905896 0 + 245 0.0164194745597963 0.0187454707846687 0 + 246 0.0163983088084895 0.0189869951806945 0 + 247 0.016435900480916 0.0189396802065091 0 + 248 0.0164233186273323 0.0187842685398153 0 + 249 0.0164390513530853 0.0186674191444085 0 + 250 0.0164271529241811 0.0189300391586424 0 + 251 0.0164633723384753 0.0190247289817084 0 + 252 0.016452145295368 0.01897844723878 0 + 253 0.0165066871909724 0.0188266460336656 0 + 254 0.0165379624630295 0.019144633383067 0 + 255 0.0170330815720343 0.0204797029287844 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/CalAQ_SAM_852F.dat b/calfile/surface/CalAQ_SAM_852F.dat new file mode 100644 index 0000000..277f8c1 --- /dev/null +++ b/calfile/surface/CalAQ_SAM_852F.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = AquaDLAB_2016-12-07_12-02-43_591_545 +IDDevice = SAM_852F +IDDataType = SPECTRUM +IDDataTypeSub1 = CAL +IDDataTypeSub2 = Aqua +IDDataTypeSub3 = +DateTime = 2016-12-07 12:01:43 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = +MethodName = +Mission = No Mission +MissionSub = 1 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = DLAB_2016-11-29_14-47-59_729_812 +IDDataCal = +IntegrationTime = 256 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $04 $09 1/Intensity (m^2 nm)/mW +Unit3 = $04 $09 1/Intensity (m^2 nm)/mW +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 7 0 0 + 1 +NAN 0 0 + 2 +NAN 0 0 + 3 +NAN 0 0 + 4 +NAN 0 0 + 5 0.0757791569140749 0 0 + 6 0.0831133762408903 0 0 + 7 0.0873256015093429 0 0 + 8 0.088798490578607 0 0 + 9 0.0893180250587088 0 0 + 10 0.0912184306930603 0 0 + 11 0.0934315009445713 0 0 + 12 0.0978927038642625 0 0 + 13 0.10316713605413 0 0 + 14 0.111042352696646 0 0 + 15 0.119482024262908 0 0 + 16 0.129446496806651 0 0 + 17 0.140324929207819 0 0 + 18 0.149929004563169 0 0 + 19 0.157951375798488 0 0 + 20 0.163167079267684 0 0 + 21 0.163684554455683 0 0 + 22 0.161710955408623 0 0 + 23 0.158158176144384 0 0 + 24 0.153120816765498 0 0 + 25 0.149159625705894 0 0 + 26 0.146361065436421 0 0 + 27 0.144318454214309 0 0 + 28 0.144129633718655 0 0 + 29 0.144738939517372 0 0 + 30 0.146583353055999 0 0 + 31 0.149927549178646 0 0 + 32 0.154781330782628 0 0 + 33 0.161281049713208 0 0 + 34 0.169324782015295 0 0 + 35 0.178566729488516 0 0 + 36 0.188750791302883 0 0 + 37 0.199826540979236 0 0 + 38 0.211193704798505 0 0 + 39 0.222305048038871 0 0 + 40 0.232787040612667 0 0 + 41 0.242185638548782 0 0 + 42 0.249199329450493 0 0 + 43 0.253905646769863 0 0 + 44 0.255480704613068 0 0 + 45 0.254086308176615 0 0 + 46 0.250712203525897 0 0 + 47 0.245637528877396 0 0 + 48 0.239859851966525 0 0 + 49 0.233843628655063 0 0 + 50 0.228059104546805 0 0 + 51 0.222661940533832 0 0 + 52 0.218199567518201 0 0 + 53 0.214240155949967 0 0 + 54 0.21061280671042 0 0 + 55 0.206823867975479 0 0 + 56 0.202504211638902 0 0 + 57 0.198378089686984 0 0 + 58 0.195008429198418 0 0 + 59 0.192596053511712 0 0 + 60 0.1913409806608 0 0 + 61 0.191204589224151 0 0 + 62 0.191982450755957 0 0 + 63 0.193875999271111 0 0 + 64 0.196568015329539 0 0 + 65 0.200197325412529 0 0 + 66 0.204781342874412 0 0 + 67 0.210052890237844 0 0 + 68 0.215505542064364 0 0 + 69 0.22102191587617 0 0 + 70 0.225647984382987 0 0 + 71 0.229501509141454 0 0 + 72 0.232213608637945 0 0 + 73 0.233859853462842 0 0 + 74 0.234864695710533 0 0 + 75 0.235347731196379 0 0 + 76 0.235169523165461 0 0 + 77 0.2348286160222 0 0 + 78 0.23395735104209 0 0 + 79 0.232593294508701 0 0 + 80 0.230910869907075 0 0 + 81 0.228844605598996 0 0 + 82 0.226021135136259 0 0 + 83 0.222713212172475 0 0 + 84 0.218813740820075 0 0 + 85 0.214437631947854 0 0 + 86 0.20945948892298 0 0 + 87 0.203847193841702 0 0 + 88 0.197707092492944 0 0 + 89 0.191556734852924 0 0 + 90 0.18600061167507 0 0 + 91 0.181873354953207 0 0 + 92 0.178782316057322 0 0 + 93 0.176167924779435 0 0 + 94 0.174141863608666 0 0 + 95 0.172744990342331 0 0 + 96 0.171801376758966 0 0 + 97 0.170954015345458 0 0 + 98 0.169960140045412 0 0 + 99 0.168049955384139 0 0 + 100 0.165224777136175 0 0 + 101 0.161531979240228 0 0 + 102 0.157405412608478 0 0 + 103 0.153570487964493 0 0 + 104 0.150141271545146 0 0 + 105 0.14725256652001 0 0 + 106 0.144660342475923 0 0 + 107 0.142269456600007 0 0 + 108 0.139762314536934 0 0 + 109 0.136963054606891 0 0 + 110 0.133984343960448 0 0 + 111 0.131197679174342 0 0 + 112 0.129003116254732 0 0 + 113 0.127069994503092 0 0 + 114 0.125436648144931 0 0 + 115 0.12397269238396 0 0 + 116 0.122419985358787 0 0 + 117 0.120693422850158 0 0 + 118 0.118931546980571 0 0 + 119 0.117166660339047 0 0 + 120 0.115631793601506 0 0 + 121 0.114393230429202 0 0 + 122 0.113425752529033 0 0 + 123 0.112707849783804 0 0 + 124 0.112359222280159 0 0 + 125 0.11219082672674 0 0 + 126 0.112343608199868 0 0 + 127 0.112664705152637 0 0 + 128 0.112877954686814 0 0 + 129 0.112998494144185 0 0 + 130 0.112887922565457 0 0 + 131 0.11253063359053 0 0 + 132 0.111841159102354 0 0 + 133 0.110997003525569 0 0 + 134 0.109948198155768 0 0 + 135 0.108874849717231 0 0 + 136 0.107795318097265 0 0 + 137 0.106637360724801 0 0 + 138 0.105678694194695 0 0 + 139 0.104756017092462 0 0 + 140 0.103825430274706 0 0 + 141 0.102939456306441 0 0 + 142 0.102001186921616 0 0 + 143 0.100737446991222 0 0 + 144 0.0991453606719906 0 0 + 145 0.0971498679860747 0 0 + 146 0.0948117209915638 0 0 + 147 0.0924075366042346 0 0 + 148 0.0899484551808979 0 0 + 149 0.0873520434504222 0 0 + 150 0.0848497958878303 0 0 + 151 0.0823900490277647 0 0 + 152 0.0799786063537234 0 0 + 153 0.0776610830064481 0 0 + 154 0.0752837851752474 0 0 + 155 0.0729604964467151 0 0 + 156 0.0707262742573907 0 0 + 157 0.0684046065784823 0 0 + 158 0.0660274200992436 0 0 + 159 0.0636252573638505 0 0 + 160 0.0612270512870042 0 0 + 161 0.0587905905539405 0 0 + 162 0.0563195707029216 0 0 + 163 0.0538582650571118 0 0 + 164 0.0514203967394221 0 0 + 165 0.0490721477077881 0 0 + 166 0.0468328465329872 0 0 + 167 0.044723244642693 0 0 + 168 0.0427398639178554 0 0 + 169 0.0408841538190041 0 0 + 170 0.0391762093418711 0 0 + 171 0.0375882143782858 0 0 + 172 0.0361234008364646 0 0 + 173 0.0347811387811729 0 0 + 174 0.0335210387242261 0 0 + 175 0.0323747022105674 0 0 + 176 0.0312594345687719 0 0 + 177 0.030174948252246 0 0 + 178 0.0291339080526091 0 0 + 179 0.0281312995576928 0 0 + 180 0.027138393963344 0 0 + 181 0.0260756668210364 0 0 + 182 0.0250906058668046 0 0 + 183 0.0240551778532538 0 0 + 184 0.0230712653382013 0 0 + 185 0.0221310389230639 0 0 + 186 0.0211757703478467 0 0 + 187 0.0202209094313405 0 0 + 188 0.0192572613107586 0 0 + 189 0.0182920464007378 0 0 + 190 0.0172950661682144 0 0 + 191 0.0163207919630062 0 0 + 192 0.0153269728531649 0 0 + 193 0.0143853788804443 0 0 + 194 0.0135213976548868 0 0 + 195 0.0127456574145877 0 0 + 196 0.0120278700767597 0 0 + 197 +NAN 0 0 + 198 +NAN 0 0 + 199 +NAN 0 0 + 200 +NAN 0 0 + 201 +NAN 0 0 + 202 +NAN 0 0 + 203 +NAN 0 0 + 204 +NAN 0 0 + 205 +NAN 0 0 + 206 +NAN 0 0 + 207 +NAN 0 0 + 208 +NAN 0 0 + 209 +NAN 0 0 + 210 +NAN 0 0 + 211 +NAN 0 0 + 212 +NAN 0 0 + 213 +NAN 0 0 + 214 +NAN 0 0 + 215 +NAN 0 0 + 216 +NAN 0 0 + 217 +NAN 0 0 + 218 +NAN 0 0 + 219 +NAN 0 0 + 220 +NAN 0 0 + 221 +NAN 0 0 + 222 +NAN 0 0 + 223 +NAN 0 0 + 224 +NAN 0 0 + 225 +NAN 0 0 + 226 +NAN 0 0 + 227 +NAN 0 0 + 228 +NAN 0 0 + 229 +NAN 0 0 + 230 +NAN 0 0 + 231 +NAN 0 0 + 232 +NAN 0 0 + 233 +NAN 0 0 + 234 +NAN 0 0 + 235 +NAN 0 0 + 236 +NAN 0 0 + 237 +NAN 0 0 + 238 +NAN 0 0 + 239 +NAN 0 0 + 240 +NAN 0 0 + 241 +NAN 0 0 + 242 +NAN 0 0 + 243 +NAN 0 0 + 244 +NAN 0 0 + 245 +NAN 0 0 + 246 +NAN 0 0 + 247 +NAN 0 0 + 248 +NAN 0 0 + 249 +NAN 0 0 + 250 +NAN 0 0 + 251 +NAN 0 0 + 252 +NAN 0 0 + 253 +NAN 0 0 + 254 +NAN 0 0 + 255 +NAN 0 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/CalAQ_SAM_859F.dat b/calfile/surface/CalAQ_SAM_859F.dat new file mode 100644 index 0000000..9380a3c --- /dev/null +++ b/calfile/surface/CalAQ_SAM_859F.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = DLAB_2018-05-24_13-29-21_895_177 +IDDevice = SAM_859F +IDDataType = SPECTRUM +IDDataTypeSub1 = CAL +IDDataTypeSub2 = Aqua +IDDataTypeSub3 = +DateTime = 2018-05-24 13:29:21 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = +MethodName = +Mission = No Mission +MissionSub = 1 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = DLAB_2018-05-04_11-56-28_529_586 +IDDataCal = +IntegrationTime = 64 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 5 0 0 + 1 +NAN 0 0 + 2 +NAN 0 0 + 3 +NAN 0 0 + 4 +NAN 0 0 + 5 0.308009257704273 0 0 + 6 0.348985396550329 0 0 + 7 0.39611199753429 0 0 + 8 0.43986968240828 0 0 + 9 0.477232425339663 0 0 + 10 0.536318311921194 0 0 + 11 0.599255756896796 0 0 + 12 0.660195405447511 0 0 + 13 0.721940911560072 0 0 + 14 0.778381764258939 0 0 + 15 0.806518994572799 0 0 + 16 0.812862184246214 0 0 + 17 0.800779958731845 0 0 + 18 0.768238986615194 0 0 + 19 0.729324871828135 0 0 + 20 0.701235591002145 0 0 + 21 0.674572715683613 0 0 + 22 0.663056816542841 0 0 + 23 0.662699926877705 0 0 + 24 0.669382520005193 0 0 + 25 0.684772623825422 0 0 + 26 0.710275115045633 0 0 + 27 0.74145572495904 0 0 + 28 0.783988164111933 0 0 + 29 0.834525694448954 0 0 + 30 0.886966821712609 0 0 + 31 0.949247521262016 0 0 + 32 1.01565043430167 0 0 + 33 1.07897249264832 0 0 + 34 1.14377888540009 0 0 + 35 1.19997013476615 0 0 + 36 1.24429313837597 0 0 + 37 1.2763795229717 0 0 + 38 1.29391228294411 0 0 + 39 1.29587029284695 0 0 + 40 1.29012478792631 0 0 + 41 1.27276079346714 0 0 + 42 1.2450982196578 0 0 + 43 1.21375364521069 0 0 + 44 1.17906121512383 0 0 + 45 1.14422362714978 0 0 + 46 1.11315509839511 0 0 + 47 1.08731507394343 0 0 + 48 1.06746197368796 0 0 + 49 1.05494171300318 0 0 + 50 1.04869254224893 0 0 + 51 1.04747349722362 0 0 + 52 1.04822757370139 0 0 + 53 1.04856210675178 0 0 + 54 1.04679141002185 0 0 + 55 1.04513065036628 0 0 + 56 1.04725995618916 0 0 + 57 1.0535067386541 0 0 + 58 1.06471361999517 0 0 + 59 1.08034380002613 0 0 + 60 1.10113009018595 0 0 + 61 1.12455239246124 0 0 + 62 1.15132895471663 0 0 + 63 1.1795169782144 0 0 + 64 1.20798673857183 0 0 + 65 1.23708055274173 0 0 + 66 1.26532262623006 0 0 + 67 1.29064822236823 0 0 + 68 1.31210337451311 0 0 + 69 1.32736540301797 0 0 + 70 1.33430139824988 0 0 + 71 1.33335932325033 0 0 + 72 1.32335113190924 0 0 + 73 1.30558590461423 0 0 + 74 1.28227321775146 0 0 + 75 1.25498704776805 0 0 + 76 1.22525023251367 0 0 + 77 1.19392661641762 0 0 + 78 1.16317225749886 0 0 + 79 1.13207700011805 0 0 + 80 1.10111674556499 0 0 + 81 1.07075040366943 0 0 + 82 1.03893893539784 0 0 + 83 1.0081446443131 0 0 + 84 0.97774721715577 0 0 + 85 0.947774052897518 0 0 + 86 0.919152947182789 0 0 + 87 0.894963764571428 0 0 + 88 0.87836395884067 0 0 + 89 0.867156996532193 0 0 + 90 0.858153034494107 0 0 + 91 0.851906778357719 0 0 + 92 0.847981268808314 0 0 + 93 0.844919850173329 0 0 + 94 0.841944554421527 0 0 + 95 0.83721825473176 0 0 + 96 0.828398944802337 0 0 + 97 0.815351600734525 0 0 + 98 0.799543228463232 0 0 + 99 0.782489183888857 0 0 + 100 0.765962841341892 0 0 + 101 0.751320667184625 0 0 + 102 0.737812095757199 0 0 + 103 0.725090001717255 0 0 + 104 0.712873061263532 0 0 + 105 0.698758948036327 0 0 + 106 0.683766639638848 0 0 + 107 0.672493396285743 0 0 + 108 0.664610527729123 0 0 + 109 0.658092136872804 0 0 + 110 0.652228157780532 0 0 + 111 0.645754399378545 0 0 + 112 0.639368207275896 0 0 + 113 0.633138158063289 0 0 + 114 0.628392493836991 0 0 + 115 0.626088937445665 0 0 + 116 0.625599854321674 0 0 + 117 0.627001238574581 0 0 + 118 0.630202545823175 0 0 + 119 0.632703647598273 0 0 + 120 0.633210363154327 0 0 + 121 0.63123164301687 0 0 + 122 0.626485370072314 0 0 + 123 0.618891745640103 0 0 + 124 0.609361448964366 0 0 + 125 0.598872648152344 0 0 + 126 0.58927447780469 0 0 + 127 0.580815044730471 0 0 + 128 0.573341941514821 0 0 + 129 0.567484926926375 0 0 + 130 0.562800136636572 0 0 + 131 0.558223116403165 0 0 + 132 0.553158922485434 0 0 + 133 0.547084299354418 0 0 + 134 0.539847820827437 0 0 + 135 0.531432360197925 0 0 + 136 0.521203701656628 0 0 + 137 0.509855867118928 0 0 + 138 0.498554054755033 0 0 + 139 0.487573187562371 0 0 + 140 0.476425489189536 0 0 + 141 0.466415695619565 0 0 + 142 0.456641365086098 0 0 + 143 0.446540473657011 0 0 + 144 0.436135290849149 0 0 + 145 0.424928637592468 0 0 + 146 0.412541586513936 0 0 + 147 0.399056656796071 0 0 + 148 0.384717912438278 0 0 + 149 0.369579305401316 0 0 + 150 0.353784632326527 0 0 + 151 0.337380068381195 0 0 + 152 0.321095903578543 0 0 + 153 0.305495669126019 0 0 + 154 0.290421643260465 0 0 + 155 0.276140762920409 0 0 + 156 0.262854333224098 0 0 + 157 0.250936131068681 0 0 + 158 0.240006392992584 0 0 + 159 0.229965608856624 0 0 + 160 0.220954309792884 0 0 + 161 0.212487857424938 0 0 + 162 0.204661532835082 0 0 + 163 0.197216204057537 0 0 + 164 0.189605277840326 0 0 + 165 0.182475141050851 0 0 + 166 0.175121099828465 0 0 + 167 0.167843462384963 0 0 + 168 0.160673785509465 0 0 + 169 0.153434661065448 0 0 + 170 0.146286002352245 0 0 + 171 0.139523451810534 0 0 + 172 0.133107862589632 0 0 + 173 0.126994143420237 0 0 + 174 0.121367561058691 0 0 + 175 0.116037239577153 0 0 + 176 0.111252442566666 0 0 + 177 0.106669531239736 0 0 + 178 0.102319284531729 0 0 + 179 0.098450973344807 0 0 + 180 0.0947593486764351 0 0 + 181 0.0911919684356708 0 0 + 182 0.0879361030612687 0 0 + 183 0.0844573547823388 0 0 + 184 0.0813058869947144 0 0 + 185 0.0782782092672921 0 0 + 186 0.0751117681314502 0 0 + 187 0.0722888539254525 0 0 + 188 0.0693076153913147 0 0 + 189 0.0660732713239472 0 0 + 190 0.0627758734115707 0 0 + 191 0.0592551057473219 0 0 + 192 0.0560010918166818 0 0 + 193 0.0532135140872552 0 0 + 194 0.0505779890461858 0 0 + 195 0.0480767985810033 0 0 + 196 +NAN 0 0 + 197 +NAN 0 0 + 198 +NAN 0 0 + 199 +NAN 0 0 + 200 +NAN 0 0 + 201 +NAN 0 0 + 202 +NAN 0 0 + 203 +NAN 0 0 + 204 +NAN 0 0 + 205 +NAN 0 0 + 206 +NAN 0 0 + 207 +NAN 0 0 + 208 +NAN 0 0 + 209 +NAN 0 0 + 210 +NAN 0 0 + 211 +NAN 0 0 + 212 +NAN 0 0 + 213 +NAN 0 0 + 214 +NAN 0 0 + 215 +NAN 0 0 + 216 +NAN 0 0 + 217 +NAN 0 0 + 218 +NAN 0 0 + 219 +NAN 0 0 + 220 +NAN 0 0 + 221 +NAN 0 0 + 222 +NAN 0 0 + 223 +NAN 0 0 + 224 +NAN 0 0 + 225 +NAN 0 0 + 226 +NAN 0 0 + 227 +NAN 0 0 + 228 +NAN 0 0 + 229 +NAN 0 0 + 230 +NAN 0 0 + 231 +NAN 0 0 + 232 +NAN 0 0 + 233 +NAN 0 0 + 234 +NAN 0 0 + 235 +NAN 0 0 + 236 +NAN 0 0 + 237 +NAN 0 0 + 238 +NAN 0 0 + 239 +NAN 0 0 + 240 +NAN 0 0 + 241 +NAN 0 0 + 242 +NAN 0 0 + 243 +NAN 0 0 + 244 +NAN 0 0 + 245 +NAN 0 0 + 246 +NAN 0 0 + 247 +NAN 0 0 + 248 +NAN 0 0 + 249 +NAN 0 0 + 250 +NAN 0 0 + 251 +NAN 0 0 + 252 +NAN 0 0 + 253 +NAN 0 0 + 254 +NAN 0 0 + 255 +NAN 0 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/CalAQ_SAM_85B5.dat b/calfile/surface/CalAQ_SAM_85B5.dat new file mode 100644 index 0000000..2fe5355 --- /dev/null +++ b/calfile/surface/CalAQ_SAM_85B5.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = DLAB_2018-06-13_11-58-21_312_112 +IDDevice = SAM_85B5 +IDDataType = SPECTRUM +IDDataTypeSub1 = CAL +IDDataTypeSub2 = Aqua +IDDataTypeSub3 = +DateTime = 2018-06-13 11:58:21 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = +MethodName = +Mission = No Mission +MissionSub = 1 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = DLAB_2018-06-11_15-23-57_730_586 +IDDataCal = +IntegrationTime = 64 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 5 0 0 + 1 +NAN 0 0 + 2 +NAN 0 0 + 3 +NAN 0 0 + 4 0.213368170535889 0 0 + 5 0.269708461889978 0 0 + 6 0.323681305990691 0 0 + 7 0.361686162925288 0 0 + 8 0.399727885563257 0 0 + 9 0.426595980991839 0 0 + 10 0.455395402116462 0 0 + 11 0.489873358069589 0 0 + 12 0.521706723967902 0 0 + 13 0.569424753191682 0 0 + 14 0.613678281579101 0 0 + 15 0.668568867138568 0 0 + 16 0.729648774358889 0 0 + 17 0.791588424733509 0 0 + 18 0.846278067578305 0 0 + 19 0.889326585618736 0 0 + 20 0.912464300651466 0 0 + 21 0.912041091772509 0 0 + 22 0.896201537846271 0 0 + 23 0.875528861051999 0 0 + 24 0.850358796139941 0 0 + 25 0.830813460904554 0 0 + 26 0.816907084374381 0 0 + 27 0.809230927534884 0 0 + 28 0.809079793968319 0 0 + 29 0.815347896421343 0 0 + 30 0.825892411944005 0 0 + 31 0.84503183706585 0 0 + 32 0.873670658313288 0 0 + 33 0.907826486501149 0 0 + 34 0.950360287322641 0 0 + 35 1.00114116281862 0 0 + 36 1.05504053595122 0 0 + 37 1.11205216981838 0 0 + 38 1.17221784963607 0 0 + 39 1.22975299376536 0 0 + 40 1.2826684244193 0 0 + 41 1.32878263374036 0 0 + 42 1.35908629098684 0 0 + 43 1.37850707003827 0 0 + 44 1.38104038663283 0 0 + 45 1.36883708486346 0 0 + 46 1.34742818899357 0 0 + 47 1.31902470629713 0 0 + 48 1.28498732451399 0 0 + 49 1.25220172471482 0 0 + 50 1.22068349763187 0 0 + 51 1.1925789464318 0 0 + 52 1.16935370804616 0 0 + 53 1.14646179324841 0 0 + 54 1.12109994325093 0 0 + 55 1.09422415317439 0 0 + 56 1.06828767805555 0 0 + 57 1.04445396328421 0 0 + 58 1.02753751191562 0 0 + 59 1.01678817181089 0 0 + 60 1.01144651696064 0 0 + 61 1.01173798764201 0 0 + 62 1.0164772818471 0 0 + 63 1.02628160092791 0 0 + 64 1.04098599390468 0 0 + 65 1.05940120890642 0 0 + 66 1.08286747681355 0 0 + 67 1.10823034660724 0 0 + 68 1.13310605067389 0 0 + 69 1.1547273364889 0 0 + 70 1.17166412724341 0 0 + 71 1.183983471337 0 0 + 72 1.19136561427902 0 0 + 73 1.19606418873222 0 0 + 74 1.19672161290192 0 0 + 75 1.19671286046196 0 0 + 76 1.19421014531398 0 0 + 77 1.18916801665381 0 0 + 78 1.18305692745573 0 0 + 79 1.17490571141989 0 0 + 80 1.16334076115534 0 0 + 81 1.14948755782896 0 0 + 82 1.13252619591223 0 0 + 83 1.11230773028189 0 0 + 84 1.09067725991727 0 0 + 85 1.06664792919033 0 0 + 86 1.03995448729021 0 0 + 87 1.01197155529512 0 0 + 88 0.982502268789757 0 0 + 89 0.950934147643801 0 0 + 90 0.921876981717461 0 0 + 91 0.899503833526815 0 0 + 92 0.884246887000271 0 0 + 93 0.871798641947689 0 0 + 94 0.860748919530635 0 0 + 95 0.851106201938694 0 0 + 96 0.841814387319495 0 0 + 97 0.830400473286421 0 0 + 98 0.814782119978127 0 0 + 99 0.796371468702983 0 0 + 100 0.774800085650998 0 0 + 101 0.751694156127581 0 0 + 102 0.729723545880894 0 0 + 103 0.70902256138046 0 0 + 104 0.69215621992056 0 0 + 105 0.678393548274155 0 0 + 106 0.667293944696908 0 0 + 107 0.65649797079901 0 0 + 108 0.6446860376968 0 0 + 109 0.629464240966416 0 0 + 110 0.615183928901848 0 0 + 111 0.602591773736883 0 0 + 112 0.590820336228123 0 0 + 113 0.580150915843665 0 0 + 114 0.571621329022329 0 0 + 115 0.563766808252911 0 0 + 116 0.556883367165026 0 0 + 117 0.549917569359012 0 0 + 118 0.542933812612894 0 0 + 119 0.535932724580549 0 0 + 120 0.528043359268253 0 0 + 121 0.520231538772767 0 0 + 122 0.513331529426342 0 0 + 123 0.507286194391832 0 0 + 124 0.502222099629004 0 0 + 125 0.498298138845332 0 0 + 126 0.496514280280116 0 0 + 127 0.495442722847893 0 0 + 128 0.494658216836534 0 0 + 129 0.494062920786886 0 0 + 130 0.492582820232232 0 0 + 131 0.490091285479962 0 0 + 132 0.485745623273317 0 0 + 133 0.480328740541132 0 0 + 134 0.473945880321646 0 0 + 135 0.466683779528739 0 0 + 136 0.458932848241851 0 0 + 137 0.451064706693729 0 0 + 138 0.443865689279125 0 0 + 139 0.437073402888952 0 0 + 140 0.430871678484112 0 0 + 141 0.424656716266769 0 0 + 142 0.418021794802865 0 0 + 143 0.410821018781503 0 0 + 144 0.402243888142941 0 0 + 145 0.392571430814996 0 0 + 146 0.381881477324506 0 0 + 147 0.36994612437875 0 0 + 148 0.35763078427341 0 0 + 149 0.344551257226534 0 0 + 150 0.332004497779552 0 0 + 151 0.319784344441634 0 0 + 152 0.307705241065949 0 0 + 153 0.296024637721301 0 0 + 154 0.285201831804588 0 0 + 155 0.27477331903475 0 0 + 156 0.2649271655017 0 0 + 157 0.255311286750044 0 0 + 158 0.245955888598912 0 0 + 159 0.237139128199368 0 0 + 160 0.228125758026999 0 0 + 161 0.218973368669899 0 0 + 162 0.210024147431339 0 0 + 163 0.201001563461602 0 0 + 164 0.192143502318544 0 0 + 165 0.183367668918973 0 0 + 166 0.17479218252589 0 0 + 167 0.166354193257315 0 0 + 168 0.158270839921817 0 0 + 169 0.15057933833141 0 0 + 170 0.14334907901495 0 0 + 171 0.136492914420144 0 0 + 172 0.130248971747009 0 0 + 173 0.124351585245978 0 0 + 174 0.119145124817533 0 0 + 175 0.114204124468303 0 0 + 176 0.10955932586493 0 0 + 177 0.105201972954921 0 0 + 178 0.100976345428583 0 0 + 179 0.0970301944120184 0 0 + 180 0.0930794320815323 0 0 + 181 0.0893096045786908 0 0 + 182 0.0855242301014967 0 0 + 183 0.0818515687486457 0 0 + 184 0.0783728272346642 0 0 + 185 0.0747373637294556 0 0 + 186 0.0714485344156491 0 0 + 187 0.0680790457826121 0 0 + 188 0.0647379875159452 0 0 + 189 0.0614749247480892 0 0 + 190 0.0581599202112611 0 0 + 191 0.0547153945113677 0 0 + 192 0.0515011739034831 0 0 + 193 0.0485390098580295 0 0 + 194 0.045947792932824 0 0 + 195 0.0435560478479539 0 0 + 196 0.0413612446534424 0 0 + 197 +NAN 0 0 + 198 +NAN 0 0 + 199 +NAN 0 0 + 200 +NAN 0 0 + 201 +NAN 0 0 + 202 +NAN 0 0 + 203 +NAN 0 0 + 204 +NAN 0 0 + 205 +NAN 0 0 + 206 +NAN 0 0 + 207 +NAN 0 0 + 208 +NAN 0 0 + 209 +NAN 0 0 + 210 +NAN 0 0 + 211 +NAN 0 0 + 212 +NAN 0 0 + 213 +NAN 0 0 + 214 +NAN 0 0 + 215 +NAN 0 0 + 216 +NAN 0 0 + 217 +NAN 0 0 + 218 +NAN 0 0 + 219 +NAN 0 0 + 220 +NAN 0 0 + 221 +NAN 0 0 + 222 +NAN 0 0 + 223 +NAN 0 0 + 224 +NAN 0 0 + 225 +NAN 0 0 + 226 +NAN 0 0 + 227 +NAN 0 0 + 228 +NAN 0 0 + 229 +NAN 0 0 + 230 +NAN 0 0 + 231 +NAN 0 0 + 232 +NAN 0 0 + 233 +NAN 0 0 + 234 +NAN 0 0 + 235 +NAN 0 0 + 236 +NAN 0 0 + 237 +NAN 0 0 + 238 +NAN 0 0 + 239 +NAN 0 0 + 240 +NAN 0 0 + 241 +NAN 0 0 + 242 +NAN 0 0 + 243 +NAN 0 0 + 244 +NAN 0 0 + 245 +NAN 0 0 + 246 +NAN 0 0 + 247 +NAN 0 0 + 248 +NAN 0 0 + 249 +NAN 0 0 + 250 +NAN 0 0 + 251 +NAN 0 0 + 252 +NAN 0 0 + 253 +NAN 0 0 + 254 +NAN 0 0 + 255 +NAN 0 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/Cal_SAM_852F.dat b/calfile/surface/Cal_SAM_852F.dat new file mode 100644 index 0000000..9b22f3d --- /dev/null +++ b/calfile/surface/Cal_SAM_852F.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = AirDLAB_2016-12-07_12-00-24_364_510 +IDDevice = SAM_852F +IDDataType = SPECTRUM +IDDataTypeSub1 = CAL +IDDataTypeSub2 = Air +IDDataTypeSub3 = +DateTime = 2016-12-07 11:59:26 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = +MethodName = +Mission = No Mission +MissionSub = 1 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = DLAB_2016-11-29_14-47-59_729_812 +IDDataCal = +IntegrationTime = 128 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $04 $09 1/Intensity (m^2 nm)/mW +Unit3 = $04 $09 1/Intensity (m^2 nm)/mW +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 6 0 0 + 1 +NAN 0 0 + 2 +NAN 0 0 + 3 +NAN 0 0 + 4 +NAN 0 0 + 5 0.099081925071204 0 0 + 6 0.107353085872454 0 0 + 7 0.113070264290883 0 0 + 8 0.114376499819276 0 0 + 9 0.116544285861757 0 0 + 10 0.1185169696214 0 0 + 11 0.121561138979849 0 0 + 12 0.126964155564462 0 0 + 13 0.134364254054539 0 0 + 14 0.144053858633949 0 0 + 15 0.154882735476408 0 0 + 16 0.16719673162462 0 0 + 17 0.181437615712041 0 0 + 18 0.194237970806716 0 0 + 19 0.20386154720656 0 0 + 20 0.211556336359081 0 0 + 21 0.211417859085921 0 0 + 22 0.208790218500257 0 0 + 23 0.20437467341685 0 0 + 24 0.198246352046376 0 0 + 25 0.192966396099738 0 0 + 26 0.18897229193584 0 0 + 27 0.186243043953596 0 0 + 28 0.18578727224224 0 0 + 29 0.187114583931684 0 0 + 30 0.189090911319999 0 0 + 31 0.193600418301244 0 0 + 32 0.200054490546523 0 0 + 33 0.208072057884887 0 0 + 34 0.218285958582262 0 0 + 35 0.230634876630779 0 0 + 36 0.243459214546046 0 0 + 37 0.257752719558026 0 0 + 38 0.272580246630834 0 0 + 39 0.286712281491418 0 0 + 40 0.300342726342385 0 0 + 41 0.312249154496702 0 0 + 42 0.321331680226083 0 0 + 43 0.327112591435919 0 0 + 44 0.329469692698771 0 0 + 45 0.327542874308678 0 0 + 46 0.322985767437387 0 0 + 47 0.316224456423823 0 0 + 48 0.308782990589082 0 0 + 49 0.301183418606427 0 0 + 50 0.293575702556702 0 0 + 51 0.286696408065096 0 0 + 52 0.280798842600295 0 0 + 53 0.275808444038661 0 0 + 54 0.271299340181449 0 0 + 55 0.266225534078626 0 0 + 56 0.260785177597799 0 0 + 57 0.255342424416527 0 0 + 58 0.250947812402455 0 0 + 59 0.24777514930692 0 0 + 60 0.246247860756574 0 0 + 61 0.246092032695547 0 0 + 62 0.247219177075727 0 0 + 63 0.249675195006791 0 0 + 64 0.253195744885965 0 0 + 65 0.257788026175471 0 0 + 66 0.26369589320837 0 0 + 67 0.270555680751329 0 0 + 68 0.277823002163503 0 0 + 69 0.284937579021833 0 0 + 70 0.291097253127256 0 0 + 71 0.296043211270752 0 0 + 72 0.299540235735164 0 0 + 73 0.301795150475552 0 0 + 74 0.303069111244916 0 0 + 75 0.30355995799167 0 0 + 76 0.303606664702465 0 0 + 77 0.303007474849756 0 0 + 78 0.302001653949665 0 0 + 79 0.300361927400822 0 0 + 80 0.297986890885497 0 0 + 81 0.295325565249305 0 0 + 82 0.291656567474701 0 0 + 83 0.287335862742648 0 0 + 84 0.282306131698578 0 0 + 85 0.276702242286357 0 0 + 86 0.270280607979823 0 0 + 87 0.263050805729498 0 0 + 88 0.255009286552014 0 0 + 89 0.247098798503932 0 0 + 90 0.2398191835424 0 0 + 91 0.23466817932016 0 0 + 92 0.230585310303585 0 0 + 93 0.227279061892254 0 0 + 94 0.224693206022759 0 0 + 95 0.222993136629962 0 0 + 96 0.221791418806722 0 0 + 97 0.220695274517678 0 0 + 98 0.219442816624831 0 0 + 99 0.217000405185694 0 0 + 100 0.213283732282521 0 0 + 101 0.208384750595562 0 0 + 102 0.202985389753009 0 0 + 103 0.197924660371165 0 0 + 104 0.193409646692029 0 0 + 105 0.189628652821804 0 0 + 106 0.186318519164064 0 0 + 107 0.183315563032657 0 0 + 108 0.180098687261504 0 0 + 109 0.176492614557115 0 0 + 110 0.172650422408531 0 0 + 111 0.168979191040057 0 0 + 112 0.166106531649937 0 0 + 113 0.163622827054655 0 0 + 114 0.161570328667133 0 0 + 115 0.159693607722301 0 0 + 116 0.157690305409947 0 0 + 117 0.15544650006387 0 0 + 118 0.153185383511044 0 0 + 119 0.150954772341381 0 0 + 120 0.148960802743881 0 0 + 121 0.147350785081686 0 0 + 122 0.146182367433256 0 0 + 123 0.145312879880878 0 0 + 124 0.144781245193999 0 0 + 125 0.14473607505965 0 0 + 126 0.144976432177203 0 0 + 127 0.145464936657928 0 0 + 128 0.145889790468872 0 0 + 129 0.146174517595681 0 0 + 130 0.14615421098877 0 0 + 131 0.145743119998859 0 0 + 132 0.144922809795091 0 0 + 133 0.143805231938307 0 0 + 134 0.142492952453543 0 0 + 135 0.141053445832183 0 0 + 136 0.139720571628269 0 0 + 137 0.138186469198598 0 0 + 138 0.136919534961634 0 0 + 139 0.135732624874463 0 0 + 140 0.134597268963386 0 0 + 141 0.133432724955799 0 0 + 142 0.13211501546202 0 0 + 143 0.130478475600008 0 0 + 144 0.128290801143951 0 0 + 145 0.125726707508103 0 0 + 146 0.122634784100445 0 0 + 147 0.119472073398083 0 0 + 148 0.116199128230447 0 0 + 149 0.112813911251756 0 0 + 150 0.109547291781198 0 0 + 151 0.106268392530964 0 0 + 152 0.10313443150471 0 0 + 153 0.100113578226984 0 0 + 154 0.097073834113113 0 0 + 155 0.0941199411272616 0 0 + 156 0.0911853891891621 0 0 + 157 0.0882319764053268 0 0 + 158 0.085267274530049 0 0 + 159 0.0822333903307463 0 0 + 160 0.0792187073154596 0 0 + 161 0.0760907077820793 0 0 + 162 0.0728848234132589 0 0 + 163 0.0697048920692252 0 0 + 164 0.0665600438164166 0 0 + 165 0.0635411651500916 0 0 + 166 0.0606319242880778 0 0 + 167 0.0578670530064308 0 0 + 168 0.0553155735461356 0 0 + 169 0.0529193006810867 0 0 + 170 0.050722718025932 0 0 + 171 0.0486788470977319 0 0 + 172 0.0467747209472673 0 0 + 173 0.0450423813898501 0 0 + 174 0.0434307741189043 0 0 + 175 0.041915712424757 0 0 + 176 0.0405250313895705 0 0 + 177 0.0390895391040532 0 0 + 178 0.0377897158697839 0 0 + 179 0.0365016922380464 0 0 + 180 0.0351788001916396 0 0 + 181 0.0338645937424847 0 0 + 182 0.0325302009051183 0 0 + 183 0.0312848146149282 0 0 + 184 0.0300375958148976 0 0 + 185 0.0288302935207691 0 0 + 186 0.027652203865544 0 0 + 187 0.0264621566936286 0 0 + 188 0.0252688692008588 0 0 + 189 0.0241226625595337 0 0 + 190 0.0229255436965288 0 0 + 191 0.0217207281738409 0 0 + 192 0.0205701146867025 0 0 + 193 0.0193892949195812 0 0 + 194 0.0183936626191952 0 0 + 195 0.017494647116465 0 0 + 196 0.0167605279940225 0 0 + 197 +NAN 0 0 + 198 +NAN 0 0 + 199 +NAN 0 0 + 200 +NAN 0 0 + 201 +NAN 0 0 + 202 +NAN 0 0 + 203 +NAN 0 0 + 204 +NAN 0 0 + 205 +NAN 0 0 + 206 +NAN 0 0 + 207 +NAN 0 0 + 208 +NAN 0 0 + 209 +NAN 0 0 + 210 +NAN 0 0 + 211 +NAN 0 0 + 212 +NAN 0 0 + 213 +NAN 0 0 + 214 +NAN 0 0 + 215 +NAN 0 0 + 216 +NAN 0 0 + 217 +NAN 0 0 + 218 +NAN 0 0 + 219 +NAN 0 0 + 220 +NAN 0 0 + 221 +NAN 0 0 + 222 +NAN 0 0 + 223 +NAN 0 0 + 224 +NAN 0 0 + 225 +NAN 0 0 + 226 +NAN 0 0 + 227 +NAN 0 0 + 228 +NAN 0 0 + 229 +NAN 0 0 + 230 +NAN 0 0 + 231 +NAN 0 0 + 232 +NAN 0 0 + 233 +NAN 0 0 + 234 +NAN 0 0 + 235 +NAN 0 0 + 236 +NAN 0 0 + 237 +NAN 0 0 + 238 +NAN 0 0 + 239 +NAN 0 0 + 240 +NAN 0 0 + 241 +NAN 0 0 + 242 +NAN 0 0 + 243 +NAN 0 0 + 244 +NAN 0 0 + 245 +NAN 0 0 + 246 +NAN 0 0 + 247 +NAN 0 0 + 248 +NAN 0 0 + 249 +NAN 0 0 + 250 +NAN 0 0 + 251 +NAN 0 0 + 252 +NAN 0 0 + 253 +NAN 0 0 + 254 +NAN 0 0 + 255 +NAN 0 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/Cal_SAM_859F.dat b/calfile/surface/Cal_SAM_859F.dat new file mode 100644 index 0000000..179f228 --- /dev/null +++ b/calfile/surface/Cal_SAM_859F.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = DLAB_2018-05-24_13-29-20_305_176 +IDDevice = SAM_859F +IDDataType = SPECTRUM +IDDataTypeSub1 = CAL +IDDataTypeSub2 = Air +IDDataTypeSub3 = +DateTime = 2018-05-24 13:28:25 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = +MethodName = +Mission = No Mission +MissionSub = 1 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = DLAB_2018-05-04_11-56-28_529_586 +IDDataCal = +IntegrationTime = 64 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 5 0 0 + 1 +NAN 0 0 + 2 +NAN 0 0 + 3 +NAN 0 0 + 4 +NAN 0 0 + 5 0.549282530081406 0 0 + 6 0.621825635483575 0 0 + 7 0.705214779700439 0 0 + 8 0.782494923890489 0 0 + 9 0.848306874043027 0 0 + 10 0.952625287085828 0 0 + 11 1.06364941208026 0 0 + 12 1.17099618224932 0 0 + 13 1.27964867192574 0 0 + 14 1.37878597375063 0 0 + 15 1.42771820575638 0 0 + 16 1.4380590385421 0 0 + 17 1.41583530083466 0 0 + 18 1.35751030831315 0 0 + 19 1.28801896577964 0 0 + 20 1.23773169248486 0 0 + 21 1.19003370359023 0 0 + 22 1.16911032524399 0 0 + 23 1.16789019991587 0 0 + 24 1.17908641221467 0 0 + 25 1.20561721452238 0 0 + 26 1.24993325867368 0 0 + 27 1.3042108426727 0 0 + 28 1.37841324495146 0 0 + 29 1.46663415660191 0 0 + 30 1.55813913029349 0 0 + 31 1.66686169700722 0 0 + 32 1.78274771118438 0 0 + 33 1.89315285694338 0 0 + 34 2.00609300108623 0 0 + 35 2.10386062632617 0 0 + 36 2.18077321675475 0 0 + 37 2.23620955735442 0 0 + 38 2.266135432154 0 0 + 39 2.26878990322214 0 0 + 40 2.25797663538301 0 0 + 41 2.22685859649013 0 0 + 42 2.17776313289299 0 0 + 43 2.1222752364519 0 0 + 44 2.06098344374156 0 0 + 45 1.99948809108821 0 0 + 46 1.94462577242816 0 0 + 47 1.8989381397134 0 0 + 48 1.8637403074385 0 0 + 49 1.84137175128878 0 0 + 50 1.82996842025894 0 0 + 51 1.82735603324287 0 0 + 52 1.82819560800875 0 0 + 53 1.82831225824908 0 0 + 54 1.82476779554239 0 0 + 55 1.82142520789599 0 0 + 56 1.82469614734563 0 0 + 57 1.83514598035505 0 0 + 58 1.85423698694933 0 0 + 59 1.88102853388183 0 0 + 60 1.91679111910883 0 0 + 61 1.95713305118927 0 0 + 62 2.0033013266641 0 0 + 63 2.05191276620812 0 0 + 64 2.10100127704333 0 0 + 65 2.15116215495783 0 0 + 66 2.19982933350689 0 0 + 67 2.24341508467426 0 0 + 68 2.28026480621138 0 0 + 69 2.30634686430023 0 0 + 70 2.31796219508283 0 0 + 71 2.31589695847203 0 0 + 72 2.29809543158409 0 0 + 73 2.2668387918562 0 0 + 74 2.22596956700897 0 0 + 75 2.17822422289454 0 0 + 76 2.1262484698939 0 0 + 77 2.07154274835781 0 0 + 78 2.01784816285075 0 0 + 79 1.9635850159156 0 0 + 80 1.90957838150673 0 0 + 81 1.85662335754133 0 0 + 82 1.80118393109592 0 0 + 83 1.74752896056537 0 0 + 84 1.69458207285898 0 0 + 85 1.64238998731142 0 0 + 86 1.59255947952261 0 0 + 87 1.55042463825823 0 0 + 88 1.52145095482736 0 0 + 89 1.50182839545807 0 0 + 90 1.48602912306116 0 0 + 91 1.47501182897849 0 0 + 92 1.46801797625318 0 0 + 93 1.46252443118698 0 0 + 94 1.4571840542778 0 0 + 95 1.44881752975571 0 0 + 96 1.433373570625 0 0 + 97 1.4106211402034 0 0 + 98 1.38310053980989 0 0 + 99 1.35343439202405 0 0 + 100 1.32469024445085 0 0 + 101 1.29921323938482 0 0 + 102 1.2757042981125 0 0 + 103 1.25356245928469 0 0 + 104 1.23230080447944 0 0 + 105 1.20776661327865 0 0 + 106 1.18172190161938 0 0 + 107 1.16211138784545 0 0 + 108 1.14836490545677 0 0 + 109 1.13698033747357 0 0 + 110 1.12673020620722 0 0 + 111 1.115430409999 0 0 + 112 1.10428562795353 0 0 + 113 1.0934141739792 0 0 + 114 1.0851095103506 0 0 + 115 1.08102444265095 0 0 + 116 1.08007408967758 0 0 + 117 1.08238869164072 0 0 + 118 1.08781099449618 0 0 + 119 1.09202496629142 0 0 + 120 1.09279743926351 0 0 + 121 1.08928198225434 0 0 + 122 1.08099296127192 0 0 + 123 1.06779395728469 0 0 + 124 1.05125732218958 0 0 + 125 1.03307124483462 0 0 + 126 1.01642561672595 0 0 + 127 1.0017478853335 0 0 + 128 0.98877464388953 0 0 + 129 0.978591382441999 0 0 + 130 0.970432000434175 0 0 + 131 0.962460675619692 0 0 + 132 0.953651636148435 0 0 + 133 0.943103023421902 0 0 + 134 0.930554197290447 0 0 + 135 0.915976069829803 0 0 + 136 0.89827602173614 0 0 + 137 0.878650755188226 0 0 + 138 0.859108524352699 0 0 + 139 0.840122962860222 0 0 + 140 0.820853477964574 0 0 + 141 0.803547895709764 0 0 + 142 0.786651104537257 0 0 + 143 0.769194844035412 0 0 + 144 0.751217544779413 0 0 + 145 0.731862968408631 0 0 + 146 0.710478767970412 0 0 + 147 0.687207420135085 0 0 + 148 0.662469528888512 0 0 + 149 0.636358233772055 0 0 + 150 0.609121332586544 0 0 + 151 0.580838486227566 0 0 + 152 0.552767035926316 0 0 + 153 0.525876935395925 0 0 + 154 0.499896413074609 0 0 + 155 0.475284681533185 0 0 + 156 0.452387885405863 0 0 + 157 0.431848904268036 0 0 + 158 0.413013739466993 0 0 + 159 0.395710805209202 0 0 + 160 0.380181587532903 0 0 + 161 0.365591896979342 0 0 + 162 0.352105459639395 0 0 + 163 0.339276260510366 0 0 + 164 0.32616389487977 0 0 + 165 0.313880254968568 0 0 + 166 0.301213081346406 0 0 + 167 0.28867892621412 0 0 + 168 0.276332017077307 0 0 + 169 0.263867205519659 0 0 + 170 0.251559483539307 0 0 + 171 0.239917175566115 0 0 + 172 0.228872841726392 0 0 + 173 0.218348838385983 0 0 + 174 0.208663588155861 0 0 + 175 0.199488791575245 0 0 + 176 0.191252859631973 0 0 + 177 0.183364916996847 0 0 + 178 0.175877803627425 0 0 + 179 0.169219899131997 0 0 + 180 0.162866423884395 0 0 + 181 0.156727192611269 0 0 + 182 0.151124000714184 0 0 + 183 0.145138407523578 0 0 + 184 0.13971586046093 0 0 + 185 0.134506608902369 0 0 + 186 0.129059486722317 0 0 + 187 0.124203168251957 0 0 + 188 0.119075347065844 0 0 + 189 0.113513221481262 0 0 + 190 0.107843336832916 0 0 + 191 0.101790305051534 0 0 + 192 0.0961960826886135 0 0 + 193 0.0914035900672732 0 0 + 194 0.0868727278958915 0 0 + 195 0.082573024301116 0 0 + 196 +NAN 0 0 + 197 +NAN 0 0 + 198 +NAN 0 0 + 199 +NAN 0 0 + 200 +NAN 0 0 + 201 +NAN 0 0 + 202 +NAN 0 0 + 203 +NAN 0 0 + 204 +NAN 0 0 + 205 +NAN 0 0 + 206 +NAN 0 0 + 207 +NAN 0 0 + 208 +NAN 0 0 + 209 +NAN 0 0 + 210 +NAN 0 0 + 211 +NAN 0 0 + 212 +NAN 0 0 + 213 +NAN 0 0 + 214 +NAN 0 0 + 215 +NAN 0 0 + 216 +NAN 0 0 + 217 +NAN 0 0 + 218 +NAN 0 0 + 219 +NAN 0 0 + 220 +NAN 0 0 + 221 +NAN 0 0 + 222 +NAN 0 0 + 223 +NAN 0 0 + 224 +NAN 0 0 + 225 +NAN 0 0 + 226 +NAN 0 0 + 227 +NAN 0 0 + 228 +NAN 0 0 + 229 +NAN 0 0 + 230 +NAN 0 0 + 231 +NAN 0 0 + 232 +NAN 0 0 + 233 +NAN 0 0 + 234 +NAN 0 0 + 235 +NAN 0 0 + 236 +NAN 0 0 + 237 +NAN 0 0 + 238 +NAN 0 0 + 239 +NAN 0 0 + 240 +NAN 0 0 + 241 +NAN 0 0 + 242 +NAN 0 0 + 243 +NAN 0 0 + 244 +NAN 0 0 + 245 +NAN 0 0 + 246 +NAN 0 0 + 247 +NAN 0 0 + 248 +NAN 0 0 + 249 +NAN 0 0 + 250 +NAN 0 0 + 251 +NAN 0 0 + 252 +NAN 0 0 + 253 +NAN 0 0 + 254 +NAN 0 0 + 255 +NAN 0 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/Cal_SAM_85B5.dat b/calfile/surface/Cal_SAM_85B5.dat new file mode 100644 index 0000000..6e52832 --- /dev/null +++ b/calfile/surface/Cal_SAM_85B5.dat @@ -0,0 +1,297 @@ +[Spectrum] +Version = 1 +IDData = DLAB_2018-06-13_11-56-08_604_111 +IDDevice = SAM_85B5 +IDDataType = SPECTRUM +IDDataTypeSub1 = CAL +IDDataTypeSub2 = Air +IDDataTypeSub3 = +DateTime = 2018-06-13 11:54:51 +PositionLatitude = 0 +PositionLongitude = 0 +Comment = +CommentSub1 = +CommentSub2 = +CommentSub3 = +IDMethodType = +MethodName = +Mission = No Mission +MissionSub = 1 +RecordType = 0 + +[Attributes] +CalFactor = 1 +IDBasisSpec = +IDDataBack = DLAB_2018-06-11_15-23-57_730_586 +IDDataCal = +IntegrationTime = 64 +P31 = -1 +P31e = 0 +PathLength = +INF +RAWDynamic = 65535 +Temperature = +NAN +Unit1 = $05 $00 Pixel +Unit2 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit3 = $04 $04 1/Intensity (m^2 nm Sr)/mW +Unit4 = $f1 $00 Status +[END] of [Attributes] +[DATA] + 0 5 0 0 + 1 +NAN 0 0 + 2 +NAN 0 0 + 3 +NAN 0 0 + 4 0.380824258865919 0 0 + 5 0.480956813156357 0 0 + 6 0.57671205380196 0 0 + 7 0.643896236957154 0 0 + 8 0.711054782209677 0 0 + 9 0.758265752350778 0 0 + 10 0.808854255795615 0 0 + 11 0.869466331079482 0 0 + 12 0.925321324749243 0 0 + 13 1.00927399148091 0 0 + 14 1.08699883630787 0 0 + 15 1.18347377446848 0 0 + 16 1.29079925777138 0 0 + 17 1.39953731633192 0 0 + 18 1.49536024576308 0 0 + 19 1.57053962346542 0 0 + 20 1.61051680455964 0 0 + 21 1.60891142181803 0 0 + 22 1.58014917632373 0 0 + 23 1.54292073894688 0 0 + 24 1.49782795775685 0 0 + 25 1.46270054563491 0 0 + 26 1.43754722159869 0 0 + 27 1.42339247548624 0 0 + 28 1.42249669690879 0 0 + 29 1.43289834559721 0 0 + 30 1.45081833970432 0 0 + 31 1.48383024473758 0 0 + 32 1.53350351710437 0 0 + 33 1.59283171118034 0 0 + 34 1.66682243068085 0 0 + 35 1.75523084376357 0 0 + 36 1.8490542829721 0 0 + 37 1.94827772413977 0 0 + 38 2.05297044933559 0 0 + 39 2.15300125225733 0 0 + 40 2.24489521732098 0 0 + 41 2.32484518002751 0 0 + 42 2.37710624055378 0 0 + 43 2.41032149129472 0 0 + 44 2.41401311078449 0 0 + 45 2.39196623346607 0 0 + 46 2.35386541795861 0 0 + 47 2.30358502851024 0 0 + 48 2.24350994611066 0 0 + 49 2.18566570348128 0 0 + 50 2.13007635400607 0 0 + 51 2.08048312730197 0 0 + 52 2.03943635277338 0 0 + 53 1.9990019487276 0 0 + 54 1.9542919602901 0 0 + 55 1.90697476815729 0 0 + 56 1.86132580586718 0 0 + 57 1.81936966943287 0 0 + 58 1.78948757961567 0 0 + 59 1.77036444175303 0 0 + 60 1.76067051308416 0 0 + 61 1.76079151769139 0 0 + 62 1.76865840458355 0 0 + 63 1.78533977613825 0 0 + 64 1.81054315659671 0 0 + 65 1.84219534093402 0 0 + 66 1.88262260694772 0 0 + 67 1.92633682221336 0 0 + 68 1.96919363361994 0 0 + 69 2.00638558730966 0 0 + 70 2.03543177536163 0 0 + 71 2.05645335730185 0 0 + 72 2.06889953924594 0 0 + 73 2.07668786673546 0 0 + 74 2.07746404954558 0 0 + 75 2.07708946852551 0 0 + 76 2.07239270419962 0 0 + 77 2.06329693588947 0 0 + 78 2.05235510505223 0 0 + 79 2.03788342455449 0 0 + 80 2.01750123705209 0 0 + 81 1.99316265318269 0 0 + 82 1.96344779927853 0 0 + 83 1.92810068074762 0 0 + 84 1.89032139564187 0 0 + 85 1.84840056738145 0 0 + 86 1.80188008685176 0 0 + 87 1.7531429855323 0 0 + 88 1.70184883503381 0 0 + 89 1.64693756964496 0 0 + 90 1.59639297188055 0 0 + 91 1.55743828612696 0 0 + 92 1.53081670223502 0 0 + 93 1.509066853406 0 0 + 94 1.48974595694359 0 0 + 95 1.47286758281018 0 0 + 96 1.45660325947575 0 0 + 97 1.43667408186819 0 0 + 98 1.40947906533906 0 0 + 99 1.37746325817173 0 0 + 100 1.3399910234164 0 0 + 101 1.29987620320872 0 0 + 102 1.26173586555032 0 0 + 103 1.22580130202006 0 0 + 104 1.19650560480134 0 0 + 105 1.17258287879559 0 0 + 106 1.15326969493003 0 0 + 107 1.13448708666807 0 0 + 108 1.11395465030131 0 0 + 109 1.08753684763482 0 0 + 110 1.06275254011917 0 0 + 111 1.0408908566722 0 0 + 112 1.02045255259373 0 0 + 113 1.00192289281247 0 0 + 114 0.987093337695555 0 0 + 115 0.973433543184599 0 0 + 116 0.961454156421677 0 0 + 117 0.949336048850277 0 0 + 118 0.937190359719721 0 0 + 119 0.925018119816345 0 0 + 120 0.911316167695048 0 0 + 121 0.897751565127677 0 0 + 122 0.885763756400802 0 0 + 123 0.875253674622747 0 0 + 124 0.866439225407856 0 0 + 125 0.859594015285511 0 0 + 126 0.856442344648432 0 0 + 127 0.854520610650332 0 0 + 128 0.853095084706978 0 0 + 129 0.851996897997662 0 0 + 130 0.849373999218705 0 0 + 131 0.845008414644852 0 0 + 132 0.837447706997702 0 0 + 133 0.828042280687475 0 0 + 134 0.816973957953628 0 0 + 135 0.804392597259629 0 0 + 136 0.790971383923797 0 0 + 137 0.777350907812577 0 0 + 138 0.764886212005326 0 0 + 139 0.753124860834896 0 0 + 140 0.74238339492221 0 0 + 141 0.731621293455726 0 0 + 142 0.720137856580817 0 0 + 143 0.707681887074656 0 0 + 144 0.692857487682284 0 0 + 145 0.676149155140644 0 0 + 146 0.657691286728854 0 0 + 147 0.637091724889135 0 0 + 148 0.615841105000382 0 0 + 149 0.593277961352052 0 0 + 150 0.571635565839856 0 0 + 151 0.550558744253774 0 0 + 152 0.529727893337181 0 0 + 153 0.50958610090654 0 0 + 154 0.490923786532866 0 0 + 155 0.472942835508178 0 0 + 156 0.455966760194577 0 0 + 157 0.439389399108222 0 0 + 158 0.42326262400571 0 0 + 159 0.408064966451864 0 0 + 160 0.392531100434587 0 0 + 161 0.376760145430696 0 0 + 162 0.361340837642809 0 0 + 163 0.345797349215964 0 0 + 164 0.330538900755072 0 0 + 165 0.315423852713651 0 0 + 166 0.300655326757946 0 0 + 167 0.286125136929255 0 0 + 168 0.27220666979537 0 0 + 169 0.258963801456755 0 0 + 170 0.246515726736969 0 0 + 171 0.23471243489257 0 0 + 172 0.223963260764627 0 0 + 173 0.213811227531161 0 0 + 174 0.204848303945938 0 0 + 175 0.196342813423038 0 0 + 176 0.188347519381911 0 0 + 177 0.180847277367304 0 0 + 178 0.173574321958823 0 0 + 179 0.166782572540461 0 0 + 180 0.159983659268987 0 0 + 181 0.153496471427164 0 0 + 182 0.146983276179518 0 0 + 183 0.140664487031456 0 0 + 184 0.134679615950644 0 0 + 185 0.128426075217298 0 0 + 186 0.122768803469292 0 0 + 187 0.116973531179931 0 0 + 188 0.111227699506044 0 0 + 189 0.10561644888568 0 0 + 190 0.0999165260100575 0 0 + 191 0.09399466356358 0 0 + 192 0.0884689961099718 0 0 + 193 0.0833768260697751 0 0 + 194 0.0789223013382674 0 0 + 195 0.0748108094846383 0 0 + 196 0.0710379549143775 0 0 + 197 +NAN 0 0 + 198 +NAN 0 0 + 199 +NAN 0 0 + 200 +NAN 0 0 + 201 +NAN 0 0 + 202 +NAN 0 0 + 203 +NAN 0 0 + 204 +NAN 0 0 + 205 +NAN 0 0 + 206 +NAN 0 0 + 207 +NAN 0 0 + 208 +NAN 0 0 + 209 +NAN 0 0 + 210 +NAN 0 0 + 211 +NAN 0 0 + 212 +NAN 0 0 + 213 +NAN 0 0 + 214 +NAN 0 0 + 215 +NAN 0 0 + 216 +NAN 0 0 + 217 +NAN 0 0 + 218 +NAN 0 0 + 219 +NAN 0 0 + 220 +NAN 0 0 + 221 +NAN 0 0 + 222 +NAN 0 0 + 223 +NAN 0 0 + 224 +NAN 0 0 + 225 +NAN 0 0 + 226 +NAN 0 0 + 227 +NAN 0 0 + 228 +NAN 0 0 + 229 +NAN 0 0 + 230 +NAN 0 0 + 231 +NAN 0 0 + 232 +NAN 0 0 + 233 +NAN 0 0 + 234 +NAN 0 0 + 235 +NAN 0 0 + 236 +NAN 0 0 + 237 +NAN 0 0 + 238 +NAN 0 0 + 239 +NAN 0 0 + 240 +NAN 0 0 + 241 +NAN 0 0 + 242 +NAN 0 0 + 243 +NAN 0 0 + 244 +NAN 0 0 + 245 +NAN 0 0 + 246 +NAN 0 0 + 247 +NAN 0 0 + 248 +NAN 0 0 + 249 +NAN 0 0 + 250 +NAN 0 0 + 251 +NAN 0 0 + 252 +NAN 0 0 + 253 +NAN 0 0 + 254 +NAN 0 0 + 255 +NAN 0 0 +[END] of [DATA] +[END] of [Spectrum] + diff --git a/calfile/surface/SAMIP_50ED_ALL.ini b/calfile/surface/SAMIP_50ED_ALL.ini new file mode 100644 index 0000000..10275ce --- /dev/null +++ b/calfile/surface/SAMIP_50ED_ALL.ini @@ -0,0 +1,81 @@ +[DEVICE] +Version = 0 +IDDevice = SAMIP_50ED +IDDeviceType = SAMIP +IDDeviceTypeSub1 = ACC-2 +IDDeviceTypeSub2 = VIS +IDDeviceTypeSub3 = +DateTime = 2018-06-19 12:08:40 +Comment = +RecordType = 0 +IDDeviceMaster = + +[ATTRIBUTES] +IDDeviceSAM = SAM_859F +IDDeviceIP = IP_C121 +[END] of [ATTRIBUTES] +[END] of [DEVICE] + + +[DEVICE] +Version = 0 +IDDevice = IP_C121 +IDDeviceType = IP +IDDeviceTypeSub1 = +IDDeviceTypeSub2 = +IDDeviceTypeSub3 = +DateTime = 2018-06-19 12:01:08 +Comment = +RecordType = 0 +IDDeviceMaster = SAMIP_50ED + +[ATTRIBUTES] +Incl_Orientation = up +Incl_Xgain = 1.0 +Incl_Xoffset = 125 +Incl_Ygain = 0.9375 +Incl_Yoffset = 126 +Incl_KBG = 1.2073 +Incl_Kref = 0.1275 +Press_Current_mA = 1.08 +Press_Surface_bar = 5.57 +Press_Gain = 2.7 +WithIncl = 1 +WithPress = 1 +Press_Sens_mV_bar_4mA = 71.36 +Press_Sens_mV_bar_1mA = 17.84 +Press_Type = PA-10/TAB/10bar +CalibrationDate = 08.06.2018 +[END] of [ATTRIBUTES] +[END] of [DEVICE] + + +[DEVICE] +Version = 0 +IDDevice = SAM_859F +IDDeviceType = SAM +IDDeviceTypeSub1 = ACC-2 +IDDeviceTypeSub2 = VIS +IDDeviceTypeSub3 = +DateTime = 2018-05-30 12:14:10 +Comment = +RecordType = 0 +IDDeviceMaster = SAMIP_50ED + +[ATTRIBUTES] +c0s = +3.019290000E+02 +c1s = +3.345130000E+00 +c2s = +2.651460000E-04 +c3s = -1.753680000E-06 +DarkPixelStart = 237 +DarkPixelStop = 254 +Reverse = 0 +c4s = +0.000000000E+00 +IDDataCal = DLAB_2019-08-28_14-44-55_098_198 +IDDataBack = DLAB_2019-08-28_12-24-09_763_812 +IDDataCalAQ = DLAB_2019-08-28_14-47-19_914_233 +Firmware = 2.06 +[END] of [ATTRIBUTES] +[END] of [DEVICE] + + diff --git a/calfile/surface/SAM_852F.ini b/calfile/surface/SAM_852F.ini new file mode 100644 index 0000000..e6c4904 --- /dev/null +++ b/calfile/surface/SAM_852F.ini @@ -0,0 +1,32 @@ +[Device] +Version = 0 +IDDevice = SAM_852F +IDDeviceType = SAM +IDDeviceTypeSub1 = ACC-2 +IDDeviceTypeSub2 = VIS +IDDeviceTypeSub3 = +RecordType = 0 +DateTime = 2016-12-07 12:03:12 +IDDeviceMaster = +Comment = + +[Attributes] +DarkPixelStart = 237 +DarkPixelStop = 254 +Firmware = 2.06 +IDDataBack = DLAB_2016-11-29_14-47-59_729_812 +IDDataCal = DLAB_2016-12-07_12-00-24_364_510 +IDDataCalAQ = DLAB_2016-12-07_12-02-43_591_545 +IntegrationTime = 0 +Reverse = 0 +SerialNo_MMS = 103307 +WavelengthRange = 310..1100 +c0s = 299.895 +c1s = 3.31161 +c2s = 0.00031652 +c3s = -1.73194e-06 +c4s = +0.000000000E+00 +cs = 102842 +[END] of [Attributes] +[END] of [Device] + diff --git a/calfile/surface/SAM_859F.ini b/calfile/surface/SAM_859F.ini new file mode 100644 index 0000000..a441025 --- /dev/null +++ b/calfile/surface/SAM_859F.ini @@ -0,0 +1,30 @@ +[Device] +Version = 0 +IDDevice = SAM_859F +IDDeviceType = SAM +IDDeviceTypeSub1 = ARC +IDDeviceTypeSub2 = VIS +IDDeviceTypeSub3 = +RecordType = 0 +DateTime = 2018-05-24 13:30:20 +IDDeviceMaster = +Comment = ARC VIS + +[Attributes] +DarkPixelStart = 237 +DarkPixelStop = 254 +Firmware = 2.06 +IDDataBack = DLAB_2018-05-04_11-56-28_529_586 +IDDataCal = DLAB_2018-05-24_13-29-20_305_176 +IDDataCalAQ = DLAB_2018-05-24_13-29-21_895_177 +IntegrationTime = 0 +Reverse = 0 +SerialNo_MMS = +c0s = 299.971 +c1s = 3.32431 +c2s = 0.000391882 +c3s = -1.91435e-06 +c4s = +0.000000000E+00 +[END] of [Attributes] +[END] of [Device] + diff --git a/calfile/surface/SAM_85B5.ini b/calfile/surface/SAM_85B5.ini new file mode 100644 index 0000000..254132b --- /dev/null +++ b/calfile/surface/SAM_85B5.ini @@ -0,0 +1,30 @@ +[Device] +Version = 0 +IDDevice = SAM_85B5 +IDDeviceType = SAM +IDDeviceTypeSub1 = ARC +IDDeviceTypeSub2 = VIS +IDDeviceTypeSub3 = +RecordType = 0 +DateTime = 2018-06-13 11:58:48 +IDDeviceMaster = +Comment = ARC VIS + +[Attributes] +DarkPixelStart = 237 +DarkPixelStop = 254 +Firmware = 2.06 +IDDataBack = DLAB_2018-06-11_15-23-57_730_586 +IDDataCal = DLAB_2018-06-13_11-56-08_604_111 +IDDataCalAQ = DLAB_2018-06-13_11-58-21_312_112 +IntegrationTime = 0 +Reverse = 0 +SerialNo_MMS = +c0s = 300.14 +c1s = 3.3268 +c2s = 0.000314225 +c3s = -1.90331e-06 +c4s = +0.000000000E+00 +[END] of [Attributes] +[END] of [Device] + diff --git a/config.ini b/config.ini new file mode 100644 index 0000000..e99110d --- /dev/null +++ b/config.ini @@ -0,0 +1,4 @@ +[SENSOR] +Lsky = 85B5 +Esky = 50ED +Lwater = 852F diff --git a/config.yml b/config.yml index 9cc6a8e..185b765 100644 --- a/config.yml +++ b/config.yml @@ -1,20 +1,20 @@ 2: 1: FUNC: Lsky - SN: '85B5' + SN: 85B5 2: FUNC: Esky - SN: '50ED' + SN: 50ED 3: FUNC: Lwater - SN: '852F' + SN: 852F 3: 1: FUNC: Lsky - SN: '85B5' + SN: 85B5 2: FUNC: Esky - SN: '50ED' + SN: 50ED 3: FUNC: Lwater - SN: '852F' + SN: 852F diff --git a/configuration.py b/configuration.py new file mode 100644 index 0000000..f06b33d --- /dev/null +++ b/configuration.py @@ -0,0 +1,237 @@ +from pathlib import Path, PurePath + +from tools.mylogger import log +from readcal import ReadCal + +from myconfig import CAL_DIR, DATA_DIR, FILE_MARK, DeviceType, RamsesFunc + + +class Configuration: + def __init__(self, ) -> None: + log.info(f"ConfigAWRAMS init: ", __name__, "", "") + self.device_type = None + self.configuration =None + self.cal_configuration = {} + pass + + + + def setDeviceType(self, device_type:str) -> None: + self.device_type = device_type.lower() + pass + + def setSystemCfgDict(self, cfg:dict) -> None: + self.configuration = cfg + log.info(f"self.configuration : {self.configuration} ", __name__, "", "") + pass + + def getCalConfiguration(self) -> None: + if self.device_type == None: + self.cal_configuration = None + if self.configuration == None: + self.cal_configuration =None + + for k,v in self.configuration.items(): + + if v["SN"] == "" or v['FUNC']=="": + pass + else: + self.cal_configuration.update( {v["FUNC"]:{}} ) + self.cal_configuration[v["FUNC"]].update( {"SN":v['SN']} ) + self.cal_configuration[v["FUNC"]].update( {"FUNC":v['FUNC']} ) + + self.__init_configuration_basic() + self.__init_configuration_cal() + self.__init_configuration_IP_SAM() + pass + + def __init_configuration_basic(self ) -> None: + # self.cfgtool = Config() + for k in self.cal_configuration.keys(): + sn = self.cal_configuration[k]["SN"] + if self.__isSamIniExisted(sn): + self.cal_configuration[k].update({ "TYPE" : "SAM" }) + self.cal_configuration[k].update({ "samsn" : sn }) + self.cal_configuration[k].update({ "inifile" : "SAM_"+sn+".ini" }) + self.cal_configuration[k].update({ "calfile" : "Cal_SAM_"+sn+".dat" }) + self.cal_configuration[k].update({ "calaqfile" : "CalAQ_SAM_"+sn+".dat" }) + self.cal_configuration[k].update({ "backfile" : "Back_SAM_"+sn+".dat" }) + if self.__isSamIPIniExisted(sn): + self.cal_configuration[k].update({ "TYPE" : "SAMIP" }) + samsn = self.__getSAMSN(sn) + if samsn== None: + log.warning(f"Cannot get samsn from Sensor: {sn}", __name__, "", "" ) + raise Exception(f"Cannot get samsn from Sensor: {sn}") + self.cal_configuration[k].update({ "samsn" : samsn }) + self.cal_configuration[k].update({ "inifile" : "SAMIP_"+sn+"_ALL.ini" }) + self.cal_configuration[k].update({ "calfile" : "Cal_SAM_"+samsn+".dat" }) + self.cal_configuration[k].update({ "calaqfile" : "CalAQ_SAM_"+samsn+".dat" }) + self.cal_configuration[k].update({ "backfile" : "Back_SAM_"+samsn+".dat" }) + if not self.__isSamIniExisted(sn) and not self.__isSamIPIniExisted(sn): + log.warning(f"Cannot find ini file for Sensor: {sn}", __name__, "", "" ) + raise Exception(f"Cannot find ini file for Sensor: {sn}") + + pass + + def __init_configuration_cal(self ) -> None: + # self.cfgtool = Config() + for k in self.cal_configuration.keys(): + sn = self.cal_configuration[k]["SN"] + # Device File + calpath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[k]["calfile"]) + if calpath.exists( ): + res = ReadCal.read_columns_set_by_mark( calpath, FILE_MARK, 1 ) + self.cal_configuration[k].update({ "cal" : res[1][0] }) + calaqpath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[k]["calaqfile"]) + if calaqpath.exists( ): + res = ReadCal.read_columns_set_by_mark( calaqpath, FILE_MARK, 1 ) + self.cal_configuration[k].update({ "calaq" : res[1][0] }) + backpath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[k]["backfile"]) + if calaqpath.exists( ): + res = ReadCal.read_columns_set_by_mark( backpath, FILE_MARK, 1,2 ) + self.cal_configuration[k].update({ "b0" : res[1][0] }) + self.cal_configuration[k].update({ "b1" : res[1][1] }) + pass + + + + def __init_configuration_IP_SAM(self ) -> None: + # self.cfgtool = Config() + for j in self.cal_configuration.keys(): + # log.debug(f"__init_configuration_IP_SAM {j}", __name__, "", "" ) + inipath = CAL_DIR.joinpath(self.device_type, self.cal_configuration[j]["inifile"]) + # log.debug(f"__init_configuration_IP_SAM {inipath}", __name__, "", "" ) + sam = ReadCal.readSAMCalFromIni(inipath) + # log.debug(f"__init_configuration_IP_SAM {sam}", __name__, "", "" ) + for k,v in sam.items(): + self.cal_configuration[j].update({ k : v }) + if self.cal_configuration[j]["TYPE"] == "SAMIP": + ip = ReadCal.readIPCalFromIni(inipath) + for k,v in ip.items(): + self.cal_configuration[j].update({ k : v }) + + def __isSamIniExisted(self,sn) ->bool: + sn_0 = "SAM_"+str(sn)+".ini" + path_ = CAL_DIR.joinpath(self.device_type.lower(), sn_0) + if path_.exists(): + return True + return False + + + def __isSamIPIniExisted(self,sn) ->bool: + sn_0 = "SAMIP_"+str(sn)+"_ALL.ini" + path_ = CAL_DIR.joinpath(self.device_type.lower(), sn_0) + if path_.exists(): + return True + return False + + def __getSAMSN(self,sn) -> None: + sn_0 = "SAMIP_"+str(sn)+"_ALL.ini" + path_ = CAL_DIR.joinpath(self.device_type.lower(), sn_0) + # path_ = DATA_DIR.joinpath(self.device.lower(), CAL_DIR, sn_0) + samsn = ReadCal.readSamSNFromIni( path_ ) + if samsn == None: + return None + return samsn + pass + + # def __init2__(self, device:str, **kwargs) -> None: + # """ + # get cal parameter for every sensor + # para : {"1":{"SN":"85B5","FUNC","Lsky"},"2":{},"3":{}} + # """ + # # log.info(f"ProcessAWRAMS kwargs: {kwargs}", __name__, "", "") + # # log.info(f"len: { len(kwargs)}", __name__, "", "") + + # if len(kwargs) != 3: + # log.warning(f" pass a wrong para to ProcessAWRAMS {kwargs}", __name__, "", "") + # self.device = device.lower() # surface profile awrams + # self.ramses = {} + + # # 生成标定文件 { } + # for k,v in kwargs.items(): + # self.ramses.update( {v["FUNC"]:{}} ) + # self.ramses[v["FUNC"]].update( {"SN":v['SN']} ) + # self.ramses[v["FUNC"]].update( {"FUNC":v['FUNC']} ) + # pass + # log.debug(f" ===== {self.ramses}",__name__, "", "" ) + + + # # if kwargs.__contains__("1"): + # # self.ramses.append( self.cfgtool.getDictByAttr("ramses")) + # # self.cfgtool.set_attr(self.ramses[1],kwargs['1']"SN",kwargs['1']) + # # if kwargs.__contains__("2"): + # # self.ramses.append( self.cfgtool.getDictByAttr("ramses")) + # # self.cfgtool.set_attr(self.ramses[2],"SN",kwargs['1']) + # # if kwargs.__contains__("3"): + # # self.ramses.append( self.cfgtool.getDictByAttr("ramses")) + # # self.cfgtool.set_attr(self.ramses[3],"SN",kwargs['1']) + + # self.__init_configuration_basic() + # self.__init_configuration_cal() + # self.__init_configuration_IP_SAM() + + # # log.info(f"ProcessAWRAMS after initiate: {kwargs}", __name__, "", "") + + # def __init_configuration_basic2(self ) -> None: + # # self.cfgtool = Config() + # for k in self.ramses.keys(): + # sn = self.ramses[k]["SN"] + # if self.__isSamIniExisted(sn): + # self.ramses[k].update({ "TYPE" : "SAM" }) + # self.ramses[k].update({ "samsn" : sn }) + # self.ramses[k].update({ "inifile" : "SAM_"+sn+".ini" }) + # self.ramses[k].update({ "calfile" : "Cal_SAM_"+sn+".dat" }) + # self.ramses[k].update({ "calaqfile" : "CalAQ_SAM_"+sn+".dat" }) + # self.ramses[k].update({ "backfile" : "Back_SAM_"+sn+".dat" }) + # if self.__isSamIPIniExisted(sn): + # self.ramses[k].update({ "TYPE" : "SAMIP" }) + # samsn = self.__getSAMSN(sn) + # if samsn== None: + # log.warning(f"Cannot get samsn from Sensor: {sn}", __name__, "", "" ) + # raise Exception(f"Cannot get samsn from Sensor: {sn}") + # self.ramses[k].update({ "samsn" : samsn }) + # self.ramses[k].update({ "inifile" : "SAMIP_"+sn+"_ALL.ini" }) + # self.ramses[k].update({ "calfile" : "Cal_SAM_"+samsn+".dat" }) + # self.ramses[k].update({ "calaqfile" : "CalAQ_SAM_"+samsn+".dat" }) + # self.ramses[k].update({ "backfile" : "Back_SAM_"+samsn+".dat" }) + # if not self.__isSamIniExisted(sn) and not self.__isSamIPIniExisted(sn): + # log.warning(f"Cannot find ini file for Sensor: {sn}", __name__, "", "" ) + # raise Exception(f"Cannot find ini file for Sensor: {sn}") + + # pass + + # def __init_configuration_cal2(self ) -> None: + # # self.cfgtool = Config() + # for k in self.ramses.keys(): + # sn = self.ramses[k]["SN"] + # # Device File + # calpath = CAL_DIR.joinpath(self.device, self.ramses[k]["calfile"]) + # if calpath.exists( ): + # res = Readfile.read_columns_set_by_mark( calpath, FILE_MARK, 1 ) + # self.ramses[k].update({ "cal" : res[1][0] }) + # calaqpath = CAL_DIR.joinpath(self.device, self.ramses[k]["calaqfile"]) + # if calaqpath.exists( ): + # res = Readfile.read_columns_set_by_mark( calaqpath, FILE_MARK, 1 ) + # self.ramses[k].update({ "calaq" : res[1][0] }) + # backpath = CAL_DIR.joinpath(self.device, self.ramses[k]["backfile"]) + # if calaqpath.exists( ): + # res = Readfile.read_columns_set_by_mark( backpath, FILE_MARK, 1,2 ) + # self.ramses[k].update({ "b0" : res[1][0] }) + # self.ramses[k].update({ "b1" : res[1][1] }) + # pass + + # def __init_configuration_IP_SAM2(self ) -> None: + # # self.cfgtool = Config() + # for j in self.ramses.keys(): + # # log.debug(f"__init_configuration_IP_SAM {j}", __name__, "", "" ) + # inipath = CAL_DIR.joinpath(self.device, self.ramses[j]["inifile"]) + # # log.debug(f"__init_configuration_IP_SAM {inipath}", __name__, "", "" ) + # sam = Readfile.readSAMCalFromIni(inipath) + # # log.debug(f"__init_configuration_IP_SAM {sam}", __name__, "", "" ) + # for k,v in sam.items(): + # self.ramses[j].update({ k : v }) + # if self.ramses[j]["TYPE"] == "SAMIP": + # ip = Readfile.readIPCalFromIni(inipath) + # for k,v in ip.items(): + # self.ramses[j].update({ k : v }) \ No newline at end of file diff --git a/dataplot.py b/dataplot.py new file mode 100644 index 0000000..8b95949 --- /dev/null +++ b/dataplot.py @@ -0,0 +1,237 @@ +# import numpy as np + +from pathlib import Path + + +class DataPlot(): + ''' + 从文件读取数据,出来成待显示数据 + ''' + + # def __init__(self, mypanel, ): + def __init__(self, ): + # self.mypanel = mypanel + # self.__eventManager = eventManger + # self.dataSaveFile = DATA_FNAME_WITHOUT_WATER + # self.axes_title = "Water Attenuation Coefficient" + # self.axes_xlabel = "Wavelength (nm)" + # self.axes_ylabel = "Attenuation Coefficient m(-1)" + # self.axes_title = "Attenuation Coefficient Demo" + self.demo_time = '' + self.demo_wl = [] # 纯水 + self.demo_data = [] # 纯水 + + self.wavelength = None + self.data_one = None + self.data_multi = None + # self.mode = "one" # multi + # self.begin_line = None + # self.line_interval = None + self.fpath :Path = Path() + self.total_lines = 0 + self.token = ";" + # self.MPL = myPanel.MPL_Panel(self) # 调用自己建立的 panel 类 + # self.Figure = self.MPL.Figure + # self.axes = self.MPL.axes + # self.FigureCanvas = self.MPL.FigureCanvas + def set_file_path( self, fpath:Path ): + self.fpath = fpath + pass + + def set_wavelength(self): + pass + + # def set_mode(self, mode ="one"): + # self.mode = mode + # pass + + def set_token(self, token =";"): + self.token = token + pass + + def set_begin_line( self, lineno = 0 ): + self.begin_line = lineno + pass + + def set_line_interval( self, line_interval = 0 ): + self.line_interval = line_interval + pass + + def get_total_lines( self, ): + ''' 大文件 ''' + count = 0 + thefile = open( self.fpath, 'rb') + while True: + buffer = thefile.read(8192*1024) + if not buffer: + break + count += buffer.count(b'\n') + self.total_lines = count + 1 + + def get_wavelength_from_file( self, ): + tmp = self.get_first_line() + self.wavelength = tmp.split(self.token)[1:] + pass + + def get_reverse_x_lineno( self, x ): + line = self.__get_reverse_x_lineno(x) + line = line.split(self.token) + return line[0], line[1:] + pass + + def get_multi_by_x_m_n( self, x,m,n ): + # res_time = [] + # res_lines = [] + lines = self.__get_reverse_x_m_n_line(x,m,n) + # print(f'+++++ {lines}') + # for i in range(len(lines)): + # ln = + # res_time.append( lines[i] [0] ) + # res_lines.append( lines[i][1:] ) + # return res_time, res_lines + return lines + pass + + def __get_reverse_x_lineno(self, x): + """ + 获得倒数第x行 + """ + try: + # filesize = os.path.getsize(self.fpath) + filesize = self.fpath.stat().st_size + if filesize == 0: + return None + else: + with open(self.fpath, 'rb') as fp: # to use seek from end, must use mode 'rb' + offset = -8 # initialize offset + while -offset < filesize: # offset cannot exceed file size + fp.seek(offset, 2) # read # offset chars from eof(represent by number '2') + lines = fp.readlines() # read from fp to eof + if len(lines) >= x+1: # if contains at least 2 lines + return lines[-1*x] # then last line is totally included + else: + offset *= 2 # enlarge offset + fp.seek(0) + lines = fp.readlines() + if len(lines) < x: + raise Exception("行数有误,请重试") + return lines[-1*x] + except FileNotFoundError: + print(self.fpath.name + ' not found!') + return None + + def __get_reverse_x_m_n_line(self, x, m=1, n=1): + """ + 获得倒数第x行, 间隔m行, 共取n个行 + """ + print(f'__get_reverse_x_m_n_line {x} {self.fpath}') + min_lines = x + m*n + res_lines = [] + try: + # filesize = os.path.getsize(self.fpath) + filesize = self.fpath.stat().st_size + if filesize == 0: + return None + else: + with open(self.fpath, 'rb') as fp: # to use seek from end, must use mode 'rb'x + offset = -8 # initialize offset + while -offset < filesize: # offset cannot exceed file size + fp.seek( offset, 2 ) # read # offset chars from eof(represent by number '2') + lines = fp.readlines() # read from fp to eof + if len(lines) >= min_lines+1 : + for i in range(n): + res_lines.append( lines[-1*(x+m*i)].decode()) + return res_lines + else: + offset *= 2 # enlarge offset + fp.seek( 0 ) + lines = fp.readlines( ) + if len(lines) < min_lines: + raise Exception("行数有误,请重试") + for i in range(n): + res_lines.append( lines[-1*(x+m*i)].decode()) + return res_lines + print(res_lines) + except FileNotFoundError: + print(self.fpath.name + ' not found!') + return None + + def get_first_line(self, ): + firstline = '' + with open(self.fpath, 'rb') as fp: # to use seek from end, must use mode 'rb'x + firstline = fp.readline() + return firstline.decode() + + def get_last_line(self,filename:Path): + """ + 获得最后一行 + :param filename: file name + :return: last line or None for empty file + """ + try: + filesize = filename.stat().st_size + if filesize == 0: + return None + else: + with open(filename, 'rb') as fp: # to use seek from end, must use mode 'rb' + offset = -8 # initialize offset + while -offset < filesize: # offset cannot exceed file size + fp.seek(offset, 2) # read # offset chars from eof(represent by number '2') + lines = fp.readlines() # read from fp to eof + if len(lines) >= 2: # if contains at least 2 lines + return lines[-1] # then last line is totally included + else: + offset *= 2 # enlarge offset + fp.seek(0) + lines = fp.readlines() + return lines[-1] + except FileNotFoundError: + print(filename + ' not found!') + return None + + def tail(file, taillines=500, return_str=True, avg_line_length=None): + """ + 大文件的尾行,小文件会导致报错 + taillines : 读取尾部多少行 + avg_line_length:每行字符平均数, + return_str:返回类型,默认为字符串,False为列表。 + offset:每次循环相对文件末尾指针偏移数 + f.tell() 当前指针位置 + f.seek(a,b) a 偏移量, b:0 1 2 ,文件头 当前位置 文件尾部 + """ + with open(file, errors='ignore') as f: + if not avg_line_length: + f.seek(0, 2) + f.seek(f.tell() - 3000) + avg_line_length = int(3000 / len(f.readlines())) + 10 + f.seek(0, 2) + end_pointer = f.tell() + offset = taillines * avg_line_length + if offset > end_pointer: + f.seek(0, 0) + lines = f.readlines()[-taillines:] + return "".join(lines) if return_str else lines + offset_init = offset + i = 1 + while len(f.readlines()) < taillines: + location = f.tell() - offset + f.seek(location) + i += 1 + offset = i * offset_init + if f.tell() - offset < 0: + f.seek(0, 0) + break + else: + f.seek(end_pointer - offset) + lines = f.readlines() + if len(lines) >= taillines: + lines = lines[-taillines:] + + return "".join(lines) if return_str else lines + + +if __name__ == "__main__": + d = DataPlot() + + + \ No newline at end of file diff --git a/gatherdata.py b/gatherdata.py new file mode 100644 index 0000000..dac8f9e --- /dev/null +++ b/gatherdata.py @@ -0,0 +1,109 @@ +import numpy as np +from myconfig import OUTPUT_DIR +from tools.mylogger import log +from pathlib import Path +# from handheld import HandHeldPath +class GatherData(object): + """对数据进行汇总后分析 csv""" + def __init__(self, ): + super(GatherData, self).__init__() + self.dir = OUTPUT_DIR + self.extname = ".csv" + + def setDir(self, fpath): + self.dir = fpath + pass + + def setExtname(self, extname): + self.extname = extname + pass + + def getChildDirs(self, ): + ''' + 按时间排放,每个目录下有五个文件 Esky....Rs + 文件直接保存到 output下的五个文件 Esky ..... Rs + ''' + childdirs = [] + for path in Path(self.dir).iterdir(): + # if path.is_dir(): + # print(path) + if not path.is_dir(): + continue + childdirs.append(path) + return childdirs + pass + + def gather_handheld(self, ): + log.info(f" ",__name__,'gather_handheld') + childDirs = self.getChildDirs() + for cdir in childDirs: + tmp_path:Path = cdir.joinpath("Lw"+self.extname) + self.transfer_data(tmp_path) + tmp_path:Path = cdir.joinpath("Rs"+self.extname) + self.transfer_data(tmp_path) + pass + + def transfer_data(self, fpath:Path): + log.info(f" ",__name__,'transfer_data') + log.info(fpath) + old_path:Path = fpath + new_path:Path = self.dir.joinpath( old_path.stem + self.extname) + if not new_path.exists(): + new_path.touch() + if old_path.exists(): + count = 0 + with open( new_path, "a" ) as fnew: + with open( old_path, "r" ) as f: + while True: + line = f.readline() + if not line : + break + if count != 0: + fnew.write(line) + count+=1 + + def gather_awrams(self, ): + ''' + 一个文件包含 Esky .....Rs 五组数据 + 获得csv文件,转移不同的行到不同文件 + 第一列要转为时间 + ''' + # ret = [] + fs = None + self.filelist = [] + fs = self.dir.glob( "*/*/*/*.csv" ) + for f in fs: + print(f) + tmp = np.loadtxt( fs, dtype=str, delimiter=';',skiprows=1 ) + self.addNdarray2File(tmp[0]) + + def addNdarray2File( self, data:np.ndarray ): + pass + + + # def transfer_line_without_firstline(self, oldpath:Path, newPath:Path): + # count = 0 + # with open( newPath, "a" ) as fnew: + # with open( oldpath, "r" ) as f: + # line = f.readline() + # if count != 0: + # fnew.write(line) + # pass + # pass + + def getFileList_awrams(self, ): + ''' + 一个文件包含 Esky .....Rs 五组数据 + 获得csv文件,转移不同的行到不同文件 + ''' + # ret = [] + fs = None + self.filelist = [] + fs = self.dir.glob( "*/*.csv" ) + + pass + +if __name__ == "__main__": + gd = GatherData() + gd.gather_handheld() + diff --git a/handheld.py b/handheld.py new file mode 100644 index 0000000..31692d4 --- /dev/null +++ b/handheld.py @@ -0,0 +1,951 @@ +#! python3 +# -*- encoding: utf-8 -*- +''' +@File : handheld.py +@Time : 2023/02/24 17:20:59 +@Author : Jim @ Yiwin +@Version : 1.0 +@Contact : jim@yi-win.com +''' + +CUR_TIME_STR_FMT = "%Y-%m-%d %H:%M:%S" + +import time +import locale +import struct +import numpy as np +from pathlib import PurePath,Path +from pubsub import pub +from myconfig import CURRENT_DIR,DATA_DIR,OUTPUT_DIR,NEWLINE,ROWFACTOR,SAVE_EXT_NAME,TOKEN +from myconfig import DeviceType,RamsesSURFACE,RamsesAWRAMS,RamsesPROFILE +from tools.mylogger import log +from tools.myexception import MyException +from tools.mytime import MyTime +from tools.mypath import MyDir +from Ramses import Ramses + + + +class HandHeldBuf: + def __init__(self,) -> None: + self.__buf = b'' + self.__head = {} + self.__begin_sign = b'\x23' + self.__end_sign = b'\x0D' + self.data_ip = b'' + self.measure_group = { + "Lsky": b'', + "Esky": b'', + "Lwater": b'', + } + self.one_group_data= b'' + self.state = 0 + + def readFile2Buf(self, fpath) -> None: + with open(fpath,"rb") as f: + self.__buf = f.read() + pass + pass + + def read_buf(self, size: int) -> bytes: + if size > self.__buf.__len__(): + return b'' + ret = self.__buf[0:size] + self.__buf = self.__buf[size:] + return ret + + def write_buf(self, buf: bytes) -> None: + id = self.id + len = buf.__len__() + # logging.info(f'Received ID:{id} Size:{len}') + self.__buf = self.__buf+buf + + def get_buf_size(self) -> int: + return self.__buf.__len__() + + def back_bytes(self, buf: bytes) -> None: + self.__buf = buf+self.__buf + + def reset_head(self) -> None: + self.__head = {} + + def reset_buf(self) -> None: + self.__buf = b'' + + def getResult(self) -> str: + return self.res + + def resetMeasureGroup(self) -> None: + self.measure_group['Lsky'] = b'' + self.measure_group['Esky'] = b'' + self.measure_group['Lwater'] = b'' + + def getMeasureGroup(self) -> dict: + return self.measure_group + + def decode_handheld(self) -> bool: + '''以26个字节开始,一般26个00 ,然后23... 07.... ''' + if self.get_buf_size() < 1754: + self.__buf = b'' + return False + + self.data_ip = self.read_buf(26) + Lsky = self.read_buf(576) + Esky = self.read_buf(576) + Lwater = self.read_buf(576) + + self.measure_group['Lsky'] = self.deal_576_to_512(Lsky) + self.measure_group['Esky'] = self.deal_576_to_512(Esky) + self.measure_group['Lwater'] = self.deal_576_to_512(Lwater) + + if self.measure_group['Lsky'] == b'' \ + or self.measure_group['Esky'] == b'' \ + or self.measure_group['Lwater'] == b'' : + return False + + return True + + def decode_one_group_handheld(self) -> bool: + '''以26个字节开始,一般26个00 ,然后23... 07.... ''' + if self.get_buf_size() < 1754: + self.__buf = b'' + return False + + self.data_ip = self.read_buf(26) + self.one_group_data = self.read_buf(1728) + + return True + + def deal_576_to_512(self,data:bytes) -> bytes: + ''' 576字节校验,拆分成字典 23... 07.... ,然后254*2''' + ret = {} + index = 72 + for i in range(8): + temp = data[i*index : i*index+index] + # print( temp.hex()) + if temp[0] != 35 and temp[0]<8 and temp>0 : + return b'' + pass + ret.update( { temp[4]: temp} ) + if len(ret) != 8: + return b'' + ret_byte = ret[7][7:71]+ ret[6][7:71]+ ret[5][7:71]+ ret[4][7:71] \ + + ret[3][7:71]+ ret[2][7:71]+ ret[1][7:71]+ ret[0][7:71] + return ret_byte + + + def decode(self) -> str: + ret = '' + temp_buf = b'' + token = ";" + if TOKEN: + token = TOKEN + + if self.state == 0: + while self.get_buf_size() >= 1: + if self.read_buf(1) != self.__end_sign: + continue + self.state = 1 + break + + if self.state == 1: + while self.get_buf_size() >= 1: + buf = self.read_buf(1) + if buf != self.__end_sign: + temp_buf += buf + if buf == self.__end_sign: + ret = temp_buf[0:20].decode( + 'utf-8').strip(" ") + token + temp_buf[-9:-1].decode('utf-8').strip(" ") + log.info(f"decode : {ret}") + temp_buf = b'' + self.back_bytes(temp_buf) # 写回临时buf到 + self.res = ret + return ret + pass + + +class HandHeldPath(object): + '''处理一次测量''' + def __init__(self, ): + self.mode = 0 + self.cfg ={} + self.mydir = MyDir() + self.base_path:Path = Path() + self.output_path:Path = Path() + self.data_path:Path = Path() + self.filelist = [] + self.error_result = [] + pass + + def setMode( self, mode:int = 0 ): + self.mode = mode + pass + + def setBasePath( self, fpath:Path ): + self.base_path = fpath + pass + + def setDataPath( self, fpath:Path ): + self.data_path = fpath + pass + + def setOutputPath( self, fpath:Path ): + self.output_path = fpath + pass + + def getSensorPathFromInfoPath( self, info_path:Path, ) -> Path: + # 服务器上转移后的模式 + if self.mode == 1: + sensor_path = self.base_path.joinpath( + info_path.parent, + "sensor.bin" + ) + elif self.mode == 0: + sensor_path = self.base_path.joinpath( + "data", + info_path.parts[1][:4] + "_" + info_path.parts[1][-2:], + info_path.parts[2], + "sensor", + info_path.name + ) + else: + sensor_path = None + return sensor_path + pass + + def getOutputPathFromSensorPath(self,sensor_path:Path ) -> Path: + if self.mode == 1: + output_path = self.output_path.joinpath( + self.info_dict['year'] + "_" + self.info_dict['month'] + + "_" + self.info_dict['day'] + "_" + self.info_dict['hour'] + + "_" + self.info_dict['minute'] + "_" + self.info_dict['second'] + ) + elif self.mode == 0: + output_path = self.output_path.joinpath( + sensor_path.parts[1][:4] + "_" + sensor_path.parts[1][-2:] + + "_" +sensor_path.parts[2] + "_" +sensor_path.name + ) + else: + output_path = None + return output_path + pass + + def getCurrentMeasureTimeFromPath(self,fpath:Path ) -> str: + ret = '' + if self.mode == 1: # 读信息txt获得时间 + txt_path = fpath.parent.glob("*.txt") + txt_stem = txt_path[0].stem + ret = fpath.parts[1][:4]+"-"+fpath.parts[1][-2:]+"-"+fpath.parts[2]+" " \ + + txt_stem[-9:-7] + ":" + txt_stem[-6:-4] + ":" + txt_stem[-3:-1] + pass + elif self.mode == 0: + ret = fpath.parts[1][:4]+"-"+fpath.parts[1][-2:]+"-"+fpath.parts[2]+" " \ + + fpath.name[0:2] + ":" + fpath.name[3:5] + ":" + fpath.name[6:8] + else: + pass + return ret + pass + + def getDataFileList(self, ): + ''' + 获得成对的info sensor 文件 + [目录名,文件名,年月日,时间, measure_id] + ''' + # ret = [] + fs = None + self.filelist = [] + if self.mode == 1: + fs = self.data_path.glob( "*/*/*/*/info.bin" ) + else: + fs = self.data_path.glob( "*/*/info/*" ) + + for f in fs: + error_file = {} + if f.stat().st_size==0: + error_file.update( {"path": f } ) + error_file.update( {"error":"info file size is zero"} ) + self.error_result.append(error_file) + continue + + # self.info_path_fname = f + sensor_path = self.getSensorPathFromInfoPath(f) + # sensor_path = Path(sensor_purepath) + # sensor 文件不存在 + if not sensor_path.exists(): + error_file.update( {"path":f} ) + error_file.update( {"error":"cannot find the sensor file "} ) + self.error_result.append(error_file) + continue + + # sensor文件大小为0 + if sensor_path.stat().st_size==0: + error_file.update( {"path":sensor_path} ) + error_file.update( {"error":"sensor file size of the sensor is zero' "} ) + self.error_result.append(error_file) + continue + self.setFilelist(f,sensor_path ) + pass + + # def getDataFileList_SD(self, mode:int = 0 ): + # ''' + # 获得成对的info sensor 文件 + # [目录名,文件名,年月日,时间] + # ''' + # # ret = [] + # fs = self.data_path.glob( "*/*/info/*" ) + # for f in fs: + # error_file = {} + # if f.stat().st_size==0: + # error_file.update( {"path": f.name } ) + # error_file.update( {"error":"info file size is zero"} ) + # self.error_result.append(error_file) + # continue + # self.info_path_fname = f + # sensor_path = self.getSensorPathFromInfoPath( f ) + # # sensor_path = Path(sensor_purepath) + # # sensor 文件不存在 + # if not sensor_path.exists(): + # error_file.update( { "path" : f } ) + # error_file.update( {"error":"cannot find the sensor file "} ) + # self.error_result.append(error_file) + # continue + + # # sensor文件大小为0 + # if sensor_path.stat().st_size==0: + # error_file.update( { "path" : f } ) + # error_file.update( {"error" : "the file size of the sensor is zero' "} ) + # self.error_result.append(error_file) + # continue + + # self.setFilelist(f,sensor_path,mode=mode) + # # print(self.filelist) + # pass + + def setFilelist(self, info_path:Path, sensor_path:Path): + temp = {} + temp.update( {"info_path" : info_path } ) + temp.update( {"name" : info_path.name} ) + temp.update( {"parent" : info_path.parent} ) + + if self.mode==1: # 服务器转移后目录 + temp.update( {"year" : info_path.parts[-5] } ) + temp.update( {"month" :info_path.parts[-4] } ) + temp.update( {"day" :info_path.parts[-3] } ) + + temp.update( {"year" : info_path.parts[1][:4] } ) + temp.update( {"month" :info_path.parts[1][-2:] } ) + temp.update( {"day" :info_path.parts[2] } ) + temp.update( { "sensor_path" :sensor_path } ) + self.filelist.append(temp) + + def getFilelist(self, ): + return self.filelist + + def printTest(self,d,sleep_time:int=5): + log.info( f"***** : I am testing from HandheldPath ********", __name__ ) + print(d) + log.info( f"***** : Ending testing from HandheldPath ********", __name__ ) + time.sleep(sleep_time) + pass + +class HandHeld(object): + def __init__(self, ): + """ + @description : 手持数据初始化,桌面端 + 入口: dealAllMeasurements() + dealOneHandheldMeasurement() 处理一次测量 + 保存: 一次测量多组不同时间的 Lsky ,只能分文件保存 + 分文件保存优点,一次拿到全部Rs. 服务器端?? + """ + self.device_type = DeviceType.SURFACE.name + self.device_enum = None + self.device_id = {} + self.syscfg = {} + self.retrieve ={} + self.error_result=[] + self.mode = 0 # 0:默认SD数据, 1:服务器数据 + self.base_path = CURRENT_DIR + self.current_path = CURRENT_DIR + self.data_path = DATA_DIR + self.output_path = OUTPUT_DIR + self.info_path_fname:Path = self.base_path + self.sensor_path_fname:Path = self.base_path + self.filelist = [] # 包含了全部路径信息 + self.intensity_before_avg = None + self.intensity_after_avg = {} # 最终结果{lsky: esky: lwater: } + self.intensity_after_interpo = {} # 最终结果{lsky: esky: lwater: } + + self.one_group_result = {} # 手持式 多次间隔 + self.wavelength = np.array([]) + self.real_wavelength = {} # 最终结果{lsky: esky: lwater: } + self.current_filepath = '' # 不含后缀 + self.current_measure_time = None # 当前测量时间 + self.current_group_num = 0 + self.measurement_interval = 0 + self.measurement_repeat = 1 + # self.sl2f = SaveList2File() + self.mydir = MyDir() + self.my_time = MyTime() + self.hhb = HandHeldBuf() + self.hhp = HandHeldPath() + self.ramses = Ramses() + self.info_dict = {} + self.res = {} # 最终结果{lsky: esky: lwater: Lw: Rs:} + + # 方法 + self.setDeviceEnum() + self.setMode() + self.set_hhp_path() + pass + + def setMode(self,mode=0 ): + self.hhp.setMode (mode) # 0 :读SD卡 1:读服务器数据 + + def set_hhp_path(self, ): + self.hhp.setBasePath (self.base_path) + self.hhp.setDataPath (self.data_path) + self.hhp.setOutputPath (self.output_path) + + def setDeviceEnum(self, ): + if self.device_type == DeviceType.SURFACE.name: + self.device_enum = RamsesSURFACE + if self.device_type == DeviceType.AWRAMS.name: + self.device_enum = RamsesAWRAMS + if self.device_type == DeviceType.PROFILE.name: + self.device_enum = RamsesPROFILE + + def __set_msg(self, flag, d): + self.msg = {} + self.msg.update( {"flag":flag} ) + self.msg.update( {"data":d} ) + pass + + def getDataFileList(self, ): + self.hhp.getDataFileList() + self.filelist = self.hhp.getFilelist() + # self.printTest(self.filelist) + pass + + def resetCurrentTime(self, num): + if self.current_measure_time == "": + return None + self.my_time.setCurrentTimeStr(self.current_measure_time) + self.my_time.timeDelta( seconds= self.measurement_interval * num) + self.current_measure_time = self.my_time.cur_time_str + pass + + def dealAllMeasurements(self, ): + log.info(f" 所有测量文件", __name__, "dealAllMeasurements", ) + if len(self.filelist)<1: + pass + # 前面已经考虑各种文件错误 + for df in self.filelist: + # 处理信息帧 + self.info_dict = {} + self.info_path_fname:Path = df["info_path"] + self.sensor_path_fname:Path = df["sensor_path"] + hex_info = self.read_bin( self.info_path_fname ) + try: + self.info_dict = self.decode_info( hex_info ) + except: + log.error( f"处理信息文件" + + "/" +self.info_path_fname.stem + + "出现错误", __name__, "dealAllMeasurements" ) + raise MyException( "处理文件"+ self.info_path_fname + "出现错误") + pass + + try: + # self.dealOneMeasurement(self.sensor_path_fname ) + # 手持测量 需要分组 + self.measurement_interval = int(self.info_dict['Measure_Interval']) + self.measurement_repeat = int(self.info_dict['Measure_Repeat']) + self.dealOneHandheldMeasurement(self.sensor_path_fname ) + except Exception as e: + log.error( "处理传感器文件" + self.sensor_path_fname.name + "出现错误",__name__,"dealAllMeasurements") + raise MyException( "处理传感器文件" + self.sensor_path_fname.name + "出现错误" ) + pass + self.__set_msg('notice', '处理文件完成') + pub.sendMessage('update' , msg=self.msg) + log.info(f"Finished !! ", __name__, "dealAllMeasurements") + return True,self.error_result + pass + + def dealOneHandheldMeasurement(self, fpath:Path): + '''handheld一次测量包含多组数据''' + # 调用handheldbuf 处理,将一组数据提交出来 + log.info(f" 处理一个文件,多组测量数据", __name__, "dealOneHandheldMeasurement") + if len(self.filelist)<1: + pass + + # 当前文件名 + self.output_path = OUTPUT_DIR + self.current_filepath = fpath + self.current_measure_time = self.hhp.getCurrentMeasureTimeFromPath(fpath) + self.get_ymdhms() + self.output_path = self.output_path.joinpath( self.ymdhms ) + log.debug(f"current_measure_time: {self.current_measure_time}", __name__, "dealOneHandheldMeasurement") + + self.hhb.readFile2Buf(fpath) + log.debug(f"buf: {self.hhb.get_buf_size()}", __name__, "dealOneHandheldMeasurement") + self.decode_sensor_buf() + + # 解析Buf, 对buf分组,获得[{lsky: esky : lwater} .... ] + len_total = len(self.intensity_before_avg) + if len_total%self.measurement_repeat != 0: + self.res = {} + return # 返回退出 + + # 依据总的次数 除重复次数,获得总的测了多少组数据 + group_num = int(len_total/self.measurement_repeat) + + log.info(f"group_num -> {group_num}, ervery group -> {self.measurement_repeat} ", __name__, "dealOneHandheldMeasurement") + self.real_wavelength = self.getWavelenthDict() + # if group_num == 1: + # self.dealOneGroup() # self.intensity_before_avg + # return + + self.dealMultiGroup(group_num) + + def dealMultiGroup(self, group_num:int ): + log.info(f"group_num: {group_num}", __name__, "dealMultiGroup") + # 分组进行处理 + for i in range(group_num): + self.current_group_num = i + # 重设当前测量时间 ????????? + locale.setlocale(locale.LC_ALL, '') + self.real_time = self.get_current_time_by_i_interval(i,self.measurement_interval) + self.res = {} + tmp_before_avg = [] + for j in range( self.measurement_repeat ): + tmp_before_avg.append( self.intensity_before_avg[j+i*self.measurement_repeat] ) + pass + self.getAvg(tmp_before_avg) + self.__do_sensor_dict_interpo() + + # 选择追加保存, 一个Lsky 可能多组文件,只能单独保存为 Lsky Esky ..Rs + # self.appendSave() + self.getLwRs() + self.checkAndSaveData( ) + path_info_txt = self.output_path.joinpath( "info.txt" ) + self.save_dict_to_file( self.info_dict, path_info_txt ) + + def get_current_time_by_i_interval(self, i, interval): + self.my_time.setCurrentTimeStr(self.current_measure_time) + self.my_time.timeDelta(seconds=i*interval) + return self.my_time.cur_time_str + pass + + # def dealOneGroup(self, ): + # # 分组,并获得平均值, 255个未插值结果 (依据 measurement_interval measurement_repeat) + # self.output_path = OUTPUT_DIR + # self.getAvg( self.intensity_before_avg ) + + # # 插值 + # self.real_wavelength = self.getWavelenthDict() + # self.__do_sensor_dict_interpo() + + # self.ymdhms = "20"+ str(self.info_dict['year']) + '_' \ + # + str(self.info_dict['month']) + '_' \ + # + str(self.info_dict['day']) + '_' \ + # + str(self.info_dict['hour']) + '_' \ + # + str(self.info_dict['minute']) + '_' \ + # + str(self.info_dict['second']) + + # self.output_path = self.output_path.joinpath( self.ymdhms ) + # self.appendSave() + # # self.checkAndSaveData( ) + # # self.getLwRsAndSave() + # # path_info_txt = self.output_path.joinpath( "info.txt" ) + # # self.save_dict_to_file( self.info_dict, path_info_txt ) + + # def dealOneMeasurement(self, fpath:Path): + # '''handheld一次测量包含多组数据''' + # # 调用handheldbuf 处理,将一组数据提交出来 + # log.info(f"dealOneMeasurement: 一组测量数据", __name__, "dealOneMeasurement") + # if len(self.filelist)<1: + # pass + + # # 当前文件名 + # self.current_filepath = fpath + # self.current_measure_time = self.hhp.getCurrentMeasureTimeFromPath(fpath) # ?? + # self.hhb.readFile2Buf(fpath) + # self.decode_sensor_buf() + # self.real_wavelength = self.getWavelenthDict() + # self.dealOneGroup() + + + def decode_sensor_buf(self,) : + # 处理Buf,对多组数据取平均 + self.intensity_before_avg = [] + # res_before_avg = [] + self.clearRes() # 清空数据 + while True: + ## 以下代码已经处理了 ip的数据帧 + if not self.hhb.decode_one_group_handheld() : + break # 清空数据 + + res = {} + ## 上方代码已经处理了 ip的数据帧 + buf = self.hhb.one_group_data + # buf = self.hhb.one_group_data[26:] + for i in range( 1, 4, 1 ): + site = ( i - 1 ) * 576 + temp_buf = buf[7+site:71+site] + buf[79+site:143+site] + \ + buf[151+site:215+site] + buf[223+site:287+site] + \ + buf[295+site:359+site] + buf[367+site:431+site] + \ + buf[439+site:503+site] + buf[511+site:575+site] + + # Ramses类 标定处理,设置buf 标定文件 + self.ramses.setBuf(temp_buf) + func = self.getFuncBySeq(i) + cfg = self.getCfgByFunc( func) + self.ramses.setCalCfg(cfg) + self.ramses.resetItSpectrum() + self.ramses.ConvertAndCalibrate() + res.update( { func : self.ramses.spectrum } ) + self.intensity_before_avg.append( res ) + pass + + + def getAvg( self, d:list) : + log.info(f"getAvg: 平均多组数据", __name__, "getAvg") + data = d + ret = {} + len_result = len(data) + if len_result == 0: + self.intensity_after_avg ={} + return None + if len_result == 1: + self.intensity_after_avg = data[0] + return None + ret = data[0] + + res_dict = self.getRetDict() + + for k in res_dict.keys(): + for i in range(1,len_result,1): + data[0][k] = data[0][k] + data[i][k] + ret = data[0][k]/len_result + self.intensity_after_avg.update( { k : ret } ) + log.debug(f"getAvg: {self.intensity_after_avg}", __name__, "getAvg") + pass + + def getRetDict(self,) : + ret_dict = { } + ret_dict.update( {self.device_enum(1).name:np.array([])} ) + ret_dict.update( {self.device_enum(2).name:np.array([])} ) + ret_dict.update( {self.device_enum(3).name:np.array([])} ) + # self.one_group_result = ret_dict + return ret_dict + + def __do_sensor_dict_interpo(self,) : + log.info( f"同步处理多个个插值 ", __name__, "__do_sensor_dict_interpo" ) + self.clearRes() + for k in self.intensity_after_avg.keys(): + tmp = np.interp( self.wavelength, self.real_wavelength[k], self.intensity_after_avg[k] ) + self.res.update( { k : tmp } ) + + def getCfgByDid(self, func:str) : + cfg_id:dict = self.cfg.get(int(self.device_id)) + cfg_sensor = cfg_id.get( func) + return cfg_sensor + pass + + def getFuncBySeq(self, seq:int) : + func = "" + if self.device_type == DeviceType.AWRAMS.name: + func = RamsesAWRAMS(seq).name + if self.device_type == DeviceType.SURFACE.name: + func = RamsesAWRAMS(seq).name + if self.device_type == DeviceType.PROFILE.name: + func = RamsesAWRAMS(seq).name + return func + + def getCfgByFunc(self, func:str) : + cfg_id:dict = self.syscfg.get(int(self.device_id)) + cfg_sensor = cfg_id.get( func) + return cfg_sensor + pass + + def getCfgBySeq(self, seq:int) : + func = "" + if self.device_type == DeviceType.AWRAMS.name: + func = RamsesAWRAMS(seq).name + if self.device_type == DeviceType.SURFACE.name: + func = RamsesAWRAMS(seq).name + if self.device_type == DeviceType.PROFILE.name: + func = RamsesAWRAMS(seq).name + cfg_id:dict = self.syscfg.get(int(self.device_id)) + cfg_sensor = cfg_id.get( func) + return cfg_sensor + pass + + def appendSave(self, ) -> bool: + self.checkAndSaveData( ) + self.getLwRsAndSave() + path_info_txt = self.output_path.joinpath( "info.txt" ) + self.save_dict_to_file( self.info_dict, path_info_txt ) + + def checkAndSaveData(self, ) -> bool: + """ + check self.Lsky Esky Lwater and Save + 处理self.res 的数据 + """ + log.info(f"checkAndSaveData: {self.output_path.parts}", __name__) + self.mydir.setBaseDir(self.output_path) #基路径 + self.mydir.setHeader( self.wavelength.tolist(), TOKEN, "device_id_"+str(self.device_id) ) + # print(f"header_str : {self.mydir.header_str[-1:]}") + + if self.current_group_num == 0: # 当前组号为0 新建否则追加 + self.newFileByFunc( self.device_enum(1).name ) + self.newFileByFunc( self.device_enum(2).name ) + self.newFileByFunc( self.device_enum(3).name ) + self.newFileByFunc( self.device_enum(4).name ) + self.newFileByFunc( self.device_enum(5).name ) + pass + + self.appendFileByFunc( self.device_enum(1).name ) + self.appendFileByFunc( self.device_enum(2).name ) + self.appendFileByFunc( self.device_enum(3).name ) + self.appendFileByFunc( self.device_enum(4).name ) + self.appendFileByFunc( self.device_enum(5).name ) + + def newFileByFunc(self, func:str) -> None: + self.mydir.newFileIfNot( func+SAVE_EXT_NAME) + if self.mydir.checkHeader() == -1: + log.error(f"请备份文件:{self.mydir.current_filepath.parent} {self.mydir.current_filepath.name}, 并删除文件后再试!", __name__) + raise MyException( f"请备份文件:{self.mydir.current_filepath.parent} {self.mydir.current_filepath.name}, 并删除文件后再试!" ) + return False + if self.mydir.checkHeader() == 1: + pass + if self.mydir.checkHeader() == 0: + self.mydir.writeHeader() + pass + # 写入数据content + self.mydir.setContent(self.res[func].tolist(), TOKEN, self.real_time) + self.mydir.writeContent() + + def appendFileByFunc(self, func:str) -> None: + # 追加写入数据content + self.mydir.setContent(self.res[func].tolist(), TOKEN, self.real_time) + self.mydir.writeContent() + + def clearRes(self, ) -> None: + self.res = { } + + def getLwRs(self, ) -> bool: + """ + 并计算Lw Rs并保存 + """ + Lw = self.res["Lwater"] - ROWFACTOR * self.res["Lsky"] + self.res.update({ self.device_enum(4).name : Lw }) + Rs = self.res["Lw"] / self.res["Esky"] + self.res.update({ self.device_enum(5).name : Rs }) + + return True + + def get_ymdhms(self, ): + self.ymdhms = "20"+ f"{self.info_dict['year']:02d}" + '_' \ + + f"{self.info_dict['month']:02d}" + '_' \ + + f"{self.info_dict['day']:02d}" + '_' \ + + f"{self.info_dict['hour']:02d}" + '_' \ + + f"{self.info_dict['minute']:02d}" + '_' \ + + f"{self.info_dict['second']:02d}" + # def getLwRsAndSave(self, ) -> bool: + # """ + # 并计算Lw Rs并保存 + # """ + # Lw = self.res["Lwater"] - ROWFACTOR * self.res["Lsky"] + # self.res.update({ "Lw" : Lw }) + # Rs = self.res["Lw"] / self.res["Esky"] + # self.res.update({ "Rs" : Rs }) + # self.mydir.setBaseDir(self.output_path) #基路径 + + # # 保存 + + # if self.current_group_num == 0: + # self.newFileByFunc( "Lw" ) + # self.newFileByFunc( "Rs" ) + # pass + + # self.appendFileByFunc( "Lw" ) + # self.appendFileByFunc( "Rs" ) + + return True + + def read_bin(self,fpath: Path): + log.debug(f" readbin: ", __name__, "", "" ) + ret = None + if not fpath.exists() : + log.info(f"not find file: {fpath} ") + return ret + with open(fpath, 'rb') as file: + ret = file.read() + return ret + log.debug(f" readbin: {ret} ", __name__, "", "" ) + return ret + pass + + def decode_info( self,info: bytes ) -> dict: + ret = {} + # 剖面型加了1311+24个字节共26个字节 + # 保留字节有所变化,改为序列号,每个序列号两个字节 + try: + temp = struct.unpack(" None: + temp_str = "" + for key, value in info_dict.items(): + temp_str = temp_str + key + " : " + str(value) + "\n" + with open(fpath, "w+") as f: + f.write(temp_str) + + def save_error_to_file(self, errlist: list, fpath: Path) -> None: + temp_str = "" + if len(errlist) <1: + return None + for errdict in errlist: + temp_str = temp_str + errdict["path"] +" : "+ errdict["error"] + "\n" + pass + with open(fpath, "w+") as f: + f.write(temp_str) + return None + pass + + def getWavelenthDict( self, ) -> dict: + ret_dict = self.getRetDict() + cfg_id:dict = self.syscfg.get( int(self.device_id)) + for k in ret_dict.keys(): + tmp = self.getWavelength( cfg_id.get(k) ) + ret_dict.update({ k : tmp }) + return ret_dict + + def getWavelength(self,ramsesdict:dict) -> np.ndarray: + ret = [] + for i in range(1,256): + tmp = float(ramsesdict['c0s']) + float(ramsesdict['c1s'])*i \ + + float(ramsesdict['c2s'])*i*i + float(ramsesdict['c3s'])*i*i*i + ret.append(tmp) + pass + return np.array(ret) + + def setSyscfg(self, syscfg:dict): + self.syscfg = syscfg + + def setRetrieve(self, retrieve:dict): + log.debug( f"setRetrieve : {retrieve}......", __name__ ) + self.retrieve = retrieve + self.setNewWavelength() + # self.wavelength:np.ndarray = np.arange ( self.retrieve['beginWL'], self.retrieve['endWL'], self.retrieve['interval'] ) + + def setNewWavelength(self, ): + self.wavelength:np.ndarray = np.arange ( + self.retrieve['beginWL'], self.retrieve['endWL'], self.retrieve['interval'] ) + + def setDeviceID(self, did:int): + self.device_id = did + + def setDeviceType(self, device_type): + self.device_type = device_type + + def getErrorInfoDict(self, ): + return self.error_result + + def printResult(self,): + log.info( f"***** : Print Lsky Esky Lwater Lw Rs......", __name__ ) + print(self.res[self.device_enum(1)]) + print(self.res[self.device_enum(2)]) + print(self.res[self.device_enum(3)]) + print(self.res[self.device_enum(4)]) + print(self.res[self.device_enum(5)]) + pass + + def printTest(self,d,sleep_time:int=5): + log.info( f"***** : I am testing ********", __name__ ,"printTest") + print(d) + log.info( f"***** : Ending testing ********", __name__ ,"printTest") + time.sleep(sleep_time) + pass + +if __name__ == "__main__": + # hh = HandHeld() + # hh.getDataFileList() + # hh.dealAllMeasurements() + + # data/2023_02/07/sensor/14_02_46 + # hhb= HandHeldBuf() + # hhb.readFile2Buf("data/2023_02/07/sensor/14_02_46") + # hhb.decode_handheld() + # print(hh.error_result) + # print("======") + # print(hh.filelist) + + # print( hh.getDataFname() ) + + # t = b'\x07' + # print( int(t[0])) + # print( 2 << int(t[0])) + + + pass + diff --git a/listctrl.py b/listctrl.py new file mode 100644 index 0000000..210bc4f --- /dev/null +++ b/listctrl.py @@ -0,0 +1,32 @@ +from myconfig import TOKEN +import wx + +class Listctrl(wx.Panel): + ''' + # 需要在 Frame 实例化一个实例 + # 改变需要对实例化后的进行操作 + ''' + def __init__(self, parent ): + ''' + * panel 初始化后的样子 + ''' + # self.para_setting = para + super(Listctrl,self).__init__(parent) + self.locale = wx.Locale(wx.LANGUAGE_CHINESE_SIMPLIFIED) + + self.SetBackgroundColour('lightgrey') + + self.box = wx.BoxSizer(wx.HORIZONTAL) + + self.list_ctrl = wx.ListCtrl(self, -1, style = wx.LC_REPORT | wx.LC_SORT_DESCENDING) + self.list_ctrl.SetBackgroundColour( 'lightgrey' ) + + self.list_ctrl.InsertColumn(0, u'测量时间', width = 180) + self.list_ctrl.InsertColumn(1, u'花粉_Pollen', width = 180) + i = 1 + + self.list_ctrl.SetFont( wx.Font( 11, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False ) ) + + self.box.Add(self.list_ctrl,1,wx.EXPAND) + self.SetSizer(self.box) + self.Fit() diff --git a/myRamses.py b/myRamses.py new file mode 100644 index 0000000..cb0d6cd --- /dev/null +++ b/myRamses.py @@ -0,0 +1,789 @@ +from dataclasses import dataclass, field +from typing import Any, List +from enum import Enum +import numpy as np +import struct +# import time + +from tools.mylogger import log + + +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 + + def __post_init__(self): + assert self.SAMSN != None + assert len(self.SAMSN) == 4 , "SAMSN len is wrong" + pass + + def set_samcal(self, samcal: dict): + assert self.SAMSN == samcal['SAMSN'], "SamCal SAMSN doesnot match." + # SAMSN_ = samcal['SAMSN'] + self.DarkPixelStart = int(samcal['DarkPixelStart']) + self.DarkPixelStop = int(samcal['DarkPixelStop']) + self.Firmware = samcal['Firmware'] + self.IDDataBack = samcal['IDDataBack'] + self.IDDataCal = samcal['IDDataCal'] + self.IDDataCalAQ = samcal['IDDataCalAQ'] + if hasattr( samcal, 'IntegrationTime') : + self.IntegrationTime = samcal['IntegrationTime'] + else: + self.IntegrationTime = " " + # self.Reverse = samcal['Reverse'] + # self.SerialNo_MMS_ = samcal['SerialNo_MMS'] + if hasattr( samcal, 'WavelengthRange') : + self.WavelengthRange = samcal['WavelengthRange'] + else: + self.WavelengthRange = "310-1100" + + self.c0s = float(samcal['c0s']) + self.c1s = float(samcal['c1s']) + self.c2s = float(samcal['c2s']) + self.c3s = float(samcal['c3s']) + self.c4s_ = float(samcal['c4s']) + if hasattr( samcal, 'cs'): + cs = samcal['cs'] + else: + cs_ = 0 + pass + +@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 + + def set_ipcal_from_dict(self, ipcal: dict): + self.IPSN = ipcal['IPSN'] # = float(ipcal['IPSN'] ) + self.Incl_Orientation = ipcal['Incl_Orientation'] + self.Incl_Xgain = float(ipcal['Incl_Xgain']) + self.Incl_Xoffset = float(ipcal['Incl_Xoffset']) + self.Incl_Ygain = float(ipcal['Incl_Ygain']) + self.Incl_Yoffset = float(ipcal['Incl_Yoffset']) + self.Incl_KBG = float(ipcal['Incl_KBG']) + self.Incl_Kref = float(ipcal['Incl_Kref']) + self.Press_Current_mA = float(ipcal['Press_Current_mA']) + self.Press_Surface_bar = float(ipcal['Press_Surface_bar']) + self.Press_Gain = float(ipcal['Press_Gain']) + self.WithIncl = float(ipcal['WithIncl']) + self.WithPress = float(ipcal['WithPress']) + self.Press_Sens_mV_bar_4mA = float(ipcal['Press_Sens_mV_bar_4mA']) + self.Press_Sens_mV_bar_1mA = float(ipcal['Press_Sens_mV_bar_1mA']) + self.Press_Type_ = ipcal['Press_Type'] + self.CalibrationDate = ipcal['CalibrationDate'] + +@dataclass +class RamsesCal(object): + SN: str = None + typ: RamsesType = RamsesType.SAM + samsn: str = "" + inifile: str = None + calfile: str = None + calaqfile: str = None + backfile: str = None + b0: List[float] = None + b1: List[float] = None + cal: List[float] = None + calaq: List[float] = None + samcal: SamCal = None + ipcal: IPCal = None + + def __post_init__(self): + assert self.SN != None, " Pls pass the SN when initiating..." + assert len(self.SN) == 4 , "SN len is wrong" + + def set_ramsescal_from_dict(self, ramsescal: dict): + ''' 与获得cfg兼容 + # {'Lsky': + # {'SN': '85B5', 'FUNC': 'Lsky', 'TYPE': 'SAM', 'samsn': '85B5', + # 'inifile': 'SAM_85B5.ini', 'calfile': 'Cal_SAM_85B5.dat', 'calaqfile': 'CalAQ_SAM_85B5.dat', 'backfile': 'Back_SAM_85B5.dat', + # 'cal': ['+NAN',.......... + ''' + assert self.SN == ramsescal['SN'], "RamsesCal SN doesnot match." + if ramsescal['TYPE'] == "SAMIP": + self.typ = RamsesType.SAMIP + else: + self.typ: RamsesType = RamsesType.SAM + self.samsn: str = ramsescal['samsn'] + self.inifile: str = ramsescal['inifile'] + self.calfile: str = ramsescal['calfile'] + self.calaqfile: str = ramsescal['calaqfile'] + self.backfile: str = ramsescal['backfile'] + self.b0: List[float] = [float(i) for i in ramsescal['b0'] ] + self.b1: List[float] = [float(i) for i in ramsescal['b1'] ] + self.cal: List[float] = [float(i) for i in ramsescal['cal'] ] + self.calaq: List[float] = [float(i) for i in ramsescal['calaq'] ] + self.samcal: SamCal = SamCal( SAMSN=self.samsn ) + self.samcal.set_samcal(ramsescal ) + if self.typ == RamsesType.SAMIP: + self.ipcal: IPCal = IPCal( ) + self.ipcal.set_ipcal_from_dict( ramsescal ) + + # def set_ramsescal_samcal(self, samcal: SamCal): + # samcal: SamCal = samcal + + # def set_ramsescal_ipcal(self, ipcal: IPCal): + # ipcal: IPCal = ipcal + + # def set_samcal_from_dict(self, samcal: dict): + # assert self.SN != samcal['SAMSN'], "RamsesCal SN doesnot match." + # # SAMSN_ = samcal['SAMSN'] + # self.samcal.set_samcal + + # 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(self.SN, 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 + data_raw: bytes = None # 原始的字节 未去遮罩 + ip_raw: bytes =None # ip 数据分开传进来 + data_after_remove_mask: bytes = None # 去遮罩后 + data_valid_buf: bytes = None # 去掉帧头帧尾后的buf + ip_buf: bytes = None + data_Int_from_Hex: List[int] = None # 去遮罩后 + data_after_cal: List[float] = None + Wavelength: List[float] = None + integratedTime: int = None + RamsesCalData: RamsesCal = None + + '''Usage + + 设置标定参数: + sn = "85C2" + rf = RamsesFactory( SN=sn, airwater = AirWater.Air ) + rf.set_cfg(cfg ) + + 设置数据, + 从原始数据开始 + set_data_raw(self, byt: bytes) + removeMask() + get_data_valid_buf() -- valid_buf + 从有效数据开始 + set_data_valid_buf(self, byt: bytes) + 处理数据 + process_from_hex_2_int(self,) + ''' + + def __post_init__(self): + assert self.SN != None + assert len(self.SN) == 4 , "SAMSN len is wrong" + self.RamsesCalData = RamsesCal(self.SN) + pass + + def set_cfg(self, cfg:dict): + assert self.SN == cfg["SN"] , "ramsesFactory SN does not match!!" + if cfg['TYPE'] == "SAMIP": + self.typ: RamsesType = RamsesType.SAMIP + else: + self.typ: RamsesType = RamsesType.SAM + self.RamsesCalData.set_ramsescal_from_dict(cfg) + + def set_airwater(self,air_water:AirWater): + self.airwater = air_water + pass + + def set_data_raw_ip_raw(self, byt: bytes ): + ''' byt 含 data_raw ip_raw ''' + assert isinstance(byt, bytes) + num = 0 + buf = byt + for i in range(50): + if byt[i] == 35: + num+=1 + if num == 2: + self.ip_raw = buf[:i] + self.data_raw = buf[i:] + break + + def set_data_raw(self, byt: bytes ): + ''' 需要 光谱数据 + 兼容: 传入前分不出byte ip + ip_byt: 判断是否含IP数据 + ''' + assert isinstance(byt, bytes) + self.data_raw = byt + + def set_ip_raw(self, byt: bytes ): + ''' 需要 光谱数据 + 兼容: 传入前分不出byte ip + ip_byt: 判断是否含IP数据 + ''' + assert isinstance(byt, bytes) + self.ip_raw = byt + + def set_ip_buf(self, byt: bytes ): + ''' 处理不含遮罩的 IP buf ''' + assert isinstance(byt, bytes) + self.ip_buf = byt + + def set_data_valid_buf(self, byt: bytes): + self.data_valid_buf = byt + pass + + def set_data_Int_254(self, int_list: list): + self.data_Int_from_Hex = int_list + pass + + + def get_data_valid_buf(self, ): + self.remove_frame_head_tail( ) + pass + + def remove_frame_head_tail(self,): + ''' 兼容 SAM 576, SAMIP 的IP数据单独传进来 + 去掉 23 00 00 00 00 00 00 ...... 01 + ''' + assert self.data_after_remove_mask != None, "please remove mask in advance" + res = {} + buf = self.data_after_remove_mask + len_ = len(buf) + + # print( f" head tail, {len_}") + # print( self.data_after_remove_mask) + # 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, "SAM 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 set_integrate_time(self, it:int): + self.integratedTime = it + + def process_from_hex_2_int(self, mode= 0): + """ + @description :从data_after_remove_mask 到 data_Int_from_Hex + """ + assert self.data_valid_buf != None, "please remove frame head and tail" + + # print( f" == {len(self.data_valid_buf)}= {self.data_valid_buf} ") + + self.integratedTime = 2 << int(self.data_valid_buf[0]) # integrated time + + # print(f"===============it {self.integratedTime}") + + tmp = struct.unpack( + " None: + # self.integratedTime = 2 << int(self.data_valid_buf[0]) # integrated time + # self.data_Int_from_Hex = struct.unpack( + # " np.ndarray: + ''' ( 26 +3*sensor) removeMask get_valid_buf''' + self.rf.set_data_raw(data) # 同时传入 IPbuf + self.rf.removeMask() + self.rf.get_data_valid_buf( ) + self.rf.process_from_hex_2_int() + self.rf.calibrate_data() + + def deal_raw_data_list(self, data:list) -> np.ndarray: + ''' (15 + 26 +3*sensor) removeMask get_valid_buf''' + log.info( " ", __name__,"deal_raw_data_list ") + size = len(data) + assert size>0, ">>>> raw datalist len is 0 " + tmp_data = np.array([]) + for i in range(size): + # log.info( f" Num {i} Group ", __name__,"deal_raw_data_list ") + self.rf.set_data_raw( data[i] ) + self.rf.removeMask() + self.rf.get_data_valid_buf( ) + self.rf.process_from_hex_2_int() + self.rf.calibrate_data() + if i == 0: + tmp_data = self.rf.data_after_cal + else: + tmp_data = tmp_data + self.rf.data_after_cal + self.rf.data_after_cal = tmp_data/size + # return tmp_data/size + + def deal_raw_ip_list(self, ip_data:list) -> np.ndarray: + ''' ip_raw''' + log.info(" 处理 ip_data:list ",__name__, "deal_raw_ip_list") + pass + + def deal_data_valid_buf(self, data:bytes): + ''' 去 23 00 00 00 .....01后的数据, 64*8=512 ''' + self.rf.set_data_valid_buf(data) + self.rf.process_from_hex_2_int() + self.rf.calibrate_data() + + def deal_data_int254(self, data:list, integrationTime:int): + '''254 * int, integrationTime ''' + self.rf.set_data_Int_254(data) + self.rf.set_integrate_time(integrationTime) + self.rf.calibrate_data() + + def get_data_after_cal(self,): + return self.rf.data_after_cal + + +def test_01(): + """ + @description :调用RamsesTest RamsesFactory 获得结果和已知的比较 + """ + # sn = "85C2" + sn = "84E3" + cfg = {} + # r85c2 = Ramses85C2() + # cfg = r85c2.calcfg + + r84e3 = Ramses84E3() + cfg = r84e3.calcfg + # rt.get_ip_cal() + # rt.get_sam_cal() + # rt.get_ramses_cal() + + rf = RamsesFactory( SN=sn, airwater=AirWater.Air ) + rf.set_cfg(cfg ) + + # rf.set_data_raw( bytes.fromhex(r85c2.data_85C2) ) + # rf.removeMask() + # rf.get_data_valid_buf() + + + # rf.process_from_hex_2_int() + # rf.get_wavelenth(1) + # rf.calibrate_data(1) + + # rf.process_from_hex_2_int() + rf.data_Int_from_Hex = r84e3.data_Int_from_Hex + rf.set_integrate_time (256) + + print( len(rf.RamsesCalData.b0) ) + print( len(rf.RamsesCalData.b1) ) + print( len(rf.RamsesCalData.cal) ) + print( len(rf.RamsesCalData.calaq) ) + + # print( rf.RamsesCalData.samcal.DarkPixelStart ) + # print( rf.RamsesCalData.samcal.DarkPixelStop ) + + + + # rf.get_wavelenth(1) + rf.calibrate_data(1) + # 4 1077 0 0 0.016433967 0.017747166 -0.001313199 0.000333492 0.010671759 0.085698462 0.124526848 0.124526478 + # 5 1088 0 0 0.016601816 0.0177432 -0.001141384 0.000505308 0.016169857 0.102722719 0.157412665 0.157412431 + + +def test_02(): + """ + @description :调用RamsesTest RamsesFactory 获得结果和已知的比较 + """ + sn = "85C2" + cfg = {} + r85c2 = Ramses85C2() + cfg = r85c2.calcfg + + + rf = RamsesFactory( SN=sn, airwater=AirWater.Air ) + rf.set_cfg(cfg ) + + rf.set_data_raw( bytes.fromhex(r85c2.data_85C2) ) + # print(f"raw : {rf.data_raw.hex()}" ) + rf.removeMask() + + # print(f"mask : {rf.data_after_remove_mask.hex() }" ) + rf.get_data_valid_buf() + rf.process_from_hex_2_int(1) + + + # rf.data_Int_from_Hex = r85c2.data_Int_from_Hex + # rf.set_integrate_time (4096) + + # print( rf.data_Int_from_Hex) + + # print( len(rf.RamsesCalData.b0) ) + # print( len(rf.RamsesCalData.b1) ) + # print( len(rf.RamsesCalData.cal) ) + # print( len(rf.RamsesCalData.calaq) ) + + + # rf.get_wavelenth(1) + rf.calibrate_data(1) + + +if __name__ == '__main__': + # 由于很多数据,要到整数这一步取平均, 需要将平均后的整数值传进去,在处理 + + # test_01() + test_02() + # print(hex(100)) + # rc= RamsesCal() + # print(rc) + + # rt =RamsesTest() + # rt.get_sam_cal() + # rt.get_ramses_cal() + # print(rt.samcal) + pass + + +# {2: {1: {'FUNC': 'Lsky', 'SN': '85B5'}, 2: {'FUNC': 'Esky', 'SN': '50ED'}, 3: {'FUNC': 'Lwater', 'SN': '852F'}}, +# 3: {1: {'FUNC': 'Lsky', 'SN': '85B5'}, 2: {'FUNC': 'Esky', 'SN': '50ED'}, 3: {'FUNC': 'Lwater', 'SN': '852F'}}} + +# {'Lsky': +# {'SN': '85B5', 'FUNC': 'Lsky', 'TYPE': 'SAM', 'samsn': '85B5', +# 'inifile': 'SAM_85B5.ini', 'calfile': 'Cal_SAM_85B5.dat', 'calaqfile': 'CalAQ_SAM_85B5.dat', 'backfile': 'Back_SAM_85B5.dat', +# 'cal': ['+NAN',.......... \ No newline at end of file diff --git a/myconfig.py b/myconfig.py new file mode 100644 index 0000000..b95ec06 --- /dev/null +++ b/myconfig.py @@ -0,0 +1,329 @@ +#! python3 +# -*- encoding: utf-8 -*- +''' +@File : myconfig.py +@Time : 2023/03/01 15:28:20 +@Author : Jim @ Yiwin +@Version : 1.0 +@Contact : jim@yi-win.com +@Descrip : SysConfig +''' + +import yaml +from enum import Enum +from pathlib import Path +VERSION = "3.3.5" +LASTDATE = "2023-03-09" +COMPANY = u"奕枫仪器" + +DEVICE_ID = [2] +CURRENT_DIR = Path() +DATA_DIR = Path("data") +CAL_DIR = Path("calfile") +OUTPUT_DIR = Path("data", "output") +YAML_FILE_NAME = "config.yml" +RETRIEVE_CFG_FILE = "retrieve.yml" +FILE_MARK = ['Spectrum', 'DATA'] +BEGIN_WAVELENGTH = 350 +END_WAVELENGTH = 950 +SAVE_EXT_NAME = ".csv" +INTERVAL = 1.0 +SEPARATOR = ";" +TOKEN = ";" +NEWLINE = "\n" +ROWFACTOR = 0.026 + +class DeviceType(Enum) : + AWRAMS = 1 + SURFACE = 2 + PROFILE = 3 + +class RamsesFunc(Enum): + Lsky = 1 + Esky = 2 + Lwater = 3 + Lw = 4 + Rs = 5 + +class RamsesAWRAMS(Enum): + Lsky = 1 + Esky = 2 + Lwater = 3 + Lw = 4 + Rs = 5 + +class RamsesSURFACE(Enum): + Lsky = 1 + Esky = 2 + Lwater = 3 + Lw = 4 + Rs = 5 + +class RamsesPROFILE(Enum): + Ed = 1 + Esky = 2 + Lu = 3 #upwelling + Lw = 4 + Rs = 5 + +IP_CAL = { + "Incl_Orientation": "up", + "Incl_Xgain": 1.0, + "Incl_Xoffset": 125, + "Incl_Ygain": 0.9375, + "Incl_Yoffset": 126, + "Incl_KBG": 1.2073, + "Incl_Kref": 0.1275, + "Press_Current_mA": 1.08, + "Press_Surface_bar": 5.57, + "Press_Gain": 2.7, + "WithIncl": 1, + "WithPress": 1, + "Press_Sens_mV_bar_4mA": 71.36, + "Press_Sens_mV_bar_1mA": 17.84, + "Press_Type": "PA-10/TAB/10bar", + "CalibrationDate": "08.06.2018", +} + +RAMSES_CAL = { + "SN": "", + "TYPE": "SAM", # SAMIP or SAM + "FUNC": "Lsky", + "inifile": "", + "calfile": "", + "calaqfile": "", + "backfile": "", + "samsn": "", + "b0": [], + "b1": [], + "cal": [], + "calaq": [], + "DarkPixelStart": 237, + "DarkPixelStop": 254, + "Firmware": 2.06, + "IDDataBack": "DLAB_2016-11-29_14-47-59_729_812", + "IDDataCal": "DLAB_2016-12-07_12-00-24_364_510", + "IDDataCalAQ": "DLAB_2016-12-07_12-02-43_591_545", + "IntegrationTime": 0, + "Reverse": 0, + "SerialNo_MMS": 103307, + "WavelengthRange": "310..1100", + "c0s": 299.895, + "c1s": 3.31161, + "c2s": 0.00031652, + "c3s": -1.73194e-06, + "c4s": +0.000000000E+00, + "cs": 102842, + "savefile": "" +} + +class MyConfig(object): + """ + 设置 ID对应的传感器 + """ + + def __init__(self) -> None: + self.device_id = [] + self.device_type = None + self.current_device_id = None + self.system_cfg = {} + self.cfg_path = Path() + self.yml_cfg_file = YAML_FILE_NAME + self.retrieve_cfg_file = Path(RETRIEVE_CFG_FILE) + self.system_cal_cfg = {} + self.validate = { } + + def addDeviceID(self, id:int) -> None: # + self.device_id.append(id) + pass + + def setDeviceID(self, id:int) -> bool: # + if id in self.device_id: + self.current_device_id = id + return True + else: + self.current_device_id = None + return False + pass + + def setDeviceType(self, device_type:DeviceType) -> None: + self.device_type = device_type + pass + + def setRetrieveCfg(self, rtv_yml:str="") -> None: + if rtv_yml =="": + return None + self.retrieve_cfg_file = Path(rtv_yml) + pass + + def getSystemCfg(self,)->None: + ''' + 不同系统,修改此函数,或添加函数 getSystemCfg***()供调用 + ''' + if self.current_device_id == None: + self.system_cfg = None + if self.device_type == None: + self.system_cfg = None + temp_cfg = {} + if self.device_type == DeviceType.AWRAMS: + temp_cfg = { + 1: {"SN": "85B5", "FUNC": RamsesAWRAMS(1).name}, + 2: {"SN": "50ED", "FUNC": RamsesAWRAMS(2).name}, + 3: {"SN": "852F", "FUNC": RamsesAWRAMS(3).name} + } + if self.device_type == DeviceType.SURFACE: + temp_cfg = { + 1: {"SN": "85B5", "FUNC": RamsesSURFACE(1).name}, + 2: {"SN": "50ED", "FUNC": RamsesSURFACE(2).name}, + 3: {"SN": "852F", "FUNC": RamsesSURFACE(3).name} + } + if self.device_type == DeviceType.PROFILE: + temp_cfg = { + 1: {"SN": "85B5", "FUNC": RamsesPROFILE(1).name}, + 2: {"SN": "50ED", "FUNC": RamsesPROFILE(2).name}, + 3: {"SN": "852F", "FUNC": RamsesPROFILE(3).name} + } + self.system_cfg.update( { self.current_device_id : temp_cfg } ) + pass + + def setCfgRamsesSN(self, sn_cfg: dict)->None: + if len(sn_cfg) == 0: + return None + + for k in self.system_cfg[self.current_device_id].keys(): + if str(k) in sn_cfg.keys() : + self.system_cfg[self.current_device_id][k]["SN"] = sn_cfg[str(k)] + else: + self.system_cfg[self.current_device_id][k]["SN"] = None + # if k in sn_cfg.keys() : + # self.system_cfg[self.current_device_id][k]["SN"] = sn_cfg[k] + pass + + def setSystemCalCfg(self, sn_cfg: dict)->None: + if len(sn_cfg) == 0: + pass + + def getDictByAttr(self, *args) -> dict: + ret = {} + if len(args) == 0: + return ret + if len(args) == 1: + if not hasattr(self, args[0]): + return ret + tmp = getattr(self, args[0]) + if isinstance(tmp, dict): + ret.update(tmp) + return ret + if len(args) == 2: + if not hasattr(self, args[0]): + return ret + if not isinstance(getattr(self, args[0]), dict): + return ret + tmp: dict = getattr(self, args[0]) + if not tmp.__contains__(args[1]): + # print(f"------------{args[1]}") + return ret + tmp2 = tmp[args[1]] + if isinstance(tmp2, dict): + ret.update(tmp2) + return ret + if len(args) > 2: + return ret + pass + + # 设置字典对应的键值 + def set_attr(self, d: dict, k, v) -> bool: + if d.__contains__(k): + d.update({k: v}) + return True + return False + + def write_yaml(self, d: dict): + with open(self.yml_cfg_file, "w", encoding="utf-8") as f: + yaml.dump(d, f) + + def read_yaml(self ) -> dict: + with open(self.yml_cfg_file, "r", encoding="utf-8") as f: + content = f.read() # conent 读出来是字符串 + d = yaml.load(content, Loader=yaml.FullLoader) # 用load方法转字典 + return d + + def write_rtv_yaml(self, d: dict): + with open(self.retrieve_cfg_file, "w", encoding="utf-8") as f: + yaml.dump(d, f) + + def read_rtv_yaml(self ) -> dict: + with open(self.retrieve_cfg_file, "r", encoding="utf-8") as f: + content = f.read() # conent 读出来是字符串 + d = yaml.load(content, Loader=yaml.FullLoader) # 用load方法转字典 + return d + + def get_retrieve(self) -> dict: + retrieve = {} + retrieve.update({"beginWL": BEGIN_WAVELENGTH}) + retrieve.update({"endWL": END_WAVELENGTH}) + retrieve.update({"interval": INTERVAL}) + retrieve.update({"rowFactor": ROWFACTOR}) + return retrieve + pass + +ramses_buf_str= "\ + 23a0000007fefe0a0781067d067d068e0693069c069c06b006b506cb06e40619076607e1076c081509cd09bb0a7d0bee0b1d0c6d0cca0ca40ddc0f30135b18b4224d320e43f852c8\ + 23a0000006fefe17639c71c97c9484bb89358be98e5d98b1a37eadccb66abd26be31b97db124aa18a3f29c0499349735968e93a48eea8a028bc28cec8d048f1c92c096de9ab99d43\ + 23a0000005fefee0a157a9ecb1b1b97dc034c507c741c7d2c65ec550c20dbde9b535ae56a60a9e2296cd8ee887278129798170c669b16503632e61605f3a5def5a8e5862561154be\ + 23a0000004fefe3c51f54dda4a0c48634595426a3f5a3cc539903767362b36cc351f356634b633fc32c4310630fb2ec32fe63199349037e03ac03dc03eae3c303a9639d13a413da7\ + 23a0000003fefe97412746bc49404caa4dc54d374ca646d63bde326b332739e43c503d2b3c363aca37ef342d32c22f782d1d2bd328ec250222101e691b2b1a7119d3184018fa174d\ + 23a0000002fefed3177a17e3160616f81423149313f11233126711d8103b10a40f160f8a0efb0d580d660c6f0bd80aa10a580a000ab4099b0994097109e2082c087a0736072c077d\ + 23a0000001fefe2a071e071607140718071e073c074d076a076e076b076007670763076c0760075c073d07350724071207fb06ef06d706cc06b706a506960684067b0672066306a2\ + 23a0000000fefe58065406500642064e064306470642063f064806410644064306430641064206460640063c063e063e063d064406430644063c063c063c063c06400640064906ed\ + 23a0000007fefe0a071b071c07260737073e0749075907650774078b07c0072c08e3082b0ada0be80d9c107b147318931ae51add1a271a77192f1bfb1d99207c265c30c738f03d53\ + 23a0000006fefe07438f489d4d8452d957945cff639171a5832a97deab7fbe09c86cc5acb9d5ab299e90915287de7f8b7ae275ed6f056aff664f662665bc63936335655767926879\ + 23a0000005fefec269206d3e724377fe7b7a8050831f85b68637881689e4884787008580823d7f887bee773d7496702a6cde654c5f895a1f570d5416514d4e9d4bde4897468c44c3\ + 23a0000004fefe71421640db3dc83bbb39533777346c31b92e912c152b5b2aff292129e727cb26d925fd249223b4214020da1fe91ff41f28209420dc201520071e671c221c8d1cfe\ + 23a0000003fefecd1dd31fe72164235924cb24b924f72331211e1ca018ef19221d121f621fe91e081ed51c761b311a2f193c18651788166015a013de11d1106e1041101810e80f2e\ + 23a0000002fefee50fd90fbc0f6d0ff70e610ee00d930d460de40c900c450c010cbd0b7c0b480bfc0aab0a2c0a9e094d092b09fb08d008a208990881087d083908e6078d07660747\ + 23a0000001fefe5b075a07500751074d074e0751075d076807730788077e077c077c07810777077a076c0765075c075607480740073607270723070d070d070b07ff06fd06f0062f\ + 23a0000000fefef606f106ed06f506ef06eb06f106ec06f006e906e806ed06e606ef06e506ea06ec06ee06eb06e906ee06f006ef06ea06e906e606e606e606ec06ea06ea06f506f2\ + 23a0000007fefe0605830479047d047e04810482048204850487048b048c04850487048c049304950498049c04a804a904b604b804c604d004e104f104190546059805ff059a06bb\ + 23a0000006fefe90073209ea0b7610c117cc22b2324a487b645e8798acf2c927d28dc1f2a1ac809664804e543d7a308327a321d81dab1b0f1bca1bb41dba2098243329382e773335\ + 23a0000005fefeca38213e544329486f4c1c500653335592564f577d573b57a556b4557e540a534451424f004d714a9b47994458410e3e9c3af8368c33b630982eca2c052b3429ae\ + 23a0000004fefe632763255a234821321f0e1d061b291983171e16d814a91379124b1138104b0f610e990dd80c240c880bfc0a7b0af8097709020990082508de07c507ba07a50762\ + 23a0000003fefe950781076407460727070007d306ab066e06270605060d0614061306fe05e805d105b405a00586057105630549053d0528051105fd04f304ee04e404dc04dd04c3\ + 23a0000002fefed804d904d004c604bf04b904b904b104a804a604a6049d04980496048f04970491048c04880486047e0484047a047d047b047c0478047a04760476047004700430\ + 23a0000001fefe6f0474046c046d0472046d047304750470046e04760472046f047604700473046f04730470047504700470046d046b047004710470046e046d046a046b046904e4\ + 23a0000000fefe690470046e046b046c04680468046e0466046a046a0469046b046d04640466046c046c046b046a04660466046b046c046a046a0468046f046804740471048d0417\ + " + + +if __name__ == "__main__": + s = RamsesPROFILE + print(s(1)) + print(s(2)) + + cfg = MyConfig() + cfg.addDeviceID(2) + cfg.addDeviceID(3) + cfg.setDeviceType(DeviceType.AWRAMS) + cfg.setDeviceID(2) + cfg.getSystemCfg() + print(cfg.system_cfg) + + d = {"1":"8888","2":["7777"],"3":["9999"]} + cfg.setCfgRamsesSN(d) + print("修改后。。。。。\n") + print(cfg.system_cfg) + + # cfg.write_yaml( cfg.system_cfg) + + dd = cfg.read_yaml() + # dd 作为cfg.system_cfg 使用 + for k,v in dd.items(): + print(k) + print(type(k)) + + retrieve = { + "beginWL": 350, + "endWL": 950, + "interval": 1, + "rowFactor": 0.026 + } diff --git a/mypanel.py b/mypanel.py new file mode 100644 index 0000000..fc005f6 --- /dev/null +++ b/mypanel.py @@ -0,0 +1,144 @@ +import wx +import numpy as np +from enum import Enum +from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas #FigureCanvasWxAgg +# from matplotlib.backends.backend_wx import NavigationToolbar2Wx as NavigationToolbar # FIgure 导航 +from matplotlib.figure import Figure + +class LineColor(Enum): + RED = 0 + ORANGE = 1 + YELLOW = 2 + GREEN = 3 + CYAN = 4 + BLUE = 5 + PURPLE = 6 + + +class Plot(wx.Panel): + ''' + # 需要在 Frame 实例化一个实例 + # 改变需要对实例化后的进行操作 + ''' + ''' + Matplotlib Panel 单独拿出来画图 + 可以 __do_layout + 可以 __add_widgets + 可以 button事件 + 可以鼠标事件 + ''' + def __init__(self,parent): + ''' + * panel 初始化后的样子 + ''' + super(Plot,self).__init__(parent) + # 本地化语言 + self.locale = wx.Locale(wx.LANGUAGE_CHINESE_SIMPLIFIED) + + self.Figure = Figure(figsize=(4,3)) # 4,3 为英寸 + self.axes = self.Figure.add_axes([0.1,0.1,0.8,0.8],facecolor="lightgray") # 坐标系起始位置 + self.FigureCanvas = FigureCanvas(self,-1,self.Figure) + + #继承鼠标移动显示鼠标处坐标的事件 + # self.FigureCanvas.mpl_connect('motion_notify_event',self.MPLOnMouseMove) + + # self.NavigationToolbar = NavigationToolbar(self.FigureCanvas) + + # self.StaticText = wx.StaticText(self,-1,label=u'坐标信息') + + # self.SubBoxSizer = wx.BoxSizer(wx.HORIZONTAL) + # self.SubBoxSizer.Add(self.NavigationToolbar,proportion =0, border = 2,flag = wx.ALL | wx.EXPAND) + # self.SubBoxSizer.Add(self.StaticText,proportion =-1, border = 2,flag = wx.ALL | wx.EXPAND) + + self.TopBoxSizer = wx.BoxSizer(wx.VERTICAL) + # self.TopBoxSizer.Add(self.SubBoxSizer,proportion =-1, border = 2,flag = wx.ALL | wx.EXPAND) + self.TopBoxSizer.Add(self.FigureCanvas,proportion =-10, border = 2,flag = wx.ALL | wx.EXPAND) + + self.SetSizer(self.TopBoxSizer) + + self.purewater_legend = (" Rs" + ,"Wavelength (nm)" + ," Rs " ) + + self.measure_legend = (" Rs" + ,"Wavelength (nm)" + ," Rs" ) + + def set_axes_title(self,title): + self.axes.set_title(title) + + def set_axes_xlabel(self,x): + self.axes.set_xlabel(x) + + def set_axes_ylable(self,y): + self.axes.set_ylabel(y) + + def set_title_x_y(self,title, x, y): + self.axes.set_title(title) + self.axes.set_xlabel(x) + self.axes.set_ylabel(y) + + def plot_one( self, time_, wavelength:np.ndarray, data:np.ndarray, color="green" ): + self.axes.plot(wavelength, data, color=color, linewidth=0.5 , label=time_ ) + self.axes.legend( ) + self.axes.grid( True ) + self.FigureCanvas.draw() + + + def plot_multi( self, tm, wavelength:np.ndarray, data:np.ndarray ): + len_ = len(data) + for i in range(len_): + self.axes.plot(wavelength, data[i], color=LineColor(i).name.lower(), linewidth=0.5 , label=tm[i] ) + self.axes.legend( ) + self.axes.grid(True) + self.FigureCanvas.draw() + + def clear_past( self, ): + self.axes.clear() + +class MyPanel(wx.Panel): + """docstring for MyPanel.""" + def __init__(self, *arg, **kwarg): + super(MyPanel, self).__init__( *arg,**kwarg) + + self.SetBackgroundColour("#F2F2F2") + self.sb = wx.StaticBox( self, label='系统信息', pos = (30,30) ) + + self.sbs = wx.StaticBoxSizer( self.sb, orient=wx.VERTICAL ) + + self.vbox1 = wx.BoxSizer(wx.VERTICAL) + self.staticText0 = wx.StaticText(self , label='',size=(60, 30), style=wx.ALIGN_CENTRE_VERTICAL ) + + self.staticText1 = wx.StaticText(self, -1,size=(600, -1), + label='''\n上海奕枫仪器设备有限公司 + \n电话: 021-54270075 + \n网站: http://www.yi-win.com + \n邮件: sales@yi-win.com + \n描述: 手持式数据处理 ''' ) + + self.vbox1.Add(self.staticText0, flag=wx.TOP|wx.LEFT, border=5) + self.vbox1.Add(self.staticText1, flag=wx.TOP|wx.LEFT, border=5) + # self.hbox1.Add(self.staticText1, flag=wx.TOP|wx.LEFT, border=5) + # self.hbox1.Add(self.textCtrl1, flag=wx.TOP|wx.LEFT, border=5) + self.sbs.Add(self.vbox1, flag=wx.TOP|wx.LEFT, border= 5) + self.SetSizer(self.sbs) + # self.SetBackgroundColour("#F2F2F2") + # self.vbox = wx.BoxSizer(wx.VERTICAL) + + # # self.vbox.Add(num1, proportion=0, border=8, flag=wx.LEFT) + + # self.sb = wx.StaticBox(self, label='信息') + # self.sbs = wx.StaticBoxSizer(self.sb, orient=wx.VERTICAL) + # self.staticText1 = wx.StaticText(self, -1, + # label='''\n上海奕枫仪器设备有限公司 + # \n电话: 021-54270075 + # \n网站: http://www.yi-win.com + # \n邮件: sales@yi-win.com ''' ) + # self.vbox.Add(self.sbs) + # self.sbs.Add(self.vbox) + # self.SetSizer(self.vbox) + + def setStaticText(self, msg:str): + self.staticText1.SetLabel(msg) + + \ No newline at end of file diff --git a/mythread.py b/mythread.py new file mode 100644 index 0000000..b2ba0e1 --- /dev/null +++ b/mythread.py @@ -0,0 +1,126 @@ +import threading +import time + +class Mythead(threading.Thread): + '''线程守护''' + def __init__(self ): + super(Mythead, self).__init__() + pass + + def set_task(self, func, *args): + self.func = func + self.args = args + + def run(self): + # print(f" --- {len(self.args)}") + if len(self.args) > 0: + self.func(self.args) + else: + self.func( ) + +class Multithread(threading.Thread): + ''' + 多线程 + 子线程.join() -> ( 设置在start之后, 等所有阻塞线程运行完, 再运行主线程 ) + 子线程.setDaemon(True) -> 设置子线程A为守护线程, 主线程所在的进程内所有非守护线程统统运行完毕, + 无论子线程A有没有结束, 程序都结束 + Method: + + ''' + def __init__(self): + super(Multithread, self).__init__() + self.__tasks = [] + self.act = [] + # self.__block = False + pass + + # def set_task( self, tasks ): + # self.__tasks = tasks + + def add_task(self, func, daemon=False, join=True,args=()): + tmp_dict = {} + tmp_dict.update( {"func" : func}) + if daemon == True: + tmp_dict.update( {"daemon" : True}) + else: + tmp_dict.update( {"daemon" : False}) + if join == True: + tmp_dict.update( {"join" : True}) + else: + tmp_dict.update( {"join" : False}) + if args == (): + tmp_dict.update( {"args" : ()}) + else: + tmp_dict.update( {"args" : args}) + self.__tasks.append( tmp_dict ) + + def remove_tasks(self, ): + self.__tasks = [] + self.act = [] + + def add_task_2_act(self, task): + t = threading.Thread( target = task['func'], args = task['args'] ) + self.act.append(t) + t.start() + + def execute_one_act(self,i): + if self.__tasks[i]['join']: + self.act[i].join() # 子线程阻塞完毕再运行主线程 + pass + + def prepare_tasks(self): + self.act = [] + for task in self.__tasks: + self.add_task_2_act(task) + + def execute_tasks(self): + try: + for i in range( len(self.act) ): + self.execute_one_act( i ) + pass + except Exception as e: + print(e) + + def prepare_tasks(self): + self.act = [] + for task in self.__tasks: + t = threading.Thread( target = task['func'], args = task['args'] ) + self.act.append(t) + t.start() + + def simultaneously_execute_tasks(self): + self.prepare_tasks() + self.execute_tasks() + + def sequently_execute_tasks(self): + for task in self.__tasks: + t = threading.Thread( target = task['func'], args = task['args'] ) + t.start() + t.join() + + + def t1(self): + print("thread1...") + time.sleep(10) + print("thread1... after sleep...") + + def t2(self): + print("thread2...") + time.sleep(5) + print("thread2... after sleep...") + + def t3(self): + print("thread3...") + time.sleep(3) + print("thread3... after sleep...") + +if __name__ == '__main__': + mt = Multithread() + mt.add_task(mt.t1) + mt.add_task(mt.t2) + mt.add_task(mt.t3) + # mt.prepare_tasks() # 线程同步运行 + # mt.execute_tasks() + # mt.simultaneously_execute_tasks() + mt.sequently_execute_tasks() + diff --git a/readcal.py b/readcal.py new file mode 100644 index 0000000..a389d9d --- /dev/null +++ b/readcal.py @@ -0,0 +1,1008 @@ +from tools.mylogger import log +from tools.myexception import MyException +from typing import Tuple,List,Optional,Union,Callable +from pathlib import Path, PurePath +from myconfig import MyConfig,DeviceType,RamsesFunc +from myconfig import FILE_MARK,CURRENT_DIR,CAL_DIR,DATA_DIR,SAVE_EXT_NAME,INTERVAL,SEPARATOR + +class ReadCal(): + def __init__(self) -> None: + pass + + # 数据加时间值 + @staticmethod + def read_columns_set_by_mark(fpath:Path, mark:list, *column ) -> Tuple[str,List] : + # def read_column_1set_by_mark(fpath:str, column:int, *args ) -> Tuple[ str, List ] : + ''' + return: time:str List + mark : ['Spectrum','DATA'] + default end with "[END]" + ''' + log.info(f"read_column_1set_by_mark : \ + {fpath} , mark:{mark} , column:{column}", __name__, "", "") + + # 处理mark args[0] = Spectrum + if len(mark) != 2: + log.error( f"read_column_1set_by_mark() wrong args ",__name__, "", "" ) + raise MyException( f"read_column_1set_by_mark() wrong args " ) + + if len(column) == 0: + log.error(f"read_column_1set_by_mark(), no column para, pls input column ",__name__, "", "" ) + raise MyException( f"read_column_1set_by_mark() , pls input column " ) + + if len( mark ) == 0: + mark_1 = '[Spectrum]' + mark_2 = '[DATA]' + + mark_1 = '['+ mark[0] +']' + mark_2 = '['+ mark[1] +']' + res = [] + sn = ReadCal.readFileSNbyIDDevice(fpath) + # 预备返回数据结构 + # res_time = [] + res_data = [] + columnLen = len(column) + for i in range(columnLen): + res_data.append( [] ) + + with fpath.open('r') as f_handle: + rflag = 0 + # res = [] + # res_time = [] + # res_data = [] + + for line in f_handle: + if mark_1 in line and rflag == 0: + log.debug(f" find {mark_1}", __name__, "", "" ) + rflag += 1 + continue + + if mark_2 in line and rflag > 3 : + log.debug(f" find {mark_1} end ", __name__, "", "" ) + rflag = 0 + continue + + # 获取时间 + if rflag == 1 : + data = line.strip('\n').strip(' ').split('=') + if data[0].strip() == "DateTime" : + log.debug(f" find {mark_1} -> DateTime {data[1]} ", __name__, "", "" ) + time_ = data[1].strip() + rflag += 1 + continue + + if rflag == 2 and ( mark_2 in line ) : + log.debug(f" find {mark_2} -> ", __name__, "", "" ) + rflag += 1 + continue + + if rflag == 3 : + if mark_2 not in line: + # log.debug(f" get data {line}", __name__, "", "" ) + data = line.strip('\n').strip(' ').split(' ') + # 忽略第一行,第一行0开头,保存积分时间的 + if data[0].strip() == "0" : + continue + else: + # if data[1] != "-NAN" and data[1] != "NAN" and data[1] != "+NAN" : + # 处理多列 + for i in range(columnLen): + # res_time.append( time_ ) + res_data[i].append( data[column[i]] ) + continue + + if rflag == 3 and ( mark_2 in line ) : + log.debug(f" find {mark_2} end , line: {line} ", __name__, "", "" ) + rflag += 1 + continue #需要继续让其找到 + + if rflag == 4: + log.debug(f" job done......", __name__, "", "" ) + res_time = time_ + # res_data.append( res ) + # 只读一组数据就 break + rflag += 1 + # res = [] + # rflag = 0 + + if rflag == 5: + log.debug(f" job done, break...", __name__, "", "" ) + break + return ( res_time, res_data) + pass + + # 数据加时间值 + @staticmethod + def read_columns_sets_by_mark(fpath:Path, mark:list, *column + ) -> Tuple[List[str],List[List]] : + # def read_column_1set_by_mark(fpath:str, column:int, *args ) -> Tuple[ str, List ] : + ''' + @desc: 获取多列数据,且为多套数据,非单套数据 + @return: time:List, List + @args : ['Spectrum','DATA'] + default end with "[END]" + ''' + log.info(f"read_column_1set_by_mark : \ + {fpath} , mark:{mark} , column:{column}", __name__, "", "") + + # 处理mark args[0] = Spectrum + if len(mark) != 2: + log.error( f"read_columns_sets_by_mark() wrong args ",__name__, "", "" ) + raise MyException( f"read_columns_sets_by_mark() wrong args " ) + + if len(column) == 0: + log.error(f"read_columns_sets_by_mark(), no column para, pls input column ",__name__, "", "" ) + raise MyException( f"read_columns_sets_by_mark() , pls input column " ) + + if len( mark ) == 0: + mark_1 = '[Spectrum]' + mark_2 = '[DATA]' + + mark_1 = '['+ mark[0] +']' + mark_2 = '['+ mark[1] +']' + res = [] + sn = ReadCal.readFileSNbyIDDevice(fpath) + # 预备返回数据结构 + res_data = [] + res_time = [] + res = [] + columnLen = len(column) + for i in range(columnLen): + # res_time.append( [] ) + res.append( [] ) + + with fpath.open('r') as f_handle: + rflag = 0 + + for line in f_handle: + if mark_1 in line and rflag == 0: + log.debug(f" find {mark_1}", __name__, "", "" ) + rflag += 1 + continue + + if mark_2 in line and rflag > 3 : + log.debug(f" find {mark_1} end ", __name__, "", "" ) + rflag = 0 + continue + + # 获取时间 + if rflag == 1 : + data = line.strip('\n').strip(' ').split('=') + if data[0].strip() == "DateTime" : + log.debug(f" find {mark_1} -> DateTime {data[1]} ", __name__, "", "" ) + time_ = data[1].strip() + rflag += 1 + continue + + if rflag == 2 and ( mark_2 in line ) : + log.debug(f" find {mark_2} -> ", __name__, "", "" ) + rflag += 1 + continue + + if rflag == 3 : + if mark_2 not in line: + # log.debug(f" get data {line}", __name__, "", "" ) + data = line.strip('\n').strip(' ').split(' ') + # 忽略第一行,第一行0开头,保存积分时间的 + if data[0].strip() == "0" : + continue + else: + # if data[1] != "-NAN" and data[1] != "NAN" and data[1] != "+NAN" : + # 处理多列 + for i in range(columnLen): + # res_time.append( time_ ) + res[i].append( data[column[i]] ) + continue + + if rflag == 3 and ( mark_2 in line ) : + log.debug(f" find {mark_2} end , line: {line} ", __name__, "", "" ) + rflag += 1 + continue #需要继续让其找到 + + if rflag == 4: + log.debug(f" job done......", __name__, "", "" ) + res_time.append( time_ ) + res_data.append( res ) + rflag += 1 + # res = [] + # rflag = 0 + + if rflag == 5: + log.debug(f" job done, break...", __name__, "", "" ) + rflag = 0 + continue + + log.debug(f" res.time len {len(res_time)} , \ + res.data len {len(res_data)} , ", __name__, "", "" ) + + return ( res_time, res_data) + + # 数据加时间值 + @staticmethod + def read_columns_sets_by_mark_callback(fpath:Path, mark:list, callback:Callable, *column ) : + ''' + @desc: 获取多列数据,且为多套数据,非单套数据 + @return: time:List, List + @args : ['Spectrum','DATA'] + default end with "[END]" + ''' + log.debug(f"read_column_1set_by_mark : \ + {fpath} , mark:{mark} , column:{column}", __name__, "", "") + + # 处理mark args[0] = Spectrum + if len(mark) != 2: + log.error( f"read_columns_sets_by_mark() wrong args ",__name__, "", "" ) + raise MyException( f"read_columns_sets_by_mark() wrong args " ) + + if len(column) == 0: + log.error(f"read_columns_sets_by_mark(), no column para, pls input column ",__name__, "", "" ) + raise MyException( f"read_columns_sets_by_mark() , pls input column " ) + + if len( mark ) == 0: + mark_1 = '[Spectrum]' + mark_2 = '[DATA]' + + mark_1 = '['+ mark[0] +']' + mark_2 = '['+ mark[1] +']' + + # 预备返回数据结构 + res_data = [] + res_time = [] + res = [] + sn = ReadCal.readFileSNbyIDDevice(fpath) + + columnLen = len(column) + for i in range(columnLen): + # res_time.append( [] ) + res.append( [] ) + + with fpath.open('r') as f_handle: + rflag = 0 + + for line in f_handle: + if mark_1 in line and rflag == 0: + log.debug(f" find {mark_1}", __name__, "", "" ) + rflag += 1 + continue + + if mark_2 in line and rflag > 3 : + log.debug(f" find {mark_1} end ", __name__, "", "" ) + rflag = 0 + continue + + # 获取时间 + if rflag == 1 : + data = line.strip('\n').strip(' ').split('=') + if data[0].strip() == "DateTime" : + log.debug(f" find {mark_1} -> DateTime {data[1]} ", __name__, "", "" ) + time_ = data[1].strip() + rflag += 1 + continue + + if rflag == 2 and ( mark_2 in line ) : + log.debug(f" find {mark_2} -> ", __name__, "", "" ) + rflag += 1 + continue + + if rflag == 3 : + if mark_2 not in line: + # log.debug(f" get data {line}", __name__, "", "" ) + data = line.strip('\n').strip(' ').split(' ') + # 忽略第一行,第一行0开头,保存积分时间的 + if data[0].strip() == "0" : + continue + else: + # if data[1] != "-NAN" and data[1] != "NAN" and data[1] != "+NAN" : + # 处理多列 + for i in range(columnLen): + res[i].append( data[column[i]] ) + continue + + if rflag == 3 and ( mark_2 in line ) : + log.debug(f" find {mark_2} end , line: {line} ", __name__, "", "" ) + rflag += 1 + continue #需要继续让其找到 + + if rflag == 4: + log.debug(f" job done......", __name__, "", "" ) + # callable , not return。 每读出一组就回调,不建议。频繁读写硬盘 + # callback(time_, res) + res_time.append( time_ ) + res_data.append( res ) + rflag += 1 + # res = [] + # rflag = 0 + + if rflag == 5: + log.debug(f" job done, break...", __name__, "", "" ) + rflag = 0 + continue + + # callable , not return。 一个文件读完直接处理 + + callback(sn, res_time, res_data) + + log.debug(f" res.time len {len(res_time)} , \ + res.data len {len(res_data)} , ", __name__, "", "" ) + + # return ( res_time, res_data) + + @staticmethod + def readDataIPinfo(fpath:Path, mark:list, callback:Callable ): + ''' + SAMIP sensor ,Inclination Pressure, InclX InclY Pressure + ''' + log.debug(f"readDataIPinfo : {fpath} , mark:{mark} , ", __name__, "", "") + + # 处理mark args[0] = Spectrum + if len(mark) != 2: + log.error( f"readDataIPinfo() wrong args ",__name__, "", "" ) + raise MyException( f"readDataIPinfo() wrong args " ) + + if len( mark ) == 0: + mark_1 = '[Spectrum]' + mark_2 = '[DATA]' + + mark_1 = '['+ mark[0] +']' + + # 预备返回数据结构 + res_data = [] + res_time = [] + res = [] + tags = ['InclX' , 'InclY', 'Pressure'] + + with fpath.open('r') as f_handle: + rflag = 0 + for line in f_handle: + if mark_1 in line and rflag == 0: + log.debug(f" find {mark_1}", __name__, "", "" ) + rflag += 1 + continue + if mark_1 in line and rflag > 5: + log.debug(f" find {mark_1} end", __name__, "", "" ) + rflag = 0 + continue + # 获取时间 + if rflag == 1 : + data = line.strip('\n').strip(' ').split('=') + if data[0].strip() == "DateTime" : + log.debug(f" find {mark_1} -> DateTime {data[1]} ", __name__, "", "" ) + time_ = data[1].strip() + rflag += 1 + continue + if rflag == 2: + if "[" not in line : + data = line.strip('\n').strip(' ').split('=') + # RAMSES 数据通过MethodName 获得传感器序列号 + if data[0].strip() in tags : + res.append( data[1].strip(' ') ) + rflag += 1 + if rflag == 5: + res_time.append(time_) + res_data.append(res) + rflag = 0 + pass + callback(res_time,res_data) + return (res_time,res_data) + + @staticmethod + def readSamSNFromIni( fpath:Path ): + """ + @description : 依据文件路径获得samsn, 兼容 SAM SAMIP传感器 + """ + + with fpath.open('r') as f_handle: + for line in f_handle: + # IDDevice = SAM_85AF + ln = line.strip('\n').strip(' ').split('=') + if ln[0].strip() == "IDDevice": + if ln[1].strip().split('_')[0] == "SAM": + return ln[1].strip().split('_')[1] + return None + pass + + @staticmethod + def readIPCalFromIni( fpath:Path ): + """ + @description : 依据文件路径获得IPCal IP标定信息 + """ + ipcal = {} + with fpath.open('r') as f_handle: + flag = 0 + for line in f_handle: + # IDDevice = SAM_85AF + ln = line.strip('\n').strip(' ').split('=') + + if flag == 0 and ln[0].strip() == "IDDevice": + if ln[1].strip().split('_')[0] == "IP": + ipcal["IPSN"] = ln[1].strip().split('_')[1] + flag += 1 + continue + + if flag == 1 and "[" in line: + flag += 1 + continue + + if flag == 2: + if "[" in line: + flag = flag + 1 + + if not "[" in line: + line_ = line.strip('\n').strip(' ').split('=') + ipcal.update({line_[0].strip():line_[1].strip()}) + + if flag == 3: + break + + return ipcal + + @staticmethod + def readSAMCalFromIni( fpath:Path ): + """ + @description : 依据文件路径获得SAMCal SAM标定信息 + """ + samcal = {} + with fpath.open('r') as f_handle: + flag = 0 + for line in f_handle: + # IDDevice = SAM_85AF + line_ = line.strip('\n').strip(' ').split('=') + if flag == 0 and line_[0].strip() == "IDDevice": + if line_[1].strip().split('_')[0] == "SAM": + samcal["SAMSN"] = line_[1].strip().split('_')[1] + flag += 1 + continue + + if flag == 1 and "[" in line: + flag += 1 + continue + + if flag == 2: + if "[" in line: + flag = flag + 1 + + if not "[" in line: + line_ = line.strip('\n').strip(' ').split('=') + samcal.update({line_[0].strip():line_[1].strip()}) + + if flag == 3: + break + return samcal + + @staticmethod + def readFileSNbyIDDevice(fpath:Path): + sn_from_file = '' + with fpath.open('r') as f_handle: + rflag = 0 + for line in f_handle: + if '[Spectrum]' in line and '[END]' not in line and rflag == 0: + rflag += 1 + pass + if rflag == 1: + data = line.strip('\n').strip(' ').split('=') + # RAMSES 数据通过MethodName 获得传感器序列号 + if data[0].strip() == "IDDevice": + sn_from_file = data[1].strip(' ').split('_')[1] + break + return sn_from_file + + @staticmethod + def readDatafileSNbyMethodName(fpath:Path): + ''' + SAMIP SAM的数据文件中, MethodName对应的值都是 SAM_{SAMSN} + 读SAMIP的数据,建议用 {SAMSN}的处理 + ''' + sn_from_file = '' + with fpath.open('r') as f_handle: + rflag = 0 + for line in f_handle: + if '[Spectrum]' in line and '[END]' not in line and rflag == 0: + rflag += 1 + pass + if rflag == 1: + data = line.strip('\n').strip(' ').split('=') + # RAMSES 数据通过MethodName 获得传感器序列号 + if data[0].strip() == "MethodName": + sn_from_file = data[1].strip(' ').split('_')[1] + break + return sn_from_file + + +if __name__ == "__main__": + log.info(f"******** main read *********", __name__, "", "") + + # path = PurePath() + # print(path) + + pass + + # def read_data_sn(self,fpath): + # with open(fpath, 'r') as f_handle: + # rflag = 0 + # for line in f_handle: + # if '[Spectrum]' in line and '[END]' not in line and rflag == 0: + # rflag += 1 + # pass + # if rflag == 1 : + # data = line.strip('\n').strip(' ').split('=') + # if data[0].strip() == "IDDevice" : + # return data[1].strip(' ').split('_')[1] + # pass + + # def read_data1(self,fpath): + # with open(fpath, 'r') as f_handle: + # rflag = 0 + # res = [] + # res_time = [] + # res_data = [] + + # for line in f_handle: + # if '[Spectrum]' in line and '[END]' not in line and rflag == 0: + # rflag += 1 + # pass + + # if '[Spectrum]' in line and '[END]' in line : + # rflag = 0 + # pass + + # # 获取时间 + # if rflag == 1 : + # data = line.strip('\n').strip(' ').split('=') + # if data[0].strip() == "DateTime" : + # time_ = data[1].strip() + # rflag += 1 + + # if rflag == 2 and ( '[DATA]' in line or '[Data]' in line ) : + # rflag += 1 + + # if rflag == 3 : + # data = line.strip('\n').strip(' ').split(' ') + + # if int(data[0].strip()) == 0 : + # pass + # else: + # # if data[1] != "-NAN" and data[1] != "NAN" and data[1] != "+NAN" : + + # res.append( float(data[1] ) ) + # if rflag == 3 and '[' in line and ']' in line: + # rflag += 1 + # if rflag == 4: + # # 这个地方 + # # self. __save_absorbance_data( res_time, res, sn ) + # res_time.append( time_ ) + # res_data.append( res ) + # # ?? 可以调用函数直接处理 + # # DealResult.deal_one_data(time_,res) + # res = [] + # rflag = 0 + # # return [['data']] + # pass + + + # def read_data_column( self,fpath, column=1 ): + # column_ = 1 + # if int(column_) : + # column_ = int(column_) + # pass + # else: + # pass + + # with open(fpath, 'r') as f_handle: + # rflag = 0 + # res = [] + # res_time = [] + # res_data = [] + + # for line in f_handle: + # if '[Spectrum]' in line and '[END]' not in line and rflag == 0: + # rflag += 1 + # pass + + # if '[Spectrum]' in line and '[END]' in line : + # rflag = 0 + # pass + + # # 获取时间 + # if rflag == 1 : + # data = line.strip('\n').strip(' ').split('=') + # if data[0].strip() == "DateTime" : + # time_ = data[1].strip() + # rflag += 1 + + # if rflag == 2 and ( '[DATA]' in line or '[Data]' in line ) : + # rflag += 1 + + # if rflag == 3 : + # data = line.strip('\n').strip(' ').split(' ') + + # if int(data[0].strip()) == 0 : + # pass + # else: + # res.append( float(data[column_] ) ) + # if rflag == 3 and '[' in line and ']' in line: + # rflag += 1 + # if rflag == 4: + # # 这个地方 + # # self. __save_absorbance_data( res_time, res, sn ) + # # res_time.append( time_ ) + # # res_data.append( res ) + # # ?? 可以调用函数直接处理 + # return time_, res + + # # return [['data']] + # pass + + # def read_data_wl( self, fpath ): + # wl = self.read_data_column( fpath, column=0 ) + # pass + + # def get_cal_file(self,sn): + # sn_ = sn + # file_ = {} + # if open( os.path.join( CAL_PATH, "SAM_"+sn_+"ini" ),"r"): + # file_ = { + # "type": "SAM", + # "back":"Back_SAM_", + # "cal":"Cal_SAM_", + # "calaq":"CalAQ_SAM_", + # "ini":"SAM_", #ini + # "immersion":"immersion_factors_Lu.DAT" + # } + # return file_ + # if open( os.path.join( CAL_PATH, "SAMIP_"+ sn_ +"_ALL.ini" ),"r"): + # file_ = { + # "type": "SAMIP", + # # "back":"Back_SAM_" + sn_ + CAL_EXT_NAME, + # # "cal":"Cal_SAM_" + sn_ + CAL_EXT_NAME, + # # "calaq":"CalAQ_SAM_" + sn_ + CAL_EXT_NAME, + # "ini":"SAMIP_"+sn+"_ALL.ini", #ini + # "immersion":"immersion_factors_Lu.DAT" + # } + # if file_['ini'] : + # samsn = self.read_ini(file_['ini'], "SAMSN") + # file_.update("cal", "Cal_SAM_" + samsn + CAL_EXT_NAME) + # file_.update("calaq", "CalAQ_SAM_" + samsn + CAL_EXT_NAME) + # file_.update("back", "Back_SAM_" + samsn + CAL_EXT_NAME) + # return file_ + # return + + # def read_cal(self,sn): + # # SAM SAMIP 不同 + # self.cal_data= {} + # # 1. 依据序列号读 ini, 判读是否有文件 SAM_8578.ini SAMIP_50BB_ALL.ini + # self.calfile = self.get_cal_file(sn) # 其中sam的是错误的 + + # # 2 读ini 文件错误 + + # cal_data = {} + # for key in self.calfile: + # if key == "immersion" : + # path_ = os.path.join( CAL_PATH, self.calfile[key] ) + # content_ = [self.read_data_column( path_, column=0 )[1]] + # content_.append( self.read_data_column( path_, column=0 )[1] ) + # cal_data.update({key:content_}) + + # if key == "cal" : + + # path_ = os.path.join( CAL_PATH, self.calfile[key] ) + # content_ = self.read_data_column( path_, column=0 ) + # cal_data.update({key:content_}) + + # if key == "back" : + # path_ = os.path.join( CAL_PATH, self.calfile[key] ) + # content_ = self.read_data_column( path_, column=0 ) + # cal_data.update({key:content_}) + + # if key == "calaq" : + # path_ = os.path.join( CAL_PATH, self.calfile[key] ) + # content_ = self.read_data_column( path_, column=0 ) + # cal_data.update({key:content_}) + + # if key == "ini" : + # cal_data.update({ "samcal" : self.read_ini( os.path.join( CAL_PATH, self.calfile[key] ), "SAMCAL" ) }) + # cal_data.update({ "ipcal" : self.read_ini( os.path.join( CAL_PATH, self.calfile[key] ), "IPCAL" ) }) + + # pass + + # DealResult.deal_cal(cal_data) + + # pass + + # def read_data(self,fname,lst): + # """ + # @description : 线程守护读取数据文件 ,循环读取 + # 考虑一次读取多组,只读一列的情况 + # sn ,begin,end, 指定读的列 + # 返回:[ [[第一组时间],[第二组时间] .... ], [ [第一组data],[第二组data] ...] ] + # RAMSES 要考虑 : InclX = -6.42, InclY = -6.5625 , Pressure = 6.61394049205538 + # 需要读一组波长出来 + # """ + # log.info( ":::::::::::: Class : %s -> Function :__read_data " % ( __name__, ) ) + # log.info( " __read_data : lst %s" % ( lst, ) ) + # sn = lst[0] + # begin = lst[1] + # end = lst[2] + # column = lst[3] + # samip_sn= lst[4] + + # # 检查 sn--- 不检查sn ,读数据就 成csv + + # # 读取一组数据的0列作为波长??? + + # # if is_sn_ok : + + # log.info( "正在处理文件 .... " + fname ) + # with open(fname, 'r') as f_handle: + # time_ = "" + # rflag = 0 + # intlx = 0.0 + # intly = 0.0 + # pressure = 0.0 + # res = [] + # res_time = [] + # res_data = [] + + # for line in f_handle: + # if rflag == 0 and '[Spectrum]' in line and '[END]' not in line : + # rflag += 1 + # pass + + # if '[Spectrum]' in line and '[END]' in line : + # rflag = 0 + # pass + + # # 获取时间, InclX, InclY ,Pressure + # if rflag == 1 : + # data = line.strip('\n').strip(' ').split('=') + # if data[0].strip() == "DateTime" : + # time_ = data[1].strip() + # rflag += 1 + # # InclX, InclY ,Pressure + + # if rflag == 2: + # data = line.strip('\n').strip(' ').split('=') + + # if data[0].strip() == "InclX" : + # intlx = data[1].strip() + + # if data[0].strip() == "InclY" : + # intly = data[1].strip() + + # if data[0].strip() == "Pressure" : + # pressure = data[1].strip() + + + # # DATA set 结束添加数据 + # if rflag == 4 and '[DATA]' in line and '[END]' in line: + # # time.sleep(10) + # res_time.append( [time_,intlx,intly,pressure] ) + # res_data.append( res ) + # res = [] + # rflag += 1 + + # if rflag == 3 : + # data = line.strip('\n').strip(' ').split(' ') + # # print("rflag %s +++++++++++++++++++++++++++++++++ %s" %(rflag,data) ) + # if data[0] != "0" and data[1] != "-NAN" and data[1] != "NAN" and data[1] != "+NAN" : #去掉第一行 0, 对应的积分时间 2^(n+1) + # # print("append %s -- %s" %(data[0],data[1]) ) + # res.append( float( data[column-1] ) ) + # if data[0] != "0" and float(data[0]) > 950 : + # # print("> 950... %s %s" %(data[0],data[1]) ) + # rflag += 1 + + # # 处理data 部分 + # if rflag == 2 and '[DATA]' in line and '[END]' not in line: + # # print("rflag %s +++++++++++++++++++++++++++++++++ data+1 " %(rflag,) ) + # rflag += 1 + + + # if rflag == 5: + # DealResult.deal_ramses_data(time_, [[intlx,intly,pressure], res]) + # # 这个地方 + # # self. __save_absorbance_data( res_time, res, sn ) + # # print("rflag 4 ......................") + # # res_time.append( [time_,intlx,intly,pressure] ) + # # print(" append time %s " %res_time) + # # res_data.append( res ) + # res = [] + # rflag = 0 + # intlx = 0.0 + # intly =0.0 + # pressure =0.0 + # # else: + # # return [] + + # log.info( "已经转换完文件,正在保存... " + fname ) + + # # 分析处理数据,还是返回原始数据 或空 ?? + # log.info( " Function :__read_data %s - %s " % ( res_time[0] ,res_data[0] ) ) + + + # # # 光强保存文件路径 + # # fpath = os.path.join(INTENSITY_PATH, samip_sn + SAVE_EXT_NAME ) + # # fpath_IP = os.path.join(INTENSITY_PATH, samip_sn + "_IP" + SAVE_EXT_NAME ) + + # # for i in range ( len(res_time) ) : + # # # print("1111111111..............%s %s " %(res_time[i],res_time[i][0]) ) + # # # time.sleep(2) + # # ProcessFile.save_time_list( str(res_time[i][0]) , res_data[i], TOKEN, fpath ) + # # # 不是samip 不保存 IP 文件 + # # if sn != samip_sn: + # # ProcessFile.save_time_list( str(res_time[i][0]) , res_time[i][1:], TOKEN, fpath_IP ) + + + # # log.info( "保存结束 ... " + fname ) + + # # 返回 ok 表示文件处理结束 + # return + # pass + + # def read_ini(self,fname ,type_): + # """ + # @description : 三个不同任务, SAM SN, SAM ATTR, IP ATTR + # 分别记为 SAMSN SAMCAL IPCAL + # """ + # log.info( " RAMSES __read_ini -> lst -> %s " % type_) + # typ = type_ + # data = [] + + # if typ == "SAMSN" : + + # with open(fname, 'r') as f_handle: + # for line in f_handle: + # # IDDevice = SAM_85AF + # ln = line.strip('\n').strip(' ').split('=') + # if ln[0].strip() == "IDDevice" : + # if ln[1].strip().split('_')[0] =="SAM" : + # return ln[1].strip().split('_')[1] + # pass + + # if typ == "SAMCAL" : + # samcal= {} + # with open(fname, 'r') as f_handle: + # flag = 0 + # for line in f_handle: + # # IDDevice = SAM_85AF + # line_ = line.strip('\n').strip(' ').split('=') + # if flag == 0 and line_[0].strip() == "IDDevice" : + # if line_[1].strip().split('_')[0] =="SAM" : + # samcal["SAMSN"] = line_[1].strip().split('_')[1] + # flag += 1 + + # if flag == 2 and "[END]" in line: + # flag += 1 + + # if flag == 2: + # # print(" 1 %s %s %s" % (fname,line_[0],line_[1])) + # samcal[line_[0]] = line_[1] + + # if flag == 1 and line_[0].strip() == "[ATTRIBUTES]" : + # flag += 1 + + # if flag == 2 and "[END]" in line: + # flag += 1 + + # return samcal + + # pass + + # if typ == "IPCAL" : + # ipcal= {} + # with open(fname, 'r') as f_handle: + # flag = 0 + # for line in f_handle: + # # IDDevice = SAM_85AF + # ln = line.strip('\n').strip(' ').split('=') + + # if flag == 0 and ln[0].strip() == "IDDevice" : + # if ln[1].strip().split('_')[0] =="IP" : + # ipcal["IPSN"] = ln[1].strip().split('_')[1] + # flag += 1 + + # if flag == 2 and "[END]" in line: + # flag += 1 + + # if flag == 2: + # ipcal[ln[0]] = ln[1] + + # if flag == 1 and ln[0].strip() == "[ATTRIBUTES]" : + # flag += 1 + + # return ipcal + + # return + # pass + + # def read_raw( self, fname , lst, uiraw): + # """ + # @description : 三个不同任务, SAM SN, SAM ATTR, IP ATTR + # 对波长进行标定处理 + # 并存入文件 + # λ(N) = C0s + C1s·N + C2s· N2 + C3s·N3 + # """ + + # sep = uiraw["1"] + # air_water = int(uiraw["2"]) + + # with open(fname, 'r') as f_handle: + # sn = "" + # wl = "" + # is_samip = 0 + # # data = data[2:] + # # cal_data = lst[sn] + # wl_cal = [] + # cal_data = [] + # intg_time = 128 + # ip_cal = [] + # cal = [] + # calaq = [] + # b0 = [] + # b1 = [] + + # for line in f_handle: + # data = line.split(",") + # sn_d = data[0] + + # if sn_d != sn : + # sn = sn_d + # intg_time = int( data[1] ) + # cal_data = lst[sn] + # # 判断sam SAMIP + # if cal_data[0][0] != cal_data[0][1] : + # is_samip = 1 + + # wl_cal = cal_data[1] + # ip_cal = cal_data[2] + + # if air_water == 1 : + # cal = cal_data[3] + # else: + # cal = cal_data[2] + + # b0 = cal_data[4] + # b1 = cal_data[5] + + # for i in range(1,256): + # temp = float(wl_cal["C0s"]) + \ + # float(wl_cal["C1s"]) * i + \ + # float(wl_cal["C2s"]) * i * i + \ + # float(wl_cal["C3s"]) * i *i *i + # wl.append(temp) + + + + # # 处理数据 + # data = data[2:] + # intensity = [] + # Cn = [] + + # for i in range( 255 ): + # # NAN 为 0 + # # if cal[i] = "+NAN": + # # intensity.append(0) + # # else: + # Mn = data[i] / 65535 + # Bn = float( b0[i] ) + float( b1[i] ) * intg_time / 8192 #积分时间比 + # Cn.append(Bn - Mn) + + # offset = 0 # DarkPixelStart = 237 DarkPixelStop = 254的平均值. 数组中236-254 + # for i in range( int( wl_cal['DarkPixelStart']) -1 , int( wl_cal['DarkPixelStop']) ): + # offset = offset + float( Cn[i] ) + # offset = offset/ ( int( wl_cal['DarkPixelStop']) - int( wl_cal['DarkPixelStart']) +1 ) + + # for i in range( 255 ): + # Dn = Cn[i] - offset + # En = 8192 * Dn / intg_time + + # # ???? Sn 来自 cal calaq 文件的部分 + # Sn = cal[i] + # intensity.append( En / Sn ) + + # # 还需要处理传感器的 IP + # if is_samip : + # # ip 数据过来后的格式 + # pass + + # return intensity + + # # 数据分别写到文件 diff --git a/retrieve.yml b/retrieve.yml index ba0f0ee..5e22497 100644 --- a/retrieve.yml +++ b/retrieve.yml @@ -1,3 +1,5 @@ +LineBegin: 1 +LineInterval: 1 beginWL: 350 endWL: 950 interval: 1 diff --git a/tools/__init__.py b/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tools/myexception.py b/tools/myexception.py new file mode 100644 index 0000000..1b526c0 --- /dev/null +++ b/tools/myexception.py @@ -0,0 +1,11 @@ +class TCPIPException(Exception): + def __init__(self, message="TCPIP 自定义异常"): + self.message = "TCPIP exception : " + message + +class SerialException(Exception): + def __init__(self, message="Serial 自定义异常"): + self.message = "serial exception : " + message + +class MyException(Exception): + def __init__(self, message=" 自定义异常"): + self.message = "自定义异常: " + message \ No newline at end of file diff --git a/tools/mylogger.py b/tools/mylogger.py new file mode 100644 index 0000000..9c85ec9 --- /dev/null +++ b/tools/mylogger.py @@ -0,0 +1,285 @@ +# coding=utf-8 +''' +单例模式日志 -- 使用一次关闭 handler +这种方法优缺点: +缺点: 输出的format 需要自己定义 ,并过滤 + 过滤要看是否以什么开头,或包含什么 +优点: 不占用文件资源,占用系统资源小 +调用 log.info( ) log.error() +''' + +import logging +import logging.handlers +import os +import time +import threading +# from config import LOG_PATH,LOG_LEVEL,LOG_ENABLED,LOG_FORMAT, \ +# LOG_TO_CONSOLE,LOG_TO_FILE + +MY_LOGGER_NAME = "DefaultLogger" +LOG_ENABLED = True # 是否启用日志 +LOG_TO_CONSOLE = True # 是否启用控制台输出日志 +LOG_TO_FILE = False # 是否启用文件输出 +LOG_COLOR_ENABLE = True # 是否启用颜色日志 + +LOGGER_DIR = "logs" +LOGGER_PATH = os.path.join( os.path.dirname(__file__), LOGGER_DIR ) +LOGGER_FILENAME = os.path.join( LOGGER_PATH, 'logs.log' ) + +""" +logging.INFO , logging.DEBUG , logging.WARNING , logging.ERROR , +""" +LOG_LEVEL = logging.INFO # 日志等级DEBUG INFO WARNIG ERROR +# LOG_LEVEL = logging.DEBUG +# LOG_LEVEL = logging.WARNING + +""" +# LOG_FORMAT = " %(name)s - %(module)s - %(filename)s - %(lineno)d | %(levelname)s : %(message)s" +# LOG_FORMAT = "%(levelname)s - %(asctime)s - process: %(process)d - threadname: %(thread)s " \ +# "- %(filename)s - %(funcName)s - %(lineno)d - %(module)s " \ +# "- %(message)s " +# LOG_FORMAT = "%(asctime)s - %(thread)s " \ +# "- %(levelname)s ::: %(message)s " +# '[%(asctime)s] |%(thread)s| %(levelname)-6s: %(message)s' +# fm = '%(levelname):%(levelno)s:%(name)s:%(funcName)s:%(asctime):%(pathname):%(filename):%(module):%(thread):%(threadName)' +# 此处日志颜色,修改日志颜色是通过 Filter实现的 +""" +LOG_FORMAT = '%(levelname)s\t[%(asctime)s] %(package)s:%(classname)s:%(funcname)s \t>> %(message)s' + +""" +# 此处日志颜色,修改日志颜色是通过 Filter实现的 +""" +LOG_FORMAT_COLOR_DICT = { + 'ERROR' : "\033[31mERROR\033[0m", + 'INFO' : "\033[36mINFO\033[0m", + 'DEBUG' : "\033[1mDEBUG\033[0m", + 'WARN' : "\033[33mWARN\033[0m", + 'WARNING' : "\033[33mWARNING\033[0m", + 'CRITICAL': "\033[35mCRITICAL\033[0m", +} + +""" +# Filter 用法, 以package class function 过滤 __package__ __class__ +# log.error( f"{__package__}::{__class__.__name__}::{sys._getframe().f_code.co_name} >> ") +# log.error( f"PacakgeName::ClassName::FunctionName:: ") +# LOGGER_FILTER_PACKAGE=[] 为空, 则Filter不起作用 +# 不为空,则只显示定义的报名 +# LOGGER_FILTER_CLASS=[] 为空, 则Filter不起作用 +# 不为空,则只显示定义的类或 +# LOGGER_FILTER_FUNCNAME=[] 为空, 则Filter不起作用 +# 不为空,则只显示定义的函数 +""" +# LOGGER_FILTER_PACKAGE = [ "test_logger" ] # 包名,文件名去 .py?? +LOGGER_FILTER_PACKAGE = [ ] +LOGGER_FILTER_CLASS = [ ] # 类名,文件名去 .py?? +# LOGGER_FILTER_CLASS = [ "LogTest" ] +# LOGGER_FILTER_FUNCNAME = [ "test1","test" ] # 函数名 +LOGGER_FILTER_FUNCNAME = [ ] +LOGGER_FILTER_LEVELNAME = [ ] # INFO DEBUG WARNING + +class PackageFilter(logging.Filter): + def __init__(self, filter_word:list = []): + self.filter_word = filter_word + pass + def filter(self, record: logging.LogRecord) -> bool: + if self.filter_word is not None: + return record.package in self.filter_word + +class ClassFilter(logging.Filter): + def __init__(self, filter_word:list = []): + self.filter_word = filter_word + pass + def filter(self, record: logging.LogRecord) -> bool: + if self.filter_word is not None: + return record.classname in self.filter_word + + pass + +class FunctionFilter(logging.Filter): + def __init__(self, filter_word:list = []): + self.filter_word = filter_word + pass + def filter(self, record:logging.LogRecord) -> bool: + if self.filter_word is not None: + return record.funcname in self.filter_word + +class LevelNameFilter(logging.Filter): + def __init__(self, filter_word:list = []): + self.filter_word = filter_word + pass + def filter(self, record:logging.LogRecord) -> bool: + if self.filter_word is not None: + return record.levelname in self.filter_word + +class ColorFilter(logging.Filter): + def __init__(self,): + pass + def filter(self, record: logging.LogRecord) -> bool: + record.levelname = LOG_FORMAT_COLOR_DICT.get(record.levelname) + return True + +class Log(object): + _instance_lock = threading.Lock() + + def __new__(cls, *args, **kwargs): + if not hasattr(Log, "_instance"): + with Log._instance_lock: + if not hasattr(Log, "_instance"): + Log._instance = object.__new__(cls) + return Log._instance + + def __init__(self, loggername = "DefaultLog" ): + # 文件命名 os.path.join(): 将多个路径组合后返回 + self.logger_filepath = LOGGER_FILENAME + self.loggername = loggername + self.level = LOG_LEVEL + + # 日志输出格式 + fm = LOG_FORMAT + self.formatter = logging.Formatter( fm ) + + # 生成记录器对象 + self.logger = logging.getLogger( self.loggername ) + self.logger.setLevel(LOG_LEVEL) + + # 日志过滤 + self.__add_filter() + + def __console(self, level, message, extra={} ): + # 添加 handler + self.__add_handler() + + # 判断日志级别 + if level == logging.INFO: + self.logger.info( message, extra=extra) + elif level == logging.DEBUG: + self.logger.debug(message,extra=extra) + elif level == logging.WARNING: + self.logger.warning(message,extra=extra) + elif level == logging.ERROR: + self.logger.error(message,extra=extra) + + # removeHandler在记录日志之后移除句柄,避免日志输出重复问题 + self.__remove_handler() + # if LOG_TO_FILE and self.file_handler: + # self.logger.removeHandler(self.file_handler) + # # 关闭打开的文件 + # self.file_handler.close() + # if LOG_TO_CONSOLE and self.stream_handler: + # self.logger.removeHandler(self.stream_handler) + # # 关闭打开的文件 + # self.stream_handler.close() + pass + + # debug < info< warning< error< critical + # debug模式 + def debug(self, message, package="Unknown", classname="Unknown", funcname="Unknown" ): + self.__console(logging.DEBUG, message, extra={"package":package, "classname":classname, "funcname":funcname} ) + # self.__remove_handler() + # info模式 + def info(self, message, package="Unknown", classname="Unknown", funcname="Unknown" ): + self.__console(logging.INFO, message, extra={"package":package, "classname":classname, "funcname":funcname} ) + # self.__remove_handler() + # warning模式 + def warning(self, message, package="Unknown", classname="Unknown", funcname="Unknown"): + self.__console(logging.WARNING, message, extra={"package":package, "classname":classname, "funcname":funcname} ) + # self.__remove_handler() + + # error模式 + def error(self, message, package="Unknown", classname="Unknown", funcname="Unknown"): + self.__console(logging.ERROR, message, extra={"package":package, "classname":classname, "funcname":funcname} ) + # self.__remove_handler() + + def __add_filter(self ): + if len( LOGGER_FILTER_PACKAGE ) > 0 : + self.logger.addFilter( PackageFilter( filter_word=LOGGER_FILTER_PACKAGE ) ) + if len( LOGGER_FILTER_CLASS ) > 0 : + self.logger.addFilter( ClassFilter( filter_word=LOGGER_FILTER_CLASS ) ) + if len( LOGGER_FILTER_FUNCNAME ) > 0 : + self.logger.addFilter( FunctionFilter( filter_word=LOGGER_FILTER_FUNCNAME ) ) + if len(LOGGER_FILTER_LEVELNAME) > 0 : + self.logger.addFilter( LevelNameFilter( filter_word=LOGGER_FILTER_LEVELNAME ) ) + + def __add_handler(self ): + if LOG_ENABLED and LOG_TO_FILE: + # 考虑使用 RotatingFileHandler TimedRotatingFileHandler防止日志过大 + # RotatingFileHandler("test", "a", 4096, 2, "utf-8") + # TimedRotatingFileHandler(filename=LOG_PATH+"thread_", when="D", interval=1, backupCount=7) + self.file_handler = logging.handlers.TimedRotatingFileHandler(filename=self.logger_filepath, when='D', interval=1, backupCount=30, encoding='utf-8') + # self.file_handler = logging.FileHandler( self.logger_filepath, encoding='utf-8' ) + self.file_handler.setFormatter( self.formatter ) + # self.file_handler.setLevel( LOG_LEVEL ) + # if LOG_COLOR_ENABLE: # 文件日志无需加彩色 + # self.file_handler.addFilter( ColorFilter( ) ) + self.logger.addHandler(self.file_handler) + + if LOG_ENABLED and LOG_TO_CONSOLE: + # 创建一个StreamHandler,用于输出到控制台 + + self.stream_handler = logging.StreamHandler() + self.stream_handler.setFormatter(self.formatter) + # self.stream_handler.setLevel( LOG_LEVEL ) + if LOG_COLOR_ENABLE: + self.stream_handler.addFilter( ColorFilter( ) ) + self.logger.addHandler(self.stream_handler) + + def __remove_handler(self ): + if LOG_TO_FILE and self.file_handler: + self.logger.removeHandler(self.file_handler) + if len(self.logger.handlers)>0: + self.logger.handlers.pop() + # 关闭打开的文件 + self.file_handler.close() + if LOG_TO_CONSOLE and self.stream_handler: + self.logger.removeHandler(self.stream_handler) + if len(self.logger.handlers)>0: + self.logger.handlers.pop() + # 关闭控制台 + self.stream_handler.close() + + def __remove_handler2(self ): + if LOG_ENABLED and LOG_TO_CONSOLE: + self.logger.removeHandler(self.stream_handler) + self.logger.handlers.pop() + # 关闭控制台 + self.stream_handler.close() + if LOG_ENABLED and LOG_TO_FILE: + self.logger.removeHandler(self.file_handler) + self.logger.handlers.pop() + # 关闭打开的文件 + self.file_handler.close() + + +log = Log( loggername = "DefaultLog") + +""" +filename: 指定日志文件名 +filemode: 和file函数意义相同,指定日志文件的打开模式,’w’或’a’ +format: 指定输出的格式和内容,format可以输出很多有用信息。显示的条目可以是以下内容: +%(levelname): 日志级别的名字格式 +%(levelno)s: 日志级别的数字表示 +%(name)s: 日志名字 loggername +%(funcName)s: 函数名字 +%(asctime): 日志时间,可以使用datefmt去定义时间格式,如上图。 +%(pathname): 脚本的绝对路径 +%(filename): 脚本的名字 +%(module): 模块的名字 +%(thread): thread id +%(threadName): 线程的名字 +""" + +""" +文件名行号 函数名, 要在调用的时候想办法了 +# 绝对路径 +print( __file__ ) +print( sys.argv[0] ) + +# 文件名 +print( os.path.basename(__file__) ) +print( os.path.basename(sys.argv[0]) ) + +self.__class__.__name__ +self.__class__.__name__, get_current_function_name() + +logger名 __name__ +""" \ No newline at end of file diff --git a/tools/mypath.py b/tools/mypath.py new file mode 100644 index 0000000..b8f1064 --- /dev/null +++ b/tools/mypath.py @@ -0,0 +1,265 @@ +from pathlib import PurePath, Path + +# from myconfig import NEWLINE,TOKEN,SEPARATOR +""" +""" +class MyDir(object): + """ + 操作方法:设置base tuple_dir header + 设置的是路径, 文件名要 ifNotNewFile 传入 + """ + + def __init__(self) -> None: + self.base_dir = Path() + self.dir_tuple = () + self.header = [] + self.header_str = "" + self.content = [] + self.content_str = "" + self.current_dir = None + self.current_filepath = None + pass + + def getDir(self,): + return self.current_dir + pass + + def setBaseDir(self, dir: Path): + self.base_dir = dir + self.current_dir = self.base_dir + pass + + def setDir(self, t:tuple=()): + self.dir_tuple = t + if len(self.dir_tuple) == 0 : + self.current_dir = self.base_dir + else: + self.current_dir = self.base_dir.joinpath( *t ) + pass + + def getDirFromBaseAndTuple(self, base_dir:Path, dir_tuple: tuple): + '''外部调用返回路径''' + ret_path = base_dir + t = dir_tuple + if len(t) == 0 : + ret_path = ret_path + else: + ret_path = ret_path.joinpath( *t ) + return ret_path + pass + + def setHeader(self, headerlist:list, headerSeperator: str = ";", headerinfo: str = None): + header_str = "" + if len(headerlist) == 0: + return + if headerinfo != None: + header_str = headerinfo + headerSeperator + for hl in headerlist: + header_str = header_str + str(hl) + headerSeperator + self.header_str = header_str[:-1] + pass + + def setContent(self, contentlist: list, contentSeperator: str = ";", contentinfo: str = None): + content_str = "" + if len(contentlist) == 0: + return + if contentinfo != None: + content_str = contentinfo + contentSeperator + tmp_str = "" + for cl in contentlist: + tmp_str = tmp_str + str(cl) + contentSeperator + self.content_str = content_str + tmp_str[:-1] + pass + + def newDirIfNot(self,) -> None: + # self.current_path = self.base_path.joinpath(self.path_tuple) + self.current_dir.mkdir(parents=True, exist_ok=True) + pass + + def newFileIfNot(self, fname: str) -> None: + self.newDirIfNot() + self.current_filepath = self.current_dir.joinpath(fname) + if not self.current_filepath.exists(): + with open(self.current_filepath, 'a') as f: + pass + return + pass + + def getCurrentFileSize(self,): + return self.current_filepath.stat().st_size + + def getFirstline(self,): + first_line = "" + with open(self.current_filepath, 'r') as f: # 打开文件 + first_line = f.readline() # 取第一行 + return first_line.strip('\n').strip('\r') + + def checkHeader(self,) -> int: + ''' + 返回: + 0 : 文件为空,可以直接写header + 1 : header对应上 无需处理 + -1: 需要提醒用户保存数据后,删除文件后再处理 + ''' + if self.getCurrentFileSize() == 0: + return 0 + first_line = self.getFirstline() + # print(f"firstline: {first_line}" ) + # print(f"header_str: {self.header_str}" ) + if first_line == self.header_str: + return 1 + return -1 + pass + + def writeHeader(self,) -> None: + with open(self.current_filepath, "a") as f: + f.write(self.header_str) + return None + pass + + def writeContent(self,new_line="\n") -> None: + with open(self.current_filepath, "a") as f: + f.write(new_line+self.content_str) + return None + pass + + def is_dir_empty(self, ): + '''文件夹是否为空''' + has_next = next(self.current_dir.iterdir(), None) + if has_next is None: + return True + return False + + def is_file_empty(self,): + '''文件是否为空''' + if self.current_dir.stat().st_size ==0: + return True + return False + + def deleteDir(self,): + '''文件夹是否为空''' + try: + if self.current_dir.exists(): + self.current_dir.rmdir() + except OSError as e: + raise Exception(e) + return True + + ## 其他需求 + def get_child_dir(self,) -> list: + ret = [] + tmp_dir = self.current_dir.glob("**/") + for td in tmp_dir: + if td.is_dir(): + ret.append(td.relative_to(self.current_dir)) + return ret + pass + + def get_child_dir_only(self,) -> list: + ret = [] + for d in self.current_dir.iterdir(): + if d.is_dir(): + ret.append(d.relative_to(self.current_dir)) + return ret + pass + + def get_files_from_currentdir(self, fmt:str="*/*" ) -> list: + '''fmt: * */* */*/*''' + ret = [] + tmp_dir = self.current_dir.glob(fmt) + print(tmp_dir) + for td in tmp_dir: + if td.is_file(): + ret.append(td) + return ret + pass + + def sort_dir_and_check( self, dirs:list ): + '''相对目录排序,目录最后一级''' + ret = [] + if len(dirs) == 0: + return ret + tmp = {} + tmp_lst = [] + for d in dirs: + last:str = d.parts[-1] + if last.isdigit() : + tmp.update( {last:d} ) + tmp_lst.append(int(last)) + pass + + tmp_lst.sort() + for t in tmp: + ret.append(tmp.get(str(t))) + pass + return ret + + + def sort_filepath_and_check(self, path_files:list): + '''相对目录排序,目录最后一级''' + ret = [] + if len(path_files) == 0: + return ret + tmp = {} + tmp_lst = [] + for d in path_files: + last:str = d.stem + if last.isdigit() : + tmp.update( {last:d} ) + tmp_lst.append(int(last)) + pass + + tmp_lst.sort() + for t in tmp: + ret.append(tmp.get(str(t))) + pass + return ret + + def group_and_sort_filepath(self,path_files:list): + ret = {} + # dirs_lst = [] + # len_files = len(path_files) + # if len_files == 0: + # return False + # for pf in path_files: + # pf_dir:str = pf.parts[-2] + # if pf_dir.isdigit() and int(pf_dir) not in dirs_lst: + # dirs_lst.append( int(pf_dir) ) + # dirs_lst.sort() + + + + + def check_dirs(self, dirs:list, begin:int =0, step:int=1): + '''检查目录是否从begin开始递增''' + len_dirs = len(dirs) + if len_dirs == 0: + return False + for i in range(begin,len_dirs,step) : + if dirs[i].parts[-1] != str(i) : + return False + return True + + def check_path_files(self,path_files:list,begin:int =0, step:int=1): + '''检查文件名从begin开始递增''' + len_files = len(path_files) + if len_files == 0: + return False + for i in range(begin,len_files,step) : + if path_files[i].stem != str(i) : + return False + return True + +if __name__ == "__main__": + mp = MyDir() + mp.setBaseDir(Path()) + print(mp.current_dir) + # t = ("test_dir","1","11") + t = ("test_dir", ) + mp.setDir( t ) + print(mp.current_dir) + + cd = mp.get_child_dir_only() + c = mp.sort_dir_and_check(cd) + print(cd ) + print(c ) diff --git a/tools/mytime.py b/tools/mytime.py new file mode 100644 index 0000000..3481cf8 --- /dev/null +++ b/tools/mytime.py @@ -0,0 +1,66 @@ +from datetime import datetime, timedelta +# import locale +# locale.setlocale(locale.LC_ALL, '') + +TIME_STR = "2022-06-10 16:16:16" +STD_TIME_STR_FMT = "%Y-%m-%d %H:%M:%S" # 小写y是两位年份 +CUR_TIME_STR_FMT = "%Y-%m-%d %H:%M:%S" + + +class MyTime(object): + """ + 操作方法:设置base tuple_path header + """ + + def __init__(self) -> None: + self.cur_time_str_fmt = "%Y-%m-%d %H:%M:%S" + self.std_time_str_fmt = "%Y-%m-%d %H:%M:%S" + self.cur_time_str = "" + self.std_time_str = "" + self.cur_datetime = "" + pass + + def setCurrentTimeStrFmt(self, s): + self.cur_time_str_fmt = s + pass + + def setStdTimeStrFmt(self, s): + self.std_time_str_fmt = s + pass + + def setCurrentTimeStr(self, s): + self.cur_time_str = s + self.cur_datetime = datetime.strptime(self.cur_time_str, self.cur_time_str_fmt) + pass + + def setStdTimeStr(self, s): + self.std_time_str = s + self.cur_datetime = datetime.strptime( + self.std_time_str, STD_TIME_STR_FMT) + pass + + def Current2STD(self): + # self.cur_datetime = datetime.strptime(self.cur_time_str , CUR_TIME_STR_FMT) + self.std_time_str = datetime.strftime( + self.cur_datetime, STD_TIME_STR_FMT) + pass + + def STD2Current(self, format: str): + # self.cur_datetime = datetime.strptime(self.std_time_str , STD_TIME_STR_FMT) + self.cur_time_str = datetime.strftime( + self.cur_datetime, CUR_TIME_STR_FMT) + pass + + def timeDelta(self, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0): + self.cur_datetime = self.cur_datetime + \ + timedelta(days=0, seconds=0, microseconds=0, + milliseconds=0, minutes=0, hours=0, weeks=0) + pass + + +if __name__ == "__main__": + s = "2023-02-07 14:02:46" + mt = MyTime() + mt.setCurrentTimeStr(s) + print(mt.cur_datetime) + pass diff --git a/uiconfig/ui_plot_setting.py b/uiconfig/ui_plot_setting.py new file mode 100644 index 0000000..dee0670 --- /dev/null +++ b/uiconfig/ui_plot_setting.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +import wx +# from configobj import ConfigObj +from myconfig import MyConfig +from myconfig import YAML_FILE_NAME + +class UI_Plot_Setting(wx.Dialog): + """ + @description : 绘图 配置 + """ + def __init__(self, parent, id): + # 串口页面配置 + super(UI_Plot_Setting, self).__init__( parent ,id = id ) + self.config = MyConfig() + self.InitUI() + self.SetSize((400, 400)) + self.SetTitle(" 绘图 序列号 ") + + def InitUI(self): + self.config_yml = self.config.read_rtv_yaml() + + self.panel = wx.Panel(self) + self.vbox = wx.BoxSizer(wx.VERTICAL) + + self.sb = wx.StaticBox(self.panel, label='指定绘图设置 ') + self.sbs = wx.StaticBoxSizer(self.sb, orient=wx.VERTICAL) + + self.hbox1 = wx.BoxSizer(wx.HORIZONTAL) + self.staticText1 = wx.StaticText(self.panel, label='起始行号 ',size=(60, -1), style=wx.ALIGN_CENTRE_VERTICAL ) + self.textCtrl1 = wx.TextCtrl(self.panel, value="",size=(250,25) ) + tmp = self.get_str_from_config( "LineBegin" ) + if tmp is not None: + self.textCtrl1.SetValue(tmp) + self.hbox1.Add(self.staticText1, flag=wx.TOP|wx.LEFT, border=5) + self.hbox1.Add(self.textCtrl1, flag=wx.TOP|wx.LEFT, border=5) + self.sbs.Add(self.hbox1, flag=wx.TOP|wx.LEFT, border= 5) + + self.hbox2 = wx.BoxSizer(wx.HORIZONTAL) + self.staticText2 = wx.StaticText(self.panel, label='间隔行号: ' ,size=(60, -1)) + # self.staticText2_1 = wx.StaticText(self.panel, label='分钟 ' ,size=(60, -1)) + self.textCtrl2 = wx.TextCtrl(self.panel, value="",size=(250,25)) + tmp = self.get_str_from_config( "LineInterval" ) + if tmp is not None: + self.textCtrl2.SetValue(tmp) + self.hbox2.Add(self.staticText2, flag=wx.TOP|wx.LEFT, border=5) + self.hbox2.Add(self.textCtrl2,flag=wx.TOP|wx.LEFT, border=5) + # self.hbox2.Add(self.staticText2_1, flag=wx.TOP|wx.LEFT, border=5) + self.sbs.Add(self.hbox2, flag=wx.TOP|wx.LEFT, border=5) + + self.panel.SetSizer(self.sbs) + + self.hbox_0 = wx.BoxSizer(wx.HORIZONTAL) + self.okButton = wx.Button(self, label=u'保存配置') + self.closeButton = wx.Button(self, label='Close') + self.hbox_0.Add(self.okButton) + self.hbox_0.Add(self.closeButton, flag = wx.LEFT, border=5) + + # 添加 vbox 到panel + self.vbox.Add(self.panel, proportion=1, + flag=wx.ALL | wx.EXPAND, border=5) + + self.vbox.Add(self.hbox_0, flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, border=10) + + self.SetSizer(self.vbox) + + self.okButton.Bind(wx.EVT_BUTTON, self.OnSave) + self.closeButton.Bind(wx.EVT_BUTTON, self.OnClose) + + def get_str_from_config( self, key ): + return str(self.config_yml[key]) + pass + + def set_config_by_key_val( self, key, val ): + # print(f" {key} current type {type( self.config_yml[section][key] )}") + if type( self.config_yml [key] ) == int: + self.config_yml [key] = int(val) + elif type( self.config_yml [key] ) == float: + self.config_yml [key] = float(val) + else: + self.config_yml[key] = val + pass + + + def saveData(self, e): + pass + + def OnClose(self, e): + + self.Destroy() + + def OnSave(self, e): + success = True + # 赋值字典,写入文件 + self.set_config_by_key_val( "LineBegin",self.textCtrl1.GetValue( )) + self.set_config_by_key_val( "LineInterval",self.textCtrl2.GetValue( )) + self.config.write_rtv_yaml(self.config_yml) + del self.config + if success: + self.EndModal(wx.ID_OK) \ No newline at end of file diff --git a/uiconfig/uiabout.py b/uiconfig/uiabout.py new file mode 100644 index 0000000..56a33c7 --- /dev/null +++ b/uiconfig/uiabout.py @@ -0,0 +1,60 @@ +import wx + +# 设置串口参数的对话框类 + +class About(wx.Dialog): + + def __init__(self, *args, **kwds): + + # 参数调入后初始化 + super(About, self).__init__(*args, **kwds) + + self.InitUI() + self.SetSize((400, 400)) + self.SetTitle("使用帮助") + + def InitUI(self): + + self.panel = wx.Panel(self) + self.vbox = wx.BoxSizer(wx.VERTICAL) + + self.sb = wx.StaticBox(self.panel, label='使用帮助') + self.sbs = wx.StaticBoxSizer(self.sb, orient=wx.VERTICAL) + + self.hbox1 = wx.BoxSizer(wx.HORIZONTAL) + self.staticText1 = wx.StaticText(self.panel, + label='''\n上海奕枫仪器设备有限公司 +电话: 021-54270075 +网站: http://www.yi-win.com +邮件: sales@yi-win.com ''' ) + self.hbox1.Add(self.staticText1) + self.sbs.Add(self.hbox1) + + + + self.panel.SetSizer(self.sbs) + + self.hbox_0 = wx.BoxSizer(wx.HORIZONTAL) + self.okButton = wx.Button(self, label=u'确认') + self.closeButton = wx.Button(self, label='关闭') + self.hbox_0.Add(self.okButton) + self.hbox_0.Add(self.closeButton, flag=wx.LEFT, border=5) + + self.vbox.Add(self.panel, proportion=1, + flag=wx.ALL | wx.EXPAND, border=5) + self.vbox.Add(self.hbox_0, flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, border=10) + + self.SetSizer(self.vbox) + + self.okButton.Bind(wx.EVT_BUTTON, self.OnSave) + self.closeButton.Bind(wx.EVT_BUTTON, self.OnClose) + + + def saveData(self, e): + pass + + def OnClose(self, e): + self.Destroy() + + def OnSave(self, e): + self.EndModal(wx.ID_OK) \ No newline at end of file diff --git a/uiconfig/uihelp.py b/uiconfig/uihelp.py new file mode 100644 index 0000000..8c7a1c7 --- /dev/null +++ b/uiconfig/uihelp.py @@ -0,0 +1,58 @@ +import wx + +# 设置串口参数的对话框类 + +class Help(wx.Dialog): + + def __init__(self, *args, **kwds): + + # 参数调入后初始化 + super(Help, self).__init__(*args, **kwds) + + self.InitUI() + self.SetSize((400, 400)) + self.SetTitle("使用帮助") + + def InitUI(self): + + self.panel = wx.Panel(self) + self.vbox = wx.BoxSizer(wx.VERTICAL) + + self.sb = wx.StaticBox(self.panel, label='使用帮助') + self.sbs = wx.StaticBoxSizer(self.sb, orient=wx.VERTICAL) + + self.hbox1 = wx.BoxSizer(wx.HORIZONTAL) + self.staticText1 = wx.StaticText(self.panel, + label='''\n上海奕枫仪器设备有限公司 +电话: 021-54270075 +网站: http://www.yi-win.com +邮件: sales@yi-win.com ''' ) + self.hbox1.Add(self.staticText1) + self.sbs.Add(self.hbox1) + + self.panel.SetSizer(self.sbs) + + self.hbox_0 = wx.BoxSizer(wx.HORIZONTAL) + self.okButton = wx.Button(self, label=u'确认') + self.closeButton = wx.Button(self, label='关闭') + self.hbox_0.Add(self.okButton) + self.hbox_0.Add(self.closeButton, flag=wx.LEFT, border=5) + + self.vbox.Add(self.panel, proportion=1, + flag=wx.ALL | wx.EXPAND, border=5) + self.vbox.Add(self.hbox_0, flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, border=10) + + self.SetSizer(self.vbox) + + self.okButton.Bind(wx.EVT_BUTTON, self.OnSave) + self.closeButton.Bind(wx.EVT_BUTTON, self.OnClose) + + + def saveData(self, e): + pass + + def OnClose(self, e): + self.Destroy() + + def OnSave(self, e): + self.EndModal(wx.ID_OK) \ No newline at end of file diff --git a/uiconfig/uisensor.py b/uiconfig/uisensor.py new file mode 100644 index 0000000..a957cc8 --- /dev/null +++ b/uiconfig/uisensor.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +import wx +# from configobj import ConfigObj +from myconfig import MyConfig,RamsesSURFACE +from myconfig import YAML_FILE_NAME + +class UISensor(wx.Dialog): + """ + @description : Sensor 配置 + """ + def __init__(self, parent, id, did): + # 参数调入后初始化 + self.did = did + super(UISensor, self).__init__( parent, id=id ) + self.config = MyConfig() + self.InitUI() + self.SetSize((400, 400)) + self.SetTitle(" 设置页面 串口 采集间隔 ") + + def InitUI(self): + + self.config_sensor = self.config.read_yaml() + # self.sensor = self.config_sensor.get(self.did) + # print(self.config_sensor) + # print(self.sensor) + + self.panel = wx.Panel(self) + self.vbox = wx.BoxSizer(wx.VERTICAL) + + self.sb = wx.StaticBox(self.panel, label='设置页面') + self.sbs = wx.StaticBoxSizer(self.sb, orient=wx.VERTICAL) + + self.hbox1 = wx.BoxSizer(wx.HORIZONTAL) + self.staticText1 = wx.StaticText(self.panel, label='Lsky: ',size=(60, -1), style=wx.ALIGN_CENTRE_VERTICAL ) + self.textCtrl1 = wx.TextCtrl(self.panel, value="",size=(250,25) ) + tmp = self.getSnByDidAndFunc("Lsky",self.did) + if tmp is not None: + self.textCtrl1.SetValue(tmp) + self.hbox1.Add(self.staticText1, flag=wx.TOP|wx.LEFT, border=5) + self.hbox1.Add(self.textCtrl1, flag=wx.TOP|wx.LEFT, border=5) + self.sbs.Add(self.hbox1, flag=wx.TOP|wx.LEFT, border= 5) + + self.hbox2 = wx.BoxSizer(wx.HORIZONTAL) + self.staticText2 = wx.StaticText(self.panel, label='Esky: ' ,size=(60, -1)) + # self.staticText2_1 = wx.StaticText(self.panel, label='分钟 ' ,size=(60, -1)) + self.textCtrl2 = wx.TextCtrl(self.panel, value="",size=(250,25)) + tmp = self.getSnByDidAndFunc("Esky",self.did) + if tmp is not None: + self.textCtrl2.SetValue(tmp) + self.hbox2.Add(self.staticText2, flag=wx.TOP|wx.LEFT, border=5) + self.hbox2.Add(self.textCtrl2,flag=wx.TOP|wx.LEFT, border=5) + # self.hbox2.Add(self.staticText2_1, flag=wx.TOP|wx.LEFT, border=5) + self.sbs.Add(self.hbox2, flag=wx.TOP|wx.LEFT, border=5) + + self.hbox3 = wx.BoxSizer(wx.HORIZONTAL) + self.staticText3 = wx.StaticText(self.panel, label='Lwater: ' ,size=(60, -1)) + # self.staticText3_1 = wx.StaticText(self.panel, label='分钟 ' ,size=(60, -1)) + self.textCtrl3 = wx.TextCtrl(self.panel, value="",size=(250,25)) + tmp = self.getSnByDidAndFunc("Lwater",self.did) + if tmp is not None: + self.textCtrl3.SetValue(tmp) + self.hbox3.Add(self.staticText3, flag=wx.TOP|wx.LEFT, border=5) + self.hbox3.Add(self.textCtrl3,flag=wx.TOP|wx.LEFT, border=5) + # self.hbox3.Add(self.staticText3_1, flag=wx.TOP|wx.LEFT, border=5) + self.sbs.Add(self.hbox3, flag=wx.TOP|wx.LEFT, border=5) + + self.panel.SetSizer(self.sbs) + + self.hbox_0 = wx.BoxSizer(wx.HORIZONTAL) + self.okButton = wx.Button(self, label=u'保存配置') + self.closeButton = wx.Button(self, label='Close') + self.hbox_0.Add(self.okButton) + self.hbox_0.Add(self.closeButton, flag = wx.LEFT, border=5) + + # 添加 vbox 到panel + self.vbox.Add(self.panel, proportion=1, + flag=wx.ALL | wx.EXPAND, border=5) + + self.vbox.Add(self.hbox_0, flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, border=10) + + self.SetSizer(self.vbox) + + self.okButton.Bind(wx.EVT_BUTTON, self.OnSave) + self.closeButton.Bind(wx.EVT_BUTTON, self.OnClose) + + def getSnByDidAndFunc(self,func,did): + temp:dict = self.config_sensor.get(did) + for v in temp.values(): + if v["FUNC"] == func: + return v["SN"] + return None + pass + + def setSnByDidAndFunc(self,func,did,val): + temp:dict = self.config_sensor.get(did) + for k,v in temp.items(): + if v["FUNC"] == func: + temp[k]['SN'] =val + self.config_sensor.update({did:temp}) + + pass + + def saveData(self, e): + pass + + def OnClose(self, e): + + self.Destroy() + + def OnSave(self, e): + success = True + # 赋值字典,写入文件 + self.setSnByDidAndFunc('Lsky',self.did,self.textCtrl1.GetValue( )) + self.setSnByDidAndFunc('Esky',self.did,self.textCtrl2.GetValue( )) + self.setSnByDidAndFunc('Lwater',self.did,self.textCtrl3.GetValue( )) + print(self.textCtrl3.GetValue( )) + + print(self.config_sensor) + self.config.write_yaml(self.config_sensor) + del self.config + + if success: + self.EndModal(wx.ID_OK) \ No newline at end of file diff --git a/yiwinframe.py b/yiwinframe.py new file mode 100644 index 0000000..8b3c4dc --- /dev/null +++ b/yiwinframe.py @@ -0,0 +1,411 @@ +import wx +import os +import time +import threading +from pathlib import PurePath,Path +from pubsub import pub + + +from listctrl import Listctrl +from mypanel import MyPanel,Plot,LineColor + +from uiconfig.uisensor import UISensor +# from uiconfig.uilogging import UILogging + +from uiconfig.uiabout import About +from uiconfig.uihelp import Help +from uiconfig.ui_plot_setting import UI_Plot_Setting + +from myconfig import TOKEN,DeviceType,YAML_FILE_NAME,RETRIEVE_CFG_FILE,DATA_DIR +from myconfig import MyConfig,RamsesFunc +from mythread import Mythead +from configuration import Configuration +# from handheld import HandHeld,HandHeldBuf +from gatherdata import GatherData + +from tools.myexception import MyException +from tools.mylogger import log + +from awrams import AwramsHandle,HandheldHandle + +# -定义菜单ID,关联Event------------------------- +ID_MEASURE = 1 + +ID_SENSOR_SETTING = 11 +ID_LOGGING_SETTING = 12 +ID_CAL_INFO = 13 +ID_DISPLAY_PARA = 14 + +ID_PLOT_LAST = 15 +ID_PLOT_LAST_7 = 16 +ID_PLOT_7 = 17 +ID_PLOT_SETTING = 18 +ID_GATHER_DATA = 19 + +ID_HELP = 21 +ID_ABOUT = 22 + + +class YiwinFrame(wx.Frame): + '''将buf类传进来''' + def __init__(self, title, parent, size=(900, 750)): + self.device_id = 2 + self.device_type = DeviceType.SURFACE.name + self.syscfg = {} + self.sensor_cfg = {} + self.retrieve = {} + self.calinfo_is_ok = False + self.title = title + self.path = PurePath() + # self.save_fname:Path = Path(self.path.joinpath(DATA_FNAME)) + self.result = '' + self.displayData:list =[] + self.interval = 0 + + super(YiwinFrame, self).__init__( parent, title=self.title, size = size ) + + self.BoxSizer = wx.BoxSizer(wx.HORIZONTAL) # 建立一个Boxsizer + self.SetSizer(self.BoxSizer) + self.Centre(wx.BOTH) + + # 建立 listctrl panel 放到BoxSizer + self.listctrl_panel = Listctrl( self ) # 调用自己建立的 Listctrl panel 类 + self.BoxSizer.Add( self.listctrl_panel, proportion =-10, border = 2, flag = wx.ALL | wx.EXPAND) + self.list_ctrl = self.listctrl_panel.list_ctrl + # 隐藏 等待show + self.listctrl_panel.Hide() + + self.mypanel = MyPanel( self ) # 调用自己建立的 Listctrl panel 类 + self.BoxSizer.Add( self.mypanel, proportion =-10, border = 0, flag = wx.ALL | wx.EXPAND) + self.static_text = self.mypanel.staticText1 + # 隐藏 等待show + self.mypanel.Hide() + + self.plotpanel = Plot( self ) # 调用自己建立的 Listctrl panel 类 + self.BoxSizer.Add( self.plotpanel, proportion =-10, border = 0, flag = wx.ALL | wx.EXPAND) + self.plotpanel.set_title_x_y(*self.plotpanel.purewater_legend) + self.plotpanel.Show() + + self.statusBar = self.CreateStatusBar() # 创建状态栏 + self.statusBar.SetFieldsCount(2) # 状态栏分成3个区域 + self.statusBar.SetStatusWidths([-1, -1]) # 区域宽度比列,用负数 + self.statusBar.SetStatusText(u" 等待接收消息......", 0) + + self.__set_menu() # 添加菜单 + self.__attach_events() # 菜单事件 + self.__set_properties() + # self.__read_config() + self.__setTimer() + log.info(f"system init....",__name__, "__init__") + self.mycfg = MyConfig() + # self.hh = HandHeld() + self.mythread = Mythead() + pub.subscribe( self.updateDisplay, "update") + + pass + + def __set_menu(self): + ''' + # 设置菜单 + ''' + self.menubar = wx.MenuBar() + + settingMenu = wx.Menu() + settingMenu.Append(ID_SENSOR_SETTING, u'&设置', '...') + settingMenu.AppendSeparator() + settingMenu.Append(ID_CAL_INFO, u'&获取标定信息', ' ') + settingMenu.AppendSeparator() + settingMenu.Append(ID_MEASURE, u'&处理数据', ' ') + # settingMenu.AppendSeparator() + # settingMenu.Append(ID_LOGGING_SETTING, u'&采集设置', ' ') + self.menubar.Append(settingMenu, u'&系统 ') + + plotMenu = wx.Menu() + plotMenu.Append(ID_PLOT_LAST, u'&最后一条', '...') + plotMenu.AppendSeparator() + plotMenu.Append(ID_PLOT_LAST_7, u'&最后七条', ' ') + plotMenu.AppendSeparator() + plotMenu.Append(ID_PLOT_7, u'&指定七条', ' ') + plotMenu.AppendSeparator() + plotMenu.Append(ID_PLOT_SETTING, u'&指定设置', ' ') + plotMenu.AppendSeparator() + plotMenu.Append(ID_GATHER_DATA, u'&汇总数据', ' ') + self.menubar.Append(plotMenu, u'&绘图 ') + + aboutMenu = wx.Menu() + aboutMenu.Append(ID_HELP, u'&帮助', 'help...') + aboutMenu.AppendSeparator() + aboutMenu.Append(ID_ABOUT, u'&关于我们', '关于我们...') + self.menubar.Append(aboutMenu, u'&帮助 ') + + self.SetMenuBar(self.menubar) + pass + + def __set_properties(self): + self.SetSize((800, 600)) + # self.SetTitle(u'传感器数据采集--上海奕枫仪器设备有限公司') + self.Centre() + + def __attach_events(self): + ''' + # 绑定菜单事件 + ''' + self.Bind(wx.EVT_MENU, self.OnSensorSetting, id=ID_SENSOR_SETTING ) + self.Bind(wx.EVT_MENU, self.OnCalInfo, id=ID_CAL_INFO ) + # self.Bind(wx.EVT_MENU, self.OnStart, id=ID_MEASURE) + self.Bind(wx.EVT_MENU, self.OnDealData, id=ID_MEASURE) + # self.Bind(wx.EVT_MENU, self.OnLoggingSetting, id=ID_LOGGING_SETTING) + + self.Bind(wx.EVT_MENU, self.OnPlotLast, id=ID_PLOT_LAST ) + self.Bind(wx.EVT_MENU, self.OnPlotLast7, id=ID_PLOT_LAST_7 ) + self.Bind(wx.EVT_MENU, self.OnPlot7, id=ID_PLOT_7) + self.Bind(wx.EVT_MENU, self.OnPlotSetting, id=ID_PLOT_SETTING) + self.Bind(wx.EVT_MENU, self.OnGatherData, id=ID_GATHER_DATA) + + self.Bind(wx.EVT_MENU, self.OnHelpConfig, id=ID_HELP) + self.Bind(wx.EVT_MENU, self.OnAboutConfig, id=ID_ABOUT) + pass + + def __setTimer(self): + self.timer = wx.Timer(self) #创建定时器,菜单以后 + self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer) #绑定一个定时器事件 + pass + + def updateDisplay(self, msg): + log.warning(f" updateDisplay 。。 {msg['data']}") + if msg['flag'] == "notice": + self.__update_notice(msg['data']) + pass + if msg['flag'] == "data": + # log.info(f" ... update .{msg['data']}........... " ) + self.__update_data(msg['data']) + pass + pass + + def __update_notice(self,msg): + log.info(f" .......{msg}... ",__name__,'__update_notice') + self.alterStatus_0( msg) + # self.popDialog( msg ) + pass + + def __update_data(self,data ): + log.info(f" .......... ", __name__, '__update_data') + self.plotpanel.set_axes_title( data[0]) + self.plotpanel.clear_past() + self.plotpanel.plot_one( "Rs", data[1], data[2], color= LineColor(1).name ) + + + def OnStart( self, event ): + log.info(f"OnStart....interval: {self.interval} min, port: {self.port}") + # self.m = SerialThread() + interval_ms = int(self.interval) * 10 * 1000 + self.timer.Start( interval_ms ) + + def OnStop( self ,event ): + # self.kh.disconnect() + # self.timer.Stop() + pass + + def OnTimer(self, event): + ''' + 定时器实现 + ''' + # log.info( f"OnTimer...." ) + # self.OnDisplaySave() + pass + + def onNotify(self, msg:str): + self.mypanel.setStaticText(msg) + pass + + def __read_config(self,): + # 读取配置文件 + self.mycfg.setDeviceType(DeviceType.SURFACE) + self.sensor_cfg = self.mycfg.read_yaml() + + def OnDealData(self, e)-> None: + ''' SD卡的文件结构 ''' + log.info(f"OnDealData: 处理测量数据", __name__, "", "") + if not self.calinfo_is_ok: + self.onNotify("Pls get the cal info, and try again" ) + log.warning(f"Pls get the cal info, and try again", __name__, "OnDealData") + self.statusBar.SetStatusText("Pls get the cal info, and try again",0) + pass + + ## 调用 AwramsHandle 的函数 + self.myhandle:HandheldHandle = self.handheld_handle[self.device_id] + + # 处理数据 + self.alterStatus_0(" 正在处理数据...." ) + try: + self.mythread.set_task( self.read_folders_from_sd ) + self.mythread.start() + except Exception as e: + log.error(e) + pass + + def read_folders_from_sd(self,): + # myhandle:AwramsHandle = self.awrams_handle[self.device_id] + self.myhandle.read_folders_from_SD( DATA_DIR ) + pass + + + # def OnDealData2(self, e)-> None: + # log.info(f"OnDealData: 处理测量数据", __name__, "", "") + # if not self.calinfo_is_ok: + # self.onNotify("Pls get the cal info, and try again" ) + # log.warning(f"Pls get the cal info, and try again", __name__, "OnDealData") + # self.statusBar.SetStatusText("Pls get the cal info, and try again",0) + # pass + + # self.hh.getDataFileList() + # self.hh.setDeviceID(self.device_id) + # self.hh.setRetrieve(self.retrieve) + # if self.syscfg != {}: + # self.hh.setSyscfg(self.syscfg) + # else: + # log.warning(f"Pls get the cal info, and try again", __name__, "OnDealData","setCfg") + # MyException( f"System Configuration is empty." ) + # pass + + # # 处理数据 + # self.alterStatus_0(" 正在处理数据...." ) + # try: + # self.mythread.set_task( self.hh.dealAllMeasurements ) + # self.mythread.start() + # except Exception as e: + # log.error(e) + # pass + + + def OnCalInfo(self,e): + '''依据传感器获取标定文件信息''' + ####################################### + self.onNotify("正在获取标定信息") + self.device_type = DeviceType.SURFACE.name + self.mycfg = MyConfig() # 传入 cfg retrieve 的yml文件 + + # 配置反演需要的参数 波长 间隔 , rowFactor + self.retrieve = self.mycfg.get_retrieve() # 读retrieve.yml + log.info(f"Retrieve: {self.retrieve}", __name__, "", "") + + # log.info(f"syscfg: {device}", __name__, "", "") + self.mycfg.setDeviceType( DeviceType.SURFACE ) + self.sensor_cfg = self.mycfg.read_yaml() # 读config.yml, 多个device_id 配置 + log.info(f"Current Device: {self.device_type} ", __name__, "", "") + log.info(f"Sensor cfg: {self.sensor_cfg}", __name__, "", "") + + + self.cal_cfg = {} + + cfgr = Configuration( ) + cfgr.setDeviceType(self.device_type) + cfgr.setSystemCfgDict(self.sensor_cfg) + + for k,v in self.sensor_cfg.items(): + cfgr.setSystemCfgDict(v) + try: + cfgr.getCalConfiguration() + except Exception as e: + log.error(f"读取配置文件失败. \n {e}",__name__, "", "" ) + raise + log.info(f"v: {cfgr.configuration}", __name__, "", "") + self.cal_cfg.update({k:cfgr.cal_configuration}) + + log.debug(f"cal_cfg: {self.cal_cfg}", __name__, "", "") + log.warning(f"cal_cfg 2: {self.cal_cfg[2].keys()}", __name__, "", "") + # log.warning(f"cal_cfg 3: {self.cal_cfg[3].keys()}", __name__, "", "") + self.init_data_process() + + log.info(f"传感器配置文件读取成功", __name__, "", "") + + pass + + def init_data_process(self, mode = 0): + ''' 多个handle ''' + self.handheld_handle = { } + for k,v in self.cal_cfg.items(): + ah = HandheldHandle( deviceid=k, cfg=self.sensor_cfg[k], calcfg=v, rtv=self.retrieve) + self.handheld_handle.update( {k:ah } ) + + + def alterStatus_0(self,msg): + self.statusBar.SetStatusText( msg, 0 ) + + def popDialog(self, msg, msg_type=u"错误提示"): + with wx.MessageDialog( self, msg, msg_type, wx.OK )as dlg: + dlg.ShowModal() + + def OnPlotLast(self,e): + # 如何取数据 需要先合并数据? + self.popDialog(" 功能开发中...") + pass + + def OnPlotLast7(self,e): + self.popDialog(" 功能开发中...") + pass + + def OnPlot7(self,e): + self.popDialog(" 功能开发中...") + pass + + def OnGatherData(self,e): + gd = GatherData() + gd.gather_handheld() + self.alterStatus_0(" 数据汇总完成") + pass + + def OnPlotSetting(self,e): + with UI_Plot_Setting( + self, + -1 ) as Dialog_Sensor_Setting: + Dialog_Sensor_Setting.CenterOnParent() + resultLog = Dialog_Sensor_Setting.ShowModal() + + if resultLog == wx.ID_OK: + log.info( " Plot config dialog confirm, call back " ) + self.__read_config() + pass + + def OnSensorSetting(self,e): + with UISensor( + self, + -1 , + did = self.device_id ) as Dialog_Sensor_Setting: + Dialog_Sensor_Setting.CenterOnParent() + resultLog = Dialog_Sensor_Setting.ShowModal() + + if resultLog == wx.ID_OK: + print( " Sensor config dialog confirm, call back " ) + self.__read_config() + pass + + def OnHelpConfig(self, e): + with Help( + self, + -1, + "") as Dialog_Help: + resultLog = Dialog_Help.ShowModal() + + if resultLog == wx.ID_OK: + print("Help info") + + pass + + def OnAboutConfig(self, e): + with About( + self, + -1, + "") as Dialog_About: + resultLog = Dialog_About.ShowModal() + + if resultLog == wx.ID_OK: + print("Aboutus") + + pass + + def OnQuit(self, e): + self.Close() + + + \ No newline at end of file