qkit 0.5.0__tar.gz → 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qkit-0.5.2/CITATION.cff +14 -0
- {qkit-0.5.0 → qkit-0.5.2}/PKG-INFO +7 -13
- {qkit-0.5.0 → qkit-0.5.2}/README.md +3 -12
- {qkit-0.5.0 → qkit-0.5.2}/pyproject.toml +11 -1
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/__init__.py +6 -2
- qkit-0.5.2/src/qkit/_version.py +1 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/breadcrumbs.py +41 -7
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/file_info_database.py +1 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S16_available_modules.py +2 -2
- qkit-0.5.2/src/qkit/drivers/BKPrecision_9242.py +410 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_B2900.py +75 -26
- qkit-0.5.2/src/qkit/drivers/ZHInstSHFQC.py +295 -0
- qkit-0.5.2/src/qkit/drivers/qdevil_qdacII.py +1302 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/plot/plot.py +0 -2
- qkit-0.5.2/src/qkit/gui/plot/url_launcher.py +90 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/DatasetsWindow.py +44 -22
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/install.py +70 -15
- qkit-0.5.2/src/qkit/measure/timedomain/measure_ZI_td.py +62 -0
- qkit-0.5.2/tests/breadcrumb/.gitignore +4 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/test_breadcrumbs.py +21 -0
- qkit-0.5.2/tests/core/.gitignore +3 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/core/test_file_info_database.py +1 -1
- {qkit-0.5.0 → qkit-0.5.2}/tests/test_qkit_basics.py +12 -1
- qkit-0.5.2/tests/url/test_url_handler.py +26 -0
- qkit-0.5.0/src/qkit/_version.py +0 -1
- qkit-0.5.0/src/qkit/drivers/qdevil_qdacII.py +0 -1289
- qkit-0.5.0/tests/breadcrumb/.gitignore +0 -3
- qkit-0.5.0/tests/core/.gitignore +0 -2
- {qkit-0.5.0 → qkit-0.5.2}/.gitattributes +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/.github/workflows/release.yml +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/.github/workflows/test.yml +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/.gitignore +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/.travis.yml +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/AUTHORS +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/LICENSE +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/devices.toml.example +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/.gitignore +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/Makefile +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/make.bat +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/sample_data/1Q-NIST.json +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/sample_data/P8PPH2_anticrossing_sample_data.h5 +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/sample_data/QZQ3H8.sample +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/conf.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/index.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/installation.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/modules.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.analysis.circle_fit.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.analysis.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.config.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.com.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.devices.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.file_service.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.network.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.s_init.bkup.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.s_init.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.notebook.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.plot.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.qviewkit.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.instruments.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.logs.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.spectroscopy.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.timedomain.awg.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.timedomain.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.transport.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.qplexkit.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.qsurveilkit.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.raspi_misc.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.storage.rst +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_Logo.png +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_Logo.svg +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_QRcode.png +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_QRcode.svg +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/CurveXtractor.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/IV_curve.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/IV_curve2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/IV_curve3.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/Manual point picker.ipynb_template +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/avoided_crossing_fit.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_2019/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_2019/circuit.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/calibration.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/circlefit.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/circuit.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/utilities.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/iq_cloud_analysis.ipynb_template +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/iq_cloud_analysis.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/manual_point_picker.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/pointtracker.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/qdata.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/qfit.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/qps_rings.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/resonator.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/sonnet_parser.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/spectroscopy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/timedomain.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/uncertainties_utilities.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/.gitignore +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/README.md +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/config_holder.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/environment.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/local.py_template +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/services.py_template +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/.gitignore +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/README +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/VERSION +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/flow.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/instrument_base.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/instrument_basev2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/instrument_tools.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/info_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/info_service.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/ri_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/ri_service.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/signals.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/file_info_database_lib.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/list_dict_DB.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/misc.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/network/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/network/tcpclient.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/temp.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S10_logging.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S14_setup_directories.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S20_check_for_updates.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S25_info_service.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S30_qkit_start.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S65_load_RI_service.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S70_load_visa.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S80_load_file_service.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S85_init_measurement.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S98_started.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S99_init_user.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/_30_network_server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/_80_create_instruments.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/startup.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ADwinProII_SMU.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/AbstractMicrowaveSource.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/AbstractVNA.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_DSO.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_E8257D.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_PNAX.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_TwissTorr74.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_VNA_E5071C.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/AnaPico_APUASYN20.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_MG37022.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_MS2830A.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_VNA.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_VNA_MS4642B.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Bluefors_GHS.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Caen_FAST_PS.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/DC_DAC_LTC2666.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/DummyVNA.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EA_PS9360.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ERASynth.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EdwardsActiveDigitalController.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EthernetNode.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EthernetServer.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EthernetServerWin.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/FTDI_DAQ.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Faulhaber_3564K024B_C.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/GHzDAC.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/HP_34401A.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/HP_81110A.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/IQ_Mixer.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/IVD_dummy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/IVVI_BiasDAC.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Inficon.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley_2000.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley_2450.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley_2636A.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_35670A.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_E8267D.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_N5173B.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_E5071C.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_E5080B.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_E5080B_spectrum.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_P9375A.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Lmx2595.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/MKS_647C.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/MicroMag3.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ModernDriverTest.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/NI_DAQ.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/NI_DAQ_IV.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/OxfordInstruments_Kelvinox_IGH.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Oxford_ITC503.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Oxford_Triton.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RFPCB.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RFPCBJ.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RFPCB_V2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RS_FSUP.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RS_SGMA.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RS_VNA_ZNAXX.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RT_MW_Switch.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/SR_830.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/SerialPortCommunication.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Spectrum_M2i2030.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Spectrum_M3i2132.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Spectrum_M4i2211.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/StepAttenuator.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/StepMotor.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tabor_WX1284C.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_AWG5014.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_AWG520.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_AWG7062.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_PWS4205.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Teslameter_FM302.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tunnel_DAC.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/VCAs_TD.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/VNA_dummy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Virtual_Coil.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Virtual_Current_Source.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Virtual_VCA.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Readme.txt +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_288_ChannelA.cal +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_288_ChannelB.cal +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_289_ChannelA.cal +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_289_ChannelB.cal +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA.cal +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA_calibration_with_freq_and_pow +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA_calibration_with_freq_and_pow.npy +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA_calibration_with_freq_and_pow_calibration_matrix_dBm.txt +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA_calibration_with_freq_and_pow_frequency_Hz.txt +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA_calibration_with_freq_and_pow_power_intrinsic_units.txt +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB.cal +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB_calibration_with_freq_and_pow +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB_calibration_with_freq_and_pow.npy +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB_calibration_with_freq_and_pow_calibration_matrix_dBm.txt +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB_calibration_with_freq_and_pow_frequency_Hz.txt +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB_calibration_with_freq_and_pow_power_intrinsic_units.txt +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/convert_files_to_python_3.ipynb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/test_open_file_python3.ipynb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreaktech916.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreaktech_SynthHD.cal +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreaktech_SynthHD.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa_GS200.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa_GS210.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa_GS820.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Abstract.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Abstractv2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_PQSC.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_SHFSG.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_SHFSGv2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_UHFQA.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_UHFQAv2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Virtual_VNA.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Virtual_VNAv2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/CPMG.json +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/CPMG.seq +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/rabi.json +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/rabi.seq +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/ramsey.json +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/ramsey.seq +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M3i2132/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M3i2132/errors.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M3i2132/regs.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/errors.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/h2py.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/regs.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/agilent_33210A.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/dll_support_nidaq.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/manual_settings.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/mfc_dummy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/nidaq_syncIV.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ohmmeter_dummy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/qplexkit_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/quartz_dummy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/switch_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/te_opto_dac.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/tip2_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/tip_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/two_port_switch.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_MultiplexingReadout.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_VNA_quantum_machines.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_magnet.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_measure_spec.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_pwsMagnet.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_step_attenuator.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_temperature_UFO.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_tunnel_electronic.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_yokomagnet.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/visa_prologix.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/Progress_Bar.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/Stopwatch.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/quickplot.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/wf_plot.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/plot/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/PlotWindow.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/PlotWindow_lib.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/info_subsys.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/main.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/main_view.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/pg_time_axis.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/plot_view.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/qviewkit.bat +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/jupyter_lab_config.py-tpl +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/linux/qkit-jupyter-lab.desktop +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/linux/qkit-qviewkit-url.desktop +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/linux/qkit-qviewkit.desktop +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/qkit_local_config.py-tpl +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/json_handler.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/measurement_base.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/measurement_class.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/samples_class.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/README.md +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/signal_spectroscopy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/spectroscopy.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/spectroscopy_unified.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/002_TD1_f01_rabi_t1_ramsey.ipynb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/VirtualAWG.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/generate_waveform.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/load_awg.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/load_tawg.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/tomography.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/gate_func.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/initialize.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/measure_td.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/pulse_sequence.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/basic_qubit_experiments.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/basic_qubit_experiments_V2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/pulses.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qm_qkit_wrapper.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qm_qubit_config.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qm_qubit_config_V2.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/quantum_jump_monitoring.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qubit_high_temp.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/script.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/script_pyqt.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/sequence_library.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/transport/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/transport/transport.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/write_additional_files.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qdepokit/Deposition_template.ipynb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qdepokit/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qdepokit/sdi.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/.gitignore +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/ccr.json_template +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/install_systemd_service.sh +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/pcf8575.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/qplexkit.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/test_PCF8575.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/README.md +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/client_main.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/data_class.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/plasma1_gui.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/plasma1_gui.ui +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/server_main.py_template +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/settings.cfg_template +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/srv_thread.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/worker.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/OxfordInstruments_Kelvinox_IGH_serial.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/RT_switch/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/RT_switch/switchbox_server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/RT_switch/two_port_switch_manual_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/dc_dac/DAC_LTC2666_communication.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/dc_dac/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/dc_dac/server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/EdwardsActiveDigitalController.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/EdwardsBridgeReadout.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/edw_client.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/edw_server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/erasynth_server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/nitrogen_controller.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/nitrogen_server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/refill_manual.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/refilling_switch_off.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/refilling_switch_on.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/sendMail.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/step_attenuator_server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/step_motor.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/tip/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/tip/fridge_monitoring.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/switchbox/lib_oled96.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/switchbox/server.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/switchbox/switch.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/README.md +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_DateTimeGenerator.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_constants.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_dataset.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_file.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_lib.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_view.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/store.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/templates/Analysis/Probestation.ipynb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/src/qkit/templates/Measurements/Probestation.ipynb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/__init__.py +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/.1337deadbeef.breadcrumb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/.deadbeef1337.breadcrumb +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/STUVWX_dummy.h5 +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/core/STUVWX_dummy.h5 +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/core/subdir/YZ0123_dummy.h5 +0 -0
- {qkit-0.5.0 → qkit-0.5.2}/tests/storage/test_hdf5.py +0 -0
qkit-0.5.2/CITATION.cff
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
authors:
|
|
3
|
+
- name: "qkitgroup"
|
|
4
|
+
- name: "KIT PHI"
|
|
5
|
+
contact:
|
|
6
|
+
- affiliation: "KIT IQMT"
|
|
7
|
+
email: rotzinger@kit.edu
|
|
8
|
+
family-names: Rotzinger
|
|
9
|
+
given-names: Hannes
|
|
10
|
+
title: "Qkit - a quantum measurement suite in python"
|
|
11
|
+
version: 0.4.11
|
|
12
|
+
date-released: 2024-12-16
|
|
13
|
+
license: "GPU-2.0"
|
|
14
|
+
url: "https://github.com/qkitgroup/qkit"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qkit
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.2
|
|
4
4
|
Summary: qKIT quantum measurement suite in python
|
|
5
5
|
Project-URL: Homepage, https://github.com/qkitgroup/qkit
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/qkitgroup/qkit/issues
|
|
@@ -353,6 +353,7 @@ Classifier: Intended Audience :: Science/Research
|
|
|
353
353
|
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
|
|
354
354
|
Classifier: Programming Language :: Python :: 3.7
|
|
355
355
|
Requires-Python: >=3.7
|
|
356
|
+
Requires-Dist: filelock>=3.17
|
|
356
357
|
Requires-Dist: h5py>=3.8
|
|
357
358
|
Requires-Dist: ipython
|
|
358
359
|
Requires-Dist: numpy>=1.24
|
|
@@ -376,6 +377,8 @@ Provides-Extra: qgrid
|
|
|
376
377
|
Requires-Dist: qgrid>=1.0; extra == 'qgrid'
|
|
377
378
|
Provides-Extra: timedomain
|
|
378
379
|
Requires-Dist: zerorpc>=0.6; extra == 'timedomain'
|
|
380
|
+
Provides-Extra: url
|
|
381
|
+
Requires-Dist: parsita~=2.2.2; extra == 'url'
|
|
379
382
|
Provides-Extra: zurich-instruments
|
|
380
383
|
Requires-Dist: zhinst~=23.2; extra == 'zurich-instruments'
|
|
381
384
|
Description-Content-Type: text/markdown
|
|
@@ -417,7 +420,7 @@ If you can't put such a configuration file into a suitable location, you can set
|
|
|
417
420
|
Installing qkit is a two step process: First you need to obtain the `qkit` package, and then you need to setup your system to use it properly. This guide will provide you with the required steps.
|
|
418
421
|
|
|
419
422
|
### Creating a Virtual Environment
|
|
420
|
-
It is
|
|
423
|
+
It is mandatory to use a virtual environment if you want to use automatic installation. This isolates this local environment from your global packages. This way, version conflicts can be avoided. You need to activate the virtual environment before using qkit. Otherwise, qkit and its dependencies will not be available.
|
|
421
424
|
|
|
422
425
|
**NOTE: WE DO NOT GUARANTEE COMPATIBILITY WITH ANACONDA/MINICONDA/CONDA! USE AT YOUR OWN RISK!**
|
|
423
426
|
|
|
@@ -445,6 +448,8 @@ Create a virtual environment, as described above. Then use pip to install qkit:
|
|
|
445
448
|
pip install qkit[jupyter,analysis]
|
|
446
449
|
```
|
|
447
450
|
|
|
451
|
+
If you are simply using qkit, changes to files in `src/` **should not** be necessary. If you find things you need to change there, this might be a bug. Please report this.
|
|
452
|
+
|
|
448
453
|
#### Install `qkit` for development
|
|
449
454
|
Clone this repository to wherever is convenient.
|
|
450
455
|
```bash
|
|
@@ -514,17 +519,6 @@ notebook_dir = r'C:\notebooks' # Change this line
|
|
|
514
519
|
|
|
515
520
|
Also, you will need to migrate your local config to a parent directory of your notebooks, or point to it using the environment variable `QKIT_LOCAL_CONFIG`. It is possible to set this environment variable in `jupyter_lab_config.py`, as environment variables are inherited to process children.
|
|
516
521
|
|
|
517
|
-
|
|
518
|
-
## Long Term Goal: Pip Installation (NOT YET WORKING)
|
|
519
|
-
If you intend to actively work on the code, look at the section for developing this code.
|
|
520
|
-
To install this package, run:
|
|
521
|
-
```bash
|
|
522
|
-
pip install 'qkit[jupyter,analysis] @ git+https://github.com/qkitgroup/qkit.git@master'
|
|
523
|
-
```
|
|
524
|
-
If you are simply using qkit, changes to files in `src/` **should not** be necessary. If you find things you need to change there, this might be a bug. Please report this.
|
|
525
|
-
|
|
526
|
-
If you intend to use the option to click on .h5 files in order to open them, don't install qkit in a virtual environment.
|
|
527
|
-
|
|
528
522
|
## Requirements
|
|
529
523
|
This project uses python. An up to date installation of python is expected to be present.
|
|
530
524
|
| Library | Usage |
|
|
@@ -35,7 +35,7 @@ If you can't put such a configuration file into a suitable location, you can set
|
|
|
35
35
|
Installing qkit is a two step process: First you need to obtain the `qkit` package, and then you need to setup your system to use it properly. This guide will provide you with the required steps.
|
|
36
36
|
|
|
37
37
|
### Creating a Virtual Environment
|
|
38
|
-
It is
|
|
38
|
+
It is mandatory to use a virtual environment if you want to use automatic installation. This isolates this local environment from your global packages. This way, version conflicts can be avoided. You need to activate the virtual environment before using qkit. Otherwise, qkit and its dependencies will not be available.
|
|
39
39
|
|
|
40
40
|
**NOTE: WE DO NOT GUARANTEE COMPATIBILITY WITH ANACONDA/MINICONDA/CONDA! USE AT YOUR OWN RISK!**
|
|
41
41
|
|
|
@@ -63,6 +63,8 @@ Create a virtual environment, as described above. Then use pip to install qkit:
|
|
|
63
63
|
pip install qkit[jupyter,analysis]
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
If you are simply using qkit, changes to files in `src/` **should not** be necessary. If you find things you need to change there, this might be a bug. Please report this.
|
|
67
|
+
|
|
66
68
|
#### Install `qkit` for development
|
|
67
69
|
Clone this repository to wherever is convenient.
|
|
68
70
|
```bash
|
|
@@ -132,17 +134,6 @@ notebook_dir = r'C:\notebooks' # Change this line
|
|
|
132
134
|
|
|
133
135
|
Also, you will need to migrate your local config to a parent directory of your notebooks, or point to it using the environment variable `QKIT_LOCAL_CONFIG`. It is possible to set this environment variable in `jupyter_lab_config.py`, as environment variables are inherited to process children.
|
|
134
136
|
|
|
135
|
-
|
|
136
|
-
## Long Term Goal: Pip Installation (NOT YET WORKING)
|
|
137
|
-
If you intend to actively work on the code, look at the section for developing this code.
|
|
138
|
-
To install this package, run:
|
|
139
|
-
```bash
|
|
140
|
-
pip install 'qkit[jupyter,analysis] @ git+https://github.com/qkitgroup/qkit.git@master'
|
|
141
|
-
```
|
|
142
|
-
If you are simply using qkit, changes to files in `src/` **should not** be necessary. If you find things you need to change there, this might be a bug. Please report this.
|
|
143
|
-
|
|
144
|
-
If you intend to use the option to click on .h5 files in order to open them, don't install qkit in a virtual environment.
|
|
145
|
-
|
|
146
137
|
## Requirements
|
|
147
138
|
This project uses python. An up to date installation of python is expected to be present.
|
|
148
139
|
| Library | Usage |
|
|
@@ -31,13 +31,15 @@ dependencies = [
|
|
|
31
31
|
"pyzmq>=25",
|
|
32
32
|
"tomli>=2.0.1",
|
|
33
33
|
"ipython",
|
|
34
|
-
"packaging"
|
|
34
|
+
"packaging",
|
|
35
|
+
"filelock>=3.17"
|
|
35
36
|
]
|
|
36
37
|
|
|
37
38
|
[project.scripts]
|
|
38
39
|
qviewkit = "qkit.gui.qviewkit.main:main"
|
|
39
40
|
qkit-install = "qkit.install.install:main"
|
|
40
41
|
qkit-manual-breadcrumbs = "qkit.core.lib.file_service.breadcrumbs:manual_index"
|
|
42
|
+
qviewkit-url = "qkit.gui.plot.url_launcher:url_handler"
|
|
41
43
|
|
|
42
44
|
[project.optional-dependencies] # Here goes stuff like qiclib
|
|
43
45
|
jupyter = [
|
|
@@ -59,6 +61,9 @@ qgrid = [
|
|
|
59
61
|
timedomain = [
|
|
60
62
|
"zerorpc>=0.6"
|
|
61
63
|
]
|
|
64
|
+
url = [
|
|
65
|
+
"parsita~=2.2.2"
|
|
66
|
+
]
|
|
62
67
|
|
|
63
68
|
|
|
64
69
|
[project.urls]
|
|
@@ -84,5 +89,10 @@ packages = ["src/qkit"]
|
|
|
84
89
|
[tool.hatch.build.targets.sdist]
|
|
85
90
|
exclude = ["data/*", "notebooks/*", "logs/*", "venv/*"]
|
|
86
91
|
|
|
92
|
+
[tool.hatch.envs.hatch-test]
|
|
93
|
+
extra-dependencies = [
|
|
94
|
+
"parsita~=2.2.2"
|
|
95
|
+
]
|
|
96
|
+
|
|
87
97
|
[tool.pytest.ini_options]
|
|
88
98
|
testpaths="tests"
|
|
@@ -12,9 +12,13 @@ for IntelliSense, making programming easier.
|
|
|
12
12
|
from typing import TYPE_CHECKING
|
|
13
13
|
if TYPE_CHECKING:
|
|
14
14
|
from qkit.core.lib.file_service.file_info_database import fid as fid_class
|
|
15
|
+
from qkit.core.instrument_tools import Insttools
|
|
15
16
|
from qkit.config.config_holder import ConfClass
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
from qkit.core.s_init.S16_available_modules import ModuleAvailable
|
|
18
|
+
fid: 'fid_class' # Initilaized in S80_load_file_service
|
|
19
|
+
cfg: 'ConfClass' # Initialized by lazy-loading in __getattr__ (see below)
|
|
20
|
+
instruments: 'Insttools'
|
|
21
|
+
module_available: 'ModuleAvailable' # Initialized in S16_available_modules
|
|
18
22
|
|
|
19
23
|
def __getattr__(name):
|
|
20
24
|
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.5.2"
|
|
@@ -21,32 +21,66 @@ from pathlib import Path
|
|
|
21
21
|
import qkit
|
|
22
22
|
import os
|
|
23
23
|
import itertools
|
|
24
|
+
from filelock import FileLock, Timeout
|
|
25
|
+
import logging
|
|
26
|
+
|
|
27
|
+
log = logging.getLogger('breadcrumbs')
|
|
24
28
|
|
|
25
29
|
FILE_END = ".breadcrumb"
|
|
30
|
+
LOCK_EXTENSION = ".lock"
|
|
26
31
|
|
|
27
|
-
def derive_breadcrumb_filename() -> Path:
|
|
32
|
+
def derive_breadcrumb_filename(extension = FILE_END) -> Path:
|
|
28
33
|
"""
|
|
29
34
|
Derive a machine-unique breadcrumb file name in the data-directory.
|
|
30
35
|
"""
|
|
31
36
|
import uuid
|
|
32
37
|
node = uuid.getnode()
|
|
33
|
-
filename = f".{node:x}{
|
|
38
|
+
filename = f".{node:x}{extension}"
|
|
34
39
|
return Path(qkit.cfg['datadir']) / filename
|
|
35
40
|
|
|
41
|
+
def derive_breadcrumb_lock_file() -> Path:
|
|
42
|
+
"""
|
|
43
|
+
Derive a machine-unique breadcrumb lock file name in the data-directory.
|
|
44
|
+
"""
|
|
45
|
+
return derive_breadcrumb_filename(extension=FILE_END + LOCK_EXTENSION)
|
|
46
|
+
|
|
36
47
|
class BreadCrumbCreator():
|
|
37
48
|
"""
|
|
38
49
|
Manages creating the initial bread crumb file and updating it after each measurement.
|
|
50
|
+
|
|
51
|
+
Since only one writer can reliably write, we try to get a lock with a timeout.
|
|
52
|
+
With the lock acquired, we append our entry or clear the file.
|
|
39
53
|
"""
|
|
40
54
|
|
|
41
55
|
def __init__(self) -> None:
|
|
42
56
|
self._breadcrumb_path = derive_breadcrumb_filename()
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
57
|
+
self._lock = FileLock(derive_breadcrumb_lock_file(), timeout=5)
|
|
58
|
+
|
|
59
|
+
def clear_file(self):
|
|
60
|
+
try:
|
|
61
|
+
with self._lock:
|
|
62
|
+
if self._breadcrumb_path.exists():
|
|
63
|
+
os.remove(self._breadcrumb_path)
|
|
64
|
+
except Timeout:
|
|
65
|
+
log.error("Acquiring file lock timed out.")
|
|
66
|
+
raise
|
|
67
|
+
except OSError:
|
|
68
|
+
log.error("Could not acquire lock file for clearing breadcrumbs.")
|
|
69
|
+
raise
|
|
46
70
|
|
|
47
71
|
def append_entry(self, uuid: str, path: Path|str):
|
|
48
72
|
rel_path = Path(path).relative_to(self._breadcrumb_path.parent)
|
|
49
|
-
|
|
73
|
+
try:
|
|
74
|
+
with self._lock:
|
|
75
|
+
with open(self._breadcrumb_path, mode="a", encoding='utf-8') as breadcrumb_file:
|
|
76
|
+
print(f"{uuid[:6]}={rel_path}", file=breadcrumb_file, flush=True) # Fails if uuid is not 6 digits
|
|
77
|
+
except Timeout:
|
|
78
|
+
log.error("Acquiring file lock timed out.")
|
|
79
|
+
raise
|
|
80
|
+
except OSError:
|
|
81
|
+
log.error("Could not acquire lock file for writing breadcrumb.")
|
|
82
|
+
raise
|
|
83
|
+
|
|
50
84
|
|
|
51
85
|
def read_breadcrumb(path: Path) -> dict[str, Path]:
|
|
52
86
|
"""
|
|
@@ -54,7 +88,7 @@ def read_breadcrumb(path: Path) -> dict[str, Path]:
|
|
|
54
88
|
"""
|
|
55
89
|
breadcrumb_parent = path.parent
|
|
56
90
|
uuid_map: dict[str, Path] = {}
|
|
57
|
-
with open(path, mode="r") as f:
|
|
91
|
+
with open(path, mode="r", encoding='utf-8') as f:
|
|
58
92
|
for line in f.readlines():
|
|
59
93
|
if line[6] == '=': # Valid format
|
|
60
94
|
uuid = line[:6]
|
|
@@ -6,7 +6,7 @@ and check for commonly used libraries.
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
import qkit
|
|
9
|
-
from
|
|
9
|
+
from importlib.util import find_spec
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class ModuleAvailable:
|
|
@@ -23,7 +23,7 @@ class ModuleAvailable:
|
|
|
23
23
|
|
|
24
24
|
def module_available(self, module_name):
|
|
25
25
|
if module_name not in self.available_modules:
|
|
26
|
-
self.available_modules[module_name] = bool(
|
|
26
|
+
self.available_modules[module_name] = bool(find_spec(module_name))
|
|
27
27
|
return self.available_modules[module_name]
|
|
28
28
|
|
|
29
29
|
def __call__(self, module_name):
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
# BKPrecision_9242.py driver for BK Precision 9242 DC voltag/current source
|
|
2
|
+
# adapted from Yokogawa GS200 driver, Sergei Masis @KIT 06/2025
|
|
3
|
+
#
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
# (at your option) any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program; if not, write to the Free Software
|
|
16
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17
|
+
|
|
18
|
+
from qkit.core.instrument_base import Instrument
|
|
19
|
+
from qkit import visa
|
|
20
|
+
import logging
|
|
21
|
+
import numpy
|
|
22
|
+
import struct
|
|
23
|
+
import time
|
|
24
|
+
from distutils.version import LooseVersion
|
|
25
|
+
|
|
26
|
+
class BKPrecision_9242(Instrument):
|
|
27
|
+
'''
|
|
28
|
+
This is the driver for the BK Precision 9242 DC voltage/current source
|
|
29
|
+
|
|
30
|
+
Usage:
|
|
31
|
+
Initialize with
|
|
32
|
+
<name> = instruments.create('<name>', 'BKPrecision_9242', address='<GBIP address>',
|
|
33
|
+
reset=<bool>)
|
|
34
|
+
'''
|
|
35
|
+
|
|
36
|
+
def __init__(self, name, address, reset=False):
|
|
37
|
+
'''
|
|
38
|
+
Initializes the BK Precision 9242, and communicates with the wrapper.
|
|
39
|
+
|
|
40
|
+
Input:
|
|
41
|
+
name (string) : name of the instrument
|
|
42
|
+
address (string) : GPIB address
|
|
43
|
+
reset (bool) : resets to default values
|
|
44
|
+
|
|
45
|
+
Output:
|
|
46
|
+
None
|
|
47
|
+
'''
|
|
48
|
+
# Initialize wrapper functions
|
|
49
|
+
logging.info(__name__ + ' : Initializing instrument BK Precision 9242')
|
|
50
|
+
Instrument.__init__(self, name, tags=['physical'])
|
|
51
|
+
|
|
52
|
+
# Add some global constants
|
|
53
|
+
self._address = address
|
|
54
|
+
self._visainstrument = visa.instrument(self._address)
|
|
55
|
+
|
|
56
|
+
# Set termination characters (nessecarry for Ethernet communication)
|
|
57
|
+
if LooseVersion(visa.__version__) < LooseVersion("1.5.0"): # pyvisa 1.4
|
|
58
|
+
self._visainstrument.term_chars = ''
|
|
59
|
+
else: # pyvisa 1.8
|
|
60
|
+
self._visainstrument.read_termination = ''
|
|
61
|
+
self._visainstrument.write_termination = ''
|
|
62
|
+
|
|
63
|
+
# Add parameters to wrapper
|
|
64
|
+
|
|
65
|
+
# self.add_parameter('source_function',
|
|
66
|
+
# flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET,
|
|
67
|
+
# type=str, units='')
|
|
68
|
+
|
|
69
|
+
#
|
|
70
|
+
# self.add_parameter('operation_mode',
|
|
71
|
+
# flags=Instrument.FLAG_SET,
|
|
72
|
+
# type=str, units='')
|
|
73
|
+
|
|
74
|
+
# self.add_parameter('source_mode',
|
|
75
|
+
# flags=Instrument.FLAG_GETSET,
|
|
76
|
+
# type=str, units='')
|
|
77
|
+
|
|
78
|
+
self.add_parameter('current_protection',
|
|
79
|
+
flags=Instrument.FLAG_GETSET ,
|
|
80
|
+
units='', type=str)
|
|
81
|
+
|
|
82
|
+
self.add_parameter('output',
|
|
83
|
+
flags=Instrument.FLAG_GETSET ,
|
|
84
|
+
units='', type=str)
|
|
85
|
+
|
|
86
|
+
self.add_parameter('current',
|
|
87
|
+
flags=Instrument.FLAG_GETSET,
|
|
88
|
+
type=float, units='')
|
|
89
|
+
|
|
90
|
+
# self.add_parameter('voltage_protection',
|
|
91
|
+
# flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET,
|
|
92
|
+
# type=float, units='V')
|
|
93
|
+
#
|
|
94
|
+
# self.add_parameter('current_protection',
|
|
95
|
+
# flags=Instrument.FLAG_GETSET | Instrument.FLAG_GET_AFTER_SET,
|
|
96
|
+
# type=float, units='A')
|
|
97
|
+
#
|
|
98
|
+
# self.add_parameter('4W',
|
|
99
|
+
# flags=Instrument.FLAG_GETSET ,
|
|
100
|
+
# units='', type=str)
|
|
101
|
+
#
|
|
102
|
+
# self.add_parameter('ramp_wait_time',
|
|
103
|
+
# flags=Instrument.FLAG_GET,
|
|
104
|
+
# type=float, units = 's')
|
|
105
|
+
|
|
106
|
+
# Add functions to wrapper
|
|
107
|
+
|
|
108
|
+
self.add_function('reset')
|
|
109
|
+
self.add_function('get_all')
|
|
110
|
+
#self.add_function('set_range_auto')
|
|
111
|
+
self.add_function('set_defaults')
|
|
112
|
+
self.add_function('ramp_current')
|
|
113
|
+
#self.add_function('ramp_ch2_current')
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
if reset:
|
|
117
|
+
self.reset()
|
|
118
|
+
else:
|
|
119
|
+
self.get_all()
|
|
120
|
+
#self.set_defaults()
|
|
121
|
+
|
|
122
|
+
# functions
|
|
123
|
+
def __del__(self):
|
|
124
|
+
self.close_connection()
|
|
125
|
+
print("Session closed.")
|
|
126
|
+
|
|
127
|
+
def close_connection(self):
|
|
128
|
+
"""
|
|
129
|
+
Closes the VISA-instrument to disconnect the instrument.
|
|
130
|
+
|
|
131
|
+
Parameters
|
|
132
|
+
----------
|
|
133
|
+
None
|
|
134
|
+
|
|
135
|
+
Returns
|
|
136
|
+
-------
|
|
137
|
+
None
|
|
138
|
+
"""
|
|
139
|
+
try:
|
|
140
|
+
logging.info(
|
|
141
|
+
__name__
|
|
142
|
+
+ " : Closing connection to QDAC-II server {:s}".format(self._address)
|
|
143
|
+
)
|
|
144
|
+
self._visainstrument.close()
|
|
145
|
+
except Exception as e:
|
|
146
|
+
logging.error("{!s}: Cannot close VISA-instrument".format(__name__))
|
|
147
|
+
raise type(e)(
|
|
148
|
+
"{!s}: Cannot close VISA-instrument\n{!s}".format(__name__, e)
|
|
149
|
+
)
|
|
150
|
+
return
|
|
151
|
+
|
|
152
|
+
def reset(self):
|
|
153
|
+
'''
|
|
154
|
+
Resets instrument to default values
|
|
155
|
+
|
|
156
|
+
Input:
|
|
157
|
+
None
|
|
158
|
+
|
|
159
|
+
Output:
|
|
160
|
+
None
|
|
161
|
+
'''
|
|
162
|
+
logging.debug(__name__ + ' : Resetting instrument')
|
|
163
|
+
self._write('*RST')
|
|
164
|
+
self.get_all()
|
|
165
|
+
|
|
166
|
+
def get_all(self):
|
|
167
|
+
'''
|
|
168
|
+
Reads all relevant parameters from instrument
|
|
169
|
+
|
|
170
|
+
Input:
|
|
171
|
+
None
|
|
172
|
+
|
|
173
|
+
Output:
|
|
174
|
+
None
|
|
175
|
+
'''
|
|
176
|
+
logging.debug(__name__ + ' : Get all relevant data from device')
|
|
177
|
+
|
|
178
|
+
#self._ask(':outp?')
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
#self.get_sync()
|
|
182
|
+
#self.get('source_function')
|
|
183
|
+
|
|
184
|
+
#self.get_sync()
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
# self.get('sense_range')
|
|
189
|
+
# self.get('sense_mode')
|
|
190
|
+
# self.get('source_trig')
|
|
191
|
+
# self.get('sense_trig')
|
|
192
|
+
# self.get('source_delay')
|
|
193
|
+
# self.get('sense_delay')
|
|
194
|
+
# self.get('4W')
|
|
195
|
+
#self.get('level')
|
|
196
|
+
# self.get('output')
|
|
197
|
+
|
|
198
|
+
def do_get_output(self):
|
|
199
|
+
'''
|
|
200
|
+
Gets output state
|
|
201
|
+
'''
|
|
202
|
+
logging.debug('Get status of output')
|
|
203
|
+
ans = self._ask(':outp?')
|
|
204
|
+
|
|
205
|
+
if int(ans):
|
|
206
|
+
print('Attention: Output is set on; Be careful!') #warning if output is on! No fast current changes if coil is attached
|
|
207
|
+
return 'on'
|
|
208
|
+
else:
|
|
209
|
+
return 'off'
|
|
210
|
+
|
|
211
|
+
def do_set_output(self, val):
|
|
212
|
+
'''
|
|
213
|
+
Sets outputs of channels in "on" or "off" position.
|
|
214
|
+
|
|
215
|
+
'''
|
|
216
|
+
if val in ['on','off']:
|
|
217
|
+
logging.debug('Set output to %s' % val)
|
|
218
|
+
self._write(':outp:stat %s' % val)
|
|
219
|
+
else:
|
|
220
|
+
logging.error('Invalid value %s' % val)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def set_defaults(self):
|
|
224
|
+
|
|
225
|
+
'''
|
|
226
|
+
Set to driver defaults:
|
|
227
|
+
|
|
228
|
+
TODO
|
|
229
|
+
|
|
230
|
+
'''
|
|
231
|
+
|
|
232
|
+
# self._write(':syst:beep 0')
|
|
233
|
+
# self.set_source_mode('curr')
|
|
234
|
+
# self.set('current_protection', '10e-3')
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
# self.set('4W', 'off')
|
|
238
|
+
|
|
239
|
+
# self.set('sense_mode', 'volt')
|
|
240
|
+
# self.set('sense_range', '200mV')
|
|
241
|
+
# self.set('source_delay', 15e-6)
|
|
242
|
+
# self.set('sense_delay', 0.3)
|
|
243
|
+
# self.set('source_trig', 'ext')
|
|
244
|
+
# self.set('sense_trig', 'sour')
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
#
|
|
248
|
+
# # parameters
|
|
249
|
+
|
|
250
|
+
def do_set_current_protection(self, val):
|
|
251
|
+
'''
|
|
252
|
+
sets current protection
|
|
253
|
+
|
|
254
|
+
Input:
|
|
255
|
+
val (string) :
|
|
256
|
+
|
|
257
|
+
Output:
|
|
258
|
+
|
|
259
|
+
'''
|
|
260
|
+
logging.debug('Set current protection to %s' % val)
|
|
261
|
+
self._set_func_par_value('curr', 'prot', val)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def do_get_current_protection(self):
|
|
266
|
+
'''
|
|
267
|
+
Get current protection
|
|
268
|
+
'''
|
|
269
|
+
logging.debug('Get current protection')
|
|
270
|
+
return self._get_func_par('curr', 'prot')
|
|
271
|
+
|
|
272
|
+
def do_set_voltage_protection(self, val):
|
|
273
|
+
'''
|
|
274
|
+
sets voltage protection
|
|
275
|
+
|
|
276
|
+
Input:
|
|
277
|
+
val (string) :
|
|
278
|
+
|
|
279
|
+
Output:
|
|
280
|
+
|
|
281
|
+
'''
|
|
282
|
+
logging.debug('Set voltage protection to %s' % val)
|
|
283
|
+
self._set_func_par_value('volt', 'prot', val)
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
def do_get_voltage_protection(self):
|
|
288
|
+
'''
|
|
289
|
+
Get voltage protection
|
|
290
|
+
'''
|
|
291
|
+
logging.debug('Get voltage protection')
|
|
292
|
+
return self._get_func_par('volt', 'prot')
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def do_set_current(self, val):
|
|
296
|
+
'''
|
|
297
|
+
Set current
|
|
298
|
+
'''
|
|
299
|
+
logging.debug('Set current')
|
|
300
|
+
self._write(':curr %s' % val)
|
|
301
|
+
|
|
302
|
+
def do_get_current(self):
|
|
303
|
+
'''
|
|
304
|
+
Get current
|
|
305
|
+
'''
|
|
306
|
+
logging.debug('Get current')
|
|
307
|
+
return self._ask(':curr?')
|
|
308
|
+
|
|
309
|
+
def do_set_voltage(self, val):
|
|
310
|
+
'''
|
|
311
|
+
Set voltage
|
|
312
|
+
'''
|
|
313
|
+
logging.debug('Set voltage')
|
|
314
|
+
self._write(':volt %s' % val)
|
|
315
|
+
|
|
316
|
+
def do_get_voltage(self):
|
|
317
|
+
'''
|
|
318
|
+
Get current
|
|
319
|
+
'''
|
|
320
|
+
logging.debug('Get voltage')
|
|
321
|
+
return self._ask(':volt?')
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
def ramp_current(self,target, step, wait=0.1, showvalue=False):
|
|
325
|
+
|
|
326
|
+
'''
|
|
327
|
+
Ramps the current starting from the actual value to a target value
|
|
328
|
+
Attention: all values are given in A
|
|
329
|
+
'step' determines the step size
|
|
330
|
+
'wait' determines the sleep time after every step
|
|
331
|
+
'showvalue' print current value - default is False
|
|
332
|
+
'''
|
|
333
|
+
|
|
334
|
+
start = self.get_current()
|
|
335
|
+
if showvalue==True: print("{:g}mA".format(round(start*1e3, 3)))
|
|
336
|
+
|
|
337
|
+
if(target < start): step = -step
|
|
338
|
+
a = numpy.concatenate( (numpy.arange(start, target, step)[1:], [target]) )
|
|
339
|
+
for i in a:
|
|
340
|
+
if showvalue==True: print("{:g}mA".format(round(i*1e3, 3)), end=" ")
|
|
341
|
+
self.set_current(i)
|
|
342
|
+
time.sleep(wait)
|
|
343
|
+
|
|
344
|
+
# core communication
|
|
345
|
+
|
|
346
|
+
def _write(self, msg):
|
|
347
|
+
|
|
348
|
+
'''
|
|
349
|
+
Sends a visa command <msg>
|
|
350
|
+
|
|
351
|
+
Input:
|
|
352
|
+
msg (str)
|
|
353
|
+
Output:
|
|
354
|
+
None
|
|
355
|
+
'''
|
|
356
|
+
return self._visainstrument.write(msg)
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def _ask(self, msg):
|
|
360
|
+
'''
|
|
361
|
+
Sends a visa command <msg> and returns the read answer <ans>
|
|
362
|
+
|
|
363
|
+
Input:
|
|
364
|
+
msg (str)
|
|
365
|
+
Output:
|
|
366
|
+
ans (str)
|
|
367
|
+
'''
|
|
368
|
+
return self._visainstrument.query(msg).rstrip()
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
def _set_func_par_value(self, func, par, val):
|
|
373
|
+
'''
|
|
374
|
+
For internal use only!!
|
|
375
|
+
Changes the value of the parameter for the function specified
|
|
376
|
+
|
|
377
|
+
Input:
|
|
378
|
+
ch (int)
|
|
379
|
+
func (string) :
|
|
380
|
+
par (string) :
|
|
381
|
+
val (depends) :
|
|
382
|
+
|
|
383
|
+
Output:
|
|
384
|
+
None
|
|
385
|
+
'''
|
|
386
|
+
string = ':%s:%s %s' %(func, par, val)
|
|
387
|
+
logging.debug(__name__ + ' : Set instrument to %s' % string)
|
|
388
|
+
self._visainstrument.write(string)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
def _get_func_par(self, func, par):
|
|
393
|
+
'''
|
|
394
|
+
For internal use only!!
|
|
395
|
+
Reads the value of the parameter for the function specified
|
|
396
|
+
from the instrument
|
|
397
|
+
|
|
398
|
+
Input:
|
|
399
|
+
ch (int) :
|
|
400
|
+
func (string) :
|
|
401
|
+
par (string) :
|
|
402
|
+
|
|
403
|
+
Output:
|
|
404
|
+
val (string) :
|
|
405
|
+
'''
|
|
406
|
+
string = ':%s:%s?' %(func, par)
|
|
407
|
+
ans = self._visainstrument.query(string)
|
|
408
|
+
logging.debug(__name__ + ' : ask instrument for %s (result %s)' % \
|
|
409
|
+
(string, ans))
|
|
410
|
+
return ans.lower()
|