diff --git a/gracedb/management/commands/make_ifar.py b/gracedb/management/commands/make_ifar.py new file mode 100644 index 0000000000000000000000000000000000000000..5091f00002535fa2acae9b7365cbf51e268fdcc0 --- /dev/null +++ b/gracedb/management/commands/make_ifar.py @@ -0,0 +1,58 @@ + +from django.core.management.base import BaseCommand, NoArgsCommand + +from django.conf import settings +from gracedb.gracedb.models import Event +from gracedb.gracedb.query import parseQuery + +import matplotlib +matplotlib.use('Agg') +import numpy +import scipy +import pylab +#pylab.rc('text', usetex = True) + +class Command(NoArgsCommand): + help = "I am the IFAR MAKER!" + + def handle_noargs(self, **options): + + query = parseQuery(settings.REPORT_CBC_IFAR_QUERY) + print "query", settings.REPORT_CBC_IFAR_QUERY + ts = [] + fars = [] + + events = Event.objects.filter(query).distinct() + print "COUNT", events.count() + for e in events: + ts.append(e.gpstime) + fars.append(e.far) + + #ts,fars = numpy.loadtxt('fars.txt', unpack = True) + + fars = scipy.array(sorted(fars)) + Ns = scipy.arange(len(fars)) + + T = float(max(ts) - min(ts)) + + print "MAX/MIN/T", max(ts), min(ts), T + + 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() + + #ax.set_ylabel(r"$\#$") + #ax.set_xlabel(r"\textrm{FAR (Hz)") + #ax.set_title(r"\textrm{ER1 FARs from {\sc gstlal\_ll\_inspiral}}") + + ax.set_ylabel(r"#") + ax.set_xlabel(r"FAR (Hz)") + ax.set_title(r"ER1 FARs from gstlal_ll_inspiral") + + ax.text(1e-7, 3, r'$t \in [%i, %i)$'%(min(ts), max(ts))) + + pylab.legend(loc='upper right') + + pylab.savefig(settings.REPORT_IFAR_IMAGE) diff --git a/manage_dev.py b/manage_dev.py new file mode 100755 index 0000000000000000000000000000000000000000..e935d64855141dfe4a368e0a2a1adaadd3a56c46 --- /dev/null +++ b/manage_dev.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +from django.core.management import execute_manager + +# THIS IS TERRIBLE, but some idiot named the project AND application gracedb. +# Things looking for gracedb.settings fail because they find the app not the proj. +# This also causes things wanting the app having to do gracedb.gracedb.whatever +# all the time, but that mess has already been made. +import sys, os +sys.path.insert(0, os.path.join(os.path.dirname(__file__),'..')) + +try: + import settings_dev as settings # Assumed to be in the same directory. +except ImportError: + import sys + sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) + sys.exit(1) + +if __name__ == "__main__": + execute_manager(settings)