Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
bilby
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
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
lscsoft
bilby
Commits
a0efada0
Commit
a0efada0
authored
6 years ago
by
Gregory Ashton
Committed by
Moritz Huebner
6 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Adds a results-file command line interface
parent
ee56c3cd
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
cli_bilby/bilby_result.py
+99
-0
99 additions, 0 deletions
cli_bilby/bilby_result.py
setup.py
+2
-1
2 additions, 1 deletion
setup.py
with
101 additions
and
1 deletion
cli_bilby/bilby_result.py
0 → 100644
+
99
−
0
View file @
a0efada0
"""
A command line interface to ease the process of batch jobs on result files
Examples
--------
To convert all the JSON result files in `outdir` to hdf5 format:
$ bilby_result -r outdir/*json -c hdf5
Note, by default this will save the new files in the outdir defined within the
results files. To give a new location, use the `--outdir` argument.
To print the version and `log_evidence` for all the result files in outdir:
$ bilby_result -r outdir/*json --print version log_evidence
To generate a corner plot for all the files in outdir
$ bilby_result -r outdir/*json --call plot_corner
This is effectively calling `plot_corner()` on each of the result files
individually. Note that passing extra commands in is not yet implemented.
"""
import
argparse
import
pandas
as
pd
import
bilby
def
setup_command_line_args
():
parser
=
argparse
.
ArgumentParser
(
description
=
"
Helper tool for bilby result files
"
,
epilog
=
print
(
__doc__
))
parser
.
add_argument
(
"
-r
"
,
"
--results
"
,
nargs
=
'
+
'
,
required
=
True
,
help
=
"
List of results files.
"
)
parser
.
add_argument
(
"
-c
"
,
"
--convert
"
,
type
=
str
,
choices
=
[
'
json
'
,
'
hdf5
'
],
help
=
"
Convert all results.
"
,
default
=
False
)
parser
.
add_argument
(
"
-o
"
,
"
--outdir
"
,
type
=
str
,
default
=
None
,
help
=
"
Output directory.
"
)
parser
.
add_argument
(
"
-b
"
,
"
--bayes
"
,
action
=
'
store_true
'
,
help
=
"
Print all Bayes factors.
"
)
parser
.
add_argument
(
"
-p
"
,
"
--print
"
,
nargs
=
'
+
'
,
default
=
None
,
help
=
"
Result dictionary keys to print.
"
)
parser
.
add_argument
(
"
--call
"
,
nargs
=
'
+
'
,
default
=
None
,
help
=
"
Result dictionary methods to call (no argument passing available).
"
)
parser
.
add_argument
(
"
--ipython
"
,
action
=
'
store_true
'
,
help
=
(
"
For each result given, drops the user into an
"
"
IPython shell with the result loaded in
"
))
args
,
_
=
parser
.
parse_known_args
()
return
args
def
read_in_results
(
filename_list
):
results_list
=
[]
for
filename
in
filename_list
:
results_list
.
append
(
bilby
.
core
.
result
.
read_in_result
(
filename
=
filename
))
return
results_list
def
print_bayes_factors
(
results_list
):
print
(
"
\n
Printing Bayes factors:
"
)
N
=
len
(
results_list
)
for
i
,
res
in
enumerate
(
results_list
):
print
(
"
For label={}
"
.
format
(
res
.
label
))
index
=
[
'
noise
'
]
+
[
results_list
[
j
].
label
for
j
in
range
(
i
+
1
,
N
)]
data
=
[
res
.
log_bayes_factor
]
data
+=
[
res
.
log_evidence
-
results_list
[
j
].
log_evidence
for
j
in
range
(
i
+
1
,
N
)]
series
=
pd
.
Series
(
data
=
data
,
index
=
index
,
name
=
res
.
label
)
print
(
series
)
def
drop_to_ipython
(
results_list
):
for
result
in
results_list
:
message
=
"
Opened IPython terminal for result {}
"
.
format
(
result
.
label
)
message
+=
"
\n
Bilby result loaded as `result`
"
import
IPython
IPython
.
embed
(
header
=
message
)
def
main
():
args
=
setup_command_line_args
()
results_list
=
read_in_results
(
args
.
results
)
if
args
.
convert
:
for
r
in
results_list
:
r
.
save_to_file
(
extension
=
args
.
convert
,
outdir
=
args
.
outdir
)
if
args
.
print
is
not
None
:
for
r
in
results_list
:
print
(
"
\n
Result file: {}/{}
"
.
format
(
r
.
outdir
,
r
.
label
))
for
key
in
args
.
print
:
print
(
"
{}: {}
"
.
format
(
key
,
getattr
(
r
,
key
,
'
None
'
)))
if
args
.
call
is
not
None
:
for
r
in
results_list
:
for
call
in
args
.
call
:
getattr
(
r
,
call
)()
if
args
.
bayes
:
print_bayes_factors
(
results_list
)
if
args
.
ipython
:
drop_to_ipython
(
results_list
)
This diff is collapsed.
Click to expand it.
setup.py
+
2
−
1
View file @
a0efada0
...
...
@@ -85,7 +85,8 @@ setup(name='bilby',
'
pandas
'
,
'
scipy
'
],
entry_points
=
{
'
console_scripts
'
:
[
'
bilby_plot=cli_bilby.plot_multiple_posteriors:main
'
]
[
'
bilby_plot=cli_bilby.plot_multiple_posteriors:main
'
,
'
bilby_result=cli_bilby.bilby_result:main
'
]
},
classifiers
=
[
"
Programming Language :: Python :: 2.7
"
,
...
...
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