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

Added Hardware Injection type and Hxxxx style grace ids.

parent 40b359f7
No related branches found
No related tags found
No related merge requests found
...@@ -52,6 +52,7 @@ class Event(models.Model): ...@@ -52,6 +52,7 @@ class Event(models.Model):
("X", "X"), ("X", "X"),
("CWB", "CWB"), ("CWB", "CWB"),
("MBTA", "MBTAOnline"), ("MBTA", "MBTAOnline"),
("HWINJ", "HardwareInjection"),
) )
submitter = models.ForeignKey(User) submitter = models.ForeignKey(User)
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
...@@ -82,6 +83,8 @@ class Event(models.Model): ...@@ -82,6 +83,8 @@ class Event(models.Model):
def graceid(self): def graceid(self):
if self.uid: if self.uid:
return self.uid return self.uid
elif self.analysisType == "HWINJ":
return "H%04d" % self.id
return "G%04d" % self.id return "G%04d" % self.id
def weburl(self): def weburl(self):
...@@ -111,9 +114,13 @@ class Event(models.Model): ...@@ -111,9 +114,13 @@ class Event(models.Model):
@classmethod @classmethod
def getByGraceid(cls, id): def getByGraceid(cls, id):
if id[0] == "G": if id[0] not in "GH":
return cls.objects.get(id=int(id[1:])) # Very old, probably useless data.
return cls.objects.get(uid=id) return cls.objects.get(uid=id)
e = cls.objects.get(id=int(id[1:]))
if (id[0] == "G" and e.analysisType != "HWINJ") or (id[0]=="H" and e.analysisType =="HWINJ"):
return e
raise cls.DoesNotExist()
class EventLog(models.Model): class EventLog(models.Model):
class Meta: class Meta:
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
#import pyparsing as p #import pyparsing as p
from models import Event import models
from django.db.models import Q from django.db.models import Q
from pyparsing import \ from pyparsing import \
Word, nums, Literal, delimitedList, Suppress, Group, \ Word, nums, Literal, delimitedList, Suppress, \
Keyword, Combine, Or, Optional, OneOrMore, alphas, Regex, \ Keyword, Combine, Or, Optional, OneOrMore, alphas, Regex, \
opAssoc, operatorPrecedence, oneOf, \ opAssoc, operatorPrecedence, oneOf, \
stringStart, stringEnd, ParseException stringStart, stringEnd, ParseException
...@@ -27,7 +27,10 @@ def maybeRange(name): ...@@ -27,7 +27,10 @@ def maybeRange(name):
return name, Q(**{name+"__range": toks.asList()}) return name, Q(**{name+"__range": toks.asList()})
return f return f
encodeType = dict([(x[1],x[0]) for x in Event.ANALYSIS_TYPE_CHOICES]) encodeType = dict(
[(x[1],x[0]) for x in models.Event.ANALYSIS_TYPE_CHOICES] +
[(x[0],x[0]) for x in models.Event.ANALYSIS_TYPE_CHOICES]
)
def doType(toks): def doType(toks):
return ("type", Q(analysisType__in=[encodeType[tok] for tok in toks])) return ("type", Q(analysisType__in=[encodeType[tok] for tok in toks]))
...@@ -48,7 +51,7 @@ gpsQ = Optional(Suppress(Keyword("gpstime:"))) + (gpstime^gpstimeRange) ...@@ -48,7 +51,7 @@ gpsQ = Optional(Suppress(Keyword("gpstime:"))) + (gpstime^gpstimeRange)
gpsQ = gpsQ.setParseAction(maybeRange("gpstime")) gpsQ = gpsQ.setParseAction(maybeRange("gpstime"))
# Analysis Groups # Analysis Groups
groupNames = ["Test", "Burst", "CBC", "Stochastic", "CW"] groupNames = [group.name for group in models.Group.objects.all()]
group = Or(map(Literal, groupNames)).setName("analysis group name") group = Or(map(Literal, groupNames)).setName("analysis group name")
groupList = delimitedList(group, delim='|').setName("analysis group list") groupList = delimitedList(group, delim='|').setName("analysis group list")
groupQ = (Optional(Suppress(Keyword("group:"))) + groupList) groupQ = (Optional(Suppress(Keyword("group:"))) + groupList)
...@@ -56,7 +59,6 @@ groupQ = groupQ.setParseAction(lambda toks: ("group", Q(group__name__in=toks.asL ...@@ -56,7 +59,6 @@ groupQ = groupQ.setParseAction(lambda toks: ("group", Q(group__name__in=toks.asL
# Analysis Types # Analysis Types
atypeNames = ["LowMass", "HighMass", "Inspiral", "Omega", "X"]
atypeNames = encodeType.keys() atypeNames = encodeType.keys()
atype = Or(map(Literal, atypeNames)) atype = Or(map(Literal, atypeNames))
atypeList = delimitedList(atype, delim='|').\ atypeList = delimitedList(atype, delim='|').\
......
...@@ -231,6 +231,23 @@ def handle_uploaded_data(event, datafilename, ...@@ -231,6 +231,23 @@ def handle_uploaded_data(event, datafilename,
issuer=event.submitter, issuer=event.submitter,
comment="Original Data") comment="Original Data")
log.save() log.save()
elif event.analysisType == 'HWINJ':
try:
f = open(datafilename, "r")
for line in f.readlines():
if line.startswith("gpstime:"):
times = line.split()
event.gpstime = int(float(times[1]))
event.save()
break
f.close()
except:
pass
log = EventLog(event=event,
filename=os.path.basename(datafilename),
issuer=event.submitter,
comment="Original Data")
log.save()
else: else:
log = EventLog(event=event, log = EventLog(event=event,
filename=os.path.basename(datafilename), filename=os.path.basename(datafilename),
......
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