def enlargeimage(img, outputimage, _system, factor): import snoopy2 from snoopy2 import src _telescope = src.telescope(img) _header = src.read_parameter(_telescope, _system) _xdimen = src.xdimen(img, _telescope) _ydimen = src.ydimen(img, _telescope) S = int(_xdimen / factor) xtot = S + int(_xdimen) + S ytot = S + int(_ydimen) + S xstart = S xstop = S + int(_xdimen) ystart = S ystop = S + int(_ydimen) from iraf import ctio src.delete('testim.fits') iraf.imcreate('testim.fits', naxis=2, naxis1=xtot, naxis2=ytot, header='copy', referen=img) mm = iraf.imstat(img, fields='mean', nclip=3, lsigma=5, usigma=2, Stdout=1)[1] src.delete('testim2.fits') iraf.imarith(operand1='testim.fits', op='+', operand2=mm, result='testim2.fits') src.delete(outputimage) print 'testim2.fits[' + str(xstart) + ':' + str(xstop) + ',' + str( ystart) + ':' + str(ystop) + ']' iraf.imcopy(input=img, output='testim2.fits[' + str(xstart) + ':' + str(xstop) + ',' + str(ystart) + ':' + str(ystop) + ']') iraf.imrename('testim2.fits', outputimage) return outputimage
#!/usr/bin/env python from snoopy2 import src import os, glob, shutil, sys if len(sys.argv) <= 1: listfits = glob.glob('*fits') for img in listfits: print img img = raw_input('Which image do you want to test [' + str(listfits[0]) + '] ? ') if not img: img = listfits[0] else: img = sys.argv[1] _telescope = src.telescope(img) print '## ' print _telescope print '## ' _system = src.check_system(_telescope, img, Stdout=True) if _system not in [0, 1, 2]: _header = src.read_parameter(_telescope, 0) else: _header = src.read_parameter(_telescope, _system) _imagetype = src.imagetype(img, _header, _telescope) _object = src.objects(img, _header, _telescope) _JD = src.JD(img, _header, _telescope) _airmass = src.airmass(img, _header, _telescope)
def sn_coordinate(imgl, _interactive): from math import sqrt from snoopy2 import src import snoopy2 from pyraf import iraf import string import os imgl = src.replace_directory(imgl) if imgl[-5:] != '.fits': imgllong = imgl + '.fits' else: imgllong = imgl listastandard = snoopy2.__path__[ 0] + '/standard/fluxstandard/supernovaelist.txt' f = open(listastandard, 'r') liststd = f.readlines() f.close() star, ra, dec = [], [], [] for i in liststd: vector = string.split(i) star.append(vector[0]) #print vector ra.append( float(vector[1]) + ((float(vector[2]) + (float(vector[3]) / 60.)) / 60.)) if float(vector[4]) > 0: dec.append( float(vector[4]) + ((float(vector[5]) + (float(vector[6]) / 60.)) / 60.)) else: aa = -1 * ((abs(float(vector[4]))) + ((float(vector[5]) + (float(vector[6]) / 60.)) / 60.)) dec.append(aa) print ra[-1], dec[-1], star[-1] _telescope = src.telescope(imgllong) _system = src.check_system(_telescope, imgllong, Stdout=True) _header = src.read_parameter(_telescope, _system) if _telescope == 'other': print 'other' _xdimen = src.xdimen(imgllong, _telescope) _ydimen = src.ydimen(imgllong, _telescope) xcenter = int(float(_xdimen) / 2) ycenter = int(float(_ydimen) / 2) f = open('_tmp.tv', 'w') f.write(str(xcenter) + ' ' + str(ycenter) + '\n') f.close() iraf.delete('tmp.coo') iraf.wcsctran('_tmp.tv', 'tmp.coo', imgl, inwcs='logical', units='degrees degrees', outwcs='world', columns='1 2', formats='%10.8f %10.8f') sss = iraf.fields('tmp.coo', '1,2', Stdout=1) _RA, _DEC = string.split(sss[2]) _RA = float(_RA) / 15. _DEC = float(_DEC) else: _RA = src.RA(imgllong, _header, _telescope) _DEC = src.DEC(imgllong, _header, _telescope) print _RA, _DEC ra0 = '' if _RA and _DEC: for st in range(len(star)): distance = sqrt((float(_RA) - float(ra[st]))**2 + (float(_DEC) - float(dec[st]))**2) print st, distance if distance <= 0.5: print str(star[st]), str(_RA), str(_DEC), str(distance) refstar = string.split(star[st])[0] ra0, dec0 = ra[st], dec[st] if _interactive: print '' print '############################################' question = raw_input( 'Is this the right object ? [y/n] [y]') print '############################################' print '' if not question: question = 'y' if question in ['Yes', 'Y', 'y', 'YES', 'yes']: break else: ra0, dec0 = '', '' else: print '############################################' print ' object found ' + str(refstar) print '############################################' break if ra0: os.system('rm -rf tmp.*') ff = open('tmp.tv', 'w') ff.write(str(ra0 * 15.) + ' ' + str(dec0)) ff.close() iraf.wcsctran('tmp.tv', 'tmp.pix', imgl, inwcs='world', units='degrees degrees', outwcs='logical', columns='1 2', formats='%10.1f %10.1f') iraf.tvmark(1, 'tmp.pix', mark="circle", number='yes', radii=10, nxoffse=5, nyoffse=5, color=214, txsize=2) xx, yy = string.split(iraf.fields('tmp.pix', '1,2', Stdout=1)[2]) print xx, yy os.system('rm -rf tmp.*') else: xx, yy = '', '' print '### WARNING: no object in the list' return xx, yy
if opt in ('-i', '--interactive'): interactive = True if opt in ('-t', '--transform'): _transform = True if opt in ('-o', '--output'): out = arg if opt in ('-r', '--rejection'): _rejection = arg if opt in ('-c', '--combine'): _combine = arg if opt in ('-s', '--system'): _system = int(arg) if opt in ('-z', '--zero'): _zero = True if opt in ('-f', '--factor'): _factor = int(arg) if not coordinatelist: print "Please define coordinate list !!!! [svstandard.py filename -l coordinatelist]" ####################################### check ########################## check = 0 _telescope = src.telescope(imglist[0]) print '### TELESCOPE= ' + _telescope if _system not in [0, 1, 2]: _system = src.check_system(_telescope, imglist[0], Stdout=True) else: print '### system = ' + str(_system) check = src.check_tel(imglist[0], _telescope, _system) if check == 0: print '####################################### ' print "#### Error with the header !!!!" print '### telescope not in the list ' print '### if you want to continue anyway,' print '### run "svother.py" to correct header ' print '######################################## '
def fwhm_computation(img, tmpfiltercoo, stars, system, interactive): from snoopy2 import src import snoopy2 import string, os from numpy import compress from numpy import array from numpy import average from numpy import mean from numpy import median from numpy import std from pyraf import iraf from numpy import log10 _telescope = src.telescope(img) _header = src.read_parameter(_telescope, system) _xdimen = src.xdimen(img, _telescope) _ydimen = src.ydimen(img, _telescope) _filter = src.filter(img, _header, _telescope) try: filter = src.filtername(_telescope, _filter, system) except: filter = _filter _exptime = src.exptime(img, _header, _telescope) iraf.delete("tmp.imex_output", verify='no') stars_pos = [] alllines = [] ff = open(tmpfiltercoo, 'r') for j in range(0, 3): exl = ff.readline() for j in range(len(stars)): alllines.append(ff.readline()) xx = string.split(alllines[-1])[0:2] os.system('echo ' + xx[0] + ' ' + xx[1] + '> tmp.two') pp = iraf.imexam(input=img, frame=1, logfile='', keeplog='no', imagecur='tmp.two', defkey='m', wcs='logical', use_disp='no', Stdout=1) if not 1. <= float(xx[0]) <= float(_xdimen) or not 1. <= float( xx[1]) <= float(_ydimen): stars_pos.append(0) elif string.split(pp[1])[-1] == string.split(pp[1])[-2]: stars_pos.append(0) else: stars_pos.append(1) ff.close() ff = open('tmp.' + img + 'good.coo', 'w') for i in range(len(stars_pos)): if stars_pos[i]: ff.write(alllines[i]) ff.close() for i in range(len(alllines)): if stars_pos[i]: ff = open('tmp.one', 'w') xx = string.split(alllines[i])[0:2] ff.write(xx[0] + ' ' + xx[1] + ' a') ff.close() try: iraf.imexam(input=img, frame=1, logfile='tmp.imex_output', keeplog='yes', imagecur='tmp.one', wcs='logical', use_disp='no') except: if not os.path.isfile('tmp.imex_output'): os.system("echo '# [1] " + str(img) + " - " + str(coordinatelist) + "' > tmp.imex_output") os.system( "echo '# COL LINE COORDINATES R MAG FLUX SKY PEAK E PA BETA ENCLOSED MOFFAT DIRECT' >> tmp.imex_output" ) os.system( "echo '999. 999. 999. 999. INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF' >> tmp.imex_output" ) else: os.system( "echo '999. 999. 999. 999. INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF INDEF' >> tmp.imex_output" ) _fwhm0 = iraf.fields('tmp.imex_output', '15', Stdout=1) _mag = iraf.fields('tmp.imex_output', '6', Stdout=1) _fwhm, _magime = [], [] j = 0 for i in range(len(stars)): if stars_pos[i]: try: _magime.append(float(_mag[j]) + 2.5 * log10(_exptime)) except: _magime.append(float(9999)) try: _fwhm.append(float(_fwhm0[j])) except: _fwhm.append(float(9999)) j = j + 1 else: _magime.append(float(9999)) _fwhm.append(float(9999)) fwhm_ave = compress((array(_fwhm) < 999), _fwhm) fwhm_ave1 = compress( (average(fwhm_ave) - 2 * std(fwhm_ave) < array(fwhm_ave)) & (array(fwhm_ave) < average(fwhm_ave) + std(fwhm_ave) * 2), array(fwhm_ave)) _fwhm_ave = mean( compress((average(fwhm_ave1) - 2 * std(fwhm_ave1) < array(fwhm_ave1)) & (array(fwhm_ave1) < average(fwhm_ave1) + std(fwhm_ave1) * 2), array(fwhm_ave1))) fwhm_ave22 = compress( (average(fwhm_ave) - 2 * std(fwhm_ave) < array(fwhm_ave)) & (array(fwhm_ave) < average(fwhm_ave) + std(fwhm_ave) * 2), array(fwhm_ave)) _fwhm_ave2 = median( compress( (average(fwhm_ave22) - 2 * std(fwhm_ave22) < array(fwhm_ave22)) & (array(fwhm_ave22) < average(fwhm_ave22) + std(fwhm_ave22) * 2), array(fwhm_ave22))) checkfwhm = 'yes' while checkfwhm == 'yes': print '################ FWHM(median) = ' + str(_fwhm_ave2) + ' ' print '################ FWHM(mean) = ' + str(_fwhm_ave) + ' ' if interactive: fwhm_ave = raw_input('################ FWHM = [' + str(_fwhm_ave2) + '] ? ') else: fwhm_ave = str(_fwhm_ave2) try: if not fwhm_ave: fwhm_ave = _fwhm_ave2 else: fwhm_ave = float(fwhm_ave) checkfwhm = 'no' except: print 'WARNING: FWHM not good !!!!' checkfwhm = 'yes' #fwhm[filter]=fwhm_ave iraf.hedit(img, 'qubafwhm', fwhm_ave, add='yes', update='yes', verify='no') return fwhm_ave, _magime, stars_pos, _fwhm