Porting from Ipkiss 3.7.1 to Ipkiss 3.8
Porting filter analysis functions
AWG Designer has functions for filter analysis. These are now deprecated and replaced by the new i3.SpectrumAnalyzer
.
AWG Designer function |
i3.SpectrumAnalyzer function |
---|---|
get_peaks |
|
get_insertion_loss |
|
get_crosstalk |
|
get_nearest_neighbor_crosstalk |
Be sure to check out the additional functionality provided by i3.SpectrumAnalyzer
for measuring
free spectral range, channel bandwidths, insertion losses and more insight in crosstalk!
Example
Using the deprecated AWG Designer functions:
channel_freq = np.array([
229000.0, 229800.0, 230600.0, 231400.0, 232200.0, 233000.0, 233800.0, 234600.0, 235400.0
])
channel_wavelengths = awg.frequency_to_wavelength(channel_freq)
simulation_wavelengths = np.linspace(channel_wavelengths[0] - 0.010,
channel_wavelengths[-1] + 0.010,
500)
output_ports = ["out{}".format(p+1) for p in range(len(channel_wav))]
awg_S = awg_circuitmodel.get_smatrix(wavelengths=simulation_wavelengths)
input_pm = "in1:0"
output_pms=["{}:0".format(p) for p in output_ports],
peaks = awg.get_peaks(awg_S,
input_pm=input_pm,
output_pms=output_pms,
channel_wavelengths=channel_wavelengths,
)
insertion_loss = awg.get_insertion_loss(
awg_S,
input_pm=input_pm,
output_pms=output_pms,
channel_wavelengths=channel_wavelengths,
)
cross_talk = awg.get_crosstalk(
awg_S,
input_pm=input_pm,
output_pms=output_pms,
channel_wavelengths=channel_wavelengths,
)
cross_talk_nn = awg.get_nearest_neighbor_crosstalk(
awg_S
input_pm=input_pm,
output_pms=output_pms,
channel_wavelengths=channel_wavelengths,
)
With the new functionality this becomes:
channel_freq = np.array([
229000.0, 229800.0, 230600.0, 231400.0, 232200.0, 233000.0, 233800.0, 234600.0, 235400.0
])
channel_wavelengths = awg.frequency_to_wavelength(channel_freq)
simulation_wavelengths = np.linspace(channel_wavelengths[0] - 0.010,
channel_wavelengths[-1] + 0.010,
500)
output_ports = ["out{}".format(p+1) for p in range(len(channel_wav))]
awg_S = awg_circuitmodel.get_smatrix(wavelengths=simulation_wavelengths)
analyzer = i3.SpectrumAnalyzer(
smatrix=awg_S,
input_port_mode='in1',
output_port_modes=output_ports,
)
peaks = analyzer.peaks
# use -3dB passbands (other options include fixed wavelength passbands)
passbands = analyzer.cutoff_passbands(cutoff=-3)
insertion_loss = analyzer.min_insertion_loss(bands=passbands)
cross_talk = analyzer.far_crosstalk(bands=passbands)
cross_talk_nn = analyzer.near_crosstalk(bands=passbands)