|
|
|
|
@ -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一维数组 |
|
|
|
|
@ -634,6 +651,14 @@ 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'' |
|
|
|
|
|