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

Extended attributes for LM and CWB

parent fc3b178b
No related branches found
No related tags found
No related merge requests found
...@@ -154,7 +154,10 @@ class Event(models.Model): ...@@ -154,7 +154,10 @@ class Event(models.Model):
@classmethod @classmethod
def getByGraceid(cls, id): def getByGraceid(cls, id):
e = cls.objects.get(id=int(id[1:])) try:
e = cls.objects.filter(id=int(id[1:])).select_subclasses()[0]
except IndexError:
raise cls.DoesNotExist("Event matching query does not exist")
if (id[0] == "T") and (e.group.name == "Test"): if (id[0] == "T") and (e.group.name == "Test"):
return e return e
if (id[0] == "H") and (e.analysisType == "HWINJ"): if (id[0] == "H") and (e.analysisType == "HWINJ"):
...@@ -163,7 +166,7 @@ class Event(models.Model): ...@@ -163,7 +166,7 @@ class Event(models.Model):
return e return e
if (id[0] == "G"): if (id[0] == "G"):
return e return e
raise cls.DoesNotExist() raise cls.DoesNotExist("Event matching query does not exist")
def __unicode__(self): def __unicode__(self):
return self.graceid() return self.graceid()
......
...@@ -105,6 +105,16 @@ def handle_uploaded_data(event, datafilename, ...@@ -105,6 +105,16 @@ def handle_uploaded_data(event, datafilename,
event.nevents = coinc_table[0].nevents event.nevents = coinc_table[0].nevents
event.likelihood = coinc_table[0].likelihood event.likelihood = coinc_table[0].likelihood
event.ifos = ifos
event.end_time = end_time[0]
event.end_time_ns = end_time[1]
event.mass = mass
event.mchirp = mchirp
event.minimum_duration = getattr(origdata[0][0], "minimum_duration", None)
event.snr = snr
event.false_alarm_rate = getattr(origdata[0][0], "false_alarm_rate", None)
event.combined_far = far
# XXX xml_filename unused # XXX xml_filename unused
#xml_filename = os.path.join(output_dir, coinc_table_filename) #xml_filename = os.path.join(output_dir, coinc_table_filename)
...@@ -339,8 +349,6 @@ class Translator(object): ...@@ -339,8 +349,6 @@ class Translator(object):
event.instruments = data.get('instruments') event.instruments = data.get('instruments')
event.far = data.get('far') event.far = data.get('far')
event.save()
def logData(self): def logData(self):
data = self.getData() data = self.getData()
logdata = [] logdata = []
...@@ -388,6 +396,21 @@ class CwbData(Translator): ...@@ -388,6 +396,21 @@ class CwbData(Translator):
self.castData(data) self.castData(data)
return self.data return self.data
def populateEvent(self, event):
Translator.populateEvent(self, event)
# MultiBurst table attributes
data = self.getData()
event.ifo = data.get('ifo')
event.start_time = data.get('start_time')
event.start_time_ns = data.get('start_time_ns')
event.duration = data.get('duration')
event.central_freq = data.get('central_freq')
event.bandwidth = data.get('bandwidth')
event.snr = data.get('snr')
event.ligo_axis_ra = data.get('ligo_axis_ra')
event.ligo_axis_dec = data.get('ligo_axis_dec')
def readData(self, datafile): def readData(self, datafile):
needToClose = False needToClose = False
if isinstance(datafile, str) or isinstance(datafile, unicode): if isinstance(datafile, str) or isinstance(datafile, unicode):
...@@ -447,6 +470,26 @@ class CwbData(Translator): ...@@ -447,6 +470,26 @@ class CwbData(Translator):
ifos.sort() ifos.sort()
data['instruments'] = ','.join(ifos) data['instruments'] = ','.join(ifos)
# MultiBurst table attributes
start = rawdata.get('start',[None])[0]
if start is not None:
integer, frac = start.split('.')
data['start_time'] = int(integer)
data['start_time_ns'] = int(frac+(9-len(frac))*'0')
else:
data['start_time'] = None
data['start_time_ns'] = None
data['ifo'] = ','.join(ifos)
data['duration'] = rawdata.get('duration',[None])[0]
data['central_freq'] = rawdata.get('frequency',[None])[0]
data['bandwidth'] = rawdata.get('bandwidth',[None])[0]
#data['snr'] = rawdata.get('snr',[None])[0]
# rho is what log file says is "effective snr"
data['snr'] = data['rawdata'].get('rho',[None])[0]
data['ligo_axis_ra'] = data['rawdata'].get('phi',[None,None,None])[2]
data['ligo_axis_dec'] = data['rawdata'].get('theta',[None,None,None])[2]
if needToClose: if needToClose:
datafile.close() datafile.close()
......
...@@ -11,6 +11,8 @@ from django.utils.safestring import mark_safe ...@@ -11,6 +11,8 @@ from django.utils.safestring import mark_safe
from django.views.generic.list_detail import object_detail, object_list from django.views.generic.list_detail import object_detail, object_list
from models import Event, Group, EventLog, Labelling, Label, User from models import Event, Group, EventLog, Labelling, Label, User
from models import CoincInspiralEvent
from models import MultiBurstEvent
from forms import CreateEventForm, EventSearchForm, SimpleSearchForm from forms import CreateEventForm, EventSearchForm, SimpleSearchForm
from alert import issueAlert, issueAlertForLabel, issueAlertForUpdate from alert import issueAlert, issueAlertForLabel, issueAlertForUpdate
from translator import handle_uploaded_data from translator import handle_uploaded_data
...@@ -201,12 +203,17 @@ def _createEventFromForm(request, form): ...@@ -201,12 +203,17 @@ def _createEventFromForm(request, form):
warnings = [] warnings = []
try: try:
group = Group.objects.filter(name=form.cleaned_data['group']) group = Group.objects.filter(name=form.cleaned_data['group'])
type = form.cleaned_data['type'] atype = form.cleaned_data['type']
# Create Event # Create Event
event = Event() if atype in ['LM', 'HM']:
event = CoincInspiralEvent()
elif atype == "CWB":
event = MultiBurstEvent()
else:
event = Event()
event.submitter = request.ligouser event.submitter = request.ligouser
event.group = group[0] event.group = group[0]
event.analysisType = type event.analysisType = atype
# ARGH. We don't get a graceid until we save, # ARGH. We don't get a graceid until we save,
# but we don't know in advance if we can actually # but we don't know in advance if we can actually
# create all the things we need for success! # create all the things we need for success!
...@@ -531,7 +538,8 @@ def view(request, graceid): ...@@ -531,7 +538,8 @@ def view(request, graceid):
for event in a.neighbors()] for event in a.neighbors()]
context['skyalert_authorized'] = skyalert_authorized(request) context['skyalert_authorized'] = skyalert_authorized(request)
return render_to_response( return render_to_response(
'gracedb/event_detail.html', [ 'gracedb/event_detail_{0}.html'.format(a.analysisType),
'gracedb/event_detail.html'],
context, context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))
......
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