Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F85112680
graphhelper.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Sep 26, 20:59
Size
4 KB
Mime Type
text/x-python
Expires
Sat, Sep 28, 20:59 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21130487
Attached To
R3127 blackdynamite
graphhelper.py
View Options
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- py-which-shell: "python"; -*-
import
base
import
run
import
job
import
runselector
import
jobselector
import
matplotlib.pyplot
as
plt
import
re
class
GraphHelper
(
object
):
"""
"""
def
getMeasures
(
self
,
run_list
):
myresults
=
{}
for
r
in
run_list
:
print
(
"retreive data from run "
+
r
[
"run_name"
])
res
=
self
.
base
.
getScalarQuantities
(
self
.
quantities
,
r
.
id
)
myresults
[
r
.
id
]
=
{}
for
key
,
value
in
res
.
iteritems
():
if
(
not
value
==
None
):
myresults
[
r
.
id
][
key
]
=
value
return
myresults
def
makeGraphs
(
self
,
**
kwargs
):
run_list
=
self
.
runSelector
.
selectRuns
(
self
.
run_constraints
,
self
.
job_constraints
)
results
=
self
.
getMeasures
(
run_list
)
fig
=
plt
.
figure
()
for
rid
,
data
in
results
.
iteritems
():
myrun
=
run
.
Run
()
myrun
.
prepare
(
self
.
base
)
myrun
[
"id"
]
=
rid
myrun
=
self
.
base
.
getMatchedObjectList
(
myrun
)[
0
]
myjob
=
job
.
Job
()
myjob
.
prepare
(
self
.
base
)
myjob
[
"id"
]
=
myrun
[
"job_id"
]
myjob
=
self
.
base
.
getMatchedObjectList
(
myjob
)[
0
]
self
.
makeCurve
(
data
,
fig
=
fig
,
fileout
=
None
,
myrun
=
myrun
,
myjob
=
myjob
,
**
kwargs
)
def
makeCurve
(
self
,
results
,
quantity
=
None
,
myrun
=
None
,
myjob
=
None
,
\
legend
=
None
,
legend_alias
=
None
,
fig
=
None
,
xrange
=
None
,
yrange
=
None
,
\
xlabel
=
None
,
ylabel
=
None
,
fileout
=
None
,
title
=
None
,
**
kwargs
):
if
(
not
fig
):
fig
=
plt
.
figure
()
axe
=
fig
.
add_subplot
(
1
,
1
,
1
)
head_legend
=
""
if
(
legend
):
for
i
in
range
(
0
,
len
(
legend
)):
mykey
=
legend
[
i
]
.
lower
()
if
(
mykey
in
myrun
.
entries
):
myval
=
myrun
[
mykey
]
else
:
myval
=
myjob
[
mykey
]
if
(
legend_alias
and
legend_alias
[
i
]):
head_legend
+=
"$"
+
legend_alias
[
i
]
+
" = "
+
str
(
myval
)
+
"$"
else
:
head_legend
+=
legend
[
i
]
+
" = "
+
str
(
myval
)
if
(
i
<
len
(
legend
)
-
1
):
head_legend
+=
","
if
xrange
:
axe
.
set_xlim
(
xrange
)
if
yrange
:
axe
.
set_ylim
(
yrange
)
if
(
xlabel
):
axe
.
set_xlabel
(
xlabel
,
fontsize
=
20
)
if
(
ylabel
):
axe
.
set_ylabel
(
ylabel
,
fontsize
=
20
)
if
(
title
):
fig
.
suptitle
(
title
)
axe
.
grid
(
True
,
linewidth
=
0.1
)
for
name
in
results
.
keys
():
vec
=
results
[
name
]
match
=
re
.
match
(
quantity
,
name
)
if
(
match
):
if
(
len
(
match
.
groups
())
>
0
):
name
=
"$"
+
match
.
group
(
1
)
+
"$"
if
(
head_legend
):
label
=
head_legend
+
","
+
name
else
:
label
=
name
axe
.
plot
(
vec
[:,
0
],
vec
[:,
1
],
label
=
label
)
axe
.
legend
(
loc
=
'best'
)
if
(
fileout
):
fig
.
savefig
(
fileout
)
return
fig
def
setJobConstraint
(
self
,
**
params
):
self
.
job_constraints
=
[]
if
(
"job_constraints"
in
params
):
self
.
job_constraints
=
params
[
"job_constraints"
]
def
setRunConstraint
(
self
,
**
params
):
self
.
run_constraints
=
[]
if
(
"run_constraints"
in
params
):
self
.
run_constraints
=
params
[
"run_constraints"
]
def
setQuantity
(
self
,
**
params
):
if
(
"quantity"
in
params
):
self
.
quantities
=
params
[
"quantity"
]
else
:
print
(
"quantity should be provided using option --quantity"
)
self
.
quantities
=
"__BLACKDYNAMITE_ERROR__"
def
__init__
(
self
,
base
,
**
params
):
self
.
setJobConstraint
(
**
params
)
self
.
setRunConstraint
(
**
params
)
self
.
setQuantity
(
**
params
)
self
.
base
=
base
self
.
runSelector
=
runselector
.
RunSelector
(
self
.
base
)
################################################################
graph_params
=
{}
graph_params
[
"quantity"
]
=
str
graph_params
[
"xrange"
]
=
[
float
]
graph_params
[
"yrange"
]
=
[
float
]
graph_params
[
"run_constraints"
]
=
[
str
]
graph_params
[
"job_constraints"
]
=
[
str
]
graph_params
[
"xlabel"
]
=
str
graph_params
[
"ylabel"
]
=
str
graph_params
[
"title"
]
=
str
graph_params
[
"legend"
]
=
[
str
]
graph_params
[
"legend_alias"
]
=
[
str
]
################################################################
def
parseBDParameters
(
additional_params
=
None
,
default_additional_params
=
None
):
tmp_params
=
graph_params
if
(
additional_params
):
tmp_params
.
update
(
additional_params
)
params
=
base
.
parseBDParameters
(
tmp_params
,
default_additional_params
)
return
params
Event Timeline
Log In to Comment