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):
@classmethod
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"):
return e
if (id[0] == "H") and (e.analysisType == "HWINJ"):
......@@ -163,7 +166,7 @@ class Event(models.Model):
return e
if (id[0] == "G"):
return e
raise cls.DoesNotExist()
raise cls.DoesNotExist("Event matching query does not exist")
def __unicode__(self):
return self.graceid()
......
......@@ -105,6 +105,16 @@ def handle_uploaded_data(event, datafilename,
event.nevents = coinc_table[0].nevents
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
#xml_filename = os.path.join(output_dir, coinc_table_filename)
......@@ -339,8 +349,6 @@ class Translator(object):
event.instruments = data.get('instruments')
event.far = data.get('far')
event.save()
def logData(self):
data = self.getData()
logdata = []
......@@ -388,6 +396,21 @@ class CwbData(Translator):
self.castData(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):
needToClose = False
if isinstance(datafile, str) or isinstance(datafile, unicode):
......@@ -447,6 +470,26 @@ class CwbData(Translator):
ifos.sort()
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:
datafile.close()
......
......@@ -11,6 +11,8 @@ from django.utils.safestring import mark_safe
from django.views.generic.list_detail import object_detail, object_list
from models import Event, Group, EventLog, Labelling, Label, User
from models import CoincInspiralEvent
from models import MultiBurstEvent
from forms import CreateEventForm, EventSearchForm, SimpleSearchForm
from alert import issueAlert, issueAlertForLabel, issueAlertForUpdate
from translator import handle_uploaded_data
......@@ -201,12 +203,17 @@ def _createEventFromForm(request, form):
warnings = []
try:
group = Group.objects.filter(name=form.cleaned_data['group'])
type = form.cleaned_data['type']
atype = form.cleaned_data['type']
# Create Event
event = Event()
if atype in ['LM', 'HM']:
event = CoincInspiralEvent()
elif atype == "CWB":
event = MultiBurstEvent()
else:
event = Event()
event.submitter = request.ligouser
event.group = group[0]
event.analysisType = type
event.analysisType = atype
# ARGH. We don't get a graceid until we save,
# but we don't know in advance if we can actually
# create all the things we need for success!
......@@ -531,7 +538,8 @@ def view(request, graceid):
for event in a.neighbors()]
context['skyalert_authorized'] = skyalert_authorized(request)
return render_to_response(
'gracedb/event_detail.html',
[ 'gracedb/event_detail_{0}.html'.format(a.analysisType),
'gracedb/event_detail.html'],
context,
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