Commit 6c9a39bd authored by Andreas Freise's avatar Andreas Freise
Browse files

conversion done, examples run in python2.7 and python3.4 !

parent a2d4c21d
......@@ -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()
#---------------------------------------------------------------------------
......
......@@ -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()
......
......@@ -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()
......
......@@ -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))
......
......@@ -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)
......
......@@ -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)
......
......@@ -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
......
......@@ -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
......
......@@ -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)
......
......@@ -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""):
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(br'\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:
if six.PY2:
sys.stdout.write("\r{0} {1}".format(action, prc))
elif line.lstrip().startswith('*'):
if self.verbose: sys.stdout.write(line)
elif line.rstrip().endswith('%'):
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,7 +1653,8 @@ 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)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment