Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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()	
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
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()