Skip to content

Instantly share code, notes, and snippets.

@tammojan
Last active July 25, 2018 08:22
Show Gist options
  • Save tammojan/c330676515ae46d2a9cbdc76fd090a69 to your computer and use it in GitHub Desktop.
Save tammojan/c330676515ae46d2a9cbdc76fd090a69 to your computer and use it in GitHub Desktop.
Py3 patches for apsynsim
=== modified file 'SCRIPT/APSYNSIM.py'
--- SCRIPT/APSYNSIM.py 2018-05-18 09:21:35 +0000
+++ SCRIPT/APSYNSIM.py 2018-07-25 08:19:45 +0000
@@ -20,7 +20,7 @@
#############################################################################
#import Tkinter
-import FileDialog
+#import FileDialog
import matplotlib as mpl
mpl.use('TkAgg')
import numpy as np
@@ -31,8 +31,7 @@
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.cm as cm
import matplotlib.image as plimg
-from ScrolledText import ScrolledText
-
+from tkinter.scrolledtext import ScrolledText
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
try:
@@ -42,8 +41,8 @@
from matplotlib.backend_bases import NavigationToolbar2
-import tkFileDialog
-from tkMessageBox import showinfo
+from tkinter import filedialog as tkFileDialog
+from tkinter.messagebox import showinfo
import os
import time
import sys
@@ -233,7 +232,7 @@
# Overwrite defaults from config file:
# d1 = os.path.dirname(os.path.realpath(__file__))
d1 = os.path.dirname(os.path.realpath(sys.argv[0]))
- print d1
+ print(d1)
# execfile(os.path.join(os.path.basename(d1),'APSYNSIM.config'))
try:
@@ -309,7 +308,7 @@
mpl.rcParams['toolbar'] = 'None'
- self.Nphf = self.Npix/2
+ self.Nphf = self.Npix//2
self.robfac = 0.0
self.figUV = pl.figure(figsize=(15,8))
@@ -329,7 +328,7 @@
self.antPlot = self.figUV.add_subplot(231,aspect='equal')
- self.UVPlot = self.figUV.add_subplot(232,aspect='equal',axisbg=(0.4,0.4,0.4))
+ self.UVPlot = self.figUV.add_subplot(232,aspect='equal',facecolor=(0.4,0.4,0.4))
self.beamPlot = self.figUV.add_subplot(233,aspect='equal')
self.modelPlot = self.figUV.add_subplot(235,aspect='equal')
self.dirtyPlot = self.figUV.add_subplot(236,aspect='equal')
@@ -389,9 +388,9 @@
self.wax['quit']=pl.axes([0.155,0.02,0.08,0.05])
self.wax['fits']=pl.axes([0.07,0.02,0.08,0.05])
self.wax['loadmod']=pl.axes([0.24,0.08,0.08,0.05])
- self.wax['gammacorr']=pl.axes([0.46,0.08,0.13,0.02],axisbg='white')
- self.wax['diameter']=pl.axes([0.825,0.08,0.10,0.02],axisbg='white')
- self.wax['subarrwgt']=pl.axes([0.15,0.58,0.12,0.02],axisbg='white')
+ self.wax['gammacorr']=pl.axes([0.46,0.08,0.13,0.02],facecolor='white')
+ self.wax['diameter']=pl.axes([0.825,0.08,0.10,0.02],facecolor='white')
+ self.wax['subarrwgt']=pl.axes([0.15,0.58,0.12,0.02],facecolor='white')
self.widget['robust'] = Slider(self.wax['robust'],r'Robust',-2.,2.,valinit=0.0)
self.widget['lat'] = Slider(self.wax['lat'],r'Lat (deg)',-90.,90.,valinit=self.lat/self.deg2rad)
self.widget['dec'] = Slider(self.wax['dec'],r'Dec (deg)',-90.,90.,valinit=self.dec/self.deg2rad)
@@ -477,7 +476,7 @@
self.showError("\n\nPyFITS not installed (or found)!\n\n")
return
- Np4 = self.Npix/4
+ Np4 = self.Npix//4
dx = self.imsize/self.Npix/3600.
dec = self.dec/self.deg2rad
nu = 3.e5/self.wavelength[2]
@@ -640,17 +639,17 @@
self.wavelength = [float(it[1])*1.e-3,float(it[2])*1.e-3]
self.wavelength.append((self.wavelength[0]+self.wavelength[1])/2.)
elif it[0]=='ANTENNA':
- antPos.append(map(float,it[1:]))
+ antPos.append(list(map(float,it[1:])))
Nant += 1
antPos[-1][0] *= 1.e-3 ; antPos[-1][1] *= 1.e-3
Xmax = np.max(np.abs(antPos[-1]+[Xmax]))
elif it[0]=='ANTENNA2':
- antPos2.append(map(float,it[1:]))
+ antPos2.append(list(map(float,it[1:])))
Nant2 += 1
antPos2[-1][0] *= 1.e-3 ; antPos2[-1][1] *= 1.e-3
Xmax = np.max(np.abs(antPos2[-1]+[Xmax]))
elif it[0]=='DIAMETER':
- Diams = map(float,it[1:])
+ Diams = list(map(float,it[1:]))
self.Diameters[0] = Diams[0]
if len(Diams)>1:
self.Diameters[1] = Diams[1]
@@ -744,7 +743,7 @@
if it[0]=='IMAGE':
imfiles.append([str(it[1]),float(it[2])])
elif it[0] in ['G','D','P']:
- models.append([it[0]]+map(float,it[1:]))
+ models.append([it[0]]+list(map(float,it[1:])))
if models[-1][0] != 'P':
models[-1][4] = np.abs(models[-1][4])
Xmax = np.max([np.abs(models[-1][1])+models[-1][4],
@@ -845,7 +844,8 @@
self._plotAntennas(redo=True,rescale=True)
newtext = self.fmtH%(self.lat/self.deg2rad,self.dec/self.deg2rad,self.Hcov[0]/self.Hfac,self.Hcov[1]/self.Hfac)
- self.latText.set_text(newtext)
+ if hasattr(self,'latText'):
+ self.latText.set_text(newtext)
self.Horig = np.linspace(self.Hcov[0],self.Hcov[1],self.nH)
H = self.Horig[np.newaxis,:]
self.H = [np.sin(H),np.cos(H)]
@@ -924,7 +924,7 @@
def _prepareBaselines(self):
- self.Nbas = self.Nant*(self.Nant-1)/2
+ self.Nbas = self.Nant*(self.Nant-1)//2
NBmax = self.Nbas
self.B = np.zeros((NBmax,self.nH),dtype=np.float32)
self.basnum = np.zeros((self.Nant,self.Nant-1),dtype=np.int8)
@@ -1028,7 +1028,7 @@
self.Gsampling[:] = 0.0
self.noisemap[:] = 0.0
elif antidx < self.Nant:
- bas2change = map(int,list(self.basnum[antidx].flatten()))
+ bas2change = list(map(int,list(self.basnum[antidx].flatten())))
else:
bas2change = []
@@ -1044,8 +1044,8 @@
mV = -pixV[goodpix] + self.Nphf
if not antidx==-1:
- # print bas2change
- # print np.shape(goodpix), np.shape(self.Gains), np.shape(self.pixpos[nb][0]), nb
+ # print(bas2change)
+ # print(np.shape(goodpix), np.shape(self.Gains), np.shape(self.pixpos[nb][0]), nb)
self.totsampling[self.pixpos[nb][1],self.pixpos[nb][2]] -= 1.0
self.totsampling[self.pixpos[nb][3],self.pixpos[nb][0]] -= 1.0
self.Gsampling[self.pixpos[nb][1],self.pixpos[nb][2]] -= self.Gains[nb,goodpix]
@@ -1074,7 +1074,7 @@
self.totsampling2[:] = 0.0
# self.Gsampling2[:] = 0.0
elif antidx >= self.Nant:
- bas2change = map(int,list(self.basnum2[antidx-self.Nant].flatten()))
+ bas2change = list(map(int,list(self.basnum2[antidx-self.Nant].flatten())))
else:
bas2change = []
@@ -1170,7 +1170,7 @@
self.showError('File %s does NOT exist. Cannot read the model!'%imfile[0])
return
- Np4 = self.Npix/4
+ Np4 = self.Npix//4
img = plimg.imread(imfile[0]).astype(np.float32)
dims = np.shape(img)
d3 = min(2,dims[2])
@@ -1179,16 +1179,16 @@
avimg -= np.min(avimg)
avimg *= imfile[1]/np.max(avimg)
if d1 == self.Nphf:
- sh0 = (self.Nphf-dims[0])/2
- sh1 = (self.Nphf-dims[1])/2
+ sh0 = (self.Nphf-dims[0])//2
+ sh1 = (self.Nphf-dims[1])//2
self.modelimTrue[sh0+Np4:sh0+Np4+dims[0], sh1+Np4:sh1+Np4+dims[1]] += zoomimg
else:
zoomimg = spndint.zoom(avimg,float(self.Nphf)/d1)
zdims = np.shape(zoomimg)
zd0 = min(zdims[0],self.Nphf)
zd1 = min(zdims[1],self.Nphf)
- sh0 = (self.Nphf-zdims[0])/2
- sh1 = (self.Nphf-zdims[1])/2
+ sh0 = (self.Nphf-zdims[0])//2
+ sh1 = (self.Nphf-zdims[1])//2
self.modelimTrue[sh0+Np4:sh0+Np4+zd0, sh1+Np4:sh1+Np4+zd1] += zoomimg[:zd0,:zd1]
@@ -1204,7 +1204,7 @@
if self.Diameters[0]>0.0:
PB = 2.*(1220.*180./np.pi*3600.*self.wavelength[2]/self.Diameters[0]/2.3548)**2. # 2*sigma^2
- # print PB, np.max(self.distmat),self.wavelength
+ # print(PB, np.max(self.distmat),self.wavelength)
beamImg = np.exp(self.distmat/PB)
self.modelim[0][:] = self.modelimTrue*beamImg
else:
@@ -1228,7 +1228,7 @@
def _plotModel(self,redo=True):
- Np4 = self.Npix/4
+ Np4 = self.Npix//4
if redo:
self.modelPlot.cla()
@@ -1276,11 +1276,11 @@
def _plotDirty(self,redo=True):
- Np4 = self.Npix/4
+ Np4 = self.Npix//4
self.dirtymap[:] = (np.fft.fftshift(np.fft.ifft2(np.fft.ifftshift(self.GrobustNoise)+self.modelfft*np.fft.ifftshift(self.Grobustsamp)))).real/(1.+self.W2W1)
- # print 'RMS: ',np.std(np.abs(self.dirtymap[:])),np.max(np.abs(self.GrobustNoise)),np.max(np.abs(self.totsampling))
+ # print('RMS: ',np.std(np.abs(self.dirtymap[:])),np.max(np.abs(self.GrobustNoise)),np.max(np.abs(self.totsampling)))
if self.Nant2 > 1:
self.dirtymap[:] += (np.fft.fftshift(np.fft.ifft2(self.modelfft2*np.fft.ifftshift(self.robustsamp2)))).real*(self.W2W1/(1.+self.W2W1))
@@ -1288,7 +1288,7 @@
else:
self.dirtymap /= self.beamScale
- # print 'RMS2: ',np.std(np.abs(self.dirtymap[:])) #, self.beamScale
+ # print('RMS2: ',np.std(np.abs(self.dirtymap[:])) #, self.beamScale)
extr = [np.min(self.dirtymap),np.max(self.dirtymap)]
if redo:
@@ -1427,7 +1427,7 @@
def _plotBeam(self,redo=True):
- Np4 = self.Npix/4
+ Np4 = self.Npix//4
if redo:
self.beamPlot.cla()
self.beamPlotPlot = self.beamPlot.imshow(self.beam[Np4:self.Npix-Np4,Np4:self.Npix-Np4],picker=True,interpolation='nearest', cmap=self.currcmap)
@@ -1918,17 +1918,17 @@
fname = tkFileDialog.asksaveasfilename(defaultextension='.array',title='Save current array...')
iff = open(fname,'w')
- print >> iff,'LATITUDE % 3.1f'%(self.lat/self.deg2rad)
- print >> iff,'DECLINATION % 3.1f'%(self.dec/self.deg2rad)
+ print('LATITUDE % 3.1f'%(self.lat/self.deg2rad), file=iff)
+ print('DECLINATION % 3.1f'%(self.dec/self.deg2rad), file=iff)
toprint = tuple([l/self.Hfac for l in self.Hcov])
- print >> iff,'HOUR_ANGLE % 3.1f % 3.1f'%toprint
+ print('HOUR_ANGLE % 3.1f % 3.1f'%toprint, file=iff)
if self.Diameters[0] != 0.0 or self.Diameters[1] != 0.0:
- print >> iff,'DIAMETER % 3.1f % 3.1f'%tuple(self.Diameters)
+ print('DIAMETER % 3.1f % 3.1f'%tuple(self.Diameters), file=iff)
for ant in self.antPos:
toprint = tuple([p*1.e3 for p in ant])
- print >> iff,'ANTENNA % .3e % .3e'%toprint
+ print('ANTENNA % .3e % .3e'%toprint, file=iff)
self.antText.set_text('SAVED: %s'%os.path.basename(fname))
pl.draw()
@@ -2044,7 +2044,7 @@
self.me.config(menu=menubar)
self.me.protocol("WM_DELETE_WINDOW", self.quit)
- self.Np4 = self.parent.Npix/4
+ self.Np4 = self.parent.Npix//4
self.figCL1 = pl.figure(figsize=(12,6))
# self.figCL2 = pl.figure(figsize=(6,6))
@@ -2586,11 +2586,11 @@
rslice = self.residuals[self.Np4:self.parent.Npix-self.Np4,self.Np4:self.parent.Npix-self.Np4]
peakpos = np.unravel_index(np.argmax(tempres),np.shape(self.residuals))
peakval = self.residuals[peakpos[0],peakpos[1]]
- self.residuals -= gain*peakval*np.roll(np.roll(psf,peakpos[0]-self.parent.Npix/2,axis=0), peakpos[1]-self.parent.Npix/2,axis=1)
+ self.residuals -= gain*peakval*np.roll(np.roll(psf,peakpos[0]-self.parent.Npix//2,axis=0), peakpos[1]-self.parent.Npix//2,axis=1)
tempres[goods] = self.residuals[goods]
# MODIFY CLEAN MODEL!!
self.cleanmodd[peakpos[0],peakpos[1]] += gain*peakval
- self.cleanmod += gain*peakval*np.roll(np.roll(self.cleanBeam,peakpos[0]-self.parent.Npix/2,axis=0), peakpos[1]-self.parent.Npix/2,axis=1)
+ self.cleanmod += gain*peakval*np.roll(np.roll(self.cleanBeam,peakpos[0]-self.parent.Npix//2,axis=0), peakpos[1]-self.parent.Npix//2,axis=1)
self.ResidPlotPlot.set_array(rslice)
self.CLEANPEAK = np.max(self.cleanmod)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment