disset=set(dis)
dissetcount=[(x, dis.count(x)) for x in disset]
dissetcountdict=dict(dissetcount)	#sfsetcountdict is a dictionary whose keys are weather and values are # reported

#############

hours = dict(observing=obstothr, ToO=tootothr, engineering=engtothr, sys_failure=systothr, weather=wthrtothr)

#gather up the seeing values in a list
minseelist=[eval(i.minsee) for i in nights if  (i.hrobs >0 and i.minsee!='miminum seeing')]#'miminum is not a typo!'
maxseelist=[eval(i.maxsee) for i in nights if  ((i.hrobs >0) and (i.maxsee != 'Maximum seeing'))]

#make charts
nr_charts.dispositionchart(dissetcountdict)
nr_charts.timepie(hours)
nr_charts.failurechart(sfsetcountdict)
nr_charts.weatherchart(wsetcountdict)
#print our results
'''
print '-------------------------'
print 'weather types experienced'
print '-------------------------'
for key in wsetcountdict:
	print key, wsetcountdict[key]
print '---------------------------'
print 'system failures experienced'
print '---------------------------'
for key in sfsetcountdict:
	if key!='':
		print key, sfsetcountdict[key]
Beispiel #2
0
             weather=wthrtothr)

#gather up the seeing values in a list
minseelist = [
    eval(i.minsee) for i in nights
    if (i.hrobs > 0 and i.minsee != 'miminum seeing')
]  #'miminum is not a typo!'
maxseelist = [
    eval(i.maxsee) for i in nights
    if ((i.hrobs > 0) and (i.maxsee != 'Maximum seeing'))
]

#make charts
nr_charts.dispositionchart(dissetcountdict)
nr_charts.timepie(hours)
nr_charts.failurechart(sfsetcountdict)
nr_charts.weatherchart(wsetcountdict)
#print our results
'''
print '-------------------------'
print 'weather types experienced'
print '-------------------------'
for key in wsetcountdict:
	print key, wsetcountdict[key]
print '---------------------------'
print 'system failures experienced'
print '---------------------------'
for key in sfsetcountdict:
	if key!='':
		print key, sfsetcountdict[key]
def createHTML(datestart,tele):
	table=ReadResponse(tele)
	tableMonth=table[ (table['SMARTS Date (BON)'] >= int(datestart)) 
		& (table['SMARTS Date (BON)'] < int(datestart) + 100)]

	weather=countUniq(tableMonth,'Weather Types Experienced')
	sysfail=countUniq(tableMonth, 'System Failures Experienced')
	disposition=countUniq(tableMonth, 'Disposition of the Night')

	hrobs=tableMonth['Hours Observing [Scheduled Science]'].sum()
	hrswthr=tableMonth['Hours Lost to Weather'].sum()
	hreng=tableMonth['Hours Engineering'].sum()
	hrsys=tableMonth['Hours Lost to System Failures'].sum()
	hrsToO=tableMonth['Hours spent doing ToO'].sum()

	hours={"observing":hrobs, "weather":hrswthr, "engineering":hreng, "sys_failure":hrsys, "ToO":hrsToO}

	#make charts
	nr_charts.dispositionchart(disposition,datestart,tele)
	nr_charts.weatherchart(weather,datestart,tele)
	nr_charts.failurechart(sysfail,datestart,tele)
	nr_charts.timepie(hours,datestart,tele)

	#make the html page
	fileHTML=open(str(tele)+'-m-'+datestart+'report.html','w')
	fileHTML.write('<html>')
	fileHTML.write('<head><style>table, th, td {border: 1px solid black;border-collapse: collapse;}th, td {padding: 5px;text-align: left;}</style></head>')
	fileHTML.write('<body><h1>SMARTS '+str(tele)+'-m Night Report Summary '+datestart+'</h1>')
	fileHTML.write('<p><em>created on '+datetime.datetime.today().isoformat(' ')+'</em></p>')
	fileHTML.write('<p><em>Total Nights :'+str(len(tableMonth))+'</em></p>')

	if tele==1.3:
		bonseestat=columnCalc(tableMonth,'Seeing (BON)')
		monseestat=columnCalc(tableMonth,'Seeing (Middle of Night)')
		eonseestat=columnCalc(tableMonth,'Seeing (EON)')
		projdict, noObs = tallyascii(datestart)
		fileHTML.write('<p><em>Nights With No Observing : '+str(noObs)+'</em></p>')
		fileHTML.write('<fieldset><h3>Observing Conditions</h3>')
		cond=countUniq(tableMonth,'Program used')
		nr_charts.condpie(cond,datestart)
		fileHTML.write('<img src="'+datestart+'conditions.png" align="left" width="500px">')
		parseHTMLtable(cond,fileHTML,['Program Used','Total'])
		fileHTML.write('</fieldset>')

		fileHTML.write('<fieldset><h3>Science Observation Break Down</h3>')
		projtime={}
		for key in projdict:
			projtime[key]=np.around(projdict[key]['time']/3600, decimals=1)
		nr_charts.breakdownpie(projdict,datestart)
		fileHTML.write('<img src="'+datestart+'breakdown.png" align="left" width="500px">')
		parseHTMLtable(projtime,fileHTML,['Project ID','Hours'])
		fileHTML.write('</fieldset>')

		fileHTML.write('<fieldset><h3>Seeing Conditions<h3>')
		bonclean=np.where(tableMonth['Seeing (BON)'].__array__()!='n/a')
		monclean=np.where(tableMonth['Seeing (Middle of Night)'].__array__()!='n/a')
		eonclean=np.where(tableMonth['Seeing (EON)'].__array__()!='n/a')

		times=np.array([datetime.datetime.strptime(i, "%m/%d/%Y %H:%M:%S") 
			for i in tableMonth['Timestamp'].__array__()])

		nr_charts.seeingtime(times,[tableMonth['Seeing (BON)'],tableMonth['Seeing (Middle of Night)'],tableMonth['Seeing (EON)']],
			[bonclean,monclean,eonclean],datestart,tele)

		fileHTML.write('<img src="'+str(tele)+'-m-'+datestart+'seeing.png" align="left" width="500px">')
		parseHTMLtable(bonseestat,fileHTML,['BON Statistic','Seeing Value'])
		fileHTML.write('<br><br>')
		parseHTMLtable(monseestat,fileHTML,['MON Statistic','Seeing Value'])
		fileHTML.write('<br><br>')
		parseHTMLtable(eonseestat,fileHTML,['EON Statistic','Seeing Value'])
		fileHTML.write('</fieldset>')

	elif tele==1.5:
		fileHTML.write('<fieldset><h3>Seeing Conditions<h3>')

		maxseestat=columnCalc(tableMonth,'Maximum Seeing')
		minseestat=columnCalc(tableMonth,'Minimum Seeing')
		maxsclean=np.where(tableMonth['Maximum Seeing'].__array__()!='n/a')
		minsclean=np.where(tableMonth['Minimum Seeing'].__array__()!='n/a')

		times=np.array([datetime.datetime.strptime(i, "%m/%d/%Y %H:%M:%S") 
			for i in tableMonth['Timestamp'].__array__()])

		nr_charts.seeingtime(times,[tableMonth['Maximum Seeing'],tableMonth['Minimum Seeing']],
			[maxsclean,minsclean],datestart,tele)

		fileHTML.write('<img src="'+str(tele)+'-m-'+datestart+'seeing.png" align="left" width="500px">')

		parseHTMLtable(maxseestat,fileHTML,['BON Statistic','Seeing Value'])
		fileHTML.write('<br><br>')
		parseHTMLtable(minseestat,fileHTML,['EON Statistic','Seeing Value'])
		
		fileHTML.write('</fieldset>')

	fileHTML.write('<fieldset><h3>Time Loss & Observing</h3>')
	fileHTML.write('<img src="'+str(tele)+'-m-'+datestart+'hours.png" align="left" width="500px">')
	parseHTMLtable(hours,fileHTML,['task','hours'])
	fileHTML.write('</fieldset>')

	fileHTML.write('<fieldset>')
	fileHTML.write('<h3>Weather Conditions</h3>')
	fileHTML.write('<img src="'+str(tele)+'-m-'+datestart+'weather.png" align="left" width="500px">')
	parseHTMLtable(weather,fileHTML,['conditions','hours'])
	fileHTML.write('</fieldset>')
	
	fileHTML.write('<fieldset><h3>System Failures</h3>')
	fileHTML.write('<img src="'+str(tele)+'-m-'+datestart+'systemfail.png" align="left" width="500px">')
	parseHTMLtable(sysfail,fileHTML,['failure','freq.'])
	fileHTML.write('</fieldset>')
	
	fileHTML.write('<fieldset><h3>Night Disposition</h3>')
	fileHTML.write('<img src="'+str(tele)+'-m-'+datestart+'disposition.png" align="left" width="500px">')
	parseHTMLtable(disposition,fileHTML,['Disposition','freq.'])
	fileHTML.write('</fieldset>')

	fileHTML.write('</body></html>')
	fileHTML.close()
	return
Beispiel #4
0
def createHTML(datestart, tele):
    table = ReadResponse(tele)
    tableMonth = table[(table['SMARTS Date (BON)'] >= int(datestart))
                       & (table['SMARTS Date (BON)'] < int(datestart) + 100)]

    weather = countUniq(tableMonth, 'Weather Types Experienced')
    sysfail = countUniq(tableMonth, 'System Failures Experienced')
    disposition = countUniq(tableMonth, 'Disposition of the Night')

    hrobs = tableMonth['Hours Observing [Scheduled Science]'].sum()
    hrswthr = tableMonth['Hours Lost to Weather'].sum()
    hreng = tableMonth['Hours Engineering'].sum()
    hrsys = tableMonth['Hours Lost to System Failures'].sum()
    hrsToO = tableMonth['Hours spent doing ToO'].sum()

    hours = {
        "observing": hrobs,
        "weather": hrswthr,
        "engineering": hreng,
        "sys_failure": hrsys,
        "ToO": hrsToO
    }

    #make charts
    nr_charts.dispositionchart(disposition, datestart, tele)
    nr_charts.weatherchart(weather, datestart, tele)
    nr_charts.failurechart(sysfail, datestart, tele)
    nr_charts.timepie(hours, datestart, tele)

    #make the html page
    fileHTML = open(str(tele) + '-m-' + datestart + 'report.html', 'w')
    fileHTML.write('<html>')
    fileHTML.write(
        '<head><style>table, th, td {border: 1px solid black;border-collapse: collapse;}th, td {padding: 5px;text-align: left;}</style></head>'
    )
    fileHTML.write('<body><h1>SMARTS ' + str(tele) +
                   '-m Night Report Summary ' + datestart + '</h1>')
    fileHTML.write('<p><em>created on ' +
                   datetime.datetime.today().isoformat(' ') + '</em></p>')
    fileHTML.write('<p><em>Total Nights :' + str(len(tableMonth)) +
                   '</em></p>')

    if tele == 1.3:
        bonseestat = columnCalc(tableMonth, 'Seeing (BON)')
        monseestat = columnCalc(tableMonth, 'Seeing (Middle of Night)')
        eonseestat = columnCalc(tableMonth, 'Seeing (EON)')
        projdict, noObs = tallyascii(datestart)
        fileHTML.write('<p><em>Nights With No Observing : ' + str(noObs) +
                       '</em></p>')
        fileHTML.write('<fieldset><h3>Observing Conditions</h3>')
        cond = countUniq(tableMonth, 'Program used')
        nr_charts.condpie(cond, datestart)
        fileHTML.write('<img src="' + datestart +
                       'conditions.png" align="left" width="500px">')
        parseHTMLtable(cond, fileHTML, ['Program Used', 'Total'])
        fileHTML.write('</fieldset>')

        fileHTML.write('<fieldset><h3>Science Observation Break Down</h3>')
        projtime = {}
        for key in projdict:
            projtime[key] = np.around(projdict[key]['time'] / 3600, decimals=1)
        nr_charts.breakdownpie(projdict, datestart)
        fileHTML.write('<img src="' + datestart +
                       'breakdown.png" align="left" width="500px">')
        parseHTMLtable(projtime, fileHTML, ['Project ID', 'Hours'])
        fileHTML.write('</fieldset>')

        fileHTML.write('<fieldset><h3>Seeing Conditions<h3>')
        bonclean = np.where(tableMonth['Seeing (BON)'].__array__() != 'n/a')
        monclean = np.where(
            tableMonth['Seeing (Middle of Night)'].__array__() != 'n/a')
        eonclean = np.where(tableMonth['Seeing (EON)'].__array__() != 'n/a')

        times = np.array([
            datetime.datetime.strptime(i, "%m/%d/%Y %H:%M:%S")
            for i in tableMonth['Timestamp'].__array__()
        ])

        nr_charts.seeingtime(times, [
            tableMonth['Seeing (BON)'], tableMonth['Seeing (Middle of Night)'],
            tableMonth['Seeing (EON)']
        ], [bonclean, monclean, eonclean], datestart, tele)

        fileHTML.write('<img src="' + str(tele) + '-m-' + datestart +
                       'seeing.png" align="left" width="500px">')
        parseHTMLtable(bonseestat, fileHTML, ['BON Statistic', 'Seeing Value'])
        fileHTML.write('<br><br>')
        parseHTMLtable(monseestat, fileHTML, ['MON Statistic', 'Seeing Value'])
        fileHTML.write('<br><br>')
        parseHTMLtable(eonseestat, fileHTML, ['EON Statistic', 'Seeing Value'])
        fileHTML.write('</fieldset>')

    elif tele == 1.5:
        fileHTML.write('<fieldset><h3>Seeing Conditions<h3>')

        maxseestat = columnCalc(tableMonth, 'Maximum Seeing')
        minseestat = columnCalc(tableMonth, 'Minimum Seeing')
        maxsclean = np.where(tableMonth['Maximum Seeing'].__array__() != 'n/a')
        minsclean = np.where(tableMonth['Minimum Seeing'].__array__() != 'n/a')

        times = np.array([
            datetime.datetime.strptime(i, "%m/%d/%Y %H:%M:%S")
            for i in tableMonth['Timestamp'].__array__()
        ])

        nr_charts.seeingtime(
            times,
            [tableMonth['Maximum Seeing'], tableMonth['Minimum Seeing']],
            [maxsclean, minsclean], datestart, tele)

        fileHTML.write('<img src="' + str(tele) + '-m-' + datestart +
                       'seeing.png" align="left" width="500px">')

        parseHTMLtable(maxseestat, fileHTML, ['BON Statistic', 'Seeing Value'])
        fileHTML.write('<br><br>')
        parseHTMLtable(minseestat, fileHTML, ['EON Statistic', 'Seeing Value'])

        fileHTML.write('</fieldset>')

    fileHTML.write('<fieldset><h3>Time Loss & Observing</h3>')
    fileHTML.write('<img src="' + str(tele) + '-m-' + datestart +
                   'hours.png" align="left" width="500px">')
    parseHTMLtable(hours, fileHTML, ['task', 'hours'])
    fileHTML.write('</fieldset>')

    fileHTML.write('<fieldset>')
    fileHTML.write('<h3>Weather Conditions</h3>')
    fileHTML.write('<img src="' + str(tele) + '-m-' + datestart +
                   'weather.png" align="left" width="500px">')
    parseHTMLtable(weather, fileHTML, ['conditions', 'hours'])
    fileHTML.write('</fieldset>')

    fileHTML.write('<fieldset><h3>System Failures</h3>')
    fileHTML.write('<img src="' + str(tele) + '-m-' + datestart +
                   'systemfail.png" align="left" width="500px">')
    parseHTMLtable(sysfail, fileHTML, ['failure', 'freq.'])
    fileHTML.write('</fieldset>')

    fileHTML.write('<fieldset><h3>Night Disposition</h3>')
    fileHTML.write('<img src="' + str(tele) + '-m-' + datestart +
                   'disposition.png" align="left" width="500px">')
    parseHTMLtable(disposition, fileHTML, ['Disposition', 'freq.'])
    fileHTML.write('</fieldset>')

    fileHTML.write('</body></html>')
    fileHTML.close()
    return