2.1.1. qmix.exp package¶
2.1.1.1. Submodules¶
2.1.1.2. qmix.exp.clean_data module¶
This module contains functions for cleaning experimental data.
This includes removing NaN values, removing repeated values, and sorting.
The data can either be in x/y format (i.e., two arrays of equal length) or in matrix form (i.e., a matrix with two columns).
-
qmix.exp.clean_data.
clean_matrix
(matrix)¶ Clean 2D matrix data.
Remove NaNs, sort by first column, remove double values for first column.
- Parameters
matrix (ndarray) – 2-column matrix
- Returns
Cleaned 2-column matrix
-
qmix.exp.clean_data.
clean_xy
(x, y)¶ Clean x/y data.
Remove NaNs, sort by x, remove double values for x.
- Parameters
x (ndarray) – x data
y (ndarray) – y data
- Returns
Cleaned x/y data
-
qmix.exp.clean_data.
matrix_to_xy
(matrix)¶ Convert matrix into x/y data.
- Parameters
matrix (ndarray) – 2-column matrix
- Returns
x/y data
-
qmix.exp.clean_data.
remove_doubles_matrix
(matrix, col=0, check=True)¶ Remove double values from 2-column matrix.
- Parameters
matrix – 2-column matrix
col – column to remove doubles from (default 0)
check (bool) – check that x data is sorted
- Returns
2-column matrix with double values of given column removed
-
qmix.exp.clean_data.
remove_doubles_xy
(x, y, check=True)¶ Given x/y data, remove double values of x.
This function assumes that the data is already sorted by x!
- Parameters
x (ndarray) – x array
y (ndarray) – y array
check (bool) – check that x is sorted
- Returns
x/y data with doubles values of x removed
-
qmix.exp.clean_data.
remove_nans_matrix
(matrix)¶ Remove all NaN values data from a matrix
- Parameters
matrix (ndarray) – 2-column matrix
- Returns
2-column matrix with NaNs removed
-
qmix.exp.clean_data.
remove_nans_xy
(x, y)¶ Remove NaNs from x/y data.
- Parameters
x (ndarray) – x array
y (ndarray) – y array
- Returns
x/y data with NaNs removed
-
qmix.exp.clean_data.
sort_matrix
(matrix, col=0)¶ Sort a 2D matrix by a specific column.
- Parameters
matrix (ndarray) – 2-column matrix
col (int) – column to sort by
- Returns
2-column matrix sorted by the given column
-
qmix.exp.clean_data.
sort_xy
(x, y)¶ Sort x/y data by the x values.
- Parameters
x (ndarray) – x array
y (ndarray) – y array
- Returns
x/y data sorted by x
-
qmix.exp.clean_data.
xy_to_matrix
(x, y)¶ Take x/y data in separate arrays and combine into a matrix.
- Parameters
x (ndarray) – x data
y (ndarray) – y data
- Returns
Matrix of x/y data
2.1.1.3. qmix.exp.exp_data module¶
This module contains classes for importing, filtering and analyzing raw I-V and IF data obtained from SIS mixer experiments.
Two classes (RawData0
and RawData
) are provided to help manage the
data. RawData0
is intended for data that was collected with no LO
injection (i.e., unpumped data), and RawData
is intended for data that was
collected with LO injection (i.e., pumped data).
Note
Experimental data can be passed to these classes either in the form of CSV data files or Numpy arrays. In both bases, the data should have two columns: the first for voltage, and the second for current or IF power, depending on the file type.
For CSV files, you can define the delimiter using the keyword
argument delimiter=','
, the number of rows to skip for the header
using skip_header=1
, and which columns to import using
usecols=(0,1)
. Take a look at the data in
QMix/notebooks/eg-230-data/
for an example. Also, take a look at
QMix/notebooks/analyze-experimental-data.ipynb
for an example of how
to use this module.
-
class
qmix.exp.exp_data.
RawData
(ivdata, dciv, if_hot=None, if_cold=None, **kw)¶ Bases:
object
Class for importing and analyzing experimental pumped data (LO present).
Note
Experimental data can be passed to this class either in the form of CSV data files or Numpy arrays. In both bases, the data should have two columns: the first for voltage, and the second for current or IF power, depending on the file type.
For CSV files, you can define the delimiter using the keyword argument
delimiter=','
, the number of rows to skip for the header usingskip_header=1
, and which columns to import usingusecols=(0,1)
. Take a look at the data inQMix/notebooks/eg-230-data/
for an example. Also, take a look atQMix/notebooks/analyze-experimental-data.ipynb
for an example of how to use this module.See
qmix.exp.parameters.params
for all possible keyword arguments. These parameters control how the data is imported and analyzed.- Parameters
ivdata – I-V data. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for current. If you are using CSV files, the properties of the CSV file can be set through additional keyword arguments (see below).
dciv (qmix.exp.iv_data.DCIVData) – DC I-V metadata
- Keyword Arguments
delimiter (str) – Delimiter for CSV files.
usecols (tuple) – List of columns to import (tuple of length 2).
skip_header (int) – Number of rows to skip, used to skip the header.
v_fmt (str) – Units for voltage (‘uV’, ‘mV’, or ‘V’).
i_fmt (str) – Units for current (‘uA’, ‘mA’, or ‘A’).
vmax (float) – Maximum voltage to import in units [V].
npts (int) – Number of points to have in I-V interpolation.
debug (bool) – Plot each step of the I-V processing procedure.
voffset (float) – Voltage offset, in units [V].
ioffset (float) – Current offset, in units [A].
voffset_range (float) – Voltage range over which to search for offset, in units [V].
voffset_sigma (float) – Standard deviation of Gaussian filter when searching for offset.
rseries (float) – Series resistance in experimental measurement system, in units [ohms].
i_multiplier (float) – Multiply the imported current by this value.
v_multiplier (float) – Multiply the imported voltage by this value.
ifdata_vmax (float) – Maximum IF voltage to import.
ifdata_npts (int) – Number of points for interpolation.
filter_data (bool) – Filter data
vgap_guess (float) – Guess of gap voltage. Used to temporarily normalize while filtering. Given in units [V].
igap_guess (float) – Guess of gap current. Used to temporarily normalize while filtering. Given in units [A].
filter_theta (float) – Angle by which to the rotate data while filtering. Given in radians.
filter_nwind (int) – Window size for Savitsky-Golay filter.
filter_npoly (int) – Order of Savitsky-Golay filter.
ifdata_sigma (float) – Standard deviation of Gaussian used for filtering, in units [V]
analyze_iv (bool) – Analyze I-V data?
analyze_if (bool) – Analyze IF data?
area (float) – Area of the junction in um^2.
freq (float) – Frequency of LO signal.
cut_low (float) – only fit over first photon step, start at Vgap - vph + vph * cut_low
cut_high – only fit over first photon step, finish at Vgap - vph * cut_high
remb_range (tuple) – range of embedding resistances to check, normalized to the normal-state resistance
xemb_range (tuple) – range of embedding reactances to check, normalized to the normal-state resistance
alpha_max (float) – Maximum drive level.
num_b (int) – Summation limits for Bessel functions.
t_cold (float) – Temperature of cold blackbody load.
t_hot (float) – Temperature of hot blackbody load.
vmax_plot (float) – Maximum bias voltage for plots.
comment (str) – Comment to describe this instance.
verbose (bool) – Print to terminal.
-
plot_all
(fig_folder, file_struc=None, **kw)¶ Plot all pumped data and save to specified directory.
This method will call the following methods:
plot_iv
,plot_ivif
,plot_error_surface
,plot_simulated
,plot_simulated
,plot_noise_temp
, andplot_gain_noise_temp
.The plots generated by the different methods will be placed in different sub-directories. This is set by the
file_struc
argument. This argument is a dictionary with the following keys:'Pumped IV data'
,'IF data'
,'Impedance recovery'
, and'Noise temperature'
. Setfile_struc
to an empty string (“”) if you want all the figures to go intofig_folder
.- Parameters
fig_folder (str) – folder where the figures go
file_struc (dict) – dictionary listing all the sub-folders
kw – keyword arguments that will be passed to the plotting methods
-
plot_error_surface
(fig_name=None, ax=None)¶ Plot error surface (from impedance recovery).
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
-
plot_gain
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot gain.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
-
plot_gain_noise_temp
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot gain and noise temperature.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
-
plot_if
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot IF power from hot and cold loads.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
-
plot_if_noise
(fig_name=None, ax=None)¶ Plot IF noise.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis (should be tuple with two axes)
-
plot_iv
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot pumped I-V curve.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
-
plot_ivif
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot IV and IF data on same plot.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis (should be tuple with two axes)
vmax_plot – max voltage to include in plot (in mV)
-
plot_noise_temp
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot noise temperature.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis (should be tuple with two axes)
vmax_plot – max voltage to include in plot (in mV)
-
plot_rdyn
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot dynamic resistance.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
-
plot_shapiro
(fig_name=None, ax=None)¶ Plot Shapiro steps.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
-
plot_simulated
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot simulated I-V curve (from impedance recovery).
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
-
plot_yfac_noise_temp
(fig_name=None, ax=None, vmax_plot=4.0)¶ Plot Y-factor and noise temperature.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
-
class
qmix.exp.exp_data.
RawData0
(dciv, dcif=None, **kw)¶ Bases:
object
Class for importing and analyzing experimental DC data (with no LO).
Note
Experimental data can be passed to this class either in the form of CSV data files or Numpy arrays. In both cases, the data should have two columns: the first for voltage, and the second for current or IF power, depending on the file type.
For CSV files, you can define the delimiter using the keyword argument
delimiter=','
, the number of rows to skip for the header usingskip_header=1
, and which columns to import usingusecols=(0,1)
. Take a look at the data inQMix/notebooks/eg-230-data/
for an example. Also, take a look atQMix/notebooks/analyze-experimental-data.ipynb
for an example of how to use this module.See
qmix.exp.parameters.params
for all possible keyword arguments. These parameters control how the data is imported and analyzed.- Parameters
dciv – DC I-V curve. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for current. If you are using CSV files, the properties of the CSV file can be set through additional keyword arguments (see below).
dcif – DC IF data. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for IF power. If you are using CSV files, the properties of the CSV file can be set through additional keyword arguments (see below).
- Keyword Arguments
delimiter (str) – Delimiter for CSV files.
usecols (tuple) – List of columns to import (tuple of length 2).
skip_header (int) – Number of rows to skip, used to skip the header.
v_fmt (str) – Units for voltage (‘uV’, ‘mV’, or ‘V’).
i_fmt (str) – Units for current (‘uA’, ‘mA’, or ‘A’).
vmax (float) – Maximum voltage to import in units [V].
npts (int) – Number of points to have in I-V interpolation.
debug (bool) – Plot each step of the I-V processing procedure.
voffset (float) – Voltage offset, in units [V].
ioffset (float) – Current offset, in units [A].
voffset_range (float) – Voltage range over which to search for offset, in units [V].
voffset_sigma (float) – Standard deviation of Gaussian filter when searching for offset.
rseries (float) – Series resistance in experimental measurement system, in units [ohms].
i_multiplier (float) – Multiply the imported current by this value.
v_multiplier (float) – Multiply the imported voltage by this value.
ifdata_vmax (float) – Maximum IF voltage to import.
ifdata_npts (int) – Number of points for interpolation.
filter_data (bool) – Filter data
vgap_guess (float) – Guess of gap voltage. Used to temporarily normalize while filtering. Given in units [V].
igap_guess (float) – Guess of gap current. Used to temporarily normalize while filtering. Given in units [A].
filter_theta (float) – Angle by which to the rotate data while filtering. Given in radians.
filter_nwind (int) – Window size for Savitsky-Golay filter.
filter_npoly (int) – Order of Savitsky-Golay filter.
ifdata_sigma (float) – Standard deviation of Gaussian used for filtering, in units [V]
area (float) – Area of the junction in um^2.
vgap_threshold (float) – The current to measure the gap voltage at.
rn_vmin (float) – Lower voltage range to determine the normal resistance
rn_vmax (float) – Upper voltage range to determine the normal resistance
vrsg (float) – The voltage at which to calculate the subgap resistance.
vleak (float) – The voltage at which to calculate the subgap leakage current.
vshot (list) – Voltage range over which to fit shot noise slope, in units [V]. Can be a list of lists to define multiple ranges.
comment (str) – Comment to describe this instance.
verbose (bool) – Print to terminal.
-
plot_all
(fig_folder, sub_folder=None, **kw)¶ Plot all DC data and save it to a specified directory.
This method will call the following methods:
plot_dciv
,plot_offset
,plot_rdyn
andplot_if_noise
.These figures will be put in
fig_folder/sub_folder
. Note that ifsub_folder
is left asNone
, this method will use the default file structure (seeqmix.exp.exp_data._file_structure
). If you would instead like the figures to go intofig_folder
, set this argument as an empty string (“”).- Parameters
fig_folder (str) – directory where the figures go
sub_folder (str) – sub-directory where the DC I-V figures go
kw – keyword arguments that will be passed to the plotting methods
-
plot_dciv
(fig_name=None, ax=None, vmax_plot=4.0, **kw)¶ Plot DC I-V curve.
Some additional labels will be added as well, including normal-state resistance, subgap resistance, gap voltage, and gap current.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name (str) – figure filename
ax – Matplotlib axis
vmax_plot (float) – max voltage to include in plot (in mV)
kw – keyword arguments (not used)
-
plot_if_noise
(fig_name=None, ax=None, **kw)¶ Plot IF noise.
The IF noise is calculated from the slope of the shot noise.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis (should be tuple with two axes)
kw (dict) – keyword arguments (not used)
-
plot_offset
(fig_name=None, ax=None, **kw)¶ Plot DC I-V curve at the origin to see if there is an offset.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name (str) – figure filename
ax – Matplotlib axis
kw – keyword arguments (not used)
-
plot_rdyn
(fig_name=None, ax=None, vmax_plot=4.0, **kw)¶ Plot dynamic resistance of the DC I-V curve.
The dynamic resistance is the derivative of the I-V data, inverted to get resistance.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
kw (dict) – keyword arguments (not used)
-
plot_rstat
(fig_name=None, ax=None, vmax_plot=4.0, **kw)¶ Plot static resistance of DC I-V data.
The static resistance is the DC voltage divided by the DC current.
Note: If
fig_name
is provided, this method will save the plot to the specified folder and then close the plot. This means that the Matplotlib axis object will not be returned in this case. This is done to prevent too many plots from being open at the time.- Parameters
fig_name – figure filename
ax – Matplotlib axis
vmax_plot – max voltage to include in plot (in mV)
kw (dict) – keyword arguments (not used)
-
print_info
()¶ Print information about the DC I-V curve.
This method is deprecated. Just use
print(dciv)
instead, assuming thatdciv
is an instance of this class.
-
qmix.exp.exp_data.
initialize_dir
(fig_folder)¶ Initialize a new directory for storing results.
If you use either
- Parameters
fig_folder – desired location
-
qmix.exp.exp_data.
plot_if_spectrum
(data_folder, fig_folder=None, figsize=None)¶ Plot all IF spectra within data_folder.
- Parameters
data_folder – data folder
fig_folder – figure folder
figsize – figure size, in inches
-
qmix.exp.exp_data.
plot_overall_results
(dciv, data_list, fig_folder, vmax_plot=4.0, figsize=None, tn_max=None, f_range=None)¶ Plot all results.
This function is somewhat messy, but it will take in a list of RawData class instances, and plot the overall figures of merit (e.g., noise temperature vs LO frequency).
- Parameters
dciv – DC I-V data (instance of RawData0)
data_list – list of pumped data (instances of RawData)
fig_folder – figure destination
2.1.1.4. qmix.exp.if_data module¶
This sub-module contains functions for importing and analyzing experimental IF power measurements.
The “IF data” is the IF output power from the SIS device versus bias voltage. The term “DC IF data” is used for IF power with no LO injection, and “IF data” is used for IF power with LO injection.
Note
The IF data is expected either in the form of a CSV file or a Numpy array. Either way the data should have two columns: the first for voltage and the second for current.
-
class
qmix.exp.if_data.
DCIFData
(if_noise, corr, if_fit, shot_slope, vmax)¶ Bases:
tuple
Struct for DC IF metadata.
- Parameters
if_noise (float) – IF noise in units K, derived from the shot noise.
corr (float) – The correction required to transform the measured IF power (measured in arbitrary units, A.U.) to units K.
if_fit (bool) – Is the estimated IF noise a reasonable value?
shot_slope (float) – The slope of the line fit to the shot noise.
vmax (float) – Maximum bias voltage, in units V.
-
property
corr
¶ Alias for field number 1
-
property
if_fit
¶ Alias for field number 2
-
property
if_noise
¶ Alias for field number 0
-
property
shot_slope
¶ Alias for field number 3
-
property
vmax
¶ Alias for field number 4
-
qmix.exp.if_data.
dcif_data
(ifdata, dc, **kwargs)¶ Analyze DC IF measurements.
This is the IF data that is measured with no LO present. This data is used to analyze the shot noise, which can then be used to convert the IF data into units ‘K’ and estimate the IF noise component.
- Parameters
ifdata – IF data. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for IF power. If you are passing a CSV file, the properties of the CSV file can be set through additional keyword arguments (see below).
dc (qmix.exp.iv_data.DCIVData) – DC I-V metadata.
- Keyword Arguments
delimiter (str) – Delimiter for CSV files.
usecols (tuple) – List of columns to import (tuple of length 2).
skip_header (int) – Number of rows to skip, used to skip the header.
v_fmt (str) – Units for voltage (‘uV’, ‘mV’, or ‘V’).
i_fmt (str) – Units for current (‘uA’, ‘mA’, or ‘A’).
rseries (float) – Series resistance in experimental measurement system, in units [ohms].
v_multiplier (float) – Multiply the imported voltage by this value.
ifdata_npts (int) – Number of points for interpolation.
ifdata_sigma (float) – Standard deviation of Gaussian used for filtering, in units [V]
vshot (list) – Voltage range over which to fit shot noise slope, in units [V]. Can be a list of lists to define multiple ranges.
verbose (bool) – Print to terminal.
- Returns
- DC IF data, IF noise contribution, A.U. to K correction factor,
shot noise slope data, good fit to IF noise?
- Return type
tuple
-
qmix.exp.if_data.
if_data
(if_hot, if_cold, dc, **kwargs)¶ Analyze IF measurements from a hot/cold load experiment.
- Parameters
if_hot – Hot IF data. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for IF power.
if_cold – Cold IF data. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for IF power.
dc (qmix.exp.iv_data.DCIVData) – DC I-V metadata.
- Keyword Arguments
delimiter (str) – Delimiter for CSV files.
usecols (tuple) – List of columns to import (tuple of length 2).
skip_header (int) – Number of rows to skip, used to skip the header.
v_fmt (str) – Units for voltage (‘uV’, ‘mV’, or ‘V’).
i_fmt (str) – Units for current (‘uA’, ‘mA’, or ‘A’).
rseries (float) – Series resistance in experimental measurement system, in units [ohms].
v_multiplier (float) – Multiply the imported voltage by this value.
ifdata_max (float) – Maximum IF voltage to import.
ifdata_npts (int) – Number of points for interpolation.
ifdata_sigma (float) – Standard deviation of Gaussian used for filtering, in units [V]
t_cold (float) – Temperature of cold blackbody load.
t_hot (float) – Temperature of hot blackbody load.
vbest (float) – Bias voltage for best results (best temperature and gain).
verbose (bool) – Print to terminal.
- Returns
- Hot IF data, Cold IF data, Noise temperature, Gain, Index of
best noise temperature, IF noise contribution, Good fit to IF noise?, shot noise slope
- Return type
tuple
2.1.1.5. qmix.exp.iv_data module¶
This sub-module contains functions for importing and analyzing experimental current-voltage (I-V) data.
“I-V data” is the DC tunneling current versus DC bias voltage that is measured from an SIS junction. In general, the term “DC I-V data” is used for I-V data that is collected with no local-oscillator (LO) injection, and “I-V data” is used for I-V data that is collected with LO injection (also known as the “pumped I-V curve”).
Note
The I-V data is expected either in the form of a CSV file or a Numpy array. Either way the data should have two columns: the first for voltage and the second for current.
-
class
qmix.exp.iv_data.
DCIVData
(vraw, iraw, vnorm, inorm, vgap, igap, fgap, rn, rsg, offset, vint, rseries)¶ Bases:
tuple
Struct for DC I-V curve metadata.
- Parameters
vraw (ndarray) – DC bias voltage in units [V]. This data has been filtered and the offset has been corrected.
iraw (ndarray) – DC tunneling current in units [A]. This data has been filtered and the offset has been corrected.
vnorm (ndarray) – DC bias voltage, normalized to the gap voltage.
inorm (ndarray) – DC tunneling current, normalized to the gap current.
vgap (float) – Gap voltage in units [V].
igap (flaot) – Gap current in units [A].
fgap (float) – Gap frequency in units [Hz].
rn (float) – Normal-state resistance in units [ohms].
rsg (float) – Sub-gap resistance in units [ohms].
offset (tuple) – Voltage and current offset in the raw measured data, in units [V] and [A], respectively.
vint (float) – If you fit a line to the normal-state resistance (i.e., the DC I-V curve above the gap), the line will intercept the x-axis at
vint
. This is given in units [V].rseries (float) – The series resistance to remove from the I-V data. Given in units [ohms].
-
property
fgap
¶ Alias for field number 6
-
property
igap
¶ Alias for field number 5
-
property
inorm
¶ Alias for field number 3
-
property
iraw
¶ Alias for field number 1
-
property
offset
¶ Alias for field number 9
-
property
rn
¶ Alias for field number 7
-
property
rseries
¶ Alias for field number 11
-
property
rsg
¶ Alias for field number 8
-
property
vgap
¶ Alias for field number 4
-
property
vint
¶ Alias for field number 10
-
property
vnorm
¶ Alias for field number 2
-
property
vraw
¶ Alias for field number 0
-
qmix.exp.iv_data.
dciv_curve
(ivdata, **kwargs)¶ Import and analyze DC I-V data (a.k.a., the unpumped I-V curve).
- Parameters
ivdata – DC I-V data. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for current. If you are using CSV files, the properties of the CSV file can be set through additional keyword arguments. (See below).
- Keyword Arguments
delimiter (str) – Delimiter for CSV files.
usecols (tuple) – List of columns to import (tuple of length 2).
skip_header (int) – Number of rows to skip, used to skip the header.
v_fmt (str) – Units for voltage (‘uV’, ‘mV’, or ‘V’).
i_fmt (str) – Units for current (‘uA’, ‘mA’, or ‘A’).
vmax (float) – Maximum voltage to import in units [V].
npts (int) – Number of points to have in I-V interpolation.
debug (bool) – Plot each step of the I-V processing procedure.
voffset (float) – Voltage offset, in units [V].
ioffset (float) – Current offset, in units [A].
voffset_range (list) – Voltage range over which to search for offset, in units [V].
voffset_sigma (float) – Standard deviation of Gaussian filter when searching for offset.
rseries (float) – Series resistance in experimental measurement system, in units [ohms].
i_multiplier (float) – Multiply the imported current by this value.
v_multiplier (float) – Multiply the imported voltage by this value.
filter_data (bool) – Filter data
vgap_guess (float) – Guess of gap voltage. Used to temporarily normalize while filtering. Given in units [V].
igap_guess (float) – Guess of gap current. Used to temporarily normalize while filtering. Given in units [A].
filter_theta (float) – Angle by which to the rotate data while filtering. Given in radians.
filter_nwind (int) – Window size for Savitsky-Golay filter.
filter_npoly (int) – Order of Savitsky-Golay filter.
vgap_threshold (float) – The current to measure the gap voltage at.
vrn (list) – Voltage range over which to calculate the normal resistance, in units [V]
rn_vmin (float) – Lower voltage range to determine the normal resistance, in units [V] (DEPRECATED)
rn_vmax (float) – Upper voltage range to determine the normal resistance, in units [V] (DEPRECATED)
vrsg (float) – The voltage at which to calculate the subgap resistance.
vleak (float) – The voltage at which to calculate the subgap leakage current.
- Returns
normalized voltage, normalized current, DC I-V metadata
- Return type
tuple
-
qmix.exp.iv_data.
iv_curve
(ivdata, dc, **kwargs)¶ Load and analyze pumped I-V curve data.
- Parameters
ivdata – I-V data. Either a CSV data file or a Numpy array. The data should have two columns: the first for voltage, and the second for current. If you are using a CSV file, the properties of the CSV file can be set through additional keyword arguments (see below).
dc (qmix.exp.iv_data.DCIVData) – DC I-V data metadata. Generated previously by
dciv_curve
.
- Keyword Arguments
delimiter (str) – Delimiter for CSV files.
usecols (tuple) – List of columns to import (tuple of length 2).
skip_header (int) – Number of rows to skip, used to skip the header.
v_fmt (str) – Units for voltage (‘uV’, ‘mV’, or ‘V’).
i_fmt (str) – Units for current (‘uA’, ‘mA’, or ‘A’).
vmax (float) – Maximum voltage to import in units [V].
npts (int) – Number of points to have in I-V interpolation.
debug (bool) – Plot each step of the I-V processing procedure.
voffset (float) – Voltage offset, in units [V].
ioffset (float) – Current offset, in units [A].
voffset_range (list) – Voltage range over which to search for offset, in units [V].
voffset_sigma (float) – Standard deviation of Gaussian filter when searching for offset.
rseries (float) – Series resistance in experimental measurement system, in units [ohms].
i_multiplier (float) – Multiply the imported current by this value.
v_multiplier (float) – Multiply the imported voltage by this value.
filter_data (bool) – Filter data
vgap_guess (float) – Guess of gap voltage. Used to temporarily normalize while filtering. Given in units [V].
igap_guess (float) – Guess of gap current. Used to temporarily normalize while filtering. Given in units [A].
filter_theta (float) – Angle by which to the rotate data while filtering. Given in radians.
filter_nwind (int) – Window size for Savitsky-Golay filter.
filter_npoly (int) – Order of Savitsky-Golay filter.
- Returns
normalized voltage, normalized current
- Return type
tuple
2.1.1.6. qmix.exp.parameters module¶
This module contains a dictionary of parameters (params
) that is
used by qmix.exp.RawData
and qmix.exp.RawData0
to control
how experimental data is loaded and analyzed.
Note
This dictionary just contains the default values. You can overwrite these
values by passing keyword arguments to RawData
or RawData0
. For
example, the default value for voltage units is millivolts ("mV"
).
You can change this parameter to be microvolts ("uV"
) by passing
v_fmt="uV"
to RawData
or RawData0
.
Also note that experimental data can be passed to RawData0
and
RawData
either as CSV data files or as Numpy arrays. In both
cases, the data should have two columns: one for voltage and one
for current or IF power, depending on the file. See Example #3 on the
QMix website for more information.
All of the different parameters are described below along with their default values.
Parameters:
- CSV files:
Note: If you are using CSV files, these parameters control how the data is loaded from the CSV files.
delimiter = ","
: The delimiter used by the CSV data files.
usecols = (0,1)
: Which columns to import from the CSV data files.
skip_header = 1
: Number of rows to skip at the beginning CSV data files. (Used to skip the header.)
- Units:
v_fmt = "mV"
: Units for imported voltage data. The options are:"uV"
,"mV"
and"V"
.
i_fmt = "mA"
: Units for imported current data. The options are:"uA"
,"mA"
and"A"
.
- Importing I-V data:
vmax = 6e-3
: Maximum voltage to import in units [V]. Used in case the current is saturated beyond some bias voltage.
npts = 6001
: Number of points to use in the I-V data interpolation.
debug = False
: If set toTrue
, this will plot each step of the I-V data loading and analysis procedure. Note: This will display 4 individual plots for each I-V curve that is loaded, so do not use this if you are looping through multiple files.
- Correcting voltage/current offsets:
Note: Sometimes there is an offset in the I-V data. The parameters below can be used to correct this. If you know the current and voltage offset, you can define
ioffset
andvoffset
, respectively. Otherwise,RawData0
will attempt to find the offset on its own. This is done by taking the derivative of the DC I-V curve, and then finding the maximum derivative value betweenvoffset_range[0]
andvoffset_range[1]
.
ioffset = None
: Offset of the DC tunneling current data in units [A].
voffset = None
: Offset of the DC bias voltage data in units [V].
voffset_range = (-3e-4, 3e-4)
: Voltage range over which to look for the voltage offset in units [V]. TheRawData0
class will look fromvoffset_range[0]
to+voffset_range[1]
for the voltage offset.
voffset_sigma = 1e-5
: When looking for the voltage offset, smooth the derivative of the DC I-V curve by convolving data with a Gaussian distribution with this standard deviation.
- Correcting experimental I-V data:
rseries = None
: Correct for a series resistance in the DC measurement system using this resistance in units [ohms]. Leave asNone
if there is no series resistance.
i_multiplier = 1.
: Multiply the imported I-V current by this number. Used to correct for errors in the I-V readout.
v_multiplier = 1.
: Multiply the imported I-V voltage by this number. Used to correct for errors in the I-V readout.
- Filtering I-V data:
Note: When I-V data is loaded, it is normalized, rotated 45 degrees, filtered using a Savitzky-Golay filter, and then rotated back. (The rotation allows for good filtering without smearing the transition.) The parameters below control this process.
filter_data = True
: Filter the I-V data?
filter_theta = 0.785
: Angle by which to rotate the DC I-V curve before filtering (in radians).
filter_nwind = 21
: Width of the Savitzky-Golay filter.
filter_npoly = 3
: Order of the Savitzky-Golay filter.
- Analyzing the DC I-V curve:
vgap_threshold = None
: Threshold current, in units [A], at which to measure the gap voltage. (Note: the gap voltage is defined here as the voltage at which the DC I-V curve crosses this current value.)
vrn = (3.5e-3, 4.5e-3)
: Voltage range over which to calculate the normal-state resistance, in units [V].
vrsg = 2e-3
: Voltage at which to measure the subgap resistance, in units [V].
vleak = 2e-3
: Voltage at which to measure the leakage current, in units [V].
- Analyzing pumped I-V data:
analyze_iv = True
: Analyze the pumped I-V data? This involves a procedure to recover the embedding circuit.
fit_range = (0.25, 0.8)
: Fit interval for impedance recovery, normalized to the width of the first photon step. For example, with(0.25, 0.8)
, the impedance recovery procedure will not consider the first 25% of the first step or the last 20%. It will only use the bias voltages between 25% and 80%. This is used to select only the middle of the step.
remb_range = (0, 1)
: Range of embedding resistances to test, normalized to the normal resistance.
xemb_range = (-1, 1)
: Range of embedding reactances to test, normalized to the normal resistance.
zemb = None
: During impedance recovery, force the embedding impedance to be this value (normalized).
alpha_max = 1.5
: Initial guess for the drive level (alpha) during impedance recovery.
num_b = 20
: Maximum number of Bessel functions to include when calculating the tunneling currents.
- Importing IF data:
ifdata_npts = 3000
: Number of points to use when interpolating IF data.
- Filtering IF data:
ifdata_sigma = 1e-5
: Smooth the measured IF power data by convolving it with a Gaussian distribution. This is the standard deviation, in units [V].
- Analyzing the DC IF data:
Note: DC IF data (IF power with no LO injection) is used to measure the IF noise contribution and convert the power units into units of temperature [K]. This is done by fitting a linear trend to the shot noise present in the DC IF data.
vshot = None
: Voltage range over which to fit the shot noise slope, in units [V]. Can be a list of lists to define multiple ranges. For example, to fit the shot noise slope from 4-5 mV and from 6-7 mV, you would passvshot=((4e-3, 5e-3), (6e-3, 7e-3))
. You can break it up this way in case there are Josephson effects present in the IF power data.
- Analyzing pumped IF data (noise temperature analysis):
analyze_if = True
: Analyze the IF data? This involves calculating the noise temperature and gain.
t_cold = 78.
: Temperature of the cold load (likely liquid nitrogen), in units [K].
t_hot = 293.
: Temperature of the hot load (likely room temperature), in units [K].
vbest = None
: Bias voltage at which to calculate the best noise temperature value. If this value is set toNone
, theRawData
class will determine the best bias voltage automatically.
best_pt = 'Max Gain'
: Which bias voltage should we select as the best bias? Where the gain is the highest ('Max Gain'
)? Or the lowest noise temperature ('Min Tn'
)?
- IF response:
ifresp_delimiter = '\t'
: Delimiter for IF spectrum files.
ifresp_usecols = (0, 1, 2)
: Columns to import from IF spectrum files. The first column should be the frequency, the second should be the IF power from the hot load, and the third should be the IF power from the cold load.
ifresp_skipheader = 1
: Number of rows to skip at the beginning of the IF spectrum file.
ifresp_maxtn = 1e6
: Maximum noise temperature. All values above this value will be set toifresp_maxtn
.
- Response function:
Note: The
RawData0
class generates a response function based on the imported DC I-V data (usingqmix.respfn.RespFn
). It also generates a second response function that is slightly smeared. This smeared response function is useful for simulations because it simulates a small amount of heating.
v_smear = 0.020
: Voltage smear of the “smeared” response function.
- Plotting parameters:
vmax_plot = 4.0
: Maximum bias voltage for plots, in units [mV].
- Junction properties:
area = 1.5
: Area of the SIS junction in units [um^2].
- Local-oscillator (LO) signal:
freq = None
: Frequency of the local-oscillator signal in units [GHz].
- Miscellaneous:
comment = ""
: Add a comment to describe this instance.
verbose = True
: Print information to the terminal.
-
qmix.exp.parameters.
params
= {'alpha_max': 1.5, 'analyze': True, 'analyze_if': True, 'analyze_iv': True, 'area': 1.5, 'best_pt': 'Max Gain', 'comment': '', 'debug': False, 'delimiter': ',', 'filter_data': True, 'filter_npoly': 3, 'filter_nwind': 21, 'filter_theta': 0.785, 'fit_range': (0.25, 0.8), 'freq': None, 'i_fmt': 'mA', 'i_multiplier': 1.0, 'ifdata_npts': 3000, 'ifdata_sigma': 1e-05, 'ifresp_delimiter': '\t', 'ifresp_maxtn': 1000000.0, 'ifresp_skipheader': 1, 'ifresp_usecols': (0, 1, 2), 'ioffset': None, 'npts': 6001, 'num_b': 20, 'remb_range': (0, 1), 'rseries': None, 'skip_header': 1, 't_cold': 78.0, 't_hot': 293.0, 'usecols': (0, 1), 'v_fmt': 'mV', 'v_multiplier': 1.0, 'v_smear': 0.02, 'vbest': None, 'verbose': True, 'vgap_threshold': None, 'vleak': 0.002, 'vmax': 0.006, 'vmax_plot': 4.0, 'voffset': None, 'voffset_range': (-0.0003, 0.0003), 'voffset_sigma': 1e-05, 'vrn': (0.0035, 0.0045), 'vrsg': 0.002, 'vshot': None, 'xemb_range': (-1, 1), 'zemb': None}¶ Default parameters for importing experimental data.
2.1.1.7. Module contents¶
This sub-package contains functions for importing and analyzing experimental data.