def ott_rflat_ima(self, deshape=0): npix = Interferometer.N_PIXEL pscale = OttParameters.pscale rmap = self.smap.copy() roffset = (self._ott.referenceMirrorSlider.getPositionInM()-self._ott.parabolaSlider.getPositionInM())*pscale rflat_radius = OttParameters.rflat_radius if abs(roffset)-rflat_radius*pscale < npix[1]/2: rmask = np.ones([npix[0], npix[1]]) rmask = geo.draw_mask(self.mask*0, npix[0]/2, npix[1]/2+roffset, rflat_radius*pscale-1) if deshape == 1: #rima = read_refflat_deformation(1.) #rmap[npix[0]/2-rflat_radius*pscale-1, npix[1]/2-rflat_radius*pscale-1] = rima pass #idr = where(rmask[ott.idx]) ww = np.dot(self.zmat, self.zmx_refflatpos2z()) for i in range(0, 5): rmap[self.parmask == True] = rmap[self.parmask == True] + ww[:, i]*(self._ott.referenceMirror.getPositionInM())[i] #rmap[ott.idx[idr]] += ww[i,idr]* ott.refflat[i] rmap = rmap*rmask #cm = edge_erode(erode=2, rmask) #idc = where((cm+rmask) eq 1) return rmap, rmask
def ott_view(self, show=None): #pixscale = 200. #pix/m #parod = 1.44 #rmod = 0.6 m4 = self.m4pupil.copy() pixscale = OttParameters.PIXEL_SCALE parxy = [self._ott.parabolaSlider.getPositionInM()*pixscale, 0] refmxy = [self._ott.referenceMirrorSlider.getPositionInM()*pixscale, 0] ang = (-30-self._ott.angleRotator.getPosition())*np.pi/180 rmat = np.array([[np.cos(ang), np.sin(ang)], [-np.sin(ang), np.cos(ang)]]) parxy = rmat.dot(parxy) refmxy = rmat.dot(refmxy) ss = np.array(np.shape(m4)) m4c = (ss-1)/2 parcircle = geo.draw_mask(m4*0, parxy[0]+m4c[0], parxy[1]+m4c[1], OttParameters.parab_radius*pixscale) refmcircle = geo.draw_mask(m4*0, refmxy[0]+m4c[0], refmxy[1]+m4c[1], OttParameters.rflat_radius*pixscale) ottimg = m4+parcircle+refmcircle if show is not None: plt.imshow(ottimg) return ottimg
def ott_parab_ima(self): npix = Interferometer.N_PIXEL smap = (self.smap).copy() ww = np.dot(self.zmat, self.zmx_parpos2z()) for i in range(0, 5): smap[self.parmask == True] = smap[self.parmask == True] + ww[:, i]*(self._ott.parabola.getPositionInM())[i] mask = geo.draw_mask(self.mask, npix[0]/2, npix[1]/2, OttParameters.fold_radius*OttParameters.pscale) smap = smap * mask return smap
def iff_images(self, zonal_modal): a = np.zeros((21, 21)) b = geo.draw_mask(a, 10, 10, 10) segmask1 = np.ma.make_mask(self.segmask1) if zonal_modal == 0: s1 = segmask1.copy() s1 = s1.astype(float) b[segmask1 == True] = self.ifmat[3, :] return b elif zonal_modal == 1: comm = np.dot(self.ifmat.T, self.vmat[:, 3]) s1 = segmask1.copy() s1 = s1.astype(float) s1[segmask1 == True] = comm return s1
def testGeometry(self): img = np.random.rand(500, 500) masked_ima = geo.draw_mask(img, 250, 250, 50) geo.qpupil(masked_ima) geo.rotate(img, 30)
def ott_smap(self, offset=None, quant=None, show=0): npix = Interferometer.N_PIXEL pmap = self.ott_parab_ima() m4map, m4smask = self.ott_m4_ima() mmask = m4smask * self.mask smap = (pmap + m4map) * mmask if offset is not None: smap = smap+offset #fullmask = maskm roffset = (self._ott.referenceMirrorSlider.getPositionInM()- self._ott.parabolaSlider.getPositionInM()) * OttParameters.pscale draw_ref = (abs(roffset)-OttParameters.rflat_radius*OttParameters.pscale < npix[1]/2) if draw_ref == 1: rmap, rmask = self.ott_rflat_ima() #smap[ott.idx[idr]] = rmap[ott.idx[idr]]+pmap[ott.idx[idr]] #smap[idc] = 0 #fullmask = maskm+maskr #fullmask[np.where(fullmask)] = 1 #fullmask[idc] = 0 rmap = (rmap + pmap)*rmask romask = geo.draw_mask(self.mask*0, npix[0]/2, npix[1]/2+roffset, OttParameters.rflat_radius*OttParameters.pscale - OttParameters.rflat_cell*OttParameters.pscale) romask = romask+rmask irmask = -rmask+1 smap1 = smap*irmask+rmap smap1 = smap1 + self.offset #this is to be verified smask = rmap + mmask smask[smask != 0] = 1 smask[romask == 1] = 0 smap1 = smap1*smask if quant == 1: print('add quantization') #ToDo smap = add_quantization(smap, bad=fullmask, quant=ott.interf.quantization): #mask = fullmask #cir = qpupil(fullmask, xx=xx, yy=yy,nocircle=1) """ ToDo if keyword_set(show) then begin smap1 = smap out = where(fullmask eq 0) smap1[out] = max(smap1[where(fullmask)]) wset, 0 image_show, /As, smap1;, titl='WF (?) map' wset, 1 gg = ott_geometry(/sh) wset, 3 display_data, mirror.gpos[*], mirror.coord, spot_mag=2, /no_n,/Sh, back=max(mirror.gpos);image_Show, /As, /sh, mirror.m4ima if keyword_set(fringes) then begin wset, 2 loadct, 0,/silent interf = pwrap(smap, lambda=ott.interf.lambda, optfact=1, bad=mask, detector_mask=detmask)*fullmask out = where(fullmask eq 0) interf[0:ott.interf.npix[0]/5,4.5*ott.interf.npix[1]/5:ott.interf.npix[1]-1]=-1 interf[4*ott.interf.npix[0]/5:ott.interf.npix[0]-1,4.5*ott.interf.npix[1]/5:ott.interf.npix[1]-1]=1 image_show, /As, interf, min_v=-1, max_v=1 loadct, 3,/silent endif endif """ if show != 0: plt.clf() plt.subplot(131) plt.imshow(self.ott_view()) plt.subplot(132) plt.imshow(smap1, cmap='hot') plt.colorbar() plt.subplot(133) plt.imshow(self.pwrap(smap1, smask), cmap='gray') return smap1, smask