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

Added GPS Times.

Required getting data out of ligolw tables.
Incidentally added processing of Omega results.
parent 63d779a6
No related branches found
No related tags found
No related merge requests found
......@@ -21,6 +21,8 @@ class EventSearchForm(forms.Form):
graceidEnd = forms.CharField(required=False)
group = forms.ChoiceField(choices=groupChoices, required=False)
type = forms.ChoiceField(choices=typeChoices, required=False)
gpsStart = forms.IntegerField(min_value=0, required=False)
gpsSlop = forms.IntegerField(min_value=0, required=False)
submitter = forms.ChoiceField(choices=submitterChoices, required=False)
ligoApproved = forms.BooleanField(initial=False, required=False, label="LIGO Approved Only")
......
......@@ -41,6 +41,16 @@ class Event(models.Model):
created = models.DateTimeField(auto_now_add=True)
group = models.ForeignKey(Group)
analysisType = models.CharField(max_length=20, choices=ANALYSIS_TYPE_CHOICES)
# From ligolw coinc_event table -- none are required. yet.
instruments = models.CharField(max_length=20, default="")
nevents = models.PositiveIntegerField(null=True)
likelihood = models.FloatField(null=True)
# NOT from coinc_event, but so, so common.
# Note that the semantics for this is different depending
# on search type, so in some sense, querying on this may
# be considered, umm, wrong? But it is a starting point.
gpstime = models.PositiveIntegerField(null=True)
# XXX Deprecated. Only useful for old test data.
# Remove this when it won't freak people out to lose
......
import os
from models import EventLog
import glue
from glue.gracedb.utils import InspiralCoincIdBase, InspiralCoincDef
from glue.gracedb.utils import BurstCoincIdBase, BurstCoincDef
from glue.gracedb.utils import insp_event_id_dict
from glue.gracedb.utils import coherent_event_id_dict
from glue.gracedb.utils import populate_inspiral_tables, \
populate_burst_tables, \
populate_coinc_tables, \
write_output_files
def handle_uploaded_data(event, datafilename,
log_filename='event.log',
coinc_table_filename='coinc.xml'):
if event.analysisType == 'MBTA':
xmldoc, log_data, detectors = \
populate_inspiral_tables(datafilename, 0)
# XXX ligolw wants ints.
#populate_inspiral_tables(datafilename, #event.graceid())
xmldoc = populate_coinc_tables(xmldoc,
# XXX ligolw wants ints.
#event.graceid(),
0,
InspiralCoincIdBase,
insp_event_id_dict,
InspiralCoincDef,
detectors)
output_dir = os.path.dirname(datafilename)
write_output_files(output_dir, xmldoc, log_data,
xml_fname=coinc_table_filename,
log_fname=log_filename)
# Create EventLog entries about these files.
private_data_url = os.path.join(event.weburl(), 'private')
log = EventLog(event=event,
filename=log_filename,
issuer=event.submitter,
comment="Log File Created" )
log.save()
log = EventLog(event=event,
filename=coinc_table_filename,
issuer=event.submitter,
comment="Coinc Table Created")
log.save()
# Exctract relevant data from xmldoc.
coinc_table = glue.ligolw.table.getTablesByName(
xmldoc,
glue.ligolw.lsctables.CoincInspiralTable.tableName)
coinc_table = coinc_table[0]
event.gpstime = coinc_table[0].end_time
coinc_table = glue.ligolw.table.getTablesByName(
xmldoc,
glue.ligolw.lsctables.CoincTable.tableName)
coinc_table = coinc_table[0]
event.instruments = coinc_table[0].instruments
event.nevents = coinc_table[0].nevents
event.likelihood = coinc_table[0].likelihood
event.save()
elif event.analysisType == 'OM': # Omega
xmldoc, log_data, detectors = populate_burst_tables(datafilename, 0)
xmldoc = populate_coinc_tables(
xmldoc, 0, BurstCoincIdBase, \
coherent_event_id_dict, BurstCoincDef, \
detectors)
output_dir = os.path.dirname(datafilename)
write_output_files(output_dir, xmldoc, log_data)
# Exctract relevant data from xmldoc.
coinc_table = glue.ligolw.table.getTablesByName(
xmldoc,
glue.ligolw.lsctables.MultiBurstTable.tableName)
coinc_table = coinc_table[0]
event.gpstime = coinc_table[0].start_time
coinc_table = glue.ligolw.table.getTablesByName(
xmldoc,
glue.ligolw.lsctables.CoincTable.tableName)
coinc_table = coinc_table[0]
event.instruments = coinc_table[0].instruments
event.nevents = coinc_table[0].nevents
event.likelihood = coinc_table[0].likelihood
event.save()
else:
pass
......@@ -10,9 +10,7 @@ from django.views.generic.list_detail import object_detail, object_list
from models import Event, Group, EventLog
from forms import CreateEventForm, EventSearchForm
from alert import issueAlert
from glue.gracedb.utils import populate_inspiral_tables, populate_coinc_tables, write_output_files
from translator import handle_uploaded_data
import os
......@@ -204,6 +202,8 @@ def search(request):
submitter = form.cleaned_data['submitter']
groupname = form.cleaned_data['group']
typename = form.cleaned_data['type']
gpsStart = form.cleaned_data['gpsStart']
slop = form.cleaned_data['gpsSlop']
if not groupname:
# don't show test events unless explicitly requested
......@@ -229,6 +229,16 @@ def search(request):
objects = objects.filter(id__lte=int(end[1:]))
objects = objects.filter(uid="")
if gpsStart:
slop = slop or 0
if not slop:
objects = objects.filter(gpstime=gpsStart)
else:
gpsStart = int(gpsStart)
slop = int(slop) / 2
objects = objects.filter(gpstime__gte=gpsStart-slop)
objects = objects.filter(gpstime__lte=gpsStart+slop)
if submitter:
objects = objects.filter(submitter=submitter)
if groupname:
......@@ -302,34 +312,3 @@ Initial Entry for %s
os.chmod(pname, 0644)
os.chmod(rcsname, 0444)
def handle_uploaded_data(event, datafilename,
log_filename='event.log',
coinc_table_filename='coinc.xml'):
from glue.gracedb.utils import InspiralCoincId, InspiralCoincDef
from glue.gracedb.utils import insp_event_id_dict
if event.analysisType == 'MBTA':
xmldoc, log_data = populate_inspiral_tables(datafilename)
populate_coinc_tables(xmldoc, InspiralCoincId, insp_event_id_dict, InspiralCoincDef)
output_dir = os.path.dirname(datafilename)
write_output_files(output_dir, xmldoc, log_data,
xml_fname=coinc_table_filename,
log_fname=log_filename)
# Create EventLog entries about these files.
private_data_url = os.path.join(event.weburl(), 'private')
log_comment = "Log File Created"
log = EventLog(event=event,
filename=log_filename,
issuer=event.submitter,
comment=log_comment)
log.save()
comment="Coinc Table Created"
#comment="Coinc Table: %s" % os.path.join(output_dir, coinc_table_filename)
log = EventLog(event=event,
filename=coinc_table_filename,
issuer=event.submitter,
comment=comment)
log.save()
......@@ -18,6 +18,7 @@
<th>Submitter</th>
<th>Group</th>
<th>Type</th>
<th>GPS Time</th>
<th>Web</th>
<th>Wiki</th>
</tr>
......@@ -46,6 +47,7 @@
<td>{{ obj.submitter }} </td>
<td>{{ obj.group }} </td>
<td>{{ obj.get_analysisType_display }} </td>
<td>{% if obj.gpstime%}{{ obj.gpstime }}{% endif %}</td>
<td><a href="{{ obj.weburl }}">Web: {{ obj.graceid }}</a></td>
<td><a href="{{ obj.wikiurl }}">Wiki: {{ obj.graceid }}</a></td>
</tr>
......
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