Releases: garrettj403/QMix
Releases · garrettj403/QMix
Optimize QMix
Optimization
- Added more detailed benchmarking and profiling scripts (found in
QMix/profile/
). qmix.qtcurrent.qtcurrent
is now ~20% faster for 1 tone.qmix.harmonic_balance.harmonic_balance
is ~20% faster for 1 or 2 tones, and ~10% faster for 3 tones.
Functionality Changes
- Renamed
cct.vph
tocct.freq
(inqmix.circuit.EmbeddingCircuit
). The normalized photon voltage is equivalent to the normalized frequency. I think frequency is easier to understand so I changed it. - Deleted the command line scripts (
bin/
). There was only one script and it was pretty obscure so I descided to delete it. - Moved
qtcurrent_all_freq()
function fromqmix.qtcurrent
toqmix.harmonic_balance
. Again, it's a pretty obscure function and it's only used in theharmonic_balance
module, so I moved it. - Deleted
qtcurrent_std
fromqmix.qtcurrent
. This function calculated the "standard" output values, but this was pretty arbitrary. It also didn't really simplify the package at all so I deleted it.
Documentation
- Travis CI now automatically rebuilds the online documentation on each new commit.
- Added information on how to contribute to QMix to README.
- Added docstrings to many private functions. This should allow new users to understand the inner workings a bit better.
Miscellaneous Minor Changes
QMix/examples/
renamedQMix/notebooks/
- Removed
codemeta.json
andsetup.cfg
. - Fixed several bugs with Travis CI.
Fix parameters for experimental data
Experimental data
- Process experimental data in a consistent order (i.e., I-V and IF data should be processed in the same way).
- Add warning if normal resistance is too low or too high. This can help to detect if you are using the wrong units for the current.
- Make parameters in
qmix.exp.parameters
more consistent. Changes include:voffset_range
, which defines where the voltage offset is potentially found, is now defined as a list. E.g., if the experimental voltage offset could be found anywhere between -0.5mV and 0.1mV, you now usevoffset_range=(-0.5e-3, 0.1e-3)
. This change is backwards compatible, so you can still define it as a float if you like. For example, if you setvoffset_range=1e-3
, this is equivalent tovoffset_range=(-1e-3, 1e-3)
.rn_vmin
andrn_vmax
, which previously defined where the normal resistance was calculated, are now combined intovrn
. Previously, this was defined usingrn_vmin
andrn_vmax
. Now, it is defined usingvrn
as a list. For example, if you previously usedrn_vmin=4e-3
andrn_vmax=5e-3
, you would now usevrn=(4e-3, 5e-3)
. This change is backwards compatible, so you can still usern_vmin
andrn_vmax
.vshot
, which controls where the shot noise slope is calculated, is now a list of lists, so that multiple voltage ranges can be defined. For example, if the shot noise slope is smooth between from 4-5mV and 5.5-6mV, you can definevshot=((4e-3,5e-3),(5.5e-3,6e-3))
. This change is backwards compatible, so you can still use a normal list.cut_low
andcut_high
, which previously defined the region of the first photon step that would be used for impedance recovery, are now combined intofit_range
. For example, if you previously usedcut_low=0.25
andcut_high=0.2
, you should now usefit_interval=(0.25, 0.8)
. (NB: The way that the upper limit is defined has been changed!). In this example, the script will ignore the first 25% of the photon step and the last 20% during the impdance recovery process. This is backwards compatible, so you can still usecut_low
andcut_high
if you like.vgap_guess
andigap_guess
have been removed. They actually weren't needed all along.ifdata_vmax
, which previously defined the maximum IF voltage to import, has been removed. QMix now uses the value fromvmax
instead.ifdata_sigma
, which defines the width of the filter for the IF data, is now defined in units [V]. Previously, it was defined by the number of data points. This is also backwards compatible (ififdata_sigma
is >0.5, it will assume that you are defining it by the number steps).
Optimization
- Add basic timing scripts for
qmix.harmonic_balance
. Seespeed/
directory. - Use a better initial guess for the junction voltage in the
qmix.harmonic_balance.harmonic_balance
function.
Testing
- Improve code coverage. Now 99.0% covered!
Command line
- Add command line script to plot IF response from experimental data (
bin/plot-if-response.py
).
Reduce simulation time
Optimization
- Optimize
qmix.qtcurrent
using Numba and JIT. 4 tone simulations are now 1.5 times faster! - Add basic timing scripts for
qmix.qtcurrent
. Seespeed/
directory.
Changes
- Move the code that is used for analyzing the IF response into a new module:
qmix.exp.if_response
.
New Features
- Add ability to force embedding impedance in
qmix.exp.exp_data.RawData
. The embedding voltage will then be calculated using this value.
Testing
- Improve test coverage for
qmix.circuit
,qmix.respfn
, andqmix.exp.exp_data
. - Add tests for new module (
qmix.exp.if_response
). - Add notebook to recreate plots from Kittara's thesis. (For the purpose of validation.)
Minor Changes
- Improved progress messages from
qmix.harmonic_balance.harmonic_balance
. - Add ability to plot response function (
qmix.respfn.RespFn
). - Always use default parameters from
qmix.exp.parameters
(i.e., reduce the number of magic numbers). - Add ability to call
qmix.respfn.RespFn
by adding__call__
method. This will return the interpolated response function (a complex value). - Fix error in
qmix.harmonic_balance.harmonic_balance
(when Thevenin voltage is checked). - Other minor changes to documentation.
Update documentation and metadata
- This release was created after the JOSS review.
- There are minor changes to the documentation, but no changes to the package itself.
Changes to plotting functions and experimental data imports
New Features
- All plotting functions now accept and return Matplotlib axis objects.
- When analyzing experimental data, you can now pass either CSV files or Numpy arrays to
RawData
andRawData0
.
Changes
- In the
qmix.respfn.RespFn
class, thef_idc
,f_ikk
,f_didc
, andf_dikk
attributes were all made private by adding a leading underscore. They are replaced by theidc
,ikk
,didc
anddikk
methods, respectively. - In the experimental data module, the parameter
iv_multiplier
was renamedi_multiplier
.RawData0
andRawData
use this parameter to correct imported current values. (All imported current data is multiplied byi_multiplier
.) I also addedv_multiplier
, which does the same things, except for imported voltage data.
Testing
- Dropped Travis-CI testing with Python 3.5-dev and 3.6-dev. QMix is now tested with 3.5, 3.6 and 3.7-dev.
- Added automatic coverage testing through coveralls.io.
Bug Fixes
- Fixed potential issue with file paths. Previously, file paths were built assuming a mac operating system (e.g.,
"some-dir/this-figure.png"
). The package was updated to now useos.path.join("some-dir", "this-figure.png")
, which is machine independent.
Documentation
- Added package API to web page.
- Added more information about how experimental is stored and imported into QMix.
- Added information on getting support and contributing to QMix.
- Added descriptions of different response function types to docstring in
qmix.respfn.py
. - Added more comments on keyword arguments and attributes for classes in
qmix.circuit.py
andqmix.respfn.py
. (This should help to explain some of the SIS-related jargon.) - Added use cases for many class methods.
- Fixed documentation for
qmix.exp.parameters.py
. - Updated workflow examples.
- Other (minor) changes.
Fix description
Bug Fixes
- Fixed description in setup.py. Previously, there were some non-ASCII characters, which were causing issues on Windows installations.
First release of QMix
This is the first release of the QMix software package. This software can be used to simulate the quasiparticle tunneling currents in SIS junctions.