def get_radiance(self,list_filters,method="next",spav="all"): """Compute calibration for all filters indicated, correcting if necessary for the temperature drift between BB and scene measurements method : "next" to use following sequence to interpolate background signal""" self.organized(spav=spav) nview = self.npos-2 # number of scene measurements in a complete sequence if spav == "all": all_mean = self.all_mean l = 2 else: all_mean = self.all_mean[:,:,[illuminated]] # calculations on illuminated pixels only l = len(illuminated) all_tms = self.all_tms all_radiance = zeros([11,nview,l]) # Radiance (W/m2/sr) for each filter, several BT in a sequence if several nadir or zenith views all_bt = zeros([11,nview,l]) # Brightness temperature for each filter, offset = zeros([11,l]) gain = zeros([11,l]) if method == "next": next_seq = FirrSequence(self.next,self.filter_pos,"nocare") dtime = next_seq.get_time_seq()-self.get_time_seq() dt = 1000*dtime.total_seconds() # in ms next_seq.organized(spav = spav) if spav == "all": next_all_mean = next_seq.all_mean[:,:,:] else: next_all_mean = next_seq.all_mean[:,:,[illuminated]] next_all_tms = next_seq.all_tms for fil in list_filters: k = filters_positions.index(fil) i_abb1 = searchsorted(self.temp_tms,all_tms[k,0]) Tamb1 = self.temp_abb[i_abb1] # exact ABB temperature at measurement i_hbb = searchsorted(self.temp_tms,all_tms[k,1]) Thot = self.temp_hbb[i_hbb] # exact HBB temperature at measurement Tpma1 = self.temp_pm[i_abb1] # pointing mirror temperature at ABB measurement Tpmh = self.temp_pm[i_hbb] # pointing mirror temperature at HBB measurement tamb1 = all_tms[k,0] thot = all_tms[k,1]-tamb1 tscene = all_tms[k,2:,None]-tamb1 amb1 = all_mean[k,0,:] hot = all_mean[k,1,:] scene = all_mean[k,2:,:] if method == "next": i_abb2 = searchsorted(next_seq.temp_tms,next_all_tms[k,0]) Tamb2 = next_seq.temp_abb[i_abb2] # exact ABB temperature for next sequence calibration Tpma2 = next_seq.temp_pm[i_abb2] # pointing mirror temperature at next ABB measurement tamb2 = dt + next_all_tms[k,0]-tamb1 # time after first ambient measurement amb2 = next_all_mean[k,0,:] else: # no interpolation in this case Tamb2 = Tamb1 Tpma2 = Tpma1 tamb2 = tamb1 amb2 = amb1 # Calibration : S = B0 + G * rad_scene G,B0,rad_scene,bt = Toolbox.get_calib(amb1,hot,scene,amb2,thot,tscene,tamb2,Tamb1,Thot,Tamb2,fil,emiss_wls,emiss,Tpma1,Tpmh,Tpma2) all_bt[k,:,:] = bt all_radiance[k,:,:]=rad_scene offset[k,:] = B0 gain[k,:] = G self.all_bt = mean(ma.masked_equal(all_bt,0),axis=2) # contains 0 where not calculated self.all_radiance = mean(ma.masked_equal(all_radiance,0),axis=2) self.offset = offset self.gain = gain
Thot = sequence.temp_hbb[i_hbb] # exact HBB temperature at measurement Tpma1 = sequence.temp_pm[i_abb1] # pointing mirror temperature at ABB measurement Tpmh = sequence.temp_pm[i_hbb] # pointing mirror temperature at HBB measurement tamb1 = all_tms[k,0] thot = all_tms[k,1]-tamb1 tscene = all_tms[k,2:,None]-tamb1 amb1 = all_mean[k,0,:] hot = all_mean[k,1,:] scene = all_mean[k,2:,:] Tamb2 = Tamb1 Tpma2 = Tpma1 tamb2 = tamb1 amb2 = amb1 G,B0,rad_scene,bt = Toolbox.get_calib(amb1,hot,scene,amb2,thot,tscene,tamb2,Tamb1,Thot,Tamb2,filters[0],emiss_wls,emiss,Tpma1,Tpmh,Tpma2) new_G = zeros([4800]) new_B0 = zeros([4800]) new_G[illuminated] = G[illuminated] new_B0[illuminated] = B0[illuminated] new_B0[non_illuminated] = B0[non_illuminated] #new_G = G #new_B0 = B0 fig,(ax1,ax2) = subplots(2,1,figsize=(8,10)) fig.subplots_adjust(bottom=0.1,left=0.05,right=0.95,hspace=0.3) cs1 = ax1.imshow(reshape(new_G,(60,80)),vmin=-34,vmax=-31.5,cmap=cm.gist_rainbow,interpolation='none')