Skip to content
Snippets Groups Projects
Commit 2c79ffd2 authored by Brian Moe's avatar Brian Moe
Browse files

IFAR reports.

parent 6e0354b3
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,8 @@ from django.conf import settings
from gracedb.gracedb.models import Event
from gracedb.gracedb.query import parseQuery
import os
import matplotlib
matplotlib.use('Agg')
import numpy
......@@ -12,47 +14,122 @@ import scipy
import pylab
#pylab.rc('text', usetex = True)
class Command(NoArgsCommand):
help = "I am the IFAR MAKER!"
def ifar_none(title, message, filename):
fig = pylab.figure()
ax = fig.add_axes((.1, .1, .8, .8))
ax.set_title(title)
ax.axis([0,10,0,10])
ax.text(3,5,message)
#pylab.legend(loc="center")
pylab.savefig(filename)
def handle_noargs(self, **options):
def ifar_chart(events, title, axis_label, filename):
query = parseQuery(settings.REPORT_CBC_IFAR_QUERY)
print "query", settings.REPORT_CBC_IFAR_QUERY
ts = []
fars = []
ts = []
fars = []
events = Event.objects.filter(query).distinct()
print "COUNT", events.count()
for e in events:
ts.append(e.gpstime)
fars.append(e.far)
for e in events:
ts.append(e.gpstime)
fars.append(e.far)
fars = scipy.array(sorted(fars))
Ns = scipy.arange(len(fars))
T = float(max(ts) - min(ts))
fig = pylab.figure()
ax = fig.add_axes((.1, .1, .8, .8))
ax.loglog(fars, Ns, label=axis_label)
Ns = scipy.arange(len(fars)*10) / 10.
ax.loglog(Ns/T, Ns, label="Expected Background")
ax.fill_between(Ns/T, Ns - Ns**.5, Ns + Ns**.5, color='k', alpha=0.1)
ax.fill_between(Ns/T, Ns - 2 * Ns**.5, Ns + 2 * Ns**.5, color='k', alpha=0.1)
ax.invert_xaxis()
ax.set_ylabel(r"#")
ax.set_xlabel(r"FAR (Hz)")
#ax.set_title(r"ER1 FARs from gstlal_ll_inspiral t in [%i, %i)" %(min(ts), max(ts)))
ax.set_title(title)
#ts,fars = numpy.loadtxt('fars.txt', unpack = True)
pylab.legend(loc='upper right')
pylab.ylim([1, Ns[-1] + 2 * Ns[-1]**.5])
pylab.xlim([fars[-1], fars[0]])
fars = scipy.array(sorted(fars))
Ns = scipy.arange(len(fars))
ax.text(1e-7, 3, r'$t \in [%i, %i)$'%(min(ts), max(ts)))
pylab.savefig(filename)
return
T = float(max(ts) - min(ts))
print "MAX/MIN/T", max(ts), min(ts), T
fars = scipy.array(sorted(fars))
Ns = scipy.arange(len(fars))
fig = pylab.figure()
ax = fig.add_axes((.1, .1, .8, .8))
ax.loglog(fars, Ns, label="GraceDB CBC LowMass ER1 events")
ax.loglog(Ns/T, Ns, label="Expected Background")
ax.invert_xaxis()
T = float(max(ts) - min(ts))
#ax.set_ylabel(r"$\#$")
#ax.set_xlabel(r"\textrm{FAR (Hz)")
#ax.set_title(r"\textrm{ER1 FARs from {\sc gstlal\_ll\_inspiral}}")
fig = pylab.figure()
ax = fig.add_axes((.1, .1, .8, .8))
ax.loglog(fars, Ns, label=axis_label)
Ns = scipy.arange(len(fars)*10) / 10
ax.loglog(Ns/T, Ns, label="Expected Background")
ax.fill_between(Ns/T, Ns - Ns**.5, Ns + Ns**.5, color='k', alpha=0.1)
ax.fill_between(Ns/T, Ns - 2 * Ns**.5, Ns + 2 * Ns**.5, color='k', alpha=0.1)
ax.invert_xaxis()
ax.set_ylabel(r"#")
ax.set_xlabel(r"FAR (Hz)")
ax.set_title(r"ER1 FARs from gstlal_ll_inspiral")
#ax.set_ylabel(r"$\#$")
#ax.set_xlabel(r"\textrm{FAR (Hz)")
#ax.set_title(r"\textrm{ER1 FARs from {\sc gstlal\_ll\_inspiral}}")
ax.text(1e-7, 3, r'$t \in [%i, %i)$'%(min(ts), max(ts)))
ax.set_ylabel(r"#")
ax.set_xlabel(r"FAR (Hz)")
ax.set_title(title)
pylab.legend(loc='upper right')
ax.text(1e-7, 3, r'$t \in [%i, %i)$'%(min(ts), max(ts)))
pylab.legend(loc='upper right')
pylab.ylim([1, Ns[-1] + 2 * Ns[-1]**.5])
pylab.xlim([fars[-1], fars[0]])
pylab.savefig(filename)
class Command(NoArgsCommand):
help = "I am the IFAR MAKER!"
def handle_noargs(self, **options):
for (q, label, title, fname) in settings.REPORTS_IFAR:
query = parseQuery(q)
events = Event.objects.filter(query).distinct()
filename = os.path.join(settings.REPORT_IFAR_IMAGE_DIR, fname)
if events.count() > 0:
ifar_chart(events, title, label, filename)
else:
ifar_none(title, "No Data", filename)
return
query = parseQuery("LowMass now yesterday .. now")
events = Event.objects.filter(query).distinct()
if events.count() > 0:
axis_label = "GraceDB CBC LowMass ER1 events"
title = r"ER1 FARs from gstlal_ll_inspiral - last day"
filename = os.path.join(settings.REPORT_IFAR_IMAGE_DIR, "ifar_day.png")
ifar_chart(events, title, axis_label, filename)
else:
print "No day"
try:
os.unlink(filename)
except:
pass
query = parseQuery("LowMass a week ago .. now")
events = Event.objects.filter(query).distinct()
if events.count() > 0:
axis_label = "GraceDB CBC LowMass ER1 events"
title = r"ER1 FARs from gstlal_ll_inspiral - last week"
filename = os.path.join(settings.REPORT_IFAR_IMAGE_DIR, "ifar_week.png")
ifar_chart(events, title, axis_label, filename)
else:
print "No week"
try:
os.unlink(filename)
except:
pass
pylab.savefig(settings.REPORT_IFAR_IMAGE)
......@@ -11,10 +11,19 @@ def histo(request):
table = open(settings.LATENCY_REPORT_WEB_PAGE_FILE_PATH, "r").read()
except IOError:
table = "No Data Available"
if os.access(settings.REPORT_IFAR_IMAGE, os.R_OK):
ifar = settings.REPORT_IFAR_URL
else:
ifar = None
# IFAR tables.
files = [ f for (_,_,_,f) in settings.REPORTS_IFAR ]
ifar = []
for name in files:
fname = os.path.join(settings.REPORT_IFAR_IMAGE_DIR, name)
if os.access(fname, os.R_OK):
ifar.append(name)
else:
ifar.append('no ' + name)
return render_to_response(
'gracedb/histogram.html',
{'table': table,
......
......@@ -75,9 +75,36 @@ LATENCY_REPORT_DEST_DIR = "/home/gracedb/data/latency"
LATENCY_MAXIMUM_CHARTED = 1800
LATENCY_REPORT_WEB_PAGE_FILE_PATH = LATENCY_REPORT_DEST_DIR + "/latency.inc"
REPORT_CBC_IFAR_QUERY = "LowMass ER1 hasfar"
REPORT_IFAR_IMAGE = LATENCY_REPORT_DEST_DIR + "/ifar.png"
REPORT_IFAR_URL = "ifar.png"
# CBC IFAR Reports
from utils import posixToGpsTime
from datetime import datetime, timedelta
import time
now = datetime.now()
yesterday = now - timedelta(days=1)
lastweek = now - timedelta(days=7)
now = posixToGpsTime(time.mktime(now.timetuple()))
yesterday = posixToGpsTime(time.mktime(yesterday.timetuple()))
lastweek = posixToGpsTime(time.mktime(lastweek.timetuple()))
REPORT_IFAR_IMAGE_DIR = LATENCY_REPORT_DEST_DIR
REPORTS_IFAR = [
#(query, axis_label, title, fname)
("LowMass %d..%d" % (yesterday, now),
"GraceDB CBC LowMass ER1 events",
"ER1 FARs from gstlal_ll_inspiral - last day",
"ifar_day.png"
),
("LowMass %d..%d" % (lastweek, now),
"GraceDB CBC LowMass ER1 events",
"ER1 FARs from gstlal_ll_inspiral - last week",
"ifar_week.png"
),
]
# RSS Feed Defaults
FEED_MAX_RESULTS = 50
......
......@@ -64,9 +64,36 @@ LATENCY_REPORT_DEST_DIR = "/home/bmoe/data/latency"
LATENCY_MAXIMUM_CHARTED = 1800
LATENCY_REPORT_WEB_PAGE_FILE_PATH = LATENCY_REPORT_DEST_DIR + "/latency.inc"
REPORT_CBC_IFAR_QUERY = "LowMass ER1 hasfar"
REPORT_IFAR_IMAGE = LATENCY_REPORT_DEST_DIR + "/ifar.png"
REPORT_IFAR_URL = "ifar.png"
# CBC IFAR Reports
from utils import posixToGpsTime
from datetime import datetime, timedelta
import time
now = datetime.now()
yesterday = now - timedelta(days=1)
lastweek = now - timedelta(days=7)
now = posixToGpsTime(time.mktime(now.timetuple()))
yesterday = posixToGpsTime(time.mktime(yesterday.timetuple()))
lastweek = posixToGpsTime(time.mktime(lastweek.timetuple()))
REPORT_IFAR_IMAGE_DIR = LATENCY_REPORT_DEST_DIR
REPORTS_IFAR = [
#(query, axis_label, title, fname),
("LowMass %d..%d" % (yesterday, now),
"GraceDB CBC LowMass ER1 events",
"ER1 FARs from gstlal_ll_inspiral - last day",
"ifar_day.png"
),
("LowMass %d..%d" % (lastweek, now),
"GraceDB CBC LowMass ER1 events",
"ER1 FARs from gstlal_ll_inspiral - last week",
"ifar_week.png"
),
]
# RSS Feed Defaults
FEED_MAX_RESULTS = 50
......
......@@ -13,9 +13,11 @@
<h3>CBC IFAR</h3>
{% if ifar %}
<img src="{{ ifar }}">hai
{% for chart in ifar %}
<img src="{{ chart }}"><br/>
{% endfor %}
{% else %}
No IFAR table.
No IFAR charts.
{% endif %}
{% endblock %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment