Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
GraceDB Server
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Michael Coughlin
GraceDB Server
Commits
a1663303
Commit
a1663303
authored
12 years ago
by
Branson Stephens
Browse files
Options
Downloads
Plain Diff
merging models.py
parents
297b1a2d
f10e7cd2
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
gracedb/models.py
+44
-2
44 additions, 2 deletions
gracedb/models.py
gracedb/translator.py
+60
-14
60 additions, 14 deletions
gracedb/translator.py
gracedb/views.py
+12
-4
12 additions, 4 deletions
gracedb/views.py
utils/vfile.py
+1
-1
1 addition, 1 deletion
utils/vfile.py
with
117 additions
and
21 deletions
gracedb/models.py
+
44
−
2
View file @
a1663303
from
django.db
import
models
from
django.core.urlresolvers
import
reverse
from
model_utils.managers
import
InheritanceManager
import
datetime
import
thread
import
string
...
...
@@ -49,6 +51,9 @@ class Label(models.Model):
return
self
.
name
class
Event
(
models
.
Model
):
objects
=
InheritanceManager
()
# Queries can return subclasses, if available.
ANALYSIS_TYPE_CHOICES
=
(
(
"
LM
"
,
"
LowMass
"
),
(
"
HM
"
,
"
HighMass
"
),
...
...
@@ -149,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
"
):
...
...
@@ -158,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
()
...
...
@@ -198,6 +206,40 @@ class Approval(models.Model):
approvedEvent
=
models
.
ForeignKey
(
Event
,
null
=
False
)
approvingCollaboration
=
models
.
CharField
(
max_length
=
1
,
choices
=
COLLABORATION_CHOICES
)
## Analysis Specific Attributes.
class
CoincInspiralEvent
(
Event
):
ifos
=
models
.
CharField
(
max_length
=
20
,
default
=
""
)
end_time
=
models
.
PositiveIntegerField
(
null
=
True
)
end_time_ns
=
models
.
PositiveIntegerField
(
null
=
True
)
mass
=
models
.
FloatField
(
null
=
True
)
mchirp
=
models
.
FloatField
(
null
=
True
)
minimum_duration
=
models
.
FloatField
(
null
=
True
)
snr
=
models
.
FloatField
(
null
=
True
)
false_alarm_rate
=
models
.
FloatField
(
null
=
True
)
combined_far
=
models
.
FloatField
(
null
=
True
)
class
MultiBurstEvent
(
Event
):
ifos
=
models
.
CharField
(
max_length
=
20
,
default
=
""
)
start_time
=
models
.
PositiveIntegerField
(
null
=
True
)
start_time_ns
=
models
.
PositiveIntegerField
(
null
=
True
)
duration
=
models
.
FloatField
(
null
=
True
)
peak_time
=
models
.
PositiveIntegerField
(
null
=
True
)
peak_time_ns
=
models
.
PositiveIntegerField
(
null
=
True
)
central_freq
=
models
.
FloatField
(
null
=
True
)
bandwidth
=
models
.
FloatField
(
null
=
True
)
amplitude
=
models
.
FloatField
(
null
=
True
)
snr
=
models
.
FloatField
(
null
=
True
)
confidence
=
models
.
FloatField
(
null
=
True
)
false_alarm_rate
=
models
.
FloatField
(
null
=
True
)
ligo_axis_ra
=
models
.
FloatField
(
null
=
True
)
ligo_axis_dec
=
models
.
FloatField
(
null
=
True
)
ligo_angle
=
models
.
FloatField
(
null
=
True
)
ligo_angle_sig
=
models
.
FloatField
(
null
=
True
)
## Slots (user-defined event attributes)
class
Slot
(
models
.
Model
):
"""
Slot Model
"""
# Does the slot need to have a submitter column?
...
...
This diff is collapsed.
Click to expand it.
gracedb/translator.py
+
60
−
14
View file @
a1663303
...
...
@@ -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)
...
...
@@ -211,6 +221,21 @@ def handle_uploaded_data(event, datafilename,
event
.
nevents
=
coinc_table
[
0
].
nevents
event
.
likelihood
=
coinc_table
[
0
].
likelihood
# extended attributes
coinc_inspiral_table
=
glue
.
ligolw
.
table
.
getTablesByName
(
xmldoc
,
glue
.
ligolw
.
lsctables
.
CoincInspiralTable
.
tableName
)
coinc_inspiral_table
=
coinc_inspiral_table
[
0
]
event
.
ifos
=
coinc_inspiral_table
[
0
].
ifos
event
.
end_time
=
coinc_inspiral_table
[
0
].
end_time
event
.
end_time_ns
=
coinc_inspiral_table
[
0
].
end_time_ns
event
.
mass
=
coinc_inspiral_table
[
0
].
mass
event
.
mchirp
=
coinc_inspiral_table
[
0
].
mchirp
#event.minimum_duration = coinc_inspiral_table[0].minimum_duration
event
.
snr
=
coinc_inspiral_table
[
0
].
snr
event
.
false_alarm_rate
=
coinc_inspiral_table
[
0
].
false_alarm_rate
event
.
combined_far
=
coinc_inspiral_table
[
0
].
combined_far
# XXX xml_filename unused
#xml_filename = os.path.join(output_dir, coinc_table_filename)
...
...
@@ -287,18 +312,6 @@ def handle_uploaded_data(event, datafilename,
comment
=
"
Log File Created
"
)
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
elif
event
.
analysisType
==
'
GRB
'
:
# Get the event time from the VOEvent file
try
:
...
...
@@ -351,8 +364,6 @@ class Translator(object):
event
.
instruments
=
data
.
get
(
'
instruments
'
)
event
.
far
=
data
.
get
(
'
far
'
)
event
.
save
()
def
logData
(
self
):
data
=
self
.
getData
()
logdata
=
[]
...
...
@@ -400,6 +411,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
):
...
...
@@ -459,6 +485,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
()
...
...
This diff is collapsed.
Click to expand it.
gracedb/views.py
+
12
−
4
View file @
a1663303
...
...
@@ -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
'
]
a
type
=
form
.
cleaned_data
[
'
type
'
]
# Create Event
event
=
Event
()
if
atype
in
[
'
LM
'
,
'
HM
'
,
'
MBTA
'
]:
event
=
CoincInspiralEvent
()
elif
atype
==
"
CWB
"
:
event
=
MultiBurstEvent
()
else
:
event
=
Event
()
event
.
submitter
=
request
.
ligouser
event
.
group
=
group
[
0
]
event
.
analysisType
=
type
event
.
analysisType
=
a
type
# 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
))
...
...
This diff is collapsed.
Click to expand it.
utils/vfile.py
+
1
−
1
View file @
a1663303
...
...
@@ -106,7 +106,7 @@ class VersionedFile(file):
os
.
close
(
fd
)
break
except
OSError
,
e
:
if
e
.
erro
r
!=
errno
.
EEXIST
:
if
e
.
err
n
o
!=
errno
.
EEXIST
:
raise
version
+=
1
failedAttempts
+=
1
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment