immersion factors

server
esea_info 2 years ago
parent c783d8ac66
commit 68cf04e5c3
  1. 31
      profiler.py
  2. 2
      receive.py

@ -9,7 +9,7 @@ from scipy.optimize import leastsq
from datetime import datetime, timedelta from datetime import datetime, timedelta
from myRamses import RamsesFactoryHandle,AirWater from myRamses import RamsesFactoryHandle,AirWater
from tools.mylogger import log 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 from myconfig import RamsesPROFILE
TIME_STR = "2022-06-10 16:16:16" TIME_STR = "2022-06-10 16:16:16"
@ -288,6 +288,7 @@ class Profiler(object):
depth : List[float] =None depth : List[float] =None
wavelength:List[np.ndarray] =None wavelength:List[np.ndarray] =None
spectrum:List[np.ndarray] =None spectrum:List[np.ndarray] =None
immersion_factors:np.ndarray = None
beginWavelength: float = None beginWavelength: float = None
endWavelength: float = None endWavelength: float = None
rowFactor:float = None rowFactor:float = None
@ -329,6 +330,12 @@ class Profiler(object):
self.newWavelength = np.arange(self.beginWavelength,self.endWavelength,self.wvInterval) self.newWavelength = np.arange(self.beginWavelength,self.endWavelength,self.wvInterval)
pass 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): def set_ramses_sensor_numbers(self, num:int = 3):
self.data.data_frame = DataFrame() self.data.data_frame = DataFrame()
self.data.data_frame.set_ramses_num( num ) self.data.data_frame.set_ramses_num( num )
@ -487,7 +494,11 @@ class Profiler(object):
'''' Get Lu0 Ku ''' '''' Get Lu0 Ku '''
log.info( " get_lu0_Ku......... ", __class__, "get_Lu0_Ku" ) log.info( " get_lu0_Ku......... ", __class__, "get_Lu0_Ku" )
x = np.array(self.depth) 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.Ku,ln_Lu0 = self.leastsq_linear_fitting( x, y)
self.Lu0 = np.exp(ln_Lu0) self.Lu0 = np.exp(ln_Lu0)
@ -506,6 +517,12 @@ class Profiler(object):
# log.warning(t) # log.warning(t)
# log.warning(self.Ed0) # 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 ): def leastsq_linear_fitting( self, arr_depth:np.ndarray, arr_data:np.ndarray ):
'''最小二乘拟合 '''最小二乘拟合
# arr_depth np一维数组 # arr_depth np一维数组
@ -633,7 +650,15 @@ class ProfilerHandle(object):
self.profiler.data.set_data_frame( bytes_list, pth, self.aw.callback ) # 目录也要传过去 self.profiler.data.set_data_frame( bytes_list, pth, self.aw.callback ) # 目录也要传过去
pass 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): def read_bin(self,fpath: Path):
assert fpath.exists(), f">>>> not find {fpath} " assert fpath.exists(), f">>>> not find {fpath} "
ret = b'' ret = b''

@ -219,6 +219,8 @@ class DealData:
self.profiler_hdl.read_info_path(infopath) self.profiler_hdl.read_info_path(infopath)
self.profiler_hdl.profiler.reset_profiler() self.profiler_hdl.profiler.reset_profiler()
self.profiler_hdl.profiler.data.set_wavelength( ) # 设置波长 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.profiler.get_depth_offset()
self.profiler_hdl.read_sensor_path(sensorpath) self.profiler_hdl.read_sensor_path(sensorpath)

Loading…
Cancel
Save