Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
finesse
pykat
Commits
6c9a39bd
Commit
6c9a39bd
authored
Apr 10, 2015
by
Andreas Freise
Browse files
conversion done, examples run in python2.7 and python3.4 !
parent
a2d4c21d
Changes
10
Hide whitespace changes
Inline
Side-by-side
examples/asc_test/master.py
View file @
6c9a39bd
...
...
@@ -89,8 +89,8 @@ def main():
# first the current kat file
kat
.
saveScript
(
tmpkatfile
)
# now the result variables:
tmpfile
=
shelve
.
open
(
tmpresultfile
)
tmpfile
[
b
'result'
]
=
result
tmpfile
=
shelve
.
open
(
tmpresultfile
,
flag
=
"c"
)
tmpfile
[
str
(
'result'
)
]
=
result
tmpfile
.
close
()
#---------------------------------------------------------------------------
...
...
examples/asc_test/master2.py
View file @
6c9a39bd
...
...
@@ -46,13 +46,13 @@ def main():
kat
=
finesse
.
kat
(
tempdir
=
"."
,
tempname
=
"test"
)
kat
.
verbose
=
False
tmpresultfile
=
'
myshelf1.dat
'
tmpresultfile
=
"
myshelf1.dat
"
# loading data saved by master.py
kat
.
loadKatFile
(
'asc_base2.kat'
)
try
:
tmpfile
=
shelve
.
open
(
tmpresultfile
)
result
=
tmpfile
[
b
'result'
]
tmpfile
=
shelve
.
open
(
tmpresultfile
,
flag
=
"c"
)
result
=
tmpfile
[
str
(
'result'
)
]
tmpfile
.
close
()
except
:
raise
Exception
(
"Could not open temprary results file {0}"
.
format
(
tmpresultfile
))
...
...
@@ -126,7 +126,7 @@ def main():
kat
.
saveScript
(
tmpkatfile
)
# now the result variables:
tmpfile
=
shelve
.
open
(
tmpresultfile
)
tmpfile
[
b
'result'
]
=
result
tmpfile
[
str
(
'result'
)
]
=
result
tmpfile
.
close
()
...
...
examples/asc_test/master3.py
View file @
6c9a39bd
...
...
@@ -49,7 +49,7 @@ def main():
kat
.
loadKatFile
(
'asc_base3.kat'
)
try
:
tmpfile
=
shelve
.
open
(
tmpresultfile
)
result
=
tmpfile
[
b
'result'
]
result
=
tmpfile
[
str
(
'result'
)
]
tmpfile
.
close
()
except
:
raise
Exception
(
"Could not open temprary results file {0}"
.
format
(
tmpresultfile
))
...
...
@@ -104,8 +104,8 @@ def asc_large(tmpkat, mir_name):
print
(
" current results saved in: {0}"
.
format
(
tmpfilename
))
tmpfile
=
shelve
.
open
(
tmpfilename
)
tmpfile
[
b
'out'
]
=
out
tmpfile
[
b
'maxtems'
]
=
done_maxtems
tmpfile
[
str
(
'out'
)
]
=
out
tmpfile
[
str
(
'maxtems'
)
]
=
done_maxtems
tmpfile
.
close
()
...
...
examples/asc_test/master3_plot.py
View file @
6c9a39bd
...
...
@@ -62,8 +62,8 @@ def asc_large(mir_name):
try
:
tmpfile
=
shelve
.
open
(
tmpfilename
)
out
=
tmpfile
[
b
'out'
]
maxtems
=
tmpfile
[
b
'maxtems'
]
out
=
tmpfile
[
str
(
'out'
)
]
maxtems
=
tmpfile
[
str
(
'maxtems'
)
]
tmpfile
.
close
()
except
:
raise
Exception
(
"Could not open temprary results file {0}"
.
format
(
tmpfilename
))
...
...
examples/asc_test/master4.py
View file @
6c9a39bd
...
...
@@ -5,7 +5,7 @@ from __future__ import unicode_literals
from
pykat
import
finesse
from
pykat.commands
import
*
from
pykat.optics.gaussian_beams
import
gauss
_param
from
pykat.optics.gaussian_beams
import
beam
_param
import
pylab
as
pl
import
scipy
...
...
@@ -60,7 +60,7 @@ def main():
kat
.
loadKatFile
(
'asc_base3.kat'
)
try
:
tmpfile
=
shelve
.
open
(
tmpresultfile
)
result
=
tmpfile
[
b
'result'
]
result
=
tmpfile
[
str
(
'result'
)
]
tmpfile
.
close
()
except
:
raise
Exception
(
"Could not open temprary results file {0}"
.
format
(
tmpresultfile
))
...
...
@@ -77,6 +77,7 @@ def main():
print
(
"--------------------------------------------------------"
)
print
(
" 11. Do beam tracing to measure beam parameters"
)
# get beam parameters at nodes: "npsl", "nITM1", "nWFS1", "nWFS2", "npo2"
global
beam1
,
beam2
,
beam3
beam1
=
get_qs
(
kat
,
1e13
)
beam2
=
get_qs
(
kat
,
50e3
)
beam3
=
get_qs
(
kat
,
5e3
)
...
...
@@ -85,7 +86,6 @@ def main():
kat
.
psl
.
npsl
.
node
.
setGauss
(
kat
.
psl
,
beam1
[
0
])
kat
.
parseKatCode
(
"startnode npsl"
)
global
beam1
,
beam2
,
beam3
# if we use bs-based cavity we try to set good beam
# parameter for reflected beam, first by
...
...
@@ -93,14 +93,14 @@ def main():
x1
=
0.70
x2
=
0.30
if
"ITM_TL_r"
in
kat
.
_kat__components
:
beam50
=
gauss
_param
(
z
=
(
x1
*
beam1
[
1
].
z
+
x2
*
beam2
[
1
].
z
),
w0
=
(
x1
*
beam1
[
1
].
w0
+
x2
*
beam2
[
1
].
w0
))
beam5
=
gauss
_param
(
z
=
(
x1
*
beam1
[
1
].
z
+
x2
*
beam3
[
1
].
z
),
w0
=
(
x1
*
beam1
[
1
].
w0
+
x2
*
beam3
[
1
].
w0
))
beam50
=
beam
_param
(
z
=
(
x1
*
beam1
[
1
].
z
+
x2
*
beam2
[
1
].
z
),
w0
=
(
x1
*
beam1
[
1
].
w0
+
x2
*
beam2
[
1
].
w0
))
beam5
=
beam
_param
(
z
=
(
x1
*
beam1
[
1
].
z
+
x2
*
beam3
[
1
].
z
),
w0
=
(
x1
*
beam1
[
1
].
w0
+
x2
*
beam3
[
1
].
w0
))
node_text
=
"at ITM->nITM1r"
t_comp
=
kat
.
ITM
t_node
=
kat
.
ITM
.
nITM1r
else
:
beam50
=
gauss
_param
(
z
=
(
x1
*
beam1
[
4
].
z
+
x2
*
beam2
[
4
].
z
),
w0
=
(
x1
*
beam1
[
4
].
w0
+
x2
*
beam2
[
4
].
w0
))
beam5
=
gauss
_param
(
z
=
(
x1
*
beam1
[
4
].
z
+
x2
*
beam3
[
4
].
z
),
w0
=
(
x1
*
beam1
[
4
].
w0
+
x2
*
beam3
[
4
].
w0
))
beam50
=
beam
_param
(
z
=
(
x1
*
beam1
[
4
].
z
+
x2
*
beam2
[
4
].
z
),
w0
=
(
x1
*
beam1
[
4
].
w0
+
x2
*
beam2
[
4
].
w0
))
beam5
=
beam
_param
(
z
=
(
x1
*
beam1
[
4
].
z
+
x2
*
beam3
[
4
].
z
),
w0
=
(
x1
*
beam1
[
4
].
w0
+
x2
*
beam3
[
4
].
w0
))
node_text
=
"at s2->npo2"
t_comp
=
kat
.
s2
t_node
=
kat
.
s2
.
npo2
...
...
@@ -198,7 +198,7 @@ def get_qs(tmpkat,f):
from
pykat.optics.ABCD
import
apply
,
mirror_refl
abcd
=
mirror_refl
(
1
,
-
2500
)
q_out
=
apply
(
abcd
,
q_in
,
1
,
1
)
beam1
=
gauss
_param
(
q
=
q_out
)
beam1
=
beam
_param
(
q
=
q_out
)
kat
.
removeLine
(
"startnode"
)
kat
.
psl
.
npsl
.
node
.
removeGauss
()
if
"ITM_TL_r"
in
kat
.
_kat__components
:
...
...
@@ -211,13 +211,13 @@ def get_qs(tmpkat,f):
# computing beam size at WFS1 and WFS2
q2
=
out
[
'w2'
]
beam2
=
gauss
_param
(
q
=
q2
)
beam2
=
beam
_param
(
q
=
q2
)
q3
=
out
[
'w3'
]
beam3
=
gauss
_param
(
q
=
q3
)
beam3
=
beam
_param
(
q
=
q3
)
# computing beam size at pick off
q4
=
out
[
'w4'
]
beam4
=
gauss
_param
(
q
=
q4
)
beam4
=
beam
_param
(
q
=
q4
)
print
(
" Input mode beam size with thermal lens f={0}"
.
format
(
f
))
print
(
" - ITM w={0:.6}cm (w0={1}, z={2})"
.
format
(
100.0
*
beam1
.
w
,
beam1
.
w0
,
beam1
.
z
))
print
(
" - WFS1 w={0:.6}cm (w0={1}, z={2})"
.
format
(
100.0
*
beam2
.
w
,
beam2
.
w0
,
beam2
.
z
))
...
...
@@ -233,7 +233,7 @@ def get_qs(tmpkat,f):
# beam at laser when matched to cold cavity
# (note the sign flip of the real part to change direction of gauss param)
q0
=
-
1.0
*
out
[
'w0'
].
conjugate
()
beam0
=
gauss
_param
(
q
=
q0
)
beam0
=
beam
_param
(
q
=
q0
)
# compute beam sizes when tracing this beam back through the system
(
beam1
,
beam2
,
beam3
,
beam4
)
=
beam_size
(
kat
,
f
,
beam0
)
...
...
examples/asc_test/master4_plot.py
View file @
6c9a39bd
...
...
@@ -49,6 +49,9 @@ def main():
def
asc_signal
(
filename
,
loc
):
xscale
=
1.0
yscale
=
1.0
global
data
global
cols
global
lw
data
=
np
.
loadtxt
(
filename
)
# extracting only nonzero rows
data
=
data
[
~
np
.
all
(
data
==
0
,
axis
=
1
)]
...
...
@@ -60,9 +63,6 @@ def asc_signal(filename,loc):
lw
=
np
.
ones
(
rows
+
1
)
*
3
lw
[
-
2
]
=
2
lw
[
-
1
]
=
1
global
data
global
cols
global
lw
for
i
in
[
0
,
2
,
1
,
3
]:
pl
.
scatter
(
data
[:,
0
],
yscale
*
data
[:,
i
+
1
],
s
=
80
,
facecolors
=
'none'
,
edgecolors
=
color_cycle
[
i
],
label
=
labels
[
i
]
+
"={0:.4} W/rad"
.
format
(
data
[
-
1
,
i
+
1
]
*
yscale
))
pl
.
plot
(
data
[:,
0
],
yscale
*
data
[:,
i
+
1
],
'-'
,
color
=
color_cycle
[
i
],
linewidth
=
1
)
...
...
@@ -82,6 +82,9 @@ def asc_signal(filename,loc):
def
gravity_tilt
():
xscale
=
1.0
yscale
=
1.0e9
global
data
global
cols
global
lw
data
=
np
.
loadtxt
(
"thermal_gravity.txt"
)
# extracting only nonzero rows
data
=
data
[
~
np
.
all
(
data
==
0
,
axis
=
1
)]
...
...
@@ -93,9 +96,6 @@ def gravity_tilt():
lw
=
np
.
ones
(
rows
+
1
)
*
3
lw
[
-
2
]
=
2
lw
[
-
1
]
=
1
global
data
global
cols
global
lw
for
i
in
[
0
,
2
,
1
,
3
]:
pl
.
scatter
(
data
[:,
0
],
yscale
*
data
[:,
i
+
1
],
s
=
80
,
facecolors
=
'none'
,
edgecolors
=
color_cycle
[
i
],
label
=
labels
[
i
]
+
"={0:.4} nrad"
.
format
(
data
[
-
1
,
i
+
1
]
*
yscale
))
pl
.
plot
(
data
[:,
0
],
yscale
*
data
[:,
i
+
1
],
'-'
,
color
=
color_cycle
[
i
],
linewidth
=
1
)
...
...
examples/asc_test/master5.py
View file @
6c9a39bd
...
...
@@ -5,7 +5,7 @@ from __future__ import unicode_literals
from
pykat
import
finesse
from
pykat.commands
import
*
from
pykat.optics.gaussian_beams
import
gauss
_param
from
pykat.optics.gaussian_beams
import
beam
_param
import
pylab
as
pl
import
scipy
...
...
@@ -15,6 +15,11 @@ import shelve
import
copy
import
sys
# making python2 and python3 compatible
try
:
input
=
raw_input
except
NameError
:
pass
def
main
():
...
...
@@ -51,7 +56,7 @@ def main():
kat
.
loadKatFile
(
'asc_base3.kat'
)
try
:
tmpfile
=
shelve
.
open
(
tmpresultfile
)
result
=
tmpfile
[
b
'result'
]
result
=
tmpfile
[
str
(
'result'
)
]
tmpfile
.
close
()
except
:
raise
Exception
(
"Could not open temprary results file {0}"
.
format
(
tmpresultfile
))
...
...
@@ -117,7 +122,7 @@ def main():
kat
.
saveScript
(
tmpkatfile
)
# now the result variables:
tmpfile
=
shelve
.
open
(
tmpresultfile
)
tmpfile
[
b
'result'
]
=
result
tmpfile
[
str
(
'result'
)
]
=
result
tmpfile
.
close
()
...
...
@@ -146,7 +151,7 @@ def get_qs(tmpkat):
# beam at laser when matched to cold cavity
# (note the sign flip of the real part to change direction of gauss param)
q0
=
-
1.0
*
out
[
'w0'
].
conjugate
()
beam0
=
gauss
_param
(
q
=
q0
)
beam0
=
beam
_param
(
q
=
q0
)
kat
.
psl
.
npsl
.
node
.
setGauss
(
kat
.
psl
,
beam0
)
kat
.
parseKatCode
(
"startnode npsl"
)
...
...
@@ -162,7 +167,7 @@ def get_qs(tmpkat):
from
pykat.optics.ABCD
import
apply
,
mirror_refl
abcd
=
mirror_refl
(
1
,
-
2500
)
q_out
=
apply
(
abcd
,
q_in
,
1
,
1
)
beam1
=
gauss
_param
(
q
=
q_out
)
beam1
=
beam
_param
(
q
=
q_out
)
kat
.
removeLine
(
"startnode"
)
kat
.
psl
.
npsl
.
node
.
removeGauss
()
if
"ITM_TL_r"
in
kat
.
_kat__components
:
...
...
@@ -175,15 +180,15 @@ def get_qs(tmpkat):
# computing beam size at WFS1 and WFS2
q2
=
out
[
'w2'
]
beam2
=
gauss
_param
(
q
=
q2
)
beam2
=
beam
_param
(
q
=
q2
)
q3
=
out
[
'w3'
]
beam3
=
gauss
_param
(
q
=
q3
)
beam3
=
beam
_param
(
q
=
q3
)
print
(
" Sideband (input mode) beam size with thermal lens f={0}"
.
format
(
f
))
print
(
" - WFS1 w={0:.6}cm"
.
format
(
100.0
*
beam2
.
w
))
print
(
" (w0={0}, z={1})"
.
format
(
beam2
.
w0
,
beam2
.
z
))
print
(
" - WFS2 w={0:.6}cm"
.
format
(
100.0
*
beam3
.
w
))
print
(
" (w0={0}, z={1})"
.
format
(
beam3
.
w0
,
beam3
.
z
))
raw_
input
(
"Press enter to continue"
)
input
(
"Press enter to continue"
)
return
(
beam1
,
beam2
,
beam3
)
f
=
50e3
...
...
pykat/__init__.py
View file @
6c9a39bd
...
...
@@ -7,10 +7,10 @@ import pykat.exceptions as pkex
NoGUIException
=
pkex
.
BasePyKatException
(
"No PyQt4 module was found so cannot open a GUI"
)
import
finesse
import
components
import
detectors
import
commands
import
pykat.finesse
as
finesse
import
pykat.components
as
components
import
pykat.detectors
as
detectors
import
pykat.commands
as
commands
from
pykat.optics.gaussian_beams
import
beam_param
...
...
pykat/commands.py
View file @
6c9a39bd
...
...
@@ -167,7 +167,7 @@ class xaxis(Command):
self
.
limits
=
numpy
.
array
(
SIfloat
(
limits
)).
astype
(
float
)
if
steps
<=
0
:
if
int
(
steps
)
<=
0
:
raise
pkex
.
BasePyKatException
(
"steps value should be > 0"
)
self
.
steps
=
int
(
steps
)
...
...
pykat/finesse.py
View file @
6c9a39bd
...
...
@@ -46,6 +46,23 @@ import collections
import
re
import
copy
try
:
# Python 2
from
itertools
import
izip_longest
except
ImportError
:
# Python 3
from
itertools
import
zip_longest
as
izip_longest
"""
try:
from future_builtins import zip_longest
except ImportError: # not 2.6+ or is 3.x
try:
from itertools import izip_longest as zip_longest # < 2.5 or 3.x
except ImportError:
print("boom")
pass
"""
from
collections
import
namedtuple
,
OrderedDict
from
pykat.node_network
import
NodeNetwork
...
...
@@ -817,7 +834,8 @@ class kat(object):
raise
pkex
.
BasePyKatException
(
"Attr command '{0}' must specify both parameter and value pairs"
.
format
(
line
))
# convert split list to key value pairs
kv
=
dict
(
itertools
.
izip_longest
(
*
[
iter
(
v
[
2
:])]
*
2
,
fillvalue
=
None
))
#kv = dict(itertools.izip_longest(*[iter(v[2:])] * 2, fillvalue=None))
kv
=
dict
(
izip_longest
(
*
[
iter
(
v
[
2
:])]
*
2
,
fillvalue
=
None
))
comp
.
parseAttributes
(
kv
)
...
...
@@ -984,35 +1002,45 @@ class kat(object):
#if self.verbose: print "Finesse output:"
for
aline
in
iter
(
p
.
stderr
.
readline
,
b
""
):
line
=
unicode
(
aline
,
"utf-8"
)
if
six
.
PY2
:
line
=
unicode
(
aline
,
"utf-8"
)
else
:
line
=
aline
if
len
(
line
)
>
0
:
# remove any ANSI commands
#ansi = re.compile(r'\x1b[^m]*m')
#line = ansi.sub('', line)
line
=
re
.
sub
(
r
'\x1b[^m]*m'
,
''
,
line
,
re
.
UNICODE
)
line
=
re
.
sub
(
b
r
'\x1b[^m]*m'
,
''
,
line
,
re
.
UNICODE
)
# warnings and errors start with an asterisk
# so if verbose show them
if
line
.
lstrip
().
startswith
(
'*PROG*'
):
if
line
.
lstrip
().
startswith
(
b
'*PROG*'
):
line
=
line
[
8
:
-
1
]
vals
=
line
.
split
(
"-"
,
1
)
vals
=
line
.
split
(
b
"-"
,
1
)
action
=
vals
[
0
].
strip
()
prc
=
vals
[
1
].
strip
()[:]
if
printerr
==
1
:
sys
.
stdout
.
write
(
"
\r
{0} {1}"
.
format
(
action
,
prc
))
elif
line
.
lstrip
().
startswith
(
'*'
):
if
self
.
verbose
:
sys
.
stdout
.
write
(
line
)
elif
line
.
rstrip
().
endswith
(
'%'
):
if
six
.
PY2
:
sys
.
stdout
.
write
(
"
\r
{0} {1}"
.
format
(
action
,
prc
))
else
:
sys
.
stdout
.
write
(
"
\r
{0} {1}"
.
format
(
str
(
action
,
'utf-8'
),
str
(
prc
,
'utf-8'
)))
elif
line
.
lstrip
().
startswith
(
b
'*'
):
if
self
.
verbose
:
if
six
.
PY2
:
sys
.
stdout
.
write
(
line
)
else
:
sys
.
stdout
.
write
(
line
)
# todo fix this if needed
elif
line
.
rstrip
().
endswith
(
b
'%'
):
vals
=
line
.
split
(
"-"
)
action
=
vals
[
0
].
strip
()
prc
=
vals
[
1
].
strip
()[:]
if
printerr
==
1
:
sys
.
stdout
.
write
(
"
\r
{0} {1}"
.
format
(
action
,
prc
))
sys
.
stdout
.
write
(
"
\r
{0} {1}"
.
format
(
action
,
str
(
prc
))
)
else
:
err
+=
line
err
+=
str
(
line
)
[
out
,
errpipe
]
=
p
.
communicate
()
...
...
@@ -1023,8 +1051,8 @@ class kat(object):
if
printerr
==
1
:
print
(
""
)
# get the version number
ix
=
out
.
find
(
'build '
)
+
6
ix2
=
out
.
find
(
')'
,
ix
)
ix
=
out
.
find
(
b
'build '
)
+
6
ix2
=
out
.
find
(
b
')'
,
ix
)
r
.
katVersion
=
out
[
ix
:
ix2
]
r
.
runDateTime
=
datetime
.
datetime
.
now
()
...
...
@@ -1625,8 +1653,9 @@ class kat(object):
line
=
" "
.
join
(
line
.
split
())
# add to a list all the positions of any inline comment markers
i
=
[
line
.
find
(
'#'
),
line
.
find
(
'
\\
'
)]
i
=
filter
(
lambda
a
:
a
!=
-
1
,
i
)
#i = filter(lambda a: a != -1, i)
i
=
[
a
for
a
in
i
if
a
!=
-
1
]
if
len
(
i
)
==
0
:
commands
.
append
(
line
)
else
:
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment