def getDistFocalImage(image,mask, phaseScreen,pupilSize,scale,plateScale,detectorSize=0, v=1.0,t=0.0,x0=0,y0=0,wl=0.0,expTime=0.0,expNum=5, compl=False) : '''A function for generating image through a mask with atmospheric phasescreen over the pupil at an arbitary moment of time t''' #----------old-------- # phase screen patch extraction #wl_delay=getPupilScreen(phaseScreen,pupilSize,scale,v,t,x0,y0) # converting to phase delay #phases=delayToPhase(wl_delay,wl=1e-6) #--------------------- # phase screen patch extraction if expTime>0 : phases=getPhasesEvolution(phases=phaseScreen,pupilSize=pupilSize,scale=scale, v=v,sfrq=1/expTime,stime=expTime,expTime=expTime,expNum=expNum) else : phases=getPupilScreen(phaseScreen,pupilSize,scale,v,t,x0,y0) # scale factor for FFT scale_f=1.0 if wl > 0.0 : scale_f=wl/(pupilSize*mas2rad(plateScale)) #scale_f=1.22*wl/(np.power(pupilSize,2)*mas2rad(plateScale)*scale) # crop cropPix=detectorSize if detectorSize ==0 : cropPix = int(scale*pupilSize) # returning image if expTime>0 : return getFocalImage(image,mask,phases[0],scale=scale_f,cropPix=cropPix) else : return getFocalImage(image,mask,phases,scale=scale_f,cropPix=cropPix)
#input annulus Mask mask_ann=getAnnulusMask(diam=pupilSize,innDiam=0.9*pupilSize,border=0.0,scale=scale) #input full pupil Mask mask_full=getFullMask(diam=pupilSize,border=0.0,scale=scale) #load jwst mask mask_jwst=np.load('jwst_1000.npy') #activeMask mask=mask_n # image image = np.ones((scale*pupilSize,scale*pupilSize),dtype='complex') + 0j # scale factor for FFT #scale_f=1.22*wl/(np.power(pupilSize,2)*mas2rad(plateScale)*scale) scale_f=wl/(pupilSize*mas2rad(plateScale)) # p=getDistFocalImage(image,mask,wl_delay,pupilSize,scale,v,exp=exp_time) p=getDistFocalImage(image,mask, phases,pupilSize,scale,plateScale,detectorSize=chip_px,v=1.0,t=0.0, wl=wl,expTime=exp_time) displayImage(p**0.1, axisSize=[-plateScale*len(p)/2,plateScale*len(p)/2,-plateScale*len(p)/2,plateScale*len(p)/2], xlabel='mas', ylabel='mas', title='Power Spectrum **0.1',showColorbar=True,flipY=True,cmap='gray') ps=getDistFocalImages(image,mask, phases,pupilSize,scale,plateScale,detectorSize=chip_px, v=v,sfrq=10,stime=2.0,wl=wl,expTime=exp_time,