def makeCompositePlotOfZoomedInImages(koiAndFilterList): fig=pylab.figure(0,figsize=(5,10)) nkoi = len(koiAndFilterList) ncols = 1 if (nkoi % ncols) == 0: nrows = nkoi/ncols else: nrows = nkoi / ncols +1 print nrows, len(koiAndFilterList) for ii,kkff in enumerate(koiAndFilterList): koi = kkff[0] filt = kkff[1] myKoi = koiPlusFilter.koiPlusFilter(koi,filt) print ii, koi, filt if os.path.isfile(ao.koiFilterDir(koi,filt,instrUsed)+ao.finalKOIimageFile(koi,filt,instrUsed)): # pylab.subplot(nrows,ncols,ii+1) finderPlots.zoomedInSubPlot(myKoi,nrows,ncols,ii+1) # os.system("./finderPlots.py "+koi+" Ks "+str(nrows)+" "+str(ncols)+" "+str(ii+1)) pylab.title(koi) # Finish and export pylab.subplots_adjust(wspace=0.1,hspace=0.1) binaryOutfile = ao.plotDir+"combined.pdf" pylab.savefig(binaryOutfile) pylab.close()
def main(): args = sys.argv koi = args[1] filt = args[2] if len(args)>3: instrUsed = args[3] else: instrUsed = "ARIES" k = koiPlusFilter.koiPlusFilter(koi,filt,instrUsed) makeFinderPlot(k)
def makeSingleImagePrettyPlot(koi, outfile, useFilts=["J","Ks"], useInstr="ARIES", showColorBar=True, useScaleMin=0, useScaleMax=100,useColorMap=cm.jet, showArrows=True, useArrowScale=1): print "\n gersdaf",useArrowScale,"\nsdlkfjdkfj" pylab.figure(0,figsize=(10,5)) n=0 for filt in useFilts: if os.path.isdir(ao.koiFilterDir(koi,filt,useInstr)): n=n+1 ii=1 for filt in useFilts: if os.path.isdir(ao.koiFilterDir(koi,filt,useInstr)): # print koi, useInstr, filt, ii, useColorMap myKoi = koiPlusFilter.koiPlusFilter(koi,filt,useInstr) finderPlots.fullSizeSubPlot(myKoi, 1, n, ii, scaleMin=useScaleMin, scaleMax=useScaleMax, showColorBar=showColorBar, useColorMap=useColorMap, showArrows=showArrows,useArrowScale=useArrowScale) ii = ii + 1 if showColorBar: pylab.colorbar(shrink=0.85) pylab.savefig(outfile) pylab.close()
def makeCompositePlotOfZoomedInImages(filt): fig=pylab.figure(0,figsize=(12,6)) nkoi = len(koiForCompositePlot[filt]) ncols = 6 if (nkoi % ncols) == 0: nrows = nkoi/ncols else: nrows = nkoi / ncols +1 print nrows, len(koiForCompositePlot[filt]) for ii,koi in enumerate(koiForCompositePlot[filt]): myKoi = koiPlusFilter.koiPlusFilter(koi,filt,instrUsed) print ii, koi, filt if os.path.isfile(ao.objectsDir+koi+"/"+filt[0]+"/"+ao.finalKOIimageFile(koi,filt,instrUsed)): finderPlots.zoomedInSubPlot(myKoi,nrows,ncols,ii+1) pylab.title(koi) # Finish and export pylab.subplots_adjust(wspace=0.1,hspace=0.1) binaryOutfile = ao.plotDir+"allBinaries_"+filt+".pdf" pylab.savefig(binaryOutfile) pylab.close()
def makeOmniPlot(koiList,name,npix,useHardCodedFigSize=False, useHalfBox=2.0,ncols=4, scalebarLabel="", noLabels=False, figWidth=12, useFilts=["J","Ks"], useInstr= ["ARIES","PHARO"], plotExt=".pdf", plotContourList=False, extraScalebar=False): if (npix % ncols) == 0: nrows = npix/ncols else: nrows = npix / ncols +1 if ncols > 3: fig=pylab.figure(0,figsize=(figWidth,3.5*nrows)) elif ncols ==3: fig=pylab.figure(0,figsize=(figWidth,4.25*nrows)) elif useHardCodedFigSize != False: fig=pylab.figure(0,figsize=(useHardCodedFigSize[0],useHardCodedFigSize[1])) else: fig=pylab.figure(0,figsize=(4,2.5*nrows)) ii=0 for koi in koiList: if koi == "blank": print "leaving blank square" ii = ii + 1 elif koi == "scalebar": ax=pylab.subplot(nrows,ncols,ii+1) pylab.plot([0,1],[1,1],color="k",linewidth=2.0) pylab.text(0.5,1.05, scalebarLabel, color="k", fontsize=18, horizontalalignment='center') pylab.xlim(xmin=0,xmax=1) pylab.ylim(ymin=0,ymax=1.15) pylab.box(on=False) ax.set_xticks([]) ax.set_yticks([]) # pylab.title(scalebarLabel) ii = ii + 1 else: for filt in useFilts: for instr in useInstr: # print "Looking for object:", ao.koiFilterDir(koi,filt,instr) if os.path.isdir(ao.koiFilterDir(koi,filt,instr)): print koi, instr, filt, ii myKoi = koiPlusFilter.koiPlusFilter(koi,filt,instr) if plotContourList == False: useContours = False else: useContours = plotContourList[ii] if ii == 0: ## only plot the (optional) scale bar on the first image finderPlots.zoomedInSubPlot(myKoi,nrows,ncols,ii+1,useColorMap=colorScheme,plotContours=useContours,plotLowerScalebar=extraScalebar,scalebarLabel=scalebarLabel) else: finderPlots.zoomedInSubPlot(myKoi,nrows,ncols,ii+1,useColorMap=colorScheme,plotContours=useContours,plotLowerScalebar=False) if noLabels == False: if (len(useFilts)==1 & (len(useInstr)==1)): pylab.title(koi) else: # pylab.title(koi+"\n"+instr+" "+filt) pylab.title(koi+" "+" "+filt+" ("+scalebarLabel+")") ii = ii + 1 # Finish and export pylab.subplots_adjust(wspace=0.1,hspace=0.1) binaryOutfile = ao.plotDir+"allBinaries_"+name+plotExt if plotExt == ".eps": pylab.savefig(binaryOutfile, format='eps') else: pylab.savefig(binaryOutfile) pylab.close()
def tableForEachStar(obj, distLimit): print "Output all stars within",distLimit,"arcsec to:",ao.starsFile(obj,instr=instrUsed) g = open(ao.starsFile(obj,instr=instrUsed),"w") print >>g, "\t".join(["object",obj]) for filt in filters: if obj in objectDict[filt]: ### Output fwhm for filter print >>g, "\t".join([ filt, "fwhm", str(round(fwhmDict[obj,filt],2)) ]) ### Does this object have additional nearby stars on the image? apertures, starn, xySkyDict, starDict = ao.readPhotMagFile(ao.koiFilterDir(obj,filt,instrUsed), ao.finalKOIimageFile(obj,filt,instrUsed), magSuffix=".mag") # print os.path.isfile(ao.koiFilterDir(obj,filt,instrUsed)+ao.finalKOIimageFile(obj,filt,instrUsed)+".mag") ### Make a koi class for use in undoing rotations k = koiPlusFilter.koiPlusFilter(obj,filt,instrUsed) refX = eval(xySkyDict[1][0]) refY = eval(xySkyDict[1][1]) refXerr = eval(xySkyDict[1][4]) refYerr = eval(xySkyDict[1][5]) if k.dir12 == "N": northDeltaX = k.arrowDeltaX12 northDeltaY = k.arrowDeltaY12 eastDeltaX = k.arrowDeltaX10 eastDeltaY = k.arrowDeltaY10 else: northDeltaX = k.arrowDeltaX10 northDeltaY = k.arrowDeltaY10 eastDeltaX = k.arrowDeltaX12 eastDeltaY = k.arrowDeltaY12 closeComps = [] print obj, " has ",len(xySkyDict)-1," comp stars (any distance) in",filt ### Note stars are 1, not 0, indexed for nn in range(1,len(xySkyDict)+1): #### Distance #### # distPx = math.sqrt( (eval(xySkyDict[nn][0])-eval(xySkyDict[1][0]))**2 + (eval(xySkyDict[nn][1])-eval(xySkyDict[1][1]))**2 ) thisX = eval(xySkyDict[nn][0]) thisY = eval(xySkyDict[nn][1]) thisXerr = eval(xySkyDict[nn][4]) thisYerr = eval(xySkyDict[nn][5]) # print thisX, thisXerr, thisY, thisYerr, obj, refXerr, refYerr deltaX = thisX - refX deltaY = thisY - refY deltaXerr = math.sqrt(thisXerr**2+refXerr**2) deltaYerr = math.sqrt(thisYerr**2+refYerr**2) ## in pixels if ((thisX == refX) & (thisY == refY)): distPx = math.sqrt( (thisX-refX)**2 + (thisY-refY)**2 ) distErrPx = 0 else: distPx, distErrPx = gb.distanceWithErrors(deltaX,deltaY,deltaXerr,deltaYerr) ## in arcsec distArcsec = eval(settings[obj]["Plate_scale_"+filt]) * distPx distArcsecErr = eval(settings[obj]["Plate_scale_"+filt]) * distErrPx ## Get position angles in degrees useDeltaX, useDeltaY = undoRotations(k.rotation, deltaX, deltaY) # print "\nDiag:",useDeltaX, useDeltaY, "unflipped from",deltaX,deltaY,k.rotation if ((thisX == refX) & (thisY == refY)): angle = 0 else: angle = getPA(useDeltaX, useDeltaY,northDeltaX,northDeltaY,eastDeltaX,eastDeltaY) # print "Diag PA:", useDeltaX, useDeltaY, northDeltaX, northDeltaY, eastDeltaX, eastDeltaY, angle #### Delta-magnitude #### try: deltaMag = eval(starDict[nn,'5.00'][3])-eval(starDict[1,'5.00'][3]) except: deltaMag = eval(starDict[nn,'1.00'][3])-eval(starDict[1,'1.00'][3]) print obj,"WARNING: aperture of 1 instead of 5 px; mag values unreliable. A PSF fit binary?\n" ### Now check if it is within our desired cutoff distance if distArcsec <= distLimit: closeComps.append([str(round(distArcsec,2)), str(round(deltaMag,2)), xySkyDict[nn][0], xySkyDict[nn][1], str(round(angle,1))]) #### We want to output the target star even if there are no others (for its pixel location and fwhm) ## print obj,closeComps,"\n\n" print >>g, "Star","Dist","Delta-mag","X_pixel","Y_pixel","PA" for nn,comp in enumerate(closeComps): listOut = gb.flattenList([[str(nn)], closeComps[nn]]) print >>g, gb.listToString(listOut,tab="\t") else: print "object wasn't found for this filter:",obj,filt g.close()