Esempio n. 1
0
def searchflat(img, listflat):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = readhdr(img)
    JD = readkey3(hdr, 'JD')
    _instrume = readkey3(hdr, 'TELID')
    camera = readkey3(hdr, 'INSTRUME')
    grism0 = readkey3(hdr, 'grism')
    if not listflat:
        directory = floyds.__path__[0] + '/archive/' + str(_instrume) + '/' + camera + '/flat/' + grism0
        listflat = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listflat:
        faltfile = ''
        distance = []
        goodlist = []
        for flat in listflat:
            hdrf = readhdr(flat)
            JDflat = readkey3(hdrf, 'JD')
            filter1 = readkey3(hdrf, 'filter')
            if filter0 == filter1:
                goodlist.append(flat)
                distance.append(abs(JD - JDflat))
        if len(distance) >= 1:
            flatfile = goodlist[argmin(distance)]
        else:
            flatfile = ''
    else:
        flatfile = ''
    return flatfile, directory
Esempio n. 2
0
def searchflat(img, listflat):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = readhdr(img)
    JD = readkey3(hdr, 'JD')
    _instrume = readkey3(hdr, 'TELID')
    grism0 = readkey3(hdr, 'grism')
    if not listflat:
        directory = floyds.__path__[0] + '/archive/' + str(_instrume) + '/flat/' + grism0
        listflat = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listflat:
        faltfile = ''
        distance = []
        goodlist = []
        for flat in listflat:
            hdrf = readhdr(flat)
            JDflat = readkey3(hdrf, 'JD')
            filter1 = readkey3(hdrf, 'filter')
            if filter0 == filter1:
                goodlist.append(flat)
                distance.append(abs(JD - JDflat))
        if len(distance) >= 1:
            flatfile = goodlist[argmin(distance)]
        else:
            flatfile = ''
    else:
        flatfile = ''
    return flatfile, directory
def fluxcalib2d(img2d, sensfun):  # flux calibrate 2d images
    import pyfits
    import re, string
    from pyfits import open as popen
    from numpy import arange, array, float32
    from numpy import interp as ninterp
    import floyds
    from floyds.util import readhdr, readkey3, delete

    _tel = floyds.util.readkey3(floyds.util.readhdr(re.sub('\n', '', img2d)),
                                'TELID')
    if _tel == 'fts':
        _extinction = 'ssoextinct.dat'
        _observatory = 'sso'
    elif _tel == 'ftn':
        _extinction = 'maua.dat'
        _observatory = 'cfht'
    else:
        sys.exit('ERROR: observatory not recognised')

    data2d, hdr2d = pyfits.getdata(img2d, 0, header=True)
    if 'GRISM' in hdr2d: _arm = hdr2d['GRISM']
    else: _arm = ''
    xxd = arange(len(data2d[0, :]))
    crvald = popen(img2d)[0].header.get('CRVAL1')
    cdd = popen(img2d)[0].header.get('CD1_1')
    _exptime, _airmass = readkey3(readhdr(img2d),
                                  'exptime'), readkey3(readhdr(img2d),
                                                       'airmass')
    #  read sensfunction and interpole pixel of 2D image
    yys = popen(sensfun)[0].data
    crvals = popen(sensfun)[0].header.get('CRVAL1')
    cds = popen(sensfun)[0].header.get('CD1_1')
    yys = (10**(yys / 2.5)) * cds  # from sens iraf in sens flux
    xxs = arange(len(yys))
    aasens = crvals + (xxs) * cds
    xxs2 = (aasens - crvald) / cdd
    aasens2 = ninterp(xxd, xxs2, yys)
    #  read atmosferic function and interpole pixel of 2D image
    aae, yye = floyds.util.ReadAscii2(floyds.__path__[0] +
                                      '/standard/extinction/' + _extinction)
    aae, yye = array(aae, float), array(yye, float)
    xxe = (aae - crvald) / cdd
    atm_xx = ninterp(xxd, xxe, yye)
    aircorr = 10**(0.4 * array(atm_xx) * _airmass)
    img2df = re.sub('.fits', '_2df.fits', img2d)
    for i in range(len(data2d[:, 0])):
        data2d[i, :] = (
            (array(data2d[i, :] / _exptime) * array(aircorr)) / aasens2) * 1e20
    floyds.util.delete(img2df)
    pyfits.writeto(img2df, float32(data2d), hdr2d)
    floyds.util.updateheader(
        img2df, 0, {'SENSFUN' + _arm[0]: [string.split(sensfun, '/')[-1], '']})
    floyds.util.updateheader(
        img2df, 0,
        {'BUNIT': ['erg/cm2/s/A  10^20', 'Physical unit of array values']})
    return img2df
Esempio n. 4
0
def phase3header(img):
    import floyds
    import string
    from floyds.util import readhdr, readkey3
    from numpy import max, min, isfinite
    from astropy.io import fits

    img_data = fits.open(img)[0].data
    hdr = readhdr(img)
    hedvec0 = {
        'DATAMIN': [float(min(img_data[isfinite(img_data)])), ''],
        'DATAMAX': [float(max(img_data[isfinite(img_data)])), ''],
        'ORIGIN': ['ESO', 'European Southern Observatory'],
        'PROCSOFT': ['floyds_' + str(floyds.__version__), 'pipeline version']
    }
    if readkey3(hdr, 'filter'):
        hedvec0['FILTER'] = [readkey3(hdr, 'filter'), 'Filter name']
    if readkey3(hdr, 'gain'):
        hedvec0['GAIN'] = [
            readkey3(hdr, 'gain'), 'Conversion from electrons to ADU'
        ]
    if readkey3(hdr, 'esoid'):
        hedvec0['OBID'] = [readkey3(hdr, 'esoid'), 'Observation block ID']
    if readkey3(hdr, 'esoprog'):
        hedvec0['PROG_ID'] = [
            readkey3(hdr, 'esoprog'), 'ESO program identification'
        ]
    if readkey3(hdr, 'tech'):
        hedvec0['OBSTECH'] = [readkey3(hdr, 'tech'), 'Observation technique']
    floyds.util.updateheader(img, 0, hedvec0)
Esempio n. 5
0
def airmass(img, overwrite=True, _observatory='lasilla'):
    import floyds
    from floyds.util import readhdr, readkey3, delete
    from pyraf import iraf

    iraf.astutil(_doprint=0)
    hdr = readhdr(img)
    if readkey3(hdr, 'UTC'):
        _UT = (readkey3(hdr, 'UTC') + (readkey3(hdr, 'exptime') / 2)) / 3600
        _date = readkey3(hdr, 'date-obs')
        _date = _date[0:4] + '-' + _date[4:6] + '-' + _date[6:8]
        _RA = readkey3(hdr, 'RA') / 15
        _DEC = readkey3(hdr, 'DEC')
        f = file('airmass.txt', 'w')
        f.write('mst = mst ("' + str(_date) + '",' + str(_UT) + ', obsdb ("' + str(_observatory) + '", "longitude"))\n')
        f.write(
            'air = airmass (' + str(_RA) + ',' + str(_DEC) + ',mst, obsdb ("' + str(_observatory) + '", "latitude"))\n')
        f.write('print(air)\n')
        f.close()
        _air = iraf.astcalc(image=img, command="airmass.txt", Stdout=1)[0]
        try:
            _air = float(_air)
        except:
            _air = 999
        delete('airmass.txt')
        if overwrite and _air < 99.:
            floyds.util.updateheader(img, 0, {'AIRMASS': [_air, 'mean airmass computed with astcalc']})
    else:
        _air = ''
    return _air
Esempio n. 6
0
def airmass(img, overwrite=True, _observatory='lasilla'):
    import floyds
    from floyds.util import readhdr, readkey3, delete
    from pyraf import iraf

    iraf.astutil(_doprint=0)
    hdr = readhdr(img)
    if readkey3(hdr, 'UTC'):
        _UT = (readkey3(hdr, 'UTC') + (readkey3(hdr, 'exptime') / 2)) / 3600
        _date = readkey3(hdr, 'date-obs')
        _date = _date[0:4] + '-' + _date[4:6] + '-' + _date[6:8]
        _RA = readkey3(hdr, 'RA') / 15
        _DEC = readkey3(hdr, 'DEC')
        f = file('airmass.txt', 'w')
        f.write('mst = mst ("' + str(_date) + '",' + str(_UT) + ', obsdb ("' + str(_observatory) + '", "longitude"))\n')
        f.write(
            'air = airmass (' + str(_RA) + ',' + str(_DEC) + ',mst, obsdb ("' + str(_observatory) + '", "latitude"))\n')
        f.write('print(air)\n')
        f.close()
        _air = iraf.astcalc(image=img, command="airmass.txt", Stdout=1)[0]
        try:
            _air = float(_air)
        except:
            _air = 999
        delete('airmass.txt')
        if overwrite and _air < 99.:
            floyds.util.updateheader(img, 0, {'AIRMASS': [_air, 'mean airmass computed with astcalc']})
    else:
        _air = ''
    return _air
Esempio n. 7
0
def searchatmo(img, listatmo):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = floyds.util.readhdr(img)
    JD = readkey3(hdr, 'JD')
    _instrume = readkey3(hdr, 'TELID')
    grism0 = readkey3(hdr, 'grism')
    if not listatmo:
        directory = floyds.__path__[0] + '/archive/' + str(_instrume) + '/atmo/' + grism0
        listatmo = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listatmo:
        atmofile = ''
        distance = []
        goodlist = []
        for atmo in listatmo:
            print atmo
            hdra = readhdr(atmo)
            JDarc = readkey3(hdra, 'JD')
            grism1 = readkey3(hdra, 'grism')
            #           slit1=readkey3(hdra,'slit')
            if grism0 == grism1:
                goodlist.append(atmo)
                distance.append(abs(JD - JDarc))
        if len(distance) >= 1:
            atmofile = goodlist[argmin(distance)]
        else:
            atmofile = ''
    else:
        atmofile = ''
    return atmofile, directory
Esempio n. 8
0
def searchatmo(img, listatmo):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = floyds.util.readhdr(img)
    JD = readkey3(hdr, 'JD')
    _instrume = readkey3(hdr, 'TELID')
    grism0 = readkey3(hdr, 'grism')
    if not listatmo:
        directory = floyds.__path__[0] + '/archive/' + str(_instrume) + '/atmo/' + grism0
        listatmo = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listatmo:
        atmofile = ''
        distance = []
        goodlist = []
        for atmo in listatmo:
            print atmo
            hdra = readhdr(atmo)
            JDarc = readkey3(hdra, 'JD')
            grism1 = readkey3(hdra, 'grism')
            #           slit1=readkey3(hdra,'slit')
            if grism0 == grism1:
                goodlist.append(atmo)
                distance.append(abs(JD - JDarc))
        if len(distance) >= 1:
            atmofile = goodlist[argmin(distance)]
        else:
            atmofile = ''
    else:
        atmofile = ''
    return atmofile, directory
Esempio n. 9
0
def fluxcalib2d(img2d,sensfun):  # flux calibrate 2d images
    import pyfits
    import re,string
    from pyfits import open as popen
    from numpy import arange, array, float32
    from numpy import interp as ninterp
    import floyds
    from floyds.util import readhdr,readkey3,delete

    _tel=floyds.util.readkey3(floyds.util.readhdr(re.sub('\n','',img2d)),'TELID')
    if _tel=='fts':
        _extinction='ssoextinct.dat'
        _observatory='sso'
    elif _tel=='ftn':
        _extinction='maua.dat' 
        _observatory='cfht'
    else: sys.exit('ERROR: observatory not recognised')

    data2d, hdr2d = pyfits.getdata(img2d, 0, header=True)
    if 'GRISM' in hdr2d:  _arm=hdr2d['GRISM']
    else:                 _arm=''
    xxd=arange(len(data2d[0,:]))
    crvald=popen(img2d)[0].header.get('CRVAL1')
    cdd=popen(img2d)[0].header.get('CD1_1')
    _exptime,_airmass=readkey3(readhdr(img2d),'exptime'),readkey3(readhdr(img2d),'airmass')
    #  read sensfunction and interpole pixel of 2D image
    yys=popen(sensfun)[0].data
    crvals=popen(sensfun)[0].header.get('CRVAL1')
    cds=popen(sensfun)[0].header.get('CD1_1')    
    yys=(10**(yys/2.5))*cds                  # from sens iraf in sens flux
    xxs=arange(len(yys))
    aasens=crvals+(xxs)*cds
    xxs2=(aasens-crvald)/cdd
    aasens2=ninterp(xxd,xxs2,yys)
    #  read atmosferic function and interpole pixel of 2D image
    aae,yye=floyds.util.ReadAscii2(floyds.__path__[0]+'/standard/extinction/'+_extinction)
    aae,yye=array(aae,float),array(yye,float)
    xxe=(aae-crvald)/cdd
    atm_xx=ninterp(xxd,xxe,yye)
    aircorr=10**(0.4*array(atm_xx)*_airmass)
    img2df=re.sub('.fits','_2df.fits',img2d)
    for i in range(len(data2d[:,0])):  data2d[i,:]=((array(data2d[i,:]/_exptime)*array(aircorr))/aasens2)*1e20
    floyds.util.delete(img2df)
    pyfits.writeto(img2df, float32(data2d), hdr2d)
    floyds.util.updateheader(img2df,0,{'SENSFUN'+_arm[0]:[string.split(sensfun,'/')[-1],'']})
    floyds.util.updateheader(img2df,0,{'BUNIT':['erg/cm2/s/A  10^20','Physical unit of array values']})
    return img2df
Esempio n. 10
0
def searchsens(img, listsens):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = readhdr(img)
    if 'MJD' in hdr:
        JD = readkey3(hdr, 'MJD')
    elif 'MJD-OBS' in hdr:
        JD = readkey3(hdr, 'MJD-OBS')

    _instrume = readkey3(hdr, 'TELID')
    grism0 = readkey3(hdr, 'grism')
    if not listsens:
        directory = floyds.__path__[0] + '/archive/' + str(
            _instrume) + '/sens/' + grism0
        listsens = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listsens:
        sensfile = ''
        distance = []
        goodlist = []
        for sens in listsens:
            hdrs = readhdr(sens)
            if 'MJD' in hdrs:
                JDsens = readkey3(hdrs, 'MJD')
            elif 'MJD-OBS' in hdrs:
                JDsens = readkey3(hdrs, 'MJD-OBS')

            grism1 = readkey3(hdrs, 'grism') if readkey3(
                hdrs, 'grism') else readkey3(hdrs, 'GRISM')
            if grism0 == grism1:
                goodlist.append(sens)
                distance.append(abs(JD - JDsens))
        if len(distance) >= 1:
            sensfile = goodlist[argmin(distance)]
        else:
            sensfile = ''
    else:
        sensfile = ''
    return sensfile, directory
Esempio n. 11
0
def searchsens(img, listsens):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = readhdr(img)
    if 'MJD' in hdr:
        JD = readkey3(hdr, 'MJD')
    elif 'MJD-OBS' in hdr:
        JD = readkey3(hdr, 'MJD-OBS')

    _instrume = readkey3(hdr, 'TELID')
    grism0 = readkey3(hdr, 'grism')
    if not listsens:
        directory = floyds.__path__[0] + '/archive/' + str(_instrume) + '/sens/' + grism0
        listsens = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listsens:
        sensfile = ''
        distance = []
        goodlist = []
        for sens in listsens:
            hdrs = readhdr(sens)
            if 'MJD' in hdrs:
                JDsens = readkey3(hdrs, 'MJD')
            elif 'MJD-OBS' in hdrs:
                JDsens = readkey3(hdrs, 'MJD-OBS')

            grism1 = readkey3(hdrs, 'grism') if readkey3(hdrs, 'grism') else readkey3(hdrs, 'GRISM')
            if grism0 == grism1:
                goodlist.append(sens)
                distance.append(abs(JD - JDsens))
        if len(distance) >= 1:
            sensfile = goodlist[argmin(distance)]
        else:
            sensfile = ''
    else:
        sensfile = ''
    return sensfile, directory
Esempio n. 12
0
def name_duplicate(img, nome, ext):  ###########################
    import re, string, os, glob
    import floyds
    from floyds.util import readhdr, readkey3, delete

    dimg = readkey3(readhdr(img), 'DATE-OBS')
    listafile = glob.glob(nome + '_?' + ext + '.fits') + glob.glob(nome + '_??' + ext + '.fits')
    if len(listafile) == 0:
        nome = nome + "_1" + ext + '.fits'
    else:
        date = []
        for l in listafile:
            date.append(readkey3(readhdr(l), 'DATE-OBS'))
        if dimg in date:
            nome = listafile[date.index(dimg)]
        else:
            n = 1
            while nome + '_' + str(n) + str(ext) + '.fits' in listafile:
                n = n + 1
            nome = nome + '_' + str(n) + str(ext) + '.fits'
    return nome
Esempio n. 13
0
def name_duplicate(img, nome, ext):  ###########################
    import re, string, os, glob
    import floyds
    from floyds.util import readhdr, readkey3, delete

    dimg = readkey3(readhdr(img), 'DATE-OBS')
    listafile = glob.glob(nome + '_?' + ext + '.fits') + glob.glob(nome + '_??' + ext + '.fits')
    if len(listafile) == 0:
        nome = nome + "_1" + ext + '.fits'
    else:
        date = []
        for l in listafile:
            date.append(readkey3(readhdr(l), 'DATE-OBS'))
        if dimg in date:
            nome = listafile[date.index(dimg)]
        else:
            n = 1
            while nome + '_' + str(n) + str(ext) + '.fits' in listafile:
                n = n + 1
            nome = nome + '_' + str(n) + str(ext) + '.fits'
    return nome
Esempio n. 14
0
def searcharc(img, listarc):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = floyds.util.readhdr(img)
    JD = readkey3(hdr, 'JD')
    _instrume = readkey3(hdr, 'TELID')
    camera = readkey3(hdr, 'INSTRUME')
    grism0 = readkey3(hdr, 'grism')
    slit0 = readkey3(hdr, 'slit')
    #if slit0=='6.0' and _instrume in ['fts','2m0b']: slit0='2.0'
    #if slit0=='6.0' and _instrume in ['ftn','2m0a']: slit0='1.6'
    if not listarc:
        directory = floyds.__path__[0] + '/archive/' + str(_instrume) + '/' + camera + '/arc/' + grism0 + '/' + slit0
        listarc = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listarc:
        arcfile = ''
        distance = []
        goodlist = []
        for arc in listarc:
            print arc
            hdra = readhdr(arc)
            JDarc = readkey3(hdra, 'JD')
            grism1 = readkey3(hdra, 'grism')
            slit1 = readkey3(hdra, 'slit')
            if slit0 == slit1 and grism0 == grism1:
                goodlist.append(arc)
                distance.append(abs(JD - JDarc))
        if len(distance) >= 1:
            arcfile = goodlist[argmin(distance)]
        else:
            arcfile = ''
    else:
        arcfile = ''
    return arcfile, directory
Esempio n. 15
0
def spectraresolution(img):
    from floyds import readkey3, readhdr

    hdr = readhdr(img)
    _instrume = readkey3(hdr, 'instrume')
    _slit = readkey3(hdr, 'slit')
    _grism = readkey3(hdr, 'grism')
    risoluzioni = {}
    risoluzioni['floyds'] = {}
    risoluzioni['floyds']['blu', '6.0'] = 99
    risoluzioni['floyds']['blu', '2.0'] = 99
    risoluzioni['floyds']['blu', '1.6'] = 99
    risoluzioni['floyds']['red', '6.0'] = 99
    risoluzioni['floyds']['red', '2.0'] = 99
    risoluzioni['floyds']['red', '1.6'] = 99
    if _instrume in risoluzioni.keys():
        if (_grism, _slit) in risoluzioni[_instrume].keys():
            return risoluzioni[_instrume][_grism, _slit]
        else:
            return ''
    else:
        return ''
Esempio n. 16
0
def spectraresolution(img):
    from floyds import readkey3, readhdr

    hdr = readhdr(img)
    _instrume = readkey3(hdr, 'instrume')
    _slit = readkey3(hdr, 'slit')
    _grism = readkey3(hdr, 'grism')
    risoluzioni = {}
    risoluzioni['floyds'] = {}
    risoluzioni['floyds']['blu', '6.0'] = 99
    risoluzioni['floyds']['blu', '2.0'] = 99
    risoluzioni['floyds']['blu', '1.6'] = 99
    risoluzioni['floyds']['red', '6.0'] = 99
    risoluzioni['floyds']['red', '2.0'] = 99
    risoluzioni['floyds']['red', '1.6'] = 99
    if _instrume in risoluzioni.keys():
        if (_grism, _slit) in risoluzioni[_instrume].keys():
            return risoluzioni[_instrume][_grism, _slit]
        else:
            return ''
    else:
        return ''
Esempio n. 17
0
def correctobject(img, coordinatefile):
    import os, re, sys, string
    from numpy import arccos, sin, cos, pi, argmin
    import floyds
    from floyds.util import readstandard, readhdr, readkey3

    scal = pi / 180.
    std, rastd, decstd, magstd = readstandard(coordinatefile)
    img = re.sub('\n', '', img)
    correctcard(img)
    hdr = readhdr(img)
    _ra = readkey3(hdr, 'RA')
    _dec = readkey3(hdr, 'DEC')
    dd = arccos(
        sin(_dec * scal) * sin(decstd * scal) + cos(_dec * scal) * cos(decstd * scal) * cos((_ra - rastd) * scal)) * (
             (180 / pi) * 3600)
    if min(dd) < 5200:
        floyds.util.updateheader(img, 0, {'OBJECT': [std[argmin(dd)], 'Original target.']})
        aa, bb, cc = rastd[argmin(dd)], decstd[argmin(dd)], std[argmin(dd)]
    else:
        aa, bb, cc = '', '', ''
    return aa, bb, cc
Esempio n. 18
0
def correctobject(img, coordinatefile):
    import os, re, sys, string
    from numpy import arccos, sin, cos, pi, argmin
    import floyds
    from floyds.util import readstandard, readhdr, readkey3

    scal = pi / 180.
    std, rastd, decstd, magstd = readstandard(coordinatefile)
    img = re.sub('\n', '', img)
#    correctcard(img)
    hdr = readhdr(img)
    _ra = readkey3(hdr, 'RA')
    _dec = readkey3(hdr, 'DEC')
    dd = arccos(
        sin(_dec * scal) * sin(decstd * scal) + cos(_dec * scal) * cos(decstd * scal) * cos((_ra - rastd) * scal)) * (
             (180 / pi) * 3600)
    if min(dd) < 5200:
        floyds.util.updateheader(img, 0, {'OBJECT': [std[argmin(dd)], 'Original target.']})
        aa, bb, cc = rastd[argmin(dd)], decstd[argmin(dd)], std[argmin(dd)]
    else:
        aa, bb, cc = '', '', ''
    return aa, bb, cc
Esempio n. 19
0
def searcharc(img, listarc):
    from floyds.util import readhdr, readkey3
    import floyds
    import glob, re
    from numpy import argmin, abs

    hdr = floyds.util.readhdr(img)
    JD = readkey3(hdr, 'JD')
    _instrume = readkey3(hdr, 'TELID')
    grism0 = readkey3(hdr, 'grism')
    slit0 = readkey3(hdr, 'slit')
    #if slit0=='6.0' and _instrume in ['fts','2m0b']: slit0='2.0'
    #if slit0=='6.0' and _instrume in ['ftn','2m0a']: slit0='1.6'
    if not listarc:
        directory = floyds.__path__[0] + '/archive/' + str(_instrume) + '/arc/' + grism0 + '/' + slit0
        listarc = glob.glob(directory + '/*fits')
    else:
        directory = ''
    if listarc:
        arcfile = ''
        distance = []
        goodlist = []
        for arc in listarc:
            print arc
            hdra = readhdr(arc)
            JDarc = readkey3(hdra, 'JD')
            grism1 = readkey3(hdra, 'grism')
            slit1 = readkey3(hdra, 'slit')
            if slit0 == slit1 and grism0 == grism1:
                goodlist.append(arc)
                distance.append(abs(JD - JDarc))
        if len(distance) >= 1:
            arcfile = goodlist[argmin(distance)]
        else:
            arcfile = ''
    else:
        arcfile = ''
    return arcfile, directory
Esempio n. 20
0
def phase3header(img):
    import floyds
    import string
    from floyds.util import readhdr, readkey3
    from numpy import max, min, isfinite
    from pyfits import open as popen

    img_data = popen(img)[0].data
    hdr = readhdr(img)
    hedvec0 = {'DATAMIN': [float(min(img_data[isfinite(img_data)])), ''],
               'DATAMAX': [float(max(img_data[isfinite(img_data)])), ''],
               'ORIGIN': ['ESO', 'European Southern Observatory'],
               'PROCSOFT': ['floyds_' + str(floyds.__version__), 'pipeline version']}
    if readkey3(hdr, 'filter'):
        hedvec0['FILTER'] = [readkey3(hdr, 'filter'), 'Filter name']
    if readkey3(hdr, 'gain'):
        hedvec0['GAIN'] = [readkey3(hdr, 'gain'), 'Conversion from electrons to ADU']
    if readkey3(hdr, 'esoid'):
        hedvec0['OBID'] = [readkey3(hdr, 'esoid'), 'Observation block ID']
    if readkey3(hdr, 'esoprog'):
        hedvec0['PROG_ID'] = [readkey3(hdr, 'esoprog'), 'ESO program identification']
    if readkey3(hdr, 'tech'):
        hedvec0['OBSTECH'] = [readkey3(hdr, 'tech'), 'Observation technique']
    floyds.util.updateheader(img, 0, hedvec0)