qcodespp.plotting.offline.fits
==============================
.. py:module:: qcodespp.plotting.offline.fits
Attributes
----------
.. autosummary::
qcodespp.plotting.offline.fits.functions
qcodespp.plotting.offline.fits.multipeak_description
qcodespp.plotting.offline.fits.lorgaussform
qcodespp.plotting.offline.fits.fourparamform
qcodespp.plotting.offline.fits.fiveparamform
qcodespp.plotting.offline.fits.thermaldescription
qcodespp.plotting.offline.fits.stepdescription
qcodespp.plotting.offline.fits.rectdescription
Functions
---------
.. autosummary::
qcodespp.plotting.offline.fits.linear
qcodespp.plotting.offline.fits.polynomial
qcodespp.plotting.offline.fits.fit_powerlaw
qcodespp.plotting.offline.fits.fit_exponentials
qcodespp.plotting.offline.fits.fit_lorgausstype
qcodespp.plotting.offline.fits.fit_voigttype
qcodespp.plotting.offline.fits.fit_skewedpeaks
qcodespp.plotting.offline.fits.fit_sines
qcodespp.plotting.offline.fits.thermal_fit
qcodespp.plotting.offline.fits.step_fit
qcodespp.plotting.offline.fits.rectangle_fit
qcodespp.plotting.offline.fits.expression_fit
qcodespp.plotting.offline.fits.QD_fit
qcodespp.plotting.offline.fits.FET_mobility
qcodespp.plotting.offline.fits.dynes_fit
qcodespp.plotting.offline.fits.ramsey_fit
qcodespp.plotting.offline.fits.RCSJfit
qcodespp.plotting.offline.fits.statistics
qcodespp.plotting.offline.fits.get_class_names
qcodespp.plotting.offline.fits.get_function
qcodespp.plotting.offline.fits.get_names
qcodespp.plotting.offline.fits.get_parameters
qcodespp.plotting.offline.fits.get_description
qcodespp.plotting.offline.fits.fit_data
Module Contents
---------------
.. py:function:: linear(xdata, ydata, p0=None, inputinfo=None)
Fit a linear model to the data.
Args:
* xdata: x data to fit
* ydata: y data to fit
* Initial guesses and inputinfo not used.
Returns:
* result: lmfit result object.
.. py:function:: polynomial(xdata, ydata, p0=None, inputinfo=2)
Fit a polynomial model to the data.
Args:
* xdata: x data to fit
* ydata: y data to fit
* inputinfo (int): degree of the polynomial to fit. Default 2
* Initial guesses (p0) are not used.
Returns:
* result: lmfit result object.
.. py:function:: fit_powerlaw(xdata, ydata, p0=None, inputinfo=[1, 0])
Fit a power law model to the data.
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of floats.
* inputinfo: a list containing the number of terms in the power law and whether to include a constant offset.
Returns:
- result: lmfit result object.
.. py:function:: fit_exponentials(xdata, ydata, p0=None, inputinfo=[1, 0])
Fit one or more exponential terms to the data, with or without a constant offset.
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of floats.
* inputinfo: a list containing the number of terms in the exponential and whether to include a constant offset.
Returns:
* result: lmfit result object.
.. py:function:: fit_lorgausstype(modeltype, xdata, ydata, p0=None, inputinfo=[1, 0])
Fits x,y data with peaks characterised by amplitude, fwhm and position.
Args:
* modeltype: lmfit model to use for fitting. Options are
LorentzianModel, GaussianModel, LognormalModel, StudentsTModel, DampedOscillatorModel
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of strings.
* inputinfo: a list containing the number of peaks to fit and whether to include a constant offset.
Returns:
* result: lmfit result object.
.. py:function:: fit_voigttype(modeltype, xdata, ydata, p0=None, inputinfo=[1, 0])
Fits x,y data with peaks characterised by amplitude, fwhm, position and gamma.
Args:
* modeltype: lmfit model to use for fitting. Options are:
VoigtModel, PseudoVoigtModel, BreitWignerModel, SplitLorentzianModel, ExponentialGaussianModel,
SkewedGaussianModel, MoffatModel, Pearson7Model, DampedHarmonicOscillatorModel, DoniachModel
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of strings.
* inputinfo: a list containing the number of peaks to fit and whether to include a constant offset.
Returns:
* result: lmfit result object.
.. py:function:: fit_skewedpeaks(modeltype, xdata, ydata, p0=None, inputinfo=[1, 0])
Fits x,y data with peaks characterised by amplitude, fwhm, position, gamma and skew.
Args:
* modeltype: lmfit model to use for fitting. Options are:
Pearson4Model, SkewedVoigtModel
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of strings.
* inputinfo: a list containing the number of peaks to fit and whether to include a constant offset.
Returns:
* result: lmfit result object.
.. py:function:: fit_sines(xdata, ydata, p0=None, inputinfo=[1, 0])
Fits x,y data with multiple sine waves characterised by amplitude, frequency, phase and position.
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of strings.
* inputinfo: a list containing the number of sine waves to fit and whether to include a constant offset.
Returns:
* result: lmfit result object.
.. py:function:: thermal_fit(modeltype, xdata, ydata, p0=None, inputinfo=None)
Fits x,y data with a thermal distribution characterised by temperature and amplitude.
Args:
* modeltype (str): the type of thermal distribution to fit. Options are:
maxwell, fermi, bose.
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of floats.
* inputinfo: not used.
Returns:
* result: lmfit result object.
.. py:function:: step_fit(modeltype, xdata, ydata, p0=None, inputinfo=None)
Fits x,y data with a step function characterised by amplitude, center and sigma.
Args:
* modeltype (str): the type of step function to fit. Options are:
linear, arctan, erf, logistic
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of floats.
* inputinfo: not used.
Returns:
* result: lmfit result object.
.. py:function:: rectangle_fit(modeltype, xdata, ydata, p0=None, inputinfo=None)
Fits x,y data with a rectangle function characterised by amplitude, center1, center2, sigma1 and sigma2.
Args:
* modeltype (str): the type of rectangle function to fit. Options are:
linear, arctan, erf, logistic
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of floats.
* inputinfo: not used.
Returns:
* result: lmfit result object.
.. py:function:: expression_fit(xdata, ydata, p0, inputinfo)
Fits x,y data with an arbitrary expression using lmfit's ExpressionModel.
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of strings.
Format should be: ['x0=x0_value', 'G0=G0_value', ...]
* inputinfo: The expression to fit, as a string. Should be a valid lmfit expression.
Returns:
* result: lmfit result object.
.. py:function:: QD_fit(xdata, ydata, p0=None, inputinfo=[1, 0.01])
Fits one or more Coulomb blockade peaks in the limit of low tunnel coupling: 'G = G_0 * cosh(e*alpha*(Vg - V_0)/(2*k_B*T))**(-2)
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of strings.
Format should be: ['x0 x0 ... x0','G0 G0 ... G0','T']
* inputinfo: a list containing the number of peaks to fit and the alpha parameter.
Format should be: [numofpeaks, alpha]
Returns:
* result: lmfit result object.
.. py:function:: FET_mobility(xdata, ydata, p0=None, inputinfo=None)
Fits x,y data with a FET mobility model: '1/(R_s + L**2/(C*mu*(x-V_th)))'
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): List of initial guesses for the parameters.
Format should be: [mu, V_th, R_s]
* inputinfo: a list containing the capacitance C and device length L.
Format should be: [C, L]
Returns:
* result: lmfit result object.
.. py:function:: dynes_fit(xdata, ydata, p0=None, inputinfo=None)
Fits x,y data with a Dynes model for a superconducting gap: 'G_N * abs((e*x - i*gamma*e)/(sqrt((e*x - i*gamma*e)**2 - (delta*e)**2)))'
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of floats.
Format should be: [G_N, gamma, delta]
* inputinfo: not used.
Returns:
* result: lmfit result object.
.. py:function:: ramsey_fit(xdata, ydata, p0, inputinfo)
Fits x,y data with a Ramsey model for T2 of a qubit: 'A*cos(2*pi*f*x + phi)*exp(-x/T2) + B + C*x'
Args:
* xdata: x data to fit
* ydata: y data to fit
* p0 (opt.): initial guesses for the parameters. Should be a list of floats.
Format should be: [A, B, C, f, phi, T2]
* inputinfo: not used.
Returns:
* result: lmfit result object.
.. py:function:: RCSJfit(xdata, ydata, p0=None, inputinfo=None)
Fits the differential conductance, dI/dV of a Josephson junction vs the dc voltage, Vdc applied across it.
The model is fitted to the derivative of:
(Rj/(Rj+Rc))*(jc*Im(I_(1-in(v)(B))/I_(-in(V)(B))) + (Vdc-Vdc_0)/Rj)
where:
- Rj is the junction resistance,
- Rc is the shunt resistance,
- jc is the critical current density,
- Vdc_0 is the offset voltage,
- I_(1-in(v)(B)) and I_(-in(V)(B)) are modified Bessel functions of the first kind.
- n(V) = hbar*(Vdc-Vdc_0)/(2*e*Rc*k_B*T), where hbar is the reduced Planck's constant, e is the electron charge, k_B is the Boltzmann constant, and T is the temperature
- B = jc*hbar/(2*e*k_B*T)
See e.g. https://www.science.org/doi/suppl/10.1126/sciadv.aav1235/suppl_file/aav1235_sm.pdf, page 14 onwards.
Args:
* xdata: x data to fit (Vdc)
* ydata: y data to fit (dI/dV)
* p0 (opt.): Initial guesses for jc, Rj, Rc, Vdc_0 and c (the constant offset).
Format should be: [jc, Rj, Rc, Vdc_0, c]
* inputinfo: A list containing the temperature in Kelvin. If not provided, defaults to 0.02 K.
Format should be: [T]
.. py:function:: statistics(xdata, ydata, p0, inputinfo)
Return various statists from the data
Args:
* xdata: x data to use for statistics
* ydata: y data to use for statistics
* p0 (opt.): Either percentiles to return or weights of the weighted average.
* inputinfo: A string containing the statistics to return. Options are:
'mean', 'average', 'std', 'var', 'median', 'min', 'max', 'range', 'sum', 'skew', 'percentile', 'autocorrelation', 'autocorrelation_norm',
'all' (all except percentiles and autocorrelation), 'all1d' (all except percentiles, autocorrelation and skew).
Returns:
* result: A dictionary containing the requested statistics. If percentiles are requested,
they are also included in the dictionary under the key 'percentiles'.
.. py:data:: functions
.. py:data:: multipeak_description
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""Fit one or more {} peaks. The inputs are n,c, where n is the number of peaks and c is whether to include a constant offset in the fit. c=0 --> no offset, c=1 --> Offset.
For exmaple, inputs of 4,0 will fit four peaks without a constant offset.
By default, the fit assumes equally spaced peaks with heights approximately the max value of the data.
To change this, provide an initial guess of the form {}
If providing an intial guess, you must provide all parameters for all peaks."""
.. raw:: html
.. py:data:: lorgaussform
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""w1 ... wn, a1 ... an, x1 ... xn, c where w = peak sigma a = peak amplitude, x = peak position and c = constant offset value (if used). For example:
0.01 0.014 0.005, 1.1 1.05 1.2, -0.1 0 0.1
for three peaks with no constant offset, and
0.01 0.014 0.005, 1.1 1.05 1.2, -0.1 0 0.1,5
for three peaks with a constant offset of 5.
"""
.. raw:: html
.. py:data:: fourparamform
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""w1 ... wn, a1 ... an, x1 ... xn, g1 ... gn, c where w = peak sigma, a = peak amplitude, x = peak position, g = gamma (see lmfit documentation for meaning in each case) and c = constant offset value (if used). For example:
0.01 0.014 0.005, 1.1 1.05 1.2, -0.1 0 0.1, 0.001 0.001 0.001
for three peaks with no constant offset, and
0.01 0.014 0.005, 1.1 1.05 1.2, -0.1 0 0.1, 0.001 0.001 0.001,5
for three peaks with a constant offset of 5.
"""
.. raw:: html
.. py:data:: fiveparamform
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""w1 ... wn, a1 ... an, x1 ... xn, g1 ... gn, s1 ... sn, c where w = peak sigma, a = peak amplitude, x = peak position, g = gamma (see lmfit documentation for meaning in each case), s = skew and c = constant offset value (if used). For example:
0.01 0.014 0.005, 1.1 1.05 1.2, -0.1 0 0.1, 0.001 0.001 0.001, 0.1 0.12 0.14
for three peaks with no constant offset, and
0.01 0.014 0.005, 1.1 1.05 1.2, -0.1 0 0.1, 0.001 0.001 0.001, 0.1 0.12 0.14, 5
for three peaks with a constant offset of 5.
"""
.. raw:: html
.. py:data:: thermaldescription
:value: 'Fit to a {} distribution: y = {}. kT is considered a single fit parameter. Initial guesses for...
.. py:data:: stepdescription
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""Fit a single step function of type {} (see lmfit documentation for information).
The step function starts at 0 and ends with value +/- A. The x-value where y=A/2 is given by x0, and sigma is the characteristic width of the step.
Use an offset filter on the data in the main panel to ensure your data starts at y=0.
In addition, the x-data must be ascending; use a filter to multiply by -1, and possibly an add/subtract offset, if necessary.
"""
.. raw:: html
.. py:data:: rectdescription
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""Fit a rectangle function of type {} (see lmfit documentation for information).
A rectangle function steps from 0 to +/- A, then back to 0. The x-values where y=A/2 are given by x0_1, x0_2, and sigma_1 and sigma_2 are the characteristic widths of the steps.
Use an offset filter on the data in the main panel to ensure your data starts at y=0.
In addition, the x-data must be ascending; use a filter to multiply by -1, and possibly an add/subtract offset, if necessary.
"""
.. raw:: html
.. py:function:: get_class_names()
.. py:function:: get_function(function_class, function_name)
.. py:function:: get_names(fitclass='Polynomials and powers')
.. py:function:: get_parameters(function_class, function_name)
.. py:function:: get_description(function_class, function_name)
.. py:function:: fit_data(function_class, function_name, xdata, ydata, p0=None, inputinfo=None)