From 68cf04e5c3966c628851531e297717925ae33c7d Mon Sep 17 00:00:00 2001 From: esea_info Date: Wed, 2 Aug 2023 18:26:19 +0800 Subject: [PATCH] immersion factors --- profiler.py | 31 ++++++++++++++++++++++++++++--- receive.py | 2 ++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/profiler.py b/profiler.py index e27104d..55c5735 100644 --- a/profiler.py +++ b/profiler.py @@ -9,7 +9,7 @@ from scipy.optimize import leastsq from datetime import datetime, timedelta from myRamses import RamsesFactoryHandle,AirWater from tools.mylogger import log -from myconfig import TOKEN,NEWLINE,DATA_DIR,SAVE_EXT_NAME +from myconfig import TOKEN,NEWLINE,DATA_DIR,SAVE_EXT_NAME,CAL_DIR from myconfig import RamsesPROFILE TIME_STR = "2022-06-10 16:16:16" @@ -288,6 +288,7 @@ class Profiler(object): depth : List[float] =None wavelength:List[np.ndarray] =None spectrum:List[np.ndarray] =None + immersion_factors:np.ndarray = None beginWavelength: float = None endWavelength: float = None rowFactor:float = None @@ -329,6 +330,12 @@ class Profiler(object): self.newWavelength = np.arange(self.beginWavelength,self.endWavelength,self.wvInterval) pass + def set_immersion_factors(self, ifs:np.ndarray): + wv = ifs[:, 0] + val = ifs[:, 1] + self.immersion_factors = np.interp(self.newWavelength,wv,val) + pass + def set_ramses_sensor_numbers(self, num:int = 3): self.data.data_frame = DataFrame() self.data.data_frame.set_ramses_num( num ) @@ -487,7 +494,11 @@ class Profiler(object): '''' Get Lu0 Ku ''' log.info( " get_lu0_Ku......... ", __class__, "get_Lu0_Ku" ) x = np.array(self.depth) - y = np.log(self.Lu) # ln_Lu + + ## 浸没因子处理 ## + tmp = self.deal_Lu_by_immersion_factors() + y = np.log(tmp) # ln_Lu + self.Ku,ln_Lu0 = self.leastsq_linear_fitting( x, y) self.Lu0 = np.exp(ln_Lu0) @@ -506,6 +517,12 @@ class Profiler(object): # log.warning(t) # log.warning(self.Ed0) + def deal_Lu_by_immersion_factors ( self, ): + '''' ?????? 浸没因子处理 Lu ??? ''' + ifs = self.immersion_factors + lu = self.Lu + return lu + def leastsq_linear_fitting( self, arr_depth:np.ndarray, arr_data:np.ndarray ): '''最小二乘拟合 # arr_depth np一维数组 @@ -633,7 +650,15 @@ class ProfilerHandle(object): self.profiler.data.set_data_frame( bytes_list, pth, self.aw.callback ) # 目录也要传过去 pass - + + def read_immersion_factors(self,)->np.ndarray: + assert fpath.exists(), f">>>> not find {fpath} " + fname = "immersion_factors_Lu.dat" + fpath = CAL_DIR.joinpath( "profiler" ,fname) + ret = np.loadtxt(fpath,skiprows=2) + return ret + pass + def read_bin(self,fpath: Path): assert fpath.exists(), f">>>> not find {fpath} " ret = b'' diff --git a/receive.py b/receive.py index 9113e2d..ac7920b 100644 --- a/receive.py +++ b/receive.py @@ -219,6 +219,8 @@ class DealData: self.profiler_hdl.read_info_path(infopath) self.profiler_hdl.profiler.reset_profiler() self.profiler_hdl.profiler.data.set_wavelength( ) # 设置波长 + # self.profiler_hdl.read_immersion_factors( ) # 读取浸没因子 + self.profiler_hdl.profiler.set_immersion_factors( self.profiler_hdl.read_immersion_factors( ) ) #设置浸没因子 self.profiler_hdl.profiler.get_depth_offset() self.profiler_hdl.read_sensor_path(sensorpath)