diff --git a/schainpy/model/data/jrodata.py b/schainpy/model/data/jrodata.py index eb82bf6..9178ce8 100644 --- a/schainpy/model/data/jrodata.py +++ b/schainpy/model/data/jrodata.py @@ -78,7 +78,7 @@ def hildebrand_sekhon(data, navg): sortdata = numpy.sort(data, axis=None) #print(numpy.shape(data)) #exit() - ''' + lenOfData = len(sortdata) nums_min = lenOfData*0.2 @@ -108,10 +108,10 @@ def hildebrand_sekhon(data, navg): j += 1 lnoise = sump / j - + return lnoise - ''' - return _noise.hildebrand_sekhon(sortdata, navg) + + #return _noise.hildebrand_sekhon(sortdata, navg) class Beam: @@ -491,6 +491,7 @@ class Spectra(JROData): #exit(1) daux = self.data_spc[channel, xmin_index:xmax_index, ymin_index:ymax_index] + #print("daux",daux) noise[channel] = hildebrand_sekhon(daux, self.nIncohInt) return noise diff --git a/schainpy/model/graphics/jroplot_spectra.py b/schainpy/model/graphics/jroplot_spectra.py index b3b0599..711af65 100644 --- a/schainpy/model/graphics/jroplot_spectra.py +++ b/schainpy/model/graphics/jroplot_spectra.py @@ -54,15 +54,14 @@ class SpectraPlot(Plot): #print("NormFactor: ",dataOut.normFactor) #data['noise'] = 10*numpy.log10(dataOut.getNoise()/dataOut.normFactor) if hasattr(dataOut, 'LagPlot'): #Double Pulse - max_hei_id = dataOut.nHeights - 2*dataOut.LagPlot - #data['noise'] = 10*numpy.log10(dataOut.getNoise(ymin_index=46,ymax_index=max_hei_id)/dataOut.normFactor) - #data['noise'] = 10*numpy.log10(dataOut.getNoise(ymin_index=40,ymax_index=max_hei_id)/dataOut.normFactor) - data['noise'] = 10*numpy.log10(dataOut.getNoise(ymin_index=53,ymax_index=max_hei_id)/dataOut.normFactor) - data['noise'][0] = 10*numpy.log10(dataOut.getNoise(ymin_index=53)[0]/dataOut.normFactor) + ymin_index = numpy.abs(dataOut.heightList - 800).argmin() + max_hei_id = dataOut.nHeights - dataOut.TxLagRate*dataOut.LagPlot + data['noise'] = 10*numpy.log10(dataOut.getNoise(ymin_index=ymin_index,ymax_index=max_hei_id)/dataOut.normFactor) + data['noise'][0] = 10*numpy.log10(dataOut.getNoise(ymin_index=ymin_index)[0]/dataOut.normFactor) #data['noise'][1] = 22.035507 else: data['noise'] = 10*numpy.log10(dataOut.getNoise()/dataOut.normFactor) - #data['noise'] = 10*numpy.log10(dataOut.getNoise(ymin_index=26,ymax_index=44)/dataOut.normFactor) + meta['xrange'] = (dataOut.getFreqRange(1)/1000., dataOut.getAcfRange(1), dataOut.getVelRange(1)) if self.CODE == 'spc_moments': diff --git a/schainpy/model/graphics/jroplot_voltage_lags.py b/schainpy/model/graphics/jroplot_voltage_lags.py index 32709b5..356e796 100644 --- a/schainpy/model/graphics/jroplot_voltage_lags.py +++ b/schainpy/model/graphics/jroplot_voltage_lags.py @@ -1008,7 +1008,7 @@ class ACFsPlot(Plot): BadHei2 = data['Height_contaminated_2'] self.xmin = 0.0 - self.xmax = 2.0 + #self.xmax = 2.0 self.y = ACFs ax = self.axes[0] diff --git a/schainpy/model/proc/clean_data.json b/schainpy/model/proc/clean_data.json index 84c2885..ee88b31 100644 --- a/schainpy/model/proc/clean_data.json +++ b/schainpy/model/proc/clean_data.json @@ -171,8 +171,24 @@ {"year": 2025, "doy": 24, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 13]}, {"year": 2025, "doy": 24, "initial_time": [5,0], "final_time": [23,55], "aux_index": [ null, 13]}, - {"year": 2025, "doy": 25, "initial_time": [0,0], "final_time": [4,55], "aux_index": [ null, 27]}, + {"year": 2025, "doy": 24, "initial_time": [5,0], "final_time": [5,5], "aux_index": [ null, 34]}, + {"year": 2025, "doy": 24, "initial_time": [5,10], "final_time": [5,10], "aux_index": [ 24, 35]}, + {"year": 2025, "doy": 24, "initial_time": [5,15], "final_time": [5,15], "aux_index": [ 25, 33]}, + {"year": 2025, "doy": 24, "initial_time": [5,20], "final_time": [5,20], "aux_index": [ 26, 33]}, + {"year": 2025, "doy": 24, "initial_time": [5,25], "final_time": [5,25], "aux_index": [ 27, 32]}, + {"year": 2025, "doy": 24, "initial_time": [5,30], "final_time": [5,30], "aux_index": [ 23, 24]}, + {"year": 2025, "doy": 24, "initial_time": [5,35], "final_time": [5,35], "aux_index": [ 22, 27]}, + {"year": 2025, "doy": 24, "initial_time": [5,40], "final_time": [5,55], "aux_index": [ 22, 31]}, + {"year": 2025, "doy": 24, "initial_time": [6,0], "final_time": [6,0], "aux_index": [ 22, 33]}, + {"year": 2025, "doy": 24, "initial_time": [6,30], "final_time": [6,30], "aux_index": [ 22, 25]}, + {"year": 2025, "doy": 24, "initial_time": [6,35], "final_time": [6,35], "aux_index": [ 22, 32]}, + {"year": 2025, "doy": 24, "initial_time": [6,35], "final_time": [6,40], "aux_index": [ 22, 32]}, + {"year": 2025, "doy": 24, "initial_time": [6,45], "final_time": [6,45], "aux_index": [ 23, 32]}, + {"year": 2025, "doy": 24, "initial_time": [6,50], "final_time": [6,50], "aux_index": [ 24, 34]}, + {"year": 2025, "doy": 24, "initial_time": [6,55], "final_time": [6,55], "aux_index": [ 25, 32]}, + {"year": 2025, "doy": 25, "initial_time": [0,50], "final_time": [4,55], "aux_index": [ null, 27]}, {"year": 2025, "doy": 25, "initial_time": [2,50], "final_time": [4,55], "aux_index": [ null, 30]}, + {"year": 2025, "doy": 25, "initial_time": [3,5], "final_time": [3,45], "aux_index": [ null, 33]}, {"year": 2025, "doy": 25, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 13]}, {"year": 2025, "doy": 25, "initial_time": [5,0], "final_time": [23,55], "aux_index": [ null, 13]}, @@ -183,9 +199,43 @@ {"year": 2025, "doy": 26, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 13]}, {"year": 2025, "doy": 26, "initial_time": [5,0], "final_time": [23,55], "aux_index": [ null, 13]}, + {"year": 2025, "doy": 26, "initial_time": [5,20], "final_time": [5,20], "aux_index": [ null, 28]}, + {"year": 2025, "doy": 26, "initial_time": [5,25], "final_time": [5,25], "aux_index": [ 25, 34]}, {"year": 2025, "doy": 26, "initial_time": [0,55], "final_time": [0,55], "aux_index": [ null, null]}, {"year": 2025, "doy": 26, "initial_time": [0,55], "final_time": [4,55], "aux_index": [ null, 24]}, - {"year": 2025, "doy": 27, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 13]} + {"year": 2025, "doy": 27, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 13]}, + + {"year": 2025, "doy": 41, "initial_time": [23,0], "final_time": [23,0], "aux_index": [ null, null]}, + {"year": 2025, "doy": 42, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 14]}, + {"year": 2025, "doy": 42, "initial_time": [4,24], "final_time": [4,24], "aux_index": [ 35, 38]}, + {"year": 2025, "doy": 42, "initial_time": [1,30], "final_time": [5,0], "aux_index": [ null, 26]}, + {"year": 2025, "doy": 42, "initial_time": [2,12], "final_time": [4,0], "aux_index": [ null, null]}, + {"year": 2025, "doy": 42, "initial_time": [1,24], "final_time": [1,24], "aux_index": [ 39, 40]}, + {"year": 2025, "doy": 42, "initial_time": [1,18], "final_time": [1,18], "aux_index": [ 48, 50]}, + + {"year": 2025, "doy": 42, "initial_time": [5,0], "final_time": [12,0], "aux_index": [ null, 7]}, + {"year": 2025, "doy": 42, "initial_time": [5,0], "final_time": [7,30], "aux_index": [ null, 13]}, + {"year": 2025, "doy": 42, "initial_time": [5,0], "final_time": [11,0], "aux_index": [ null, 10]}, + {"year": 2025, "doy": 42, "initial_time": [5,0], "final_time": [5,0], "aux_index": [ 20, 22]}, + + {"year": 2025, "doy": 43, "initial_time": [0,0], "final_time": [5,0], "aux_index": [ null, 19]}, + {"year": 2025, "doy": 43, "initial_time": [2,25], "final_time": [2,38], "aux_index": [ null, 24]}, + {"year": 2025, "doy": 43, "initial_time": [2,2], "final_time": [2,2], "aux_index": [ null, null]}, + + {"year": 2025, "doy": 43, "initial_time": [5,0], "final_time": [10,50], "aux_index": [ null, 12]}, + {"year": 2025, "doy": 43, "initial_time": [5,0], "final_time": [23,0], "aux_index": [ null, 8]}, + {"year": 2025, "doy": 44, "initial_time": [0,50], "final_time": [0,50], "aux_index": [ 47, null]}, + {"year": 2025, "doy": 44, "initial_time": [1,0], "final_time": [1,15], "aux_index": [ 39, null]}, + {"year": 2025, "doy": 44, "initial_time": [3,14], "final_time": [3,40], "aux_index": [ null, 30]}, + {"year": 2025, "doy": 44, "initial_time": [3,26], "final_time": [3,26], "aux_index": [ null, 32]}, + {"year": 2025, "doy": 44, "initial_time": [0,14], "final_time": [3,40], "aux_index": [ null, 22]}, + {"year": 2025, "doy": 44, "initial_time": [0,40], "final_time": [3,40], "aux_index": [ null, 25]}, + {"year": 2025, "doy": 44, "initial_time": [4,0], "final_time": [5,0], "aux_index": [ null, null]}, + + {"year": 2025, "doy": 44, "initial_time": [5,50], "final_time": [5,50], "aux_index": [ null, null]}, + {"year": 2025, "doy": 44, "initial_time": [7,50], "final_time": [8,38], "aux_index": [ null, null]}, + {"year": 2025, "doy": 44, "initial_time": [5,0], "final_time": [9,14], "aux_index": [ null, 14]} + ]} diff --git a/schainpy/model/proc/jroproc_parameters.py b/schainpy/model/proc/jroproc_parameters.py index b0031d4..e63b48a 100644 --- a/schainpy/model/proc/jroproc_parameters.py +++ b/schainpy/model/proc/jroproc_parameters.py @@ -1827,7 +1827,7 @@ class Oblique_Gauss_Fit(Operation): #print("After data_snr: ", dataOut.data_snr) dataOut.mode = mode dataOut.flagNoData = numpy.all(numpy.isnan(dataOut.Dop_EEJ_T1)) #Si todos los valores son NaN no se prosigue - dataOut.flagNoData = False #Descomentar solo para ploteo sino mantener comentado (para guardado) + #dataOut.flagNoData = False #Descomentar solo para ploteo sino mantener comentado (para guardado) return dataOut diff --git a/schainpy/model/proc/jroproc_spectra_lags_faraday.py b/schainpy/model/proc/jroproc_spectra_lags_faraday.py index 953e706..4663f61 100644 --- a/schainpy/model/proc/jroproc_spectra_lags_faraday.py +++ b/schainpy/model/proc/jroproc_spectra_lags_faraday.py @@ -84,6 +84,7 @@ class SpectraLagProc(ProcessingUnit): self.dataOut.beam.azimuthList = self.dataIn.beam.azimuthList self.dataOut.beam.zenithList = self.dataIn.beam.zenithList self.dataOut.runNextUnit = self.dataIn.runNextUnit + self.dataOut.TxLagRate = self.dataIn.TxLagRate try: self.dataOut.final_noise = self.dataIn.final_noise except: @@ -1402,9 +1403,7 @@ class IntegrationFaradaySpectra(Operation): ''' New outlier value take the average''' for p in list(outliers_IDs): buffer1[p,:] = avg - - else: - print("No average!!") + '''Reasignate the buffer 1 edition to the original buffer''' self.__buffer_spc[:,i,:,k,l]=numpy.copy(buffer1) ###cspc IDs @@ -2772,7 +2771,7 @@ class SpectraDataToFaraday(Operation): #ISR MODE def noise(self,dataOut): dataOut.noise_lag = numpy.zeros((dataOut.nChannels,dataOut.DPL),'float32') - #print("Lags") + ''' for lag in range(dataOut.DPL): #print(lag) @@ -2780,43 +2779,57 @@ class SpectraDataToFaraday(Operation): #ISR MODE dataOut.noise_lag[:,lag] = dataOut.getNoise(ymin_index=46) #dataOut.noise_lag[:,lag] = dataOut.getNoise(ymin_index=33,ymax_index=46) ''' - #print(dataOut.NDP) - #exit(1) + #Channel B + + ymin_index = numpy.abs(dataOut.heightList - 800).argmin() # Index more near to 800 km # ymin_index = 53 for lag in range(dataOut.DPL): - #print(lag) + dataOut.data_spc = dataOut.dataLag_spc[:,:,:,lag] - max_hei_id = dataOut.NDP - 2*lag - #if lag < 6: - dataOut.noise_lag[1,lag] = dataOut.getNoise(ymin_index=53,ymax_index=max_hei_id)[1] - #else: - #dataOut.noise_lag[1,lag] = numpy.mean(dataOut.noise_lag[1,:6]) - #dataOut.noise_lag[:,lag] = dataOut.getNoise(ymin_index=33,ymax_index=46) + max_hei_id = dataOut.NDP - dataOut.TxLagRate*lag # - 2*lag #max_hei_id = 32 + if max_hei_id < ymin_index: break_lag = lag; continue + + #dataOut.noise_lag[1,lag] = dataOut.getNoise(ymin_index=ymin_index,ymax_index=max_hei_id)[1] #H_S algorithm choise + + daux = dataOut.data_spc[1,:, ymin_index:max_hei_id] # Median choise + sortdata = numpy.sort(daux, axis=None) + dataOut.noise_lag[1,lag] = numpy.median(sortdata) + + dataOut.noise_lag[1,break_lag:] = numpy.mean(dataOut.noise_lag[1,:break_lag]) #El ruido de lags que no pueden calcularse + #su piso de ruido se determina a partir + # del promedio de los lags limpios + #Channel A + for lag in range(dataOut.DPL): - #print(lag) dataOut.data_spc = dataOut.dataLag_spc[:,:,:,lag] - dataOut.noise_lag[0,lag] = dataOut.getNoise(ymin_index=53)[0] - + #dataOut.noise_lag[0,lag] = dataOut.getNoise(ymin_index=ymin_index)[0] + daux = dataOut.data_spc[0,:, ymin_index:] + sortdata = numpy.sort(daux, axis=None) + dataOut.noise_lag[0,lag] = numpy.median(sortdata) + + print("dataOut.noise_lag", dataOut.noise_lag[1,:]) nanindex = numpy.argwhere(numpy.isnan(numpy.log10(dataOut.noise_lag[1,:]))) - i1 = nanindex[0][0] - dataOut.noise_lag[1,i1:] = numpy.mean(dataOut.noise_lag[1,:i1]) #El ruido de lags contaminados se + print(nanindex) + + try: + i1 = nanindex[0][0] + dataOut.noise_lag[1,i1:] = numpy.mean(dataOut.noise_lag[1,:i1]) + except: + pass + + '''try: + i1 = nanindex[0][0] + dataOut.noise_lag[1,i1:] = numpy.mean(dataOut.noise_lag[1,:i1]) #El ruido de lags contaminados se #determina a partir del promedio del #ruido de los lags limpios - ''' - dataOut.noise_lag[1,:] = dataOut.noise_lag[1,0] #El ruido de los lags diferentes de cero para + + except: + dataOut.noise_lag[1,:] = dataOut.noise_lag[1,0] #El ruido de los lags diferentes de cero para #el canal B es contaminado por el Tx y EEJ #del siguiente perfil, por ello se asigna el ruido - #del lag 0 a todos los lags - ''' - #print("Noise lag: ", 10*numpy.log10(dataOut.noise_lag/dataOut.normFactor)) - #exit(1) - ''' - dataOut.tnoise = dataOut.getNoise(ymin_index=46) - dataOut.tnoise /= float(dataOut.nProfiles*dataOut.nIncohInt) - dataOut.pan = dataOut.tnoise[0] - dataOut.pbn = dataOut.tnoise[1] - ''' + #del lag 0 a todos los lags''' + dataOut.tnoise = dataOut.noise_lag/float(dataOut.nProfiles*dataOut.nIncohInt) #dataOut.tnoise /= float(dataOut.nProfiles*dataOut.nIncohInt) @@ -2892,11 +2905,12 @@ class SpectraDataToFaraday(Operation): #ISR MODE def get_eej_index(self,data_to_remov_eej,dataOut): - dataOut.data_spc = data_to_remov_eej + max_eej = numpy.abs(dataOut.heightList - 255).argmin() + dataOut.data_spc = data_to_remov_eej data_eej = dataOut.getPower()[0] #print(data_eej) - index_eej = CleanCohEchoes.mad_based_outlier(self,data_eej[:17]) + index_eej = CleanCohEchoes.mad_based_outlier(self,data_eej[:max_eej]) aux_eej = numpy.array(index_eej.nonzero()).ravel() print("aux_eej: ", aux_eej) if aux_eej != []: diff --git a/schainpy/model/proc/jroproc_voltage.py b/schainpy/model/proc/jroproc_voltage.py index 7ab6773..54e104d 100644 --- a/schainpy/model/proc/jroproc_voltage.py +++ b/schainpy/model/proc/jroproc_voltage.py @@ -647,25 +647,44 @@ class LagsReshape(Operation): self.buffer_HRonelag = numpy.zeros((int(dataOut.NSCAN/dataOut.DPL), dataOut.nHeights), dtype='complex') - - for i in range(self.buffer_HRonelag.shape[0]): - for j in range(dataOut.nHeights): - if j+int(2*whichlag)700)[0] + PA = numpy.zeros((dataOut.NDP, dataOut.DPL), dtype=float) + PB = numpy.zeros((dataOut.NDP, dataOut.DPL), dtype=float) + for i in range(dataOut.NDP): #Heights for j in range(dataOut.DPL): # Lags ################# Total power @@ -2104,7 +2145,7 @@ class DoublePulseACFs_PerLag(Operation): ## ACF rhorp=dataOut.kabxys_integrated[8][i,j,0]+dataOut.kabxys_integrated[11][i,j,0] rhoip=dataOut.kabxys_integrated[10][i,j,0]-dataOut.kabxys_integrated[9][i,j,0] - + #PA[i,j] = pa; PB[i,j] = pb if ((pa>dataOut.pan[j])&(pb>dataOut.pbn[j])): # panrm is RMS of power, used to normalize ACFs ss4=numpy.abs((pa-dataOut.pan[j])*(pb-dataOut.pbn[j])) @@ -2160,11 +2201,25 @@ class DoublePulseACFs_PerLag(Operation): #print("EJJ") dataOut.igcej[i,j]=1 #''' - ''' - if i == 4: - exit(1) - ''' - print("dataOut.alag",dataOut.alag) + '''import matplotlib.pyplot as plt + fig, axes = plt.subplots(2, dataOut.DPL, figsize=(18, 6), sharex=True, sharey=True) + + for i in range(dataOut.DPL): + axes[0,i].plot(PA[:, i], dataOut.heightList, label=f'PA {i+1}') + axes[0, i].axvline(dataOut.pan[i], color='gray', linestyle='--', linewidth=1) + axes[0, i].set_title(f'Lag {i+1}') + axes[0, i].set_xscale("log") # Log scale for y-axis + axes[0, i].set_xlim([0,1e+7]) + axes[1,i].plot(PB[:, i], dataOut.heightList, label=f'PB {i+1}') + axes[1, i].axvline(dataOut.pbn[i], color='gray', linestyle='--', linewidth=1) + axes[1, i].set_xscale("log") # Log scale for y-axis + axes[1, i].set_xlim([0,1e+7]) + + + plt.tight_layout() + plt.show()''' + + #print("dataOut.p",datetime.datetime.utcfromtimestamp(dataOut.utctime), dataOut.p) #print(numpy.sum(dataOut.kabxys_integrated[8][:,:,0]+dataOut.kabxys_integrated[11][:,:,0])) @@ -2285,19 +2340,20 @@ class FaradayAngleAndDPPower(Operation): dataOut.flagTeTiCorrection = False #print("ph2: ", numpy.sum(dataOut.ph2[:16])) #print("ph2: ", numpy.sum(dataOut.ph2[16:32])) - ''' - import matplotlib.pyplot as plt + + '''import matplotlib.pyplot as plt #plt.plot(numpy.abs(dataOut.kabxys_integrated[4][:,j,0]+dataOut.kabxys_integrated[5][:,j,0])+numpy.abs(dataOut.kabxys_integrated[6][:,j,0]+dataOut.kabxys_integrated[7][:,j,0]),dataOut.heightList) #plt.axvline((dataOut.pan+dataOut.pbn)) #print(numpy.shape(dataOut.p)) plt.plot(dataOut.ph2,dataOut.heightList) + plt.plot(dataOut.phi,dataOut.heightList) plt.xlim(1000,1000000000) #plt.ylim(50,400) plt.grid() plt.show() - #exit(1) - ''' + #exit(1)''' + return dataOut class ElectronDensityFaraday(Operation): @@ -2790,6 +2846,35 @@ class DPTemperaturesEstimation(Operation): op.addParameter(name='IBITS', value='16', format='int') """ + ''' + NSTHS Number of sample heights (input), for temperature processing + NDP Number of Data Points (nHeights dependent) + NSTHS < NDP + + Input/Output Data: + + te2, ti2: Estimated electron and ion temperatures. + + ete2, eti2: Errors in the estimated temperatures. + + phy2, ephy2: Physical parameter and its error. + + Fitting Process: + + ifit: Flags for which parameters are being fitted. + + params: Initial guesses and fitted parameters. + + cov, covinv: Covariance matrix and its inverse for uncertainty estimation. + + Metadata/Status: + + m: Status or counter for the fitting process. + + info2: Additional information about the fitting results. + + ''' + def __init__(self, **kwargs): @@ -2819,8 +2904,8 @@ class DPTemperaturesEstimation(Operation): #null_fd = os.open(os.devnull, os.O_RDWR) #os.dup2(null_fd, 1) - - for i in range(10,dataOut.NSHTS): #no point below 150 km + ymin_index = numpy.abs(dataOut.heightList - 150).argmin() #no point below 150 km + for i in range(ymin_index,dataOut.NSHTS): #some definitions iflag=0 # inicializado a cero? @@ -2833,8 +2918,12 @@ class DPTemperaturesEstimation(Operation): depth=numpy.zeros(1,order='F',dtype='float32') t1=numpy.zeros(1,order='F',dtype='float32') t2=numpy.zeros(1,order='F',dtype='float32') - - if i>10 and l1>=0: + + ''' + x lag time y correlation e their uncertanities + t1 t2 initial guesses eb errors + ''' + if i>ymin_index and l1>=0: if l1==0: l1=1 @@ -2864,7 +2953,7 @@ class DPTemperaturesEstimation(Operation): for l in range(0+1,dataOut.DPL): if dataOut.igcej[i][l]==0 and dataOut.ibad[i][l]==0: y[l1]=dataOut.rhor[i][l]*cc + dataOut.rhoi[i][l]*ss - x[l1]=dataOut.alag[l]*1.0e-3 + x[l1]=dataOut.alag[l]*1.0e-3 # *1.0e-3 dataOut.sd[i][l]=dataOut.sd[i][l]/((acfm)**2)# important e[l1]=dataOut.sd[i][l] #this is the variance, not the st. dev. l1=l1+1 @@ -2890,8 +2979,8 @@ class DPTemperaturesEstimation(Operation): if True: #len(y)!=0: with suppress_stdout_stderr(): - fitacf_guess.guess(y,x,zero,depth,t1,t2,len(y)) - t2=t1/t2 + fitacf_guess.guess(y,x,zero,depth,t1,t2,len(y)) #t1 = te , t2 = tr = te/ti + t2=t1/t2 # ti if (t1<5000.0 and t1> 600.0): dataOut.params[1]=t1 @@ -2899,7 +2988,7 @@ class DPTemperaturesEstimation(Operation): dataOut.ifit[1]=dataOut.ifit[2]=1 dataOut.ifit[0]=dataOut.ifit[3]=dataOut.ifit[4]=0 - if dataOut.ut_Faraday<10.0 and dataOut.ut_Faraday>=0.5: + if dataOut.ut_Faraday<10.0 and dataOut.ut_Faraday>=0.5: # 6 30 pm to 5 am LT dataOut.ifit[2]=0 den=dataOut.ph2[i] @@ -3514,7 +3603,7 @@ class DataSaveCleaner(Operation): dataOut.PhyFinal[0,25:]=missing dataOut.EPhyFinal[0, 25:] = missing ''' - # 8 Sep 24 + '''# 8 Sep 24 if True: #06-18 LT #dataOut.DensityFinal[0,27:]=missing #dataOut.EDensityFinal[0,27:]=missing @@ -3523,7 +3612,17 @@ class DataSaveCleaner(Operation): dataOut.IonTempFinal[0,36:]=missing dataOut.EIonTempFinal[0,36:]=missing dataOut.PhyFinal[0,36:]=missing - dataOut.EPhyFinal[0, 36:] = missing + dataOut.EPhyFinal[0, 36:] = missing''' + '''# 24 Jan 25 + if (time_text.hour >= 5 ) and (time_text.hour <= 7): + #dataOut.DensityFinal[0,27:]=missing + #dataOut.EDensityFinal[0,27:]=missing + dataOut.ElecTempFinal[0,:]=missing + dataOut.EElecTempFinal[0,:]=missing + dataOut.IonTempFinal[0,:]=missing + dataOut.EIonTempFinal[0,:]=missing + dataOut.PhyFinal[0,:]=missing + dataOut.EPhyFinal[0, :] = missing''' start = time() flagcleandata = True if flagcleandata: @@ -3636,7 +3735,7 @@ class DataSaveCleaner(Operation): f.writerow(cf) file.close() # for plot - dataOut.flagNoData = False #Descomentar solo para ploteo #Comentar para MADWriter + #dataOut.flagNoData = False #Descomentar solo para ploteo #Comentar para MADWriter dataOut.DensityFinal *= 1.e6 #Convert units to m^⁻3 dataOut.EDensityFinal *= 1.e6 #Convert units to m^⁻3 @@ -3738,7 +3837,8 @@ class ACFs(Operation): dataOut.y_ibad_to_plot[i,:]=numpy.copy(self.y_ibad) missing=numpy.nan#-32767 - + #print("dataOut.igcej",dataOut.igcej) + #print("dataOut.ibad",dataOut.ibad) for i in range(dataOut.NSHTS,dataOut.NDP): for j in range(dataOut.DPL): dataOut.acfs_to_save[i,j]=missing @@ -3753,7 +3853,7 @@ class ACFs(Operation): dataOut.acfs_to_save=dataOut.acfs_to_save.transpose() dataOut.acfs_error_to_save=dataOut.acfs_error_to_save.transpose() - + return dataOut diff --git a/schainpy/model/proc/jroproc_voltage_lags.py b/schainpy/model/proc/jroproc_voltage_lags.py index 0b149b4..4f82e1a 100644 --- a/schainpy/model/proc/jroproc_voltage_lags.py +++ b/schainpy/model/proc/jroproc_voltage_lags.py @@ -1804,188 +1804,6 @@ class Integration(Operation): - - - -class SumLagProducts_Old(Operation): - def __init__(self, **kwargs): - - Operation.__init__(self, **kwargs) - #dataOut.rnint2=numpy.zeros(dataOut.nlags_array,'float32') - - - def run(self,dataOut): - - if dataOut.AUX: #Solo cuando ya hizo la intregacion se ejecuta - - - dataOut.rnint2=numpy.zeros(dataOut.header[17][0],'float32') - #print(dataOut.experiment) - if dataOut.experiment=="DP": - for l in range(dataOut.header[17][0]): - dataOut.rnint2[l]=1.0/(dataOut.nint*dataOut.header[7][0]*12.0) - - - if dataOut.experiment=="HP": - for l in range(dataOut.header[17][0]): - if(l==0 or (l>=3 and l <=6)): - dataOut.rnint2[l]=0.5/float(dataOut.nint*dataOut.header[7][0]*16.0) - else: - dataOut.rnint2[l]=0.5/float(dataOut.nint*dataOut.header[7][0]*8.0) - #print(dataOut.rnint2) - for l in range(dataOut.header[17][0]): - - dataOut.kabxys_integrated[4][:,l,0]=(dataOut.kabxys_integrated[4][:,l,0]+dataOut.kabxys_integrated[4][:,l,1])*dataOut.rnint2[l] - dataOut.kabxys_integrated[5][:,l,0]=(dataOut.kabxys_integrated[5][:,l,0]+dataOut.kabxys_integrated[5][:,l,1])*dataOut.rnint2[l] - dataOut.kabxys_integrated[6][:,l,0]=(dataOut.kabxys_integrated[6][:,l,0]+dataOut.kabxys_integrated[6][:,l,1])*dataOut.rnint2[l] - dataOut.kabxys_integrated[7][:,l,0]=(dataOut.kabxys_integrated[7][:,l,0]+dataOut.kabxys_integrated[7][:,l,1])*dataOut.rnint2[l] - - dataOut.kabxys_integrated[8][:,l,0]=(dataOut.kabxys_integrated[8][:,l,0]-dataOut.kabxys_integrated[8][:,l,1])*dataOut.rnint2[l] - dataOut.kabxys_integrated[9][:,l,0]=(dataOut.kabxys_integrated[9][:,l,0]-dataOut.kabxys_integrated[9][:,l,1])*dataOut.rnint2[l] - dataOut.kabxys_integrated[10][:,l,0]=(dataOut.kabxys_integrated[10][:,l,0]-dataOut.kabxys_integrated[10][:,l,1])*dataOut.rnint2[l] - dataOut.kabxys_integrated[11][:,l,0]=(dataOut.kabxys_integrated[11][:,l,0]-dataOut.kabxys_integrated[11][:,l,1])*dataOut.rnint2[l] - - - #print("Final Integration: ",dataOut.kabxys_integrated[4][:,l,0]) - - - - - - - return dataOut - - - - - - - - - -class BadHeights_Old(Operation): - def __init__(self, **kwargs): - - Operation.__init__(self, **kwargs) - - - - def run(self,dataOut): - - - if dataOut.AUX==1: - dataOut.ibad=numpy.zeros((dataOut.header[15][0],dataOut.header[17][0]),'int32') - - for j in range(dataOut.header[15][0]): - for l in range(dataOut.header[17][0]): - ip1=j+dataOut.header[15][0]*(0+2*l) - if( (dataOut.kabxys_integrated[5][j,l,0] <= 0.) or (dataOut.kabxys_integrated[4][j,l,0] <= 0.) or (dataOut.kabxys_integrated[7][j,l,0] <= 0.) or (dataOut.kabxys_integrated[6][j,l,0] <= 0.)): - dataOut.ibad[j][l]=1 - else: - dataOut.ibad[j][l]=1 - #print("ibad: ",dataOut.ibad) - - - - return dataOut - - - - - - - - - - - - - - - - -class NoisePower_old(Operation): - def __init__(self, **kwargs): - - Operation.__init__(self, **kwargs) - - def hildebrand(self,dataOut,data): - #print("data ",data ) - divider=10 # divider was originally 10 - noise=0.0 - n1=0 - n2=int(dataOut.header[15][0]/2) - sorts= sorted(data) - - nums_min= dataOut.header[15][0]/divider - if((dataOut.header[15][0]/divider)> 2): - nums_min= int(dataOut.header[15][0]/divider) - else: - nums_min=2 - sump=0.0 - sumq=0.0 - j=0 - cont=1 - while( (cont==1) and (j nums_min): - rtest= float(j/(j-1)) +1.0/dataOut.header[7][0] - t1= (sumq*j) - t2=(rtest*sump*sump) - if( (t1/t2) > 0.990): - j=j-1 - sump-= sorts[j+n1] - sumq-=sorts[j+n1]*sorts[j+n1] - cont= 0 - - noise= sump/j - stdv=numpy.sqrt((sumq- noise*noise)/(j-1)) - return noise - - def run(self,dataOut): - - if dataOut.AUX==1: - - #print("ax2 shape ",ax2.shape) - p=numpy.zeros((dataOut.header[2][0],dataOut.header[15][0],dataOut.header[17][0]),'float32') - av=numpy.zeros(dataOut.header[15][0],'float32') - dataOut.pnoise=numpy.zeros(dataOut.header[2][0],'float32') - - p[0,:,:]=dataOut.kabxys_integrated[4][:,:,0]+dataOut.kabxys_integrated[5][:,:,0] #total power for channel 0, just pulse with non-flip - p[1,:,:]=dataOut.kabxys_integrated[6][:,:,0]+dataOut.kabxys_integrated[7][:,:,0] #total power for channel 1 - - #print("p[0,:,:] ",p[0,:,:]) - #print("p[1,:,:] ",p[1,:,:]) - - for i in range(dataOut.header[2][0]): - dataOut.pnoise[i]=0.0 - for k in range(dataOut.header[17][0]): - dataOut.pnoise[i]+= self.hildebrand(dataOut,p[i,:,k]) - #print("dpl ",k, "pnoise[",i,"] ",pnoise[i] ) - dataOut.pnoise[i]=dataOut.pnoise[i]/dataOut.header[17][0] - - - #print("POWERNOISE: ",dataOut.pnoise) - dataOut.pan=1.0*dataOut.pnoise[0] # weights could change - dataOut.pbn=1.0*dataOut.pnoise[1] # weights could change - #print("dataOut.pan ",dataOut.pan, " dataOut.pbn ",dataOut.pbn) - #print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa") - - #print("POWERNOISE: ",dataOut.pnoise) - - - return dataOut - - - - - - - - class double_pulse_ACFs(Operation): def __init__(self, **kwargs): @@ -2025,8 +1843,8 @@ class double_pulse_ACFs(Operation): dataOut.p[i,j]=pa+pb-(dataOut.pan+dataOut.pbn) dataOut.sdp[i,j]=2*dataOut.rnint2[j]*((pa+pb)*(pa+pb)) ## ACF - rhorp=dataOut.kabxys_integrated[8][i,j,0]+dataOut.kabxys_integrated[11][i,j,0] - rhoip=dataOut.kabxys_integrated[10][i,j,0]-dataOut.kabxys_integrated[9][i,j,0] + rhorp=dataOut.kabxys_integrated[8][i,j,0]+dataOut.kabxys_integrated[11][i,j,0] # cspc real + + rhoip=dataOut.kabxys_integrated[10][i,j,0]-dataOut.kabxys_integrated[9][i,j,0] # cspc imag + if ((pa>dataOut.pan)&(pb>dataOut.pbn)): #print("dataOut.pnoise[0]: ",dataOut.pnoise[0]) #print("dataOut.pnoise[1]: ",dataOut.pnoise[1]) diff --git a/schainpy/model/proc/normalize_factor2.json b/schainpy/model/proc/normalize_factor2.json index a6834e2..ed60627 100644 --- a/schainpy/model/proc/normalize_factor2.json +++ b/schainpy/model/proc/normalize_factor2.json @@ -468,12 +468,48 @@ "time": [[4,0]], "cf": "dataOut.cflast[0]"}, + {"year": 2025,"doy": 24, + "time": [[6,50]], + "cf": "dataOut.cflast[0]"}, {"year": 2025,"doy": 25, "time": [[3,5],[3,30]], "cf": "dataOut.cflast[0]"}, {"year": 2025,"doy": 26, "time": [[4,15],[4,20]], + "cf": "dataOut.cflast[0]"}, + + {"year": 2025,"doy": 26, + "time": [[8,0],[10,20],[10,30]], + "cf": "dataOut.cflast[0]"}, + + {"year": 2025,"doy": 42, + "time": [[4,24]], + "cf": 0.0076}, + + {"year": 2025,"doy": 42, + "time": [[10,30]], + "cf": "dataOut.cflast[0]"}, + + {"year": 2025,"doy": 43, + "time": [[2,26]], + "cf": 0.008362}, + {"year": 2025,"doy": 43, + "time": [[3,26]], + "cf": 0.007769}, + {"year": 2025,"doy": 43, + "time": [[4,26]], + "cf": 0.004193}, + {"year": 2025,"doy": 43, + "time": [[4,38]], + "cf": 0.005492}, + + {"year": 2025,"doy": 43, + "time": [[7,2],[7,14]], + "cf": "dataOut.cflast[0]"}, + + {"year": 2025,"doy": 44, + "time": [[6,26],[6,38],[6,50],[7,2]], "cf": "dataOut.cflast[0]"}