Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Sebastian Heimann
grond
Commits
0920e2ba
Commit
0920e2ba
authored
Feb 27, 2017
by
Marius Isken
Browse files
classing Baraddur // Config // flexible rundir
parent
9aa78392
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/baraddur/server.py
View file @
0920e2ba
...
@@ -2,10 +2,12 @@ import tornado.ioloop
...
@@ -2,10 +2,12 @@ import tornado.ioloop
import
grond
import
grond
import
os.path
as
op
import
os.path
as
op
import
logging
import
logging
import
numpy
as
num
# noqa
import
numpy
as
num
from
collections
import
OrderedDict
from
collections
import
OrderedDict
from
pyrocko.guts
import
Object
,
Bool
,
String
# noqa
from
tornado.web
import
RequestHandler
,
StaticFileHandler
from
tornado.web
import
RequestHandler
,
StaticFileHandler
from
tornado
import
gen
from
tornado
import
gen
...
@@ -19,18 +21,6 @@ from bokeh import layouts
...
@@ -19,18 +21,6 @@ from bokeh import layouts
from
bokeh.plotting
import
figure
from
bokeh.plotting
import
figure
console
=
logging
.
StreamHandler
()
console
.
setLevel
(
logging
.
DEBUG
)
formatter
=
logging
.
Formatter
(
'%(name)-12s: %(levelname)-8s %(message)s'
)
console
.
setFormatter
(
formatter
)
rootLogger
=
logging
.
getLogger
(
''
)
rootLogger
.
addHandler
(
console
)
rootLogger
.
setLevel
(
logging
.
DEBUG
)
rundir
=
'/home/marius/Development/testing/grond/rundir'
problem
=
grond
.
core
.
load_problem_info
(
rundir
)
def
makeColorGradient
(
misfits
,
fr
=
1.
,
fg
=
.
5
,
fb
=
1.
,
def
makeColorGradient
(
misfits
,
fr
=
1.
,
fg
=
.
5
,
fb
=
1.
,
pr
=
0
,
pg
=
2.5
,
pb
=
4
):
pr
=
0
,
pg
=
2.5
,
pb
=
4
):
misfits
/=
misfits
.
max
()
misfits
/=
misfits
.
max
()
...
@@ -40,9 +30,20 @@ def makeColorGradient(misfits, fr=1., fg=.5, fb=1.,
...
@@ -40,9 +30,20 @@ def makeColorGradient(misfits, fr=1., fg=.5, fb=1.,
return
[
'#%02x%02x%02x'
%
(
r
[
i
],
g
[
i
],
b
[
i
])
for
i
in
xrange
(
misfits
.
size
)]
return
[
'#%02x%02x%02x'
%
(
r
[
i
],
g
[
i
],
b
[
i
])
for
i
in
xrange
(
misfits
.
size
)]
class
Status
(
RequestHandler
):
class
BaraddurRequestHandler
(
RequestHandler
):
def
initialize
(
self
,
config
):
self
.
config
=
config
class
MisfitsPlot
(
BokehHandler
):
class
BaraddurBokehHandler
(
BokehHandler
):
def
__init__
(
self
,
config
,
*
args
,
**
kwargs
):
BokehHandler
.
__init__
(
self
,
*
args
,
**
kwargs
)
self
.
config
=
config
class
Status
(
BaraddurRequestHandler
):
class
MisfitsPlot
(
BaraddurBokehHandler
):
def
modify_document
(
self
,
doc
):
def
modify_document
(
self
,
doc
):
self
.
nmodels
=
0
self
.
nmodels
=
0
...
@@ -63,7 +64,8 @@ class Status(RequestHandler):
...
@@ -63,7 +64,8 @@ class Status(RequestHandler):
@
gen
.
coroutine
@
gen
.
coroutine
def
update_misfits
(
self
):
def
update_misfits
(
self
):
mx
,
misfits
=
grond
.
core
.
load_problem_data
(
mx
,
misfits
=
grond
.
core
.
load_problem_data
(
rundir
,
problem
,
skip_models
=
self
.
nmodels
)
self
.
config
.
rundir
,
self
.
config
.
problem
,
skip_models
=
self
.
nmodels
)
new_nmodels
=
mx
.
shape
[
0
]
new_nmodels
=
mx
.
shape
[
0
]
fits
=
num
.
mean
(
misfits
,
axis
=
1
)
fits
=
num
.
mean
(
misfits
,
axis
=
1
)
...
@@ -80,17 +82,19 @@ class Status(RequestHandler):
...
@@ -80,17 +82,19 @@ class Status(RequestHandler):
self
.
render
(
'status.html'
,
self
.
render
(
'status.html'
,
pages
=
pages
,
pages
=
pages
,
misfit_plot
=
autoload_server
(
None
,
url
=
'/misfit_plot'
),
misfit_plot
=
autoload_server
(
None
,
url
=
'/misfit_plot'
),
problem
=
problem
)
problem
=
self
.
config
.
problem
)
class
Parameters
(
RequestHandler
):
class
Parameters
(
Baraddur
RequestHandler
):
class
ParameterPlots
(
BokehHandler
):
class
ParameterPlots
(
Baraddur
BokehHandler
):
ncols
=
4
ncols
=
4
def
modify_document
(
self
,
doc
):
def
modify_document
(
self
,
doc
):
self
.
nmodels
=
0
self
.
nmodels
=
0
problem
=
self
.
config
.
problem
self
.
source
=
ColumnDataSource
()
self
.
source
=
ColumnDataSource
()
for
p
in
[
'n'
]
+
[
p
.
name
for
p
in
problem
.
parameters
]:
for
p
in
[
'n'
]
+
[
p
.
name
for
p
in
problem
.
parameters
]:
self
.
source
.
add
([],
p
)
self
.
source
.
add
([],
p
)
...
@@ -116,8 +120,14 @@ class Parameters(RequestHandler):
...
@@ -116,8 +120,14 @@ class Parameters(RequestHandler):
@
gen
.
coroutine
@
gen
.
coroutine
def
update_parameters
(
self
):
def
update_parameters
(
self
):
mx
,
misfits
=
grond
.
core
.
load_problem_data
(
problem
=
self
.
config
.
problem
rundir
,
problem
,
skip_models
=
self
.
nmodels
)
try
:
mx
,
misfits
=
grond
.
core
.
load_problem_data
(
self
.
config
.
rundir
,
problem
,
skip_models
=
self
.
nmodels
)
except
IOError
:
return
new_nmodels
=
mx
.
shape
[
0
]
new_nmodels
=
mx
.
shape
[
0
]
new_data
=
{}
new_data
=
{}
...
@@ -139,19 +149,19 @@ class Parameters(RequestHandler):
...
@@ -139,19 +149,19 @@ class Parameters(RequestHandler):
parameter_plot
=
autoload_server
(
parameter_plot
=
autoload_server
(
None
,
None
,
url
=
'/parameter_plot'
),
url
=
'/parameter_plot'
),
problem
=
problem
)
problem
=
self
.
config
.
problem
)
class
Summary
(
RequestHandler
):
class
Summary
(
Baraddur
RequestHandler
):
@
gen
.
coroutine
@
gen
.
coroutine
def
get
(
self
):
def
get
(
self
):
self
.
render
(
'summary.html'
,
self
.
render
(
'summary.html'
,
pages
=
pages
,
pages
=
pages
,
problem
=
problem
)
problem
=
self
.
config
.
problem
)
class
MainHandler
(
RequestHandler
):
class
MainHandler
(
Baraddur
RequestHandler
):
@
gen
.
coroutine
@
gen
.
coroutine
def
get
(
self
):
def
get
(
self
):
...
@@ -166,39 +176,80 @@ pages = OrderedDict([
...
@@ -166,39 +176,80 @@ pages = OrderedDict([
(
'Sequences'
,
MainHandler
),
(
'Sequences'
,
MainHandler
),
])
])
bokeh_apps
=
{}
for
cat
,
tornado_handler
in
pages
.
iteritems
():
handler_docs
=
getattr
(
tornado_handler
,
'bokeh_handlers'
,
None
)
if
handler_docs
is
None
:
continue
for
url
,
bokeh_handler
in
handler_docs
.
iteritems
():
bokeh_apps
[
'/%s'
%
url
]
=
\
Application
(
bokeh_handler
())
if
__name__
==
'__main__'
:
handlers
=
[(
r
'/'
,
pages
.
values
()[
0
])]
+
\
class
BaraddurConfig
(
Object
):
[(
r
'/%s'
%
title
,
handler
)
rundir
=
String
.
T
()
template_path
=
String
.
T
(
default
=
'tpl'
,
optional
=
True
)
debug
=
Bool
.
T
(
default
=
True
,
optional
=
True
)
@
property
def
problem
(
self
):
return
grond
.
core
.
load_problem_info
(
self
.
rundir
)
class
Baraddur
(
BokehServer
):
def
__init__
(
self
,
rundir
=
None
,
*
args
,
**
kwargs
):
self
.
config
=
BaraddurConfig
(
rundir
=
rundir
)
BokehServer
.
__init__
(
self
,
self
.
get_bokeh_apps
(),
io_loop
=
tornado
.
ioloop
.
IOLoop
.
current
(),
extra_patterns
=
self
.
get_tornado_handlers
(),
hosts
=
'0.0.0.0'
)
tornado_app
=
self
.
_tornado
tornado_app
.
settings
[
'template_path'
]
=
self
.
config
.
template_path
if
self
.
config
.
debug
:
tornado_app
.
settings
.
setdefault
(
'autoreload'
,
True
)
tornado_app
.
settings
.
setdefault
(
'compiled_template_cache'
,
False
)
tornado_app
.
settings
.
setdefault
(
'static_hash_cache'
,
False
)
tornado_app
.
settings
.
setdefault
(
'serve_traceback'
,
True
)
# Automatically reload modified modules
from
tornado
import
autoreload
autoreload
.
start
()
console
=
logging
.
StreamHandler
()
console
.
setLevel
(
logging
.
DEBUG
)
formatter
=
logging
.
Formatter
(
'%(name)-12s: %(levelname)-8s %(message)s'
)
console
.
setFormatter
(
formatter
)
rootLogger
=
logging
.
getLogger
(
''
)
rootLogger
.
addHandler
(
console
)
rootLogger
.
setLevel
(
logging
.
DEBUG
)
def
get_bokeh_apps
(
self
):
bokeh_apps
=
{}
for
tornado_handler
in
pages
.
itervalues
():
handler_docs
=
getattr
(
tornado_handler
,
'bokeh_handlers'
,
None
)
if
handler_docs
is
None
:
continue
for
url
,
bokeh_handler
in
handler_docs
.
iteritems
():
bokeh_apps
[
'/%s'
%
url
]
=
Application
(
bokeh_handler
(
self
.
config
))
return
bokeh_apps
def
get_tornado_handlers
(
self
):
return
[(
r
'/'
,
pages
.
values
()[
0
])]
+
\
[(
r
'/%s'
%
title
,
handler
,
{
'config'
:
self
.
config
})
for
title
,
handler
in
pages
.
iteritems
()]
+
\
for
title
,
handler
in
pages
.
iteritems
()]
+
\
[(
r
'/css/(.*)'
,
StaticFileHandler
,
[(
r
'/css/(.*)'
,
StaticFileHandler
,
{
'path'
:
op
.
join
(
op
.
dirname
(
__file__
),
'css'
)})]
{
'path'
:
op
.
join
(
op
.
dirname
(
__file__
),
'css'
)})]
server
=
BokehServer
(
def
start
(
self
):
bokeh_apps
,
BokehServer
.
start
(
self
)
io_loop
=
tornado
.
ioloop
.
IOLoop
.
current
(),
tornado
.
ioloop
.
IOLoop
.
current
().
start
()
extra_patterns
=
handlers
,
hosts
=
'0.0.0.0'
)
if
__name__
==
'__main__'
:
tornado_app
=
server
.
_tornado
baraddur
=
Baraddur
(
tornado_app
.
settings
[
'template_path'
]
=
'tpl'
rundir
=
'/home/marius/Development/testing/grond/rundir'
)
tornado_app
.
settings
.
setdefault
(
'autoreload'
,
True
)
baraddur
.
start
()
tornado_app
.
settings
.
setdefault
(
'compiled_template_cache'
,
False
)
tornado_app
.
settings
.
setdefault
(
'static_hash_cache'
,
False
)
tornado_app
.
settings
.
setdefault
(
'serve_traceback'
,
True
)
# Automatically reload modified modules
from
tornado
import
autoreload
autoreload
.
start
()
server
.
start
()
tornado
.
ioloop
.
IOLoop
.
current
().
start
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment