예제 #1
0
        print ''
        print '###########################################################'
        print 'Start Observation Preprocessing'
        print 'Time ellapsed: %s seconds' % (timeDuration)
        print '###########################################################\n'

        # index for iteration cleaning
        i = 0

        while (nb_annulus > 0.1 * initNofAnnulusSources):

            # Observation Directory Parameter determination
            obsPreprocess_Obj = class_obsPreprocessing.obsPreprocessing(
                obsDir, preprocessDir, preprocessImageDir,
                preprocessSkymodelDir, preprocessBBSDir, i, listFiles, Files,
                NbFiles, frequency, UVmin, nIteration, ra_target, dec_target,
                initNofAnnulusSources)

            print '###########################################################'
            print 'Start Imaging Preprocessing at step %s' % (i)
            print 'Time ellapsed: %s seconds' % (timeDuration)
            print '###########################################################\n'

            obsPreprocess_Obj.obsPreprocessImagingFunc()

            print '###########################################################'
            print 'End Imaging Preprocessing at step %s, and Start Source Extraction at step %s' % (
                i, i)
            print 'Time ellapsed: %s seconds' % (timeDuration)
            print '###########################################################\n'
    def selfCalParamFunc(self):
		
		
		thresh_isl				= 6
		thresh_pix				= 8

		if self.frequency > 1.9E8:
				fov	= 1.5
				thresh_isl	= 3
				thresh_pix	= 5
				
		else:
				fov	= 5.0	    


		pixPerBeam	= 4.0

		
		#################################################	    
		# define the best resolution avaible 
		#################################################				
		
		bestBeamresol	= float(fpformat.fix((3E8/self.frequency/self.maxBaseline)*180./3.14*3600.,0))
		
		#Only for CEP 1=> memory limitation
		if bestBeamresol < 10.0:
			bestBeamresol = 10.0
		
		
		bestPixelResol	= float(fpformat.fix(bestBeamresol/pixPerBeam,2))  




		#################################################		
		# check if it is possible to generate the best beam resolution image
		#################################################		
		
				
		memoryCriterion = self.nbSB*self.NbFiles*self.integTimeOnechunk/self.observationIntegTime
		
		criterionLevel = 80000
		
		print ''
		print 'You use data containing %s Subband'%(self.nbSB)
		print 'You have %s time chunk of %s  seconds'%(self.NbFiles,self.integTimeOnechunk)
		print 'And the observation integration time is every  %s seconds'%(self.observationIntegTime)
		print ''
		print 'Your Observation memory Criterion is: %s and the limit is %s'%(memoryCriterion,criterionLevel)
		print ''	
		
		if memoryCriterion > criterionLevel:
		  
			print """\n
			The best Beam resolution avaible with these datas is %s arcsec.\n
			But datas is too voluminous to be process on the node, and AWimager will crash before ending imaging.\n 
			So you need to reprocess (merging subbands phase) with less subbands or less time chunks.\n
			The selfcal process continue but will degrade the Best Beam resolution. \n\n
			The new Best Beam resolution is :%s arcsec/n/n"""%(bestBeamresol,float(fpformat.fix(bestBeamresol*memoryCriterion/criterionLevel,1)))

			bestBeamresol= float(fpformat.fix(bestBeamresol*memoryCriterion/criterionLevel,1))
			bestPixelResol= float(fpformat.fix(bestPixelResol*memoryCriterion/criterionLevel,1))
		   
		   
		
		
		 
		#################################################		 
		# Define the iterations parameters: UVmax, robust, pixel size
		#################################################		
		
				
		UVmax	= range(self.nbCycle)
		wmax	= range(self.nbCycle)
		robust	= range(self.nbCycle)
		pixsize	= range(self.nbCycle)
		nbpixel	= range(self.nbCycle)
		
		
		kcycle	= range(self.nbCycle)
		
		
		badResolFactor	= 15
		
		for i in kcycle: 
		
			pixsize[i]	= float(fpformat.fix((badResolFactor*bestPixelResol)-(i*(badResolFactor*bestPixelResol-bestPixelResol)/(self.nbCycle-1)),3))
			nbpixel[i]	= int(fov*3600./pixsize[i])
			robust[i]	= float(fpformat.fix(1.0-(i*3.0/(self.nbCycle-1)),2))
			
			UVmax[i]	= float(fpformat.fix((3E8/self.frequency)/(pixPerBeam*pixsize[i]/3600.*3.14/180.)/(1E3*3E8/self.frequency),3))
			wmax[i]	= float(fpformat.fix(UVmax[i]*(3E8/self.frequency)*1E3,3))
			
		
		
		#################################################		
		# determine the GSM Skymodel and its path
		#################################################		
		
				
		SkymodelPath	= self.outputDir+'Skymodel/'
		GSMSkymodel		= SkymodelPath+'GSMSkymodel'

		if os.path.isdir(SkymodelPath) != True:
				cmd="""mkdir %s"""%(SkymodelPath)
				os.system(cmd)			


		if self.VLSSuse == 'yes':
				if self.frequency >1.9E8:
					# VLSS skymodel for High HBA		
					if os.path.isfile(GSMSkymodel) != True:	
						cmd="""gsm.py %s %s %s 3 0.5 0.01"""%(GSMSkymodel,self.ra_target,self.dec_target)
						print ''
						print cmd
						print ''
						os.system(cmd)						
				else:
					# VLSS skymodel for LBA/HBA		
					if os.path.isfile(GSMSkymodel) != True:	
						cmd="""gsm.py %s %s %s 10 0.5 0.01"""%(GSMSkymodel,self.ra_target,self.dec_target)
						print ''
						print cmd
						print ''
						os.system(cmd)					
					
			
					
		if self.VLSSuse == 'no':
			
				if self.outerFOVclean == 'yes':
				
						cmd	= 'cp %sPreprocessDir/Skymodel/Skymodel_substraction%s_center %s'%(self.outputDir,self.preprocessIndex,GSMSkymodel)
						print ''
						print 'Annulus cleaning on, use the central sky model instead the VLSS one!'
						print cmd
						print ''
						os.system(cmd)
						
				
				

				if self.outerFOVclean == 'no':
				
						preprocessDir	= '%sPreprocessDir/'%(self.outputDir)
						cmd="""mkdir %s"""%(preprocessDir)
						os.system(cmd)
						print ''
						print 'The PreProcess directory: %s\n has been created'%(preprocessDir)
						print ''

						preprocessImageDir	= '%sImage/'%(preprocessDir)
						cmd="""mkdir %s"""%(preprocessImageDir)
						os.system(cmd)
						print ''
						print 'The PreProcess Image directory: %s\n has been created'%(preprocessImageDir)
						print ''
					
						preprocessSkymodelDir	= '%sSkymodel/'%(preprocessDir)
						cmd="""mkdir %s"""%(preprocessSkymodelDir)
						os.system(cmd)
						print ''
						print 'The PreProcess Skymodel directory: %s\n has been created'%(preprocessSkymodelDir)
						print ''							
						

						preprocessBBSDir	= '%sBBS-Dir/'%(preprocessDir)
						cmd="""mkdir %s"""%(preprocessBBSDir)
						os.system(cmd)
						print ''
						print 'The PreProcess BBS directory: %s\n has been created'%(preprocessSkymodelDir)
						print ''
	
						
						i						=0
						initNofAnnulusSources	= 1000
						nIteration 				= 10000000
						if self.dec_target <= 35:
							UVmin = 0.1
						else:
							UVmin=0
							
						
						obsPreprocess_Obj									= class_obsPreprocessing.obsPreprocessing(self.obsDir,preprocessDir,preprocessImageDir,preprocessSkymodelDir,preprocessBBSDir,i,self.listFiles,self.Files,self.NbFiles,self.frequency,UVmin,nIteration,self.ra_target,self.dec_target,initNofAnnulusSources)
						obsPreprocess_Obj.obsPreprocessImagingFunc() 
						obsPreprocess_Obj.obsPreprocessSrcExtractionFunc()	
						initNofAnnulusSources,nb_annulus					= obsPreprocess_Obj.obsPreprocessAnnulusExtractionFunc()
						
						cmd	= 'cp %sPreprocessDir/Skymodel/Skymodel_substraction%s_center %s'%(self.outputDir,self.preprocessIndex,GSMSkymodel)
						print ''
						print 'Annulus cleaning on, use the central sky model instead the VLSS one!'
						print ''
						os.system(cmd)				
					
				
					
		
			
		
		#################################################	
		# Determine if Strong source in the field of view
		#################################################				
		
		BrightSrcFlag	= 0
		inlistGSM 		= open(GSMSkymodel,'r').readlines()
		nbGSMlines		= len(inlistGSM)
		i=0
		
		if self.VLSSuse == 'yes':
				GSMFluxes	= range(nbGSMlines-3)
				for line in inlistGSM:
					if i >= 3:
						linesplit			= line.split()
						GSMFluxes[i-3] 		= linesplit[4]
						if GSMFluxes[i-3] >= 5:
							BrightSrcFlag = 1
					i=i+1	
					
		if self.VLSSuse == 'no':
				GSMFluxes	= range(nbGSMlines-2)
				for line in inlistGSM:
					if i >= 2:
						linesplit			= line.split()
						GSMFluxes[i-3] 		= linesplit[4]
						if GSMFluxes[i-3] >= 5:
							BrightSrcFlag = 1

		
		RMS_BOX=range(2)
		RMS_BOX[0] = 80
		RMS_BOX[1] = 10
		
		if BrightSrcFlag ==1: 
			RMS_BOX[0] = 40
			RMS_BOX[1] = 10



		 
		#######################################################		
		#Create the image directory 	
		#################################################		
				
		
		ImagePathDir	= self.outputDir+'Image/'

		if os.path.isdir(ImagePathDir) != True:
			cmd="""mkdir %s"""%(ImagePathDir)
			os.system(cmd)	
		
		
		#######################################################	
		# Create the BBS Parset file for Phase calibration only 
		#################################################				
		
		
		BBSDir		= self.outputDir+'BBS-Dir/'
		BBSParset	= BBSDir+'BBS-Parset-Phase-Only'
		
		if os.path.isdir(BBSDir) != True:
			cmd="""mkdir %s"""%(BBSDir)
			os.system(cmd)
		
		
		if os.path.isfile(BBSParset) != True:	
		
			fileBBS = open(BBSParset,'w')
		
			cmd1	= """Strategy.ChunkSize = 100\n"""
			cmd2	= """Strategy.Steps = [solve, correct]\n"""
			cmd3	= """Strategy.InputColumn = DATA\n"""
			cmd4	= '\n'
			cmd5	= """Step.solve.Operation = SOLVE\n"""
			cmd6	= """Step.solve.Model.Sources = []\n"""
			cmd7	= """Step.solve.Model.Gain.Enable = T\n"""
			cmd8	= """Step.solve.Model.Cache.Enable = T\n"""
			cmd9	= """Step.solve.Model.Beam.Enable = T\n"""
			cmd10	= """Step.solve.Model.Beam.UseChannelFreq = True\n"""
			cmd11	= """Step.solve.Model.Beam.Mode = ARRAY_FACTOR\n"""
			cmd12	= """Step.solve.Model.Ionosphere.Enable = F\n"""
			cmd13	= """Step.solve.Model.TEC.Enable = F\n"""
			cmd14	= """Step.solve.Model.Phasors.Enable = T # If solving for AMP or PHASE, or if in addition TEC is enabled. For TEC only, it's F.\n"""
			cmd15	= """Step.solve.Solve.Mode = COMPLEX  #Step.solve.Solve.Mode = COMPLEX\n"""
			cmd16	= """Step.solve.Solve.Parms = ["Gain:0:0:Phase:*", "Gain:1:1:Phase:*"]\n"""
			cmd17	= """Step.solve.Solve.CellSize.Freq = 0 # If not enough SNR, phase solve over entire band of concatenated data\n"""
			cmd18	= """Step.solve.Solve.CellSize.Time = 1\n"""
			cmd19	= """Step.solve.Solve.CellChunkSize = 100\n"""
			cmd20	= """Step.solve.Solve.PropagateSolutions = T\n"""
			cmd21	= """Step.solve.Solve.Options.MaxIter = 100\n"""
			cmd22	= """Step.solve.Solve.Options.EpsValue = 1e-9\n"""
			cmd23	= """Step.solve.Solve.Options.EpsDerivative = 1e-9\n"""
			cmd24	= """Step.solve.Solve.Options.ColFactor = 1e-9\n"""
			cmd25	= """Step.solve.Solve.Options.LMFactor = 1.0\n"""
			cmd26	= """Step.solve.Solve.Options.BalancedEqs = F\n"""
			cmd27	= """Step.solve.Solve.Options.UseSVD = T\n"""
			cmd28	= '\n'
			cmd29	= """Step.correct.Operation = CORRECT\n"""
			cmd30	= """Step.correct.Model.Sources = []\n"""
			cmd31	= """Step.correct.Model.Gain.Enable = T\n"""
			cmd32	= """Step.correct.Model.Beam.Enable = F\n"""
			cmd33	= """Step.correct.Model.Beam.UseChannelFreq = True\n"""
			cmd34	= """Step.correct.Model.TEC.Enable = F\n"""
			cmd35	= """Step.correct.Model.Phasors.Enable = T\n"""
			cmd36	= """Step.correct.Output.Column = CORRECTED_DATA\n"""
			cmd37	= """Step.correct.Output.WriteCovariance = T"""
			
			fileBBS.write(cmd1)
			fileBBS.write(cmd2)
			fileBBS.write(cmd3)
			fileBBS.write(cmd4)
			fileBBS.write(cmd5)
			fileBBS.write(cmd6)
			fileBBS.write(cmd7)
			fileBBS.write(cmd8)
			fileBBS.write(cmd9)
			fileBBS.write(cmd10)
			fileBBS.write(cmd11)
			fileBBS.write(cmd12)
			fileBBS.write(cmd13)
			fileBBS.write(cmd14)
			fileBBS.write(cmd15)
			fileBBS.write(cmd16)
			fileBBS.write(cmd17)
			fileBBS.write(cmd18)
			fileBBS.write(cmd19)
			fileBBS.write(cmd20)
			fileBBS.write(cmd21)
			fileBBS.write(cmd22)
			fileBBS.write(cmd23)
			fileBBS.write(cmd24)
			fileBBS.write(cmd25)
			fileBBS.write(cmd26)
			fileBBS.write(cmd27)
			fileBBS.write(cmd28)
			fileBBS.write(cmd29)
			fileBBS.write(cmd30)
			fileBBS.write(cmd31)
			fileBBS.write(cmd32)
			fileBBS.write(cmd33)
			fileBBS.write(cmd34)
			fileBBS.write(cmd35)
			fileBBS.write(cmd36)
			fileBBS.write(cmd37)
		
			fileBBS.close()
		
		
		print ''
		print 'the calibration Field Of View is: 5 degree'
		print 'Cycle N |Nof pixel | Pixel size | Robust param | UVmax | wmax |'
		for i in kcycle:
			print 'Cycle N %s|'%(i),nbpixel[i],'|',pixsize[i],'|',robust[i],'|',UVmax[i],'|',wmax[i],'|'
		print ''	
		
			
		return ImagePathDir,pixsize,nbpixel,robust,UVmax,wmax,SkymodelPath,GSMSkymodel,RMS_BOX,BBSParset,thresh_isl,thresh_pix
예제 #3
0
			timeDuration=tstop-tstart	

    
			print ''
			print '###########################################################'
			print 'Start Observation Preprocessing'
			print 'Time ellapsed: %s seconds'%(timeDuration)	
			print '###########################################################\n'
			 
			# index for iteration cleaning
			i = 0
		  
			while (nb_annulus > 0.1*initNofAnnulusSources):
				
					# Observation Directory Parameter determination
					obsPreprocess_Obj									= class_obsPreprocessing.obsPreprocessing(obsDir,preprocessDir,preprocessImageDir,preprocessSkymodelDir,preprocessBBSDir,i,listFiles,Files,NbFiles,frequency,UVmin,nIteration,ra_target,dec_target,initNofAnnulusSources)

					print '###########################################################'
					print 'Start Imaging Preprocessing at step %s'%(i)
					print 'Time ellapsed: %s seconds'%(timeDuration)	
					print '###########################################################\n'


					obsPreprocess_Obj.obsPreprocessImagingFunc()    
					
					print '###########################################################'
					print 'End Imaging Preprocessing at step %s, and Start Source Extraction at step %s'%(i,i)
					print 'Time ellapsed: %s seconds'%(timeDuration)	
					print '###########################################################\n'