-
Notifications
You must be signed in to change notification settings - Fork 20
Wavefront plotting
Alexey Buzmakov edited this page Dec 5, 2013
·
3 revisions
import pylab as plt
import numpy
def _resample(wf, axis, data, x0, x1):
if axis.lower()=='x':
y = data[data.shape[0]/2,:]
x = numpy.linspace(wf.params.Mesh.xMin, wf.params.Mesh.xMax, y.shape[0])
elif axis.lower()=='y':
y = data[:,data.shape[1]/2]
x = numpy.linspace(wf.params.Mesh.yMin, wf.params.Mesh.yMax, y.shape[0])
else:
raise ValueError(
'Wrong axis {}, should be "x" or "y"'.format(axis))
if not x0 is None:
xmin = x0
else:
xmin = x[0]
if not x1 is None:
xmax = x1
else:
xmax = x[-1]
x1 = numpy.linspace(xmin,xmax,len(y))
y1 = numpy.interp(x1, x,y)
return x1, y1
def intensity_cut(wf, axis, polarization, x0=None, x1=None):
if polarization.lower() == 'v' or polarization.lower() == 'vertical':
pol = 'vertical'
elif polarization.lower() == 'h' or polarization.lower() == 'horizontal':
pol = 'horizontal'
elif polarization.lower() == 't' or polarization.lower() == 'total':
pol = 'total'
else:
raise ValueError(
'Wrong polarization {}, should be "v" or "vertical"'+
' or "h" or "horizontal" or "t" or "total"'.format(polarization))
data = wf.get_intensity(slice_number=0, polarization=pol)
return _resample(wf, axis, data, x0, x1)
def phase_cut(wf, axis, polarization, x0=None, x1=None):
if polarization.lower() == 'v' or polarization.lower() == 'vertical':
pol = 'vertical'
elif polarization.lower() == 'h' or polarization.lower() == 'horizontal':
pol = 'horizontal'
else:
raise ValueError(
'Wrong polarization {}, should be "v" or "vertical" or "h" or "horizontal"'.format(polarization))
data = wf.get_phase(slice_number=0, polarization=pol)
return _resample(wf, axis, data, x0, x1)
Usage example
x,y = intensity_cut(wf_out, axis='x', polarization='v', x0=-0.0005, x1=0.001)
plt.plot(x,y)
plt.grid(True)