Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
finesse
pykat
Commits
69c1a9a8
Commit
69c1a9a8
authored
Jun 03, 2019
by
Sean Leavey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add CLI
parent
05829002
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
119 additions
and
2 deletions
+119
-2
pykat/__main__.py
pykat/__main__.py
+111
-0
requirements.txt
requirements.txt
+2
-1
setup.py
setup.py
+6
-1
No files found.
pykat/__main__.py
0 → 100644
View file @
69c1a9a8
"""Finesse command line interface
Sean Leavey
<sean.leavey@ligo.org>
"""
from
__future__
import
print_function
import
sys
import
numpy
as
np
import
click
from
.
import
__version__
from
.finesse
import
kat
as
katparser
@
click
.
command
(
help
=
"Python interface and tools for FINESSE"
)
@
click
.
argument
(
"file"
,
type
=
click
.
File
())
@
click
.
option
(
"--xstart"
,
type
=
float
,
help
=
"Simulation start value. If specified, this overrides the xaxis start "
"value specified in the parsed file."
)
@
click
.
option
(
"--xstop"
,
type
=
float
,
help
=
"Simulation stop value. If specified, this overrides the xaxis stop "
"value specified in the parsed file."
)
@
click
.
option
(
"--xsteps"
,
type
=
int
,
help
=
"Number of steps to simulate between --start and --stop. If specified, "
"this overrides the number of xaxis steps specified in the parsed file."
)
@
click
.
option
(
"--xscale"
,
type
=
click
.
Choice
([
"lin"
,
"log"
]),
help
=
"Scaling for the xaxis."
)
@
click
.
option
(
"--trace"
,
type
=
click
.
Choice
([
"tem"
,
"cavity"
,
"mismatch"
,
"beams"
,
"gouy"
,
"coupling"
,
"modechanges"
,
"nodes"
,
"all"
]),
multiple
=
True
,
help
=
"Show simulation trace results: "
"'tem': list TEM modes used, "
"'cavity': cavity eigenvalues and other parameters, "
"'mismatch': mode mismatch parameters for the initial setup, "
"'beams': beam parameters for every node, "
"'gouy': Gouy phases for all spaces, "
"'coupling': coupling coefficients for all components, "
"'modechanges': mode matching parameter changes during calculations, "
"'nodes': nodes found during cavity tracing, "
"'all': all trace results."
)
@
click
.
option
(
"--maxtem"
,
type
=
str
,
help
=
"Maximum transverse electric mode. Can be either "
"an integer or 'off'."
)
@
click
.
option
(
"--ignore-block"
,
"ignored_blocks"
,
multiple
=
True
,
help
=
"Ignore the specified block. Can be specified multiple times."
)
@
click
.
option
(
"--plot/--no-plot"
,
default
=
True
,
show_default
=
True
,
help
=
"Display results as figure."
)
@
click
.
option
(
"--save-figure"
,
type
=
click
.
File
(
"wb"
,
lazy
=
False
),
help
=
"Save image of figure to file."
)
@
click
.
option
(
"--kat-path"
,
type
=
click
.
Path
(
exists
=
True
),
envvar
=
"KATPATH"
,
help
=
"Path to Finesse 2 directory. If not specified, the "
"environment variable KATPATH is searched."
)
@
click
.
version_option
(
version
=
__version__
,
prog_name
=
"Pykat"
)
def
cli
(
file
,
xstart
,
xstop
,
xsteps
,
xscale
,
trace
,
maxtem
,
ignored_blocks
,
plot
,
save_figure
,
kat_path
):
"""Base CLI command group"""
kat
=
katparser
()
kat
.
load
(
file
.
name
)
has_xaxis
=
hasattr
(
kat
,
"xaxis"
)
if
xstart
is
not
None
or
xstop
is
not
None
or
xsteps
is
not
None
or
xscale
is
not
None
:
if
not
has_xaxis
:
click
.
echo
(
"Limits can only be overridden when an xaxis is defined in FILE."
,
err
=
True
)
sys
.
exit
(
1
)
# Override xaxis.
limits
=
kat
.
xaxis
.
limits
set_limits
=
False
if
xstart
is
not
None
:
limits
[
0
]
=
xstart
set_limits
=
True
if
xstop
is
not
None
:
limits
[
1
]
=
xstop
set_limits
=
True
if
xsteps
is
not
None
:
kat
.
xaxis
.
steps
=
xsteps
if
xscale
is
not
None
:
kat
.
xaxis
.
scale
=
xscale
if
set_limits
:
kat
.
xaxis
.
limits
=
np
.
array
(
limits
).
astype
(
float
)
if
maxtem
:
kat
.
maxtem
=
maxtem
if
trace
:
traceval
=
0
if
"all"
in
trace
:
traceval
=
255
else
:
traceints
=
{
"tem"
:
1
,
"cavity"
:
2
,
"mismatch"
:
4
,
"beams"
:
8
,
"gouy"
:
16
,
"coupling"
:
32
,
"modechanges"
:
64
,
"nodes"
:
128
}
for
tracetype
in
trace
:
traceval
|=
traceints
[
tracetype
]
kat
.
trace
=
traceval
if
ignored_blocks
:
for
block
in
ignored_blocks
:
kat
.
removeBlock
(
block
)
results
=
kat
.
run
()
if
kat
.
trace
:
click
.
echo
(
results
.
stdout
)
if
has_xaxis
:
if
plot
or
save_figure
is
not
None
:
results
.
plot
(
show
=
plot
,
filename
=
save_figure
)
else
:
if
save_figure
is
not
None
:
click
.
echo
(
"Cannot plot or save figure without an xaxis defined in FILE."
,
err
=
True
)
sys
.
exit
(
1
)
\ No newline at end of file
requirements.txt
View file @
69c1a9a8
...
...
@@ -5,4 +5,5 @@ six
h5py
pandas
matplotlib
tabulate
\ No newline at end of file
tabulate
click
>= 7.0
\ No newline at end of file
setup.py
View file @
69c1a9a8
...
...
@@ -49,5 +49,10 @@ setup(
'ifo/adv/files/*.kat'
,
'ifo/voyager/files/*.kat'
,
'style/*.mplstyle'
]},
include_package_data
=
True
include_package_data
=
True
,
entry_points
=
{
'console_scripts'
:
[
'pykat = pykat.__main__:cli'
],
},
)
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