コード例 #1
0
ファイル: salthtml.py プロジェクト: saltastro/pipetools
def writediaglog(dlogfile,date,caldate,clobber,logfile,verbose,status):

# overwrite old diagnostic html file if it exists

    line = ' '
    if (status == 0): status = saltio.overwrite(dlogfile,clobber,logfile)

# open diagnostic log html file

    if (status == 0):
        saltprint.log(logfile,'SALTHTML -- creating InstrumentDiagnostics' + date + '.html',verbose)
        outfile, status = saltio.openascii(dlogfile,'w',logfile)

# write html header

    if (status == 0): status = htmlheader(outfile,date,caldate,'InstrumentDiagnostics',0,logfile)

# content pending

    outfile.write('Content pending\n')

# write html footer

    if (status == 0): status = htmlfooter(outfile,logfile)

# close htmlfile

    if (status == 0): status = saltio.closeascii(outfile,logfile)

    return status
コード例 #2
0
ファイル: salthtml.py プロジェクト: saltastro/pipetools
def writeenvlog(elogfile,date,caldate,clobber,logfile,verbose,status):

# overwrite old environemnt log html file if it exists

    line = ' '
    if (status == 0): status = saltio.overwrite(elogfile,clobber,logfile)

# open environment log html file

    if (status == 0):
        saltprint.log(logfile,'SALTHTML -- creating EnvironmentLog' + date + '.html',verbose)
        outfile, status = saltio.openascii(elogfile,'w',logfile)

# write html header

    if (status == 0): status = htmlheader(outfile,date,caldate,'EnvironmentLog',0,logfile)

# content pending

    outfile.write('Content pending\n')

# write html footer

    if (status == 0): status = htmlfooter(outfile,logfile)

# close htmlfile

    if (status == 0): status = saltio.closeascii(outfile,logfile)

    return status
コード例 #3
0
ファイル: salthtml.py プロジェクト: saltastro/pipetools
def htmlfooter(file,logfile):

    file.write("\n</pre>\n")
    file.write("\n</font></center>\n\n")
    file.write("        </div>\n")
    file.write("      </div>\n")
    file.write("      <div id=\"footer\">\n")
    file.write("        &copy SAAO 2007\n")
    file.write("      </div>\n")
    file.write("    </td>\n")
    file.write("  </tr>\n")
    file.write("</table>\n")
    file.write("</body>\n")
    file.write("</html>\n")
    status = saltio.closeascii(file,logfile)

    return status
コード例 #4
0
ファイル: salthtml.py プロジェクト: saltastro/pipetools
def writepipelog(plogfile,date,caldate,clobber,logfile,verbose,status):

# overwrite old pipeline log html file if it exists

    line = ' '
    if (status == 0): status = saltio.overwrite(plogfile,clobber,logfile)

# open pipeline log html file

    if (status == 0):
        saltprint.log(logfile,'SALTHTML -- creating PipelineLog' + date + '.html',verbose)
        outfile, status = saltio.openascii(plogfile,'w',logfile)

# write html header

    if (status == 0): status = htmlheader(outfile,date,caldate,'PipelineLog',0,logfile)

# nightlog file exists?

    if (status == 0):
        if (not os.path.isfile(logfile)):
            message = 'WARNING: SALTHTML -- pipeline log does not exist'
        else:

# open nightlog file

            if (status == 0): infile, status = saltio.openascii(logfile,'r',logfile)

# append night log to html file

            if (status == 0):
                while line:
                    line = infile.readline()
                    outfile.write(line)

# write html footer

    if (status == 0): status = htmlfooter(outfile,logfile)

# close htmlfile

    if (status == 0): status = saltio.closeascii(outfile,logfile)

    return status
コード例 #5
0
ファイル: saltkey.py プロジェクト: swj1442291549/pysalt
def mkheader(file,keyword,value,comment,verbose,logfile):
    """create keyword with mkheader IRAF tool i.e. without opening the whole file"""

    status = 0
    message = 'SALTKEY.MKHEADER: Created keyword ' + keyword + ' in ' + file
    try:
        tmpfile, status = saltio.tmpfile('.',False,logfile)
        tmp, status = saltio.openascii(tmpfile,'w',logfile)
        tmp.write('%-8s= \'%-18s\' / %-s\n' % (keyword,value,comment))
        status = saltio.closeascii(tmp,logfile)
        iraf.noao.artdata.mkheader(file,tmpfile,append='y',verbose='n')
        saltio.delete(tmpfile,False,logfile)
        saltprint.log(logfile,message,verbose)
    except:
        message = 'ERROR -- SALTKEY.MKHEADER: Cannot edit keyword ' + keyword
        message += ' in ' + file
        status = saltprint.err(logfile,message)

    return status
コード例 #6
0
ファイル: salthtml.py プロジェクト: saltastro/pipetools
def salthtml(propcode,scamobslog,rssobslog, hrsobslog, htmlpath,nightlog,readme,clobber,logfile,verbose):

# set up
   
    filenames = []
    proposers = []
    propids = []
    instrumes = []
    objects = []
    ras = []
    decs = []
    detmodes = []
    ccdtypes = []
    ccdsums = []
    gainsets = []
    rospeeds = []
    filters = []
    gratings = []
    gr_angles = []
    ar_angles = []
    time_obss = []
    date_obss = []
    exptimes = []
    hours = []
    filename = {}
    proposer = {}
    propid = {}
    instrume = {}
    object = {}
    ra = {}
    dec = {}
    detmode = {}
    ccdsum = {}
    ccdtype = {}
    gainset = {}
    rospeed = {}
    filter = {}
    grating = {}
    gr_angle = {}
    ar_angle = {}
    time_obs = {}
    exptime = {}
    status=0

# test the logfile

    logfile = saltio.logname(logfile)

# log the call

    saltprint.line(logfile,verbose)
    history = 'SALTHTML -- '
    history += 'scamobslog='+scamobslog+' '
    history += 'rssobslog='+rssobslog+' '
    history += 'htmlpath='+htmlpath+' '
    history += 'nightlog='+nightlog+' '
    history += 'readme='+readme+' '
    yn = 'n'
    if (clobber): yn = 'y'
    history += 'clobber='+yn+' '
    history += 'logfile='+logfile+' '
    yn = 'n'
    if (verbose): yn = 'y'
    history += 'verbose='+yn
    saltprint.log(logfile,history,verbose)

# start time

    saltprint.time('\nSALTHTML -- started at',logfile,verbose)
    saltprint.log(logfile,' ',verbose)

# are the arguments defined

    if (status == 0): pids,status = saltio.argunpack('propcode',propcode ,logfile)
    if (status == 0): status = saltio.argdefined('scamobslog',scamobslog,logfile)
    if (status == 0): status = saltio.argdefined('rssobslog',rssobslog,logfile)
    if (status == 0): status = saltio.argdefined('htmlpath',htmlpath,logfile)



# check htmlpath exists, ends with a "/" and convert to absolute path

    if (status == 0): htmlpath, status = saltio.abspath(htmlpath,logfile)

# check observation log files exist

    if (status == 0 and scamobslog.upper() != 'NONE'): status = saltio.fileexists(scamobslog,logfile)
    if (status == 0 and rssobslog.upper() != 'NONE'): status = saltio.fileexists(rssobslog,logfile)

# read observation logs

    for obslog in [scamobslog, rssobslog, hrsobslog]:
        if (status == 0 and obslog.upper() != 'NONE'): struct,status = saltio.openfits(obslog,logfile)
        if (status == 0 and obslog.upper() != 'NONE'): obstab,status = saltio.readtab(struct[1],obslog,logfile)
        if (status == 0 and obslog.upper() != 'NONE'): status = saltio.closefits(struct,logfile)
        if (status == 0 and obslog.upper() != 'NONE'):
            filenames.extend(obstab.field('filename'))
            objects.extend(obstab.field('object'))
            ras.extend(obstab.field('ra'))
            decs.extend(obstab.field('dec'))
            instrumes.extend(obstab.field('instrume'))
            proposers.extend(obstab.field('proposer'))
            propids.extend(obstab.field('propid'))
            ccdtypes.extend(obstab.field('ccdtype'))
            ccdsums.extend(obstab.field('ccdsum'))
            gainsets.extend(obstab.field('gainset'))
            rospeeds.extend(obstab.field('rospeed'))
            detmodes.extend(obstab.field('detmode'))
            filters.extend(obstab.field('filter'))
            time_obss.extend(obstab.field('time-obs'))
            date_obss.extend(obstab.field('date-obs'))
            exptimes.extend(obstab.field('exptime'))
            if (obslog == rssobslog):
                gratings.extend(obstab.field('grating'))
                gr_angles.extend(obstab.field('gr-angle'))
                ar_angles.extend(obstab.field('ar-angle'))
            else:
                for i in range(len(filenames)):
                    gratings.append(' ')
                    gr_angles.append(0.)
                    ar_angles.append(0.)


# Create the list of proposals

    if (status == 0): pids,status=saltio.cleanpropcode(pids, propids, logfile)


# date of observations
    
    date, caldate = salttime.date_obs2yyyymmdd(date_obss[0])

# sort into chronological order

    for i in range(len(filenames)):
        hours.append(salttime.time_obs2hr(time_obss[i]))
        if (hours[i] < 12.): hours[i] += 24
        filename[str(hours[i])] = filenames[i]
        object[str(hours[i])] = objects[i]
        ra[str(hours[i])] = ras[i]
        dec[str(hours[i])] = decs[i]
        instrume[str(hours[i])] = instrumes[i]
        proposer[str(hours[i])] = proposers[i]
        propid[str(hours[i])] = propids[i]
        ccdsum[str(hours[i])] = ccdsums[i].replace(' ','x')
        ccdtype[str(hours[i])] = ccdtypes[i]
        gainset[str(hours[i])] = gainsets[i]
        rospeed[str(hours[i])] = rospeeds[i]
        detmode[str(hours[i])] = detmodes[i]
        filter[str(hours[i])] = filters[i]
        time_obs[str(hours[i])] = time_obss[i]
        grating[str(hours[i])] = gratings[i]
        gr_angle[str(hours[i])] = gr_angles[i]
        ar_angle[str(hours[i])] = ar_angles[i]
        exptime[str(hours[i])] = exptimes[i]
        if (instrume[str(hours[i])] == 'SALTICAM'): instrume[str(hours[i])] = 'SCM'
        if ('Video Mode' in detmode[str(hours[i])]): detmode[str(hours[i])] = 'VI'
        if ('Slot Mode' in detmode[str(hours[i])]): detmode[str(hours[i])] = 'SL'
        if ('Frame Transfer' in detmode[str(hours[i])]): detmode[str(hours[i])] = 'FT'
        if ('Normal' in detmode[str(hours[i])]): detmode[str(hours[i])] = 'IM'
        if ('Bright' in gainset[str(hours[i])]): gainset[str(hours[i])] = 'BR'
        if ('Faint' in gainset[str(hours[i])]): gainset[str(hours[i])] = 'FA'
        if ('Fast' in rospeed[str(hours[i])]): rospeed[str(hours[i])] = 'FA'
        if ('Slow' in rospeed[str(hours[i])]): rospeed[str(hours[i])] = 'SL'
        if ('OBJECT' not in ccdtype[str(hours[i])].upper() and
            'UNKNOWN' in proposer[str(hours[i])].upper()):
            proposer[str(hours[i])] = ''
    hours.sort()

# create HTML directory in datapath and define html files

    docpath = htmlpath + 'doc/'
    if (status == 0 and not os.path.exists(docpath)): status = saltio.createdir(docpath,False,logfile)

    htmlfile = docpath + 'ObservationSequence' + date +'.html'
    notefile = docpath + 'CapeTownNotes' + date + '.html'
    nlogfile = docpath + 'AstronomersLog' + date + '.html'
    plogfile = docpath + 'PipelineLog' + date + '.html'
    elogfile = docpath + 'EnvironmentLog' + date + '.html'
    dlogfile = docpath + 'InstrumentDiagnostics' + date + '.html'

# Copy css and banner images to the doc directory
    if (status == 0):
        status=saltio.copy(iraf.osfn('pipetools$html/style.css'),docpath,False,logfile)
        status=saltio.copy(iraf.osfn('pipetools$html/style_home.css'),docpath,False,logfile)
        status=saltio.copy(iraf.osfn('pipetools$html/header_salt.jpg'),docpath,False,logfile)


# write observation log html file

    if (status == 0):
        status = writeobslog(htmlfile,filename,object,ra,dec,instrume,detmode,filter,ccdsum,
                             gainset,rospeed,grating,gr_angle,ar_angle,exptime,time_obs,proposer,
                             propid,hours,date,caldate,clobber,logfile,verbose,status)

# write readme html file

    if (status == 0):
        status = writecapetownnotes(notefile,readme,date,caldate,clobber,logfile,verbose,status)

# write nightlog html file

    if (status == 0):
        status = writenightlog(nlogfile,nightlog,date,caldate,clobber,logfile,verbose,status)

# write pipeline log html file

    if (status == 0):
        status = writepipelog(plogfile,date,caldate,clobber,logfile,verbose,status)

# write environment log html file

    if (status == 0):
        status = writeenvlog(elogfile,date,caldate,clobber,logfile,verbose,status)

# write instrument diagnostics html file

    if (status == 0):
        status = writediaglog(dlogfile,date,caldate,clobber,logfile,verbose,status)

# copy html files to PI directories

    if (status == 0):
        saltprint.log(logfile,' ',verbose)
        for pids in set(propids):
            for pid in pids.split(','):
                pid = pid.strip().upper()
                pidpath = htmlpath + pid
                if (os.path.exists(pidpath)):
                    if (os.path.exists(pidpath+'/doc')):
                        for file in glob.glob(pidpath+'/doc/*'):
                            status = saltio.delete(file,False,logfile)
                        status = saltio.deletedir(pidpath+'/doc',logfile)
                    status = saltio.copydir(docpath,pidpath+'/doc',verbose,logfile)
                    if (status == 0):
                        infile, status = saltio.openascii(pidpath+'/doc/CapeTownNotes'+date+'.html','r',logfile)
                    if (status == 0): saltio.delete(pidpath+'/doc/CapeTownNotes'+date+'.html',False,logfile)
                    if (status == 0):
                        outfile, status = saltio.openascii(pidpath+'/doc/CapeTownNotes'+date+'.html','w',logfile)
                        if (status == 0):
                            for line in infile:
                                #line = line.replace('SALT user','Dr ' + string.capwords(pi.lower()))
                                #line = line.replace('yourname',pi)
                                line = line.replace('yyyymmdd',date)
                                outfile.write(line)
                            status = saltio.closeascii(outfile,logfile)

# end time

    if (status == 0):
        saltprint.time('\nSALTHTML -- completed at',logfile,verbose)
    else:
        saltprint.time('\nSALTHTML -- aborted at',logfile,verbose)