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.
Files changed (425) hide show
  1. qkit-0.5.2/CITATION.cff +14 -0
  2. {qkit-0.5.0 → qkit-0.5.2}/PKG-INFO +7 -13
  3. {qkit-0.5.0 → qkit-0.5.2}/README.md +3 -12
  4. {qkit-0.5.0 → qkit-0.5.2}/pyproject.toml +11 -1
  5. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/__init__.py +6 -2
  6. qkit-0.5.2/src/qkit/_version.py +1 -0
  7. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/breadcrumbs.py +41 -7
  8. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/file_info_database.py +1 -0
  9. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S16_available_modules.py +2 -2
  10. qkit-0.5.2/src/qkit/drivers/BKPrecision_9242.py +410 -0
  11. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_B2900.py +75 -26
  12. qkit-0.5.2/src/qkit/drivers/ZHInstSHFQC.py +295 -0
  13. qkit-0.5.2/src/qkit/drivers/qdevil_qdacII.py +1302 -0
  14. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/plot/plot.py +0 -2
  15. qkit-0.5.2/src/qkit/gui/plot/url_launcher.py +90 -0
  16. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/DatasetsWindow.py +44 -22
  17. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/install.py +70 -15
  18. qkit-0.5.2/src/qkit/measure/timedomain/measure_ZI_td.py +62 -0
  19. qkit-0.5.2/tests/breadcrumb/.gitignore +4 -0
  20. {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/test_breadcrumbs.py +21 -0
  21. qkit-0.5.2/tests/core/.gitignore +3 -0
  22. {qkit-0.5.0 → qkit-0.5.2}/tests/core/test_file_info_database.py +1 -1
  23. {qkit-0.5.0 → qkit-0.5.2}/tests/test_qkit_basics.py +12 -1
  24. qkit-0.5.2/tests/url/test_url_handler.py +26 -0
  25. qkit-0.5.0/src/qkit/_version.py +0 -1
  26. qkit-0.5.0/src/qkit/drivers/qdevil_qdacII.py +0 -1289
  27. qkit-0.5.0/tests/breadcrumb/.gitignore +0 -3
  28. qkit-0.5.0/tests/core/.gitignore +0 -2
  29. {qkit-0.5.0 → qkit-0.5.2}/.gitattributes +0 -0
  30. {qkit-0.5.0 → qkit-0.5.2}/.github/workflows/release.yml +0 -0
  31. {qkit-0.5.0 → qkit-0.5.2}/.github/workflows/test.yml +0 -0
  32. {qkit-0.5.0 → qkit-0.5.2}/.gitignore +0 -0
  33. {qkit-0.5.0 → qkit-0.5.2}/.travis.yml +0 -0
  34. {qkit-0.5.0 → qkit-0.5.2}/AUTHORS +0 -0
  35. {qkit-0.5.0 → qkit-0.5.2}/LICENSE +0 -0
  36. {qkit-0.5.0 → qkit-0.5.2}/devices.toml.example +0 -0
  37. {qkit-0.5.0 → qkit-0.5.2}/doc/.gitignore +0 -0
  38. {qkit-0.5.0 → qkit-0.5.2}/doc/Makefile +0 -0
  39. {qkit-0.5.0 → qkit-0.5.2}/doc/make.bat +0 -0
  40. {qkit-0.5.0 → qkit-0.5.2}/doc/sample_data/1Q-NIST.json +0 -0
  41. {qkit-0.5.0 → qkit-0.5.2}/doc/sample_data/P8PPH2_anticrossing_sample_data.h5 +0 -0
  42. {qkit-0.5.0 → qkit-0.5.2}/doc/sample_data/QZQ3H8.sample +0 -0
  43. {qkit-0.5.0 → qkit-0.5.2}/doc/source/conf.py +0 -0
  44. {qkit-0.5.0 → qkit-0.5.2}/doc/source/index.rst +0 -0
  45. {qkit-0.5.0 → qkit-0.5.2}/doc/source/installation.rst +0 -0
  46. {qkit-0.5.0 → qkit-0.5.2}/doc/source/modules.rst +0 -0
  47. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.analysis.circle_fit.rst +0 -0
  48. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.analysis.rst +0 -0
  49. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.config.rst +0 -0
  50. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.com.rst +0 -0
  51. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.devices.rst +0 -0
  52. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.file_service.rst +0 -0
  53. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.network.rst +0 -0
  54. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.lib.rst +0 -0
  55. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.rst +0 -0
  56. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.s_init.bkup.rst +0 -0
  57. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.core.s_init.rst +0 -0
  58. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.notebook.rst +0 -0
  59. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.plot.rst +0 -0
  60. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.qviewkit.rst +0 -0
  61. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.gui.rst +0 -0
  62. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.instruments.rst +0 -0
  63. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.logs.rst +0 -0
  64. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.rst +0 -0
  65. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.spectroscopy.rst +0 -0
  66. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.timedomain.awg.rst +0 -0
  67. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.timedomain.rst +0 -0
  68. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.measure.transport.rst +0 -0
  69. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.rst +0 -0
  70. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.qplexkit.rst +0 -0
  71. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.qsurveilkit.rst +0 -0
  72. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.raspi_misc.rst +0 -0
  73. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.services.rst +0 -0
  74. {qkit-0.5.0 → qkit-0.5.2}/doc/source/qkit.storage.rst +0 -0
  75. {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_Logo.png +0 -0
  76. {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_Logo.svg +0 -0
  77. {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_QRcode.png +0 -0
  78. {qkit-0.5.0 → qkit-0.5.2}/images/Qkit_QRcode.svg +0 -0
  79. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/CurveXtractor.py +0 -0
  80. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/IV_curve.py +0 -0
  81. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/IV_curve2.py +0 -0
  82. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/IV_curve3.py +0 -0
  83. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/Manual point picker.ipynb_template +0 -0
  84. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/__init__.py +0 -0
  85. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/avoided_crossing_fit.py +0 -0
  86. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/__init__.py +0 -0
  87. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_2019/__init__.py +0 -0
  88. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_2019/circuit.py +0 -0
  89. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/__init__.py +0 -0
  90. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/calibration.py +0 -0
  91. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/circlefit.py +0 -0
  92. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/circuit.py +0 -0
  93. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/circle_fit/circle_fit_classic/utilities.py +0 -0
  94. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/iq_cloud_analysis.ipynb_template +0 -0
  95. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/iq_cloud_analysis.py +0 -0
  96. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/manual_point_picker.py +0 -0
  97. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/pointtracker.py +0 -0
  98. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/qdata.py +0 -0
  99. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/qfit.py +0 -0
  100. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/qps_rings.py +0 -0
  101. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/resonator.py +0 -0
  102. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/sonnet_parser.py +0 -0
  103. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/spectroscopy.py +0 -0
  104. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/timedomain.py +0 -0
  105. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/analysis/uncertainties_utilities.py +0 -0
  106. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/.gitignore +0 -0
  107. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/README.md +0 -0
  108. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/__init__.py +0 -0
  109. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/config_holder.py +0 -0
  110. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/environment.py +0 -0
  111. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/local.py_template +0 -0
  112. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/config/services.py_template +0 -0
  113. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/.gitignore +0 -0
  114. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/README +0 -0
  115. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/VERSION +0 -0
  116. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/__init__.py +0 -0
  117. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/flow.py +0 -0
  118. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/instrument_base.py +0 -0
  119. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/instrument_basev2.py +0 -0
  120. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/instrument_tools.py +0 -0
  121. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/__init__.py +0 -0
  122. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/__init__.py +0 -0
  123. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/info_client.py +0 -0
  124. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/info_service.py +0 -0
  125. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/ri_client.py +0 -0
  126. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/ri_service.py +0 -0
  127. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/com/signals.py +0 -0
  128. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/__init__.py +0 -0
  129. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/file_service/file_info_database_lib.py +0 -0
  130. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/list_dict_DB.py +0 -0
  131. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/misc.py +0 -0
  132. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/network/__init__.py +0 -0
  133. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/network/tcpclient.py +0 -0
  134. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/lib/temp.py +0 -0
  135. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S10_logging.py +0 -0
  136. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S14_setup_directories.py +0 -0
  137. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S20_check_for_updates.py +0 -0
  138. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S25_info_service.py +0 -0
  139. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S30_qkit_start.py +0 -0
  140. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S65_load_RI_service.py +0 -0
  141. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S70_load_visa.py +0 -0
  142. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S80_load_file_service.py +0 -0
  143. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S85_init_measurement.py +0 -0
  144. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S98_started.py +0 -0
  145. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/S99_init_user.py +0 -0
  146. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/_30_network_server.py +0 -0
  147. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/_80_create_instruments.py +0 -0
  148. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/s_init/__init__.py +0 -0
  149. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/core/startup.py +0 -0
  150. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ADwinProII_SMU.py +0 -0
  151. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/AbstractMicrowaveSource.py +0 -0
  152. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/AbstractVNA.py +0 -0
  153. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_DSO.py +0 -0
  154. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_E8257D.py +0 -0
  155. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_PNAX.py +0 -0
  156. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_TwissTorr74.py +0 -0
  157. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Agilent_VNA_E5071C.py +0 -0
  158. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/AnaPico_APUASYN20.py +0 -0
  159. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_MG37022.py +0 -0
  160. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_MS2830A.py +0 -0
  161. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_VNA.py +0 -0
  162. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Anritsu_VNA_MS4642B.py +0 -0
  163. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Bluefors_GHS.py +0 -0
  164. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Caen_FAST_PS.py +0 -0
  165. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/DC_DAC_LTC2666.py +0 -0
  166. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/DummyVNA.py +0 -0
  167. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EA_PS9360.py +0 -0
  168. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ERASynth.py +0 -0
  169. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EdwardsActiveDigitalController.py +0 -0
  170. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EthernetNode.py +0 -0
  171. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EthernetServer.py +0 -0
  172. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/EthernetServerWin.py +0 -0
  173. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/FTDI_DAQ.py +0 -0
  174. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Faulhaber_3564K024B_C.py +0 -0
  175. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/GHzDAC.py +0 -0
  176. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/HP_34401A.py +0 -0
  177. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/HP_81110A.py +0 -0
  178. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/IQ_Mixer.py +0 -0
  179. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/IVD_dummy.py +0 -0
  180. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/IVVI_BiasDAC.py +0 -0
  181. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Inficon.py +0 -0
  182. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley.py +0 -0
  183. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley_2000.py +0 -0
  184. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley_2450.py +0 -0
  185. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keithley_2636A.py +0 -0
  186. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_35670A.py +0 -0
  187. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_E8267D.py +0 -0
  188. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_N5173B.py +0 -0
  189. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_E5071C.py +0 -0
  190. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_E5080B.py +0 -0
  191. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_E5080B_spectrum.py +0 -0
  192. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Keysight_VNA_P9375A.py +0 -0
  193. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Lmx2595.py +0 -0
  194. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/MKS_647C.py +0 -0
  195. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/MicroMag3.py +0 -0
  196. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ModernDriverTest.py +0 -0
  197. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/NI_DAQ.py +0 -0
  198. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/NI_DAQ_IV.py +0 -0
  199. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/OxfordInstruments_Kelvinox_IGH.py +0 -0
  200. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Oxford_ITC503.py +0 -0
  201. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Oxford_Triton.py +0 -0
  202. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RFPCB.py +0 -0
  203. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RFPCBJ.py +0 -0
  204. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RFPCB_V2.py +0 -0
  205. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RS_FSUP.py +0 -0
  206. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RS_SGMA.py +0 -0
  207. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RS_VNA_ZNAXX.py +0 -0
  208. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/RT_MW_Switch.py +0 -0
  209. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/SR_830.py +0 -0
  210. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/SerialPortCommunication.py +0 -0
  211. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Spectrum_M2i2030.py +0 -0
  212. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Spectrum_M3i2132.py +0 -0
  213. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Spectrum_M4i2211.py +0 -0
  214. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/StepAttenuator.py +0 -0
  215. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/StepMotor.py +0 -0
  216. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tabor_WX1284C.py +0 -0
  217. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_AWG5014.py +0 -0
  218. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_AWG520.py +0 -0
  219. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_AWG7062.py +0 -0
  220. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tektronix_PWS4205.py +0 -0
  221. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Teslameter_FM302.py +0 -0
  222. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Tunnel_DAC.py +0 -0
  223. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/VCAs_TD.py +0 -0
  224. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/VNA_dummy.py +0 -0
  225. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Virtual_Coil.py +0 -0
  226. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Virtual_Current_Source.py +0 -0
  227. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Virtual_VCA.py +0 -0
  228. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Readme.txt +0 -0
  229. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_288_ChannelA.cal +0 -0
  230. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_288_ChannelB.cal +0 -0
  231. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_289_ChannelA.cal +0 -0
  232. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_289_ChannelB.cal +0 -0
  233. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA.cal +0 -0
  234. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelA_calibration_with_freq_and_pow +0 -0
  235. {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
  236. {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
  237. {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
  238. {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
  239. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB.cal +0 -0
  240. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/Windfreak_290_ChannelB_calibration_with_freq_and_pow +0 -0
  241. {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
  242. {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
  243. {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
  244. {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
  245. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/convert_files_to_python_3.ipynb +0 -0
  246. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreak_calibration_files/test_open_file_python3.ipynb +0 -0
  247. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreaktech916.py +0 -0
  248. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreaktech_SynthHD.cal +0 -0
  249. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Windfreaktech_SynthHD.py +0 -0
  250. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa.py +0 -0
  251. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa_GS200.py +0 -0
  252. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa_GS210.py +0 -0
  253. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/Yokogawa_GS820.py +0 -0
  254. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Abstract.py +0 -0
  255. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Abstractv2.py +0 -0
  256. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_PQSC.py +0 -0
  257. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_SHFSG.py +0 -0
  258. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_SHFSGv2.py +0 -0
  259. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_UHFQA.py +0 -0
  260. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_UHFQAv2.py +0 -0
  261. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Virtual_VNA.py +0 -0
  262. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Virtual_VNAv2.py +0 -0
  263. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/CPMG.json +0 -0
  264. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/CPMG.seq +0 -0
  265. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/rabi.json +0 -0
  266. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/rabi.seq +0 -0
  267. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/ramsey.json +0 -0
  268. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ZHInst_Waveforms/ramsey.seq +0 -0
  269. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M3i2132/__init__.py +0 -0
  270. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M3i2132/errors.py +0 -0
  271. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M3i2132/regs.py +0 -0
  272. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/__init__.py +0 -0
  273. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/errors.py +0 -0
  274. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/h2py.py +0 -0
  275. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/_Spectrum_M4i2211/regs.py +0 -0
  276. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/__init__.py +0 -0
  277. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/agilent_33210A.py +0 -0
  278. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/dll_support_nidaq.py +0 -0
  279. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/manual_settings.py +0 -0
  280. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/mfc_dummy.py +0 -0
  281. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/nidaq_syncIV.py +0 -0
  282. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/ohmmeter_dummy.py +0 -0
  283. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/qplexkit_client.py +0 -0
  284. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/quartz_dummy.py +0 -0
  285. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/switch_client.py +0 -0
  286. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/te_opto_dac.py +0 -0
  287. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/tip2_client.py +0 -0
  288. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/tip_client.py +0 -0
  289. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/two_port_switch.py +0 -0
  290. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_MultiplexingReadout.py +0 -0
  291. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_VNA_quantum_machines.py +0 -0
  292. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_magnet.py +0 -0
  293. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_measure_spec.py +0 -0
  294. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_pwsMagnet.py +0 -0
  295. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_step_attenuator.py +0 -0
  296. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_temperature_UFO.py +0 -0
  297. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_tunnel_electronic.py +0 -0
  298. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/virtual_yokomagnet.py +0 -0
  299. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/drivers/visa_prologix.py +0 -0
  300. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/__init__.py +0 -0
  301. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/Progress_Bar.py +0 -0
  302. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/Stopwatch.py +0 -0
  303. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/__init__.py +0 -0
  304. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/quickplot.py +0 -0
  305. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/notebook/wf_plot.py +0 -0
  306. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/plot/__init__.py +0 -0
  307. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/PlotWindow.py +0 -0
  308. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/PlotWindow_lib.py +0 -0
  309. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/__init__.py +0 -0
  310. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/info_subsys.py +0 -0
  311. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/main.py +0 -0
  312. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/main_view.py +0 -0
  313. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/pg_time_axis.py +0 -0
  314. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/plot_view.py +0 -0
  315. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/gui/qviewkit/qviewkit.bat +0 -0
  316. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/jupyter_lab_config.py-tpl +0 -0
  317. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/linux/qkit-jupyter-lab.desktop +0 -0
  318. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/linux/qkit-qviewkit-url.desktop +0 -0
  319. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/linux/qkit-qviewkit.desktop +0 -0
  320. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/install/qkit_local_config.py-tpl +0 -0
  321. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/__init__.py +0 -0
  322. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/json_handler.py +0 -0
  323. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/measurement_base.py +0 -0
  324. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/measurement_class.py +0 -0
  325. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/samples_class.py +0 -0
  326. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/README.md +0 -0
  327. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/__init__.py +0 -0
  328. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/signal_spectroscopy.py +0 -0
  329. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/spectroscopy.py +0 -0
  330. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/spectroscopy/spectroscopy_unified.py +0 -0
  331. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/002_TD1_f01_rabi_t1_ramsey.ipynb +0 -0
  332. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/VirtualAWG.py +0 -0
  333. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/__init__.py +0 -0
  334. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/__init__.py +0 -0
  335. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/generate_waveform.py +0 -0
  336. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/load_awg.py +0 -0
  337. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/load_tawg.py +0 -0
  338. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/awg/tomography.py +0 -0
  339. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/gate_func.py +0 -0
  340. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/initialize.py +0 -0
  341. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/measure_td.py +0 -0
  342. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/pulse_sequence.py +0 -0
  343. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/__init__.py +0 -0
  344. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/basic_qubit_experiments.py +0 -0
  345. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/basic_qubit_experiments_V2.py +0 -0
  346. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/pulses.py +0 -0
  347. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qm_qkit_wrapper.py +0 -0
  348. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qm_qubit_config.py +0 -0
  349. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qm_qubit_config_V2.py +0 -0
  350. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/quantum_jump_monitoring.py +0 -0
  351. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/qubit_high_temp.py +0 -0
  352. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/script.py +0 -0
  353. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/quantum_machine/script_pyqt.py +0 -0
  354. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/timedomain/sequence_library.py +0 -0
  355. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/transport/__init__.py +0 -0
  356. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/transport/transport.py +0 -0
  357. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/measure/write_additional_files.py +0 -0
  358. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/__init__.py +0 -0
  359. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qdepokit/Deposition_template.ipynb +0 -0
  360. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qdepokit/__init__.py +0 -0
  361. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qdepokit/sdi.py +0 -0
  362. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/.gitignore +0 -0
  363. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/__init__.py +0 -0
  364. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/ccr.json_template +0 -0
  365. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/install_systemd_service.sh +0 -0
  366. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/pcf8575.py +0 -0
  367. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/qplexkit.py +0 -0
  368. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/server.py +0 -0
  369. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qplexkit/test_PCF8575.py +0 -0
  370. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/README.md +0 -0
  371. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/__init__.py +0 -0
  372. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/client_main.py +0 -0
  373. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/data_class.py +0 -0
  374. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/plasma1_gui.py +0 -0
  375. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/plasma1_gui.ui +0 -0
  376. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/server_main.py_template +0 -0
  377. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/settings.cfg_template +0 -0
  378. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/srv_thread.py +0 -0
  379. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/qsurveilkit/worker.py +0 -0
  380. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/OxfordInstruments_Kelvinox_IGH_serial.py +0 -0
  381. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/RT_switch/__init__.py +0 -0
  382. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/RT_switch/switchbox_server.py +0 -0
  383. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/RT_switch/two_port_switch_manual_client.py +0 -0
  384. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/__init__.py +0 -0
  385. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/dc_dac/DAC_LTC2666_communication.py +0 -0
  386. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/dc_dac/__init__.py +0 -0
  387. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/dc_dac/server.py +0 -0
  388. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/EdwardsActiveDigitalController.py +0 -0
  389. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/EdwardsBridgeReadout.py +0 -0
  390. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/__init__.py +0 -0
  391. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/edw_client.py +0 -0
  392. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/edwards/edw_server.py +0 -0
  393. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/erasynth_server.py +0 -0
  394. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/__init__.py +0 -0
  395. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/nitrogen_controller.py +0 -0
  396. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/nitrogen_server.py +0 -0
  397. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/refill_manual.py +0 -0
  398. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/refilling_switch_off.py +0 -0
  399. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/refilling_switch_on.py +0 -0
  400. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/nitrogen/sendMail.py +0 -0
  401. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/step_attenuator_server.py +0 -0
  402. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/step_motor.py +0 -0
  403. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/tip/__init__.py +0 -0
  404. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/raspi_misc/tip/fridge_monitoring.py +0 -0
  405. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/switchbox/lib_oled96.py +0 -0
  406. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/switchbox/server.py +0 -0
  407. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/services/switchbox/switch.py +0 -0
  408. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/README.md +0 -0
  409. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/__init__.py +0 -0
  410. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_DateTimeGenerator.py +0 -0
  411. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_constants.py +0 -0
  412. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_dataset.py +0 -0
  413. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_file.py +0 -0
  414. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_lib.py +0 -0
  415. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/hdf_view.py +0 -0
  416. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/storage/store.py +0 -0
  417. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/templates/Analysis/Probestation.ipynb +0 -0
  418. {qkit-0.5.0 → qkit-0.5.2}/src/qkit/templates/Measurements/Probestation.ipynb +0 -0
  419. {qkit-0.5.0 → qkit-0.5.2}/tests/__init__.py +0 -0
  420. {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/.1337deadbeef.breadcrumb +0 -0
  421. {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/.deadbeef1337.breadcrumb +0 -0
  422. {qkit-0.5.0 → qkit-0.5.2}/tests/breadcrumb/STUVWX_dummy.h5 +0 -0
  423. {qkit-0.5.0 → qkit-0.5.2}/tests/core/STUVWX_dummy.h5 +0 -0
  424. {qkit-0.5.0 → qkit-0.5.2}/tests/core/subdir/YZ0123_dummy.h5 +0 -0
  425. {qkit-0.5.0 → qkit-0.5.2}/tests/storage/test_hdf5.py +0 -0
@@ -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.0
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 recommended to use a virtual environment. This isolates this local environment from your global packages. This way, version conflicts can be avoided. If you choose to use a virtual environment, then it needs to be activated, otherwise, qkit and its dependencies will not be available. This also means double click to open .h5 files will require configuration.
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 recommended to use a virtual environment. This isolates this local environment from your global packages. This way, version conflicts can be avoided. If you choose to use a virtual environment, then it needs to be activated, otherwise, qkit and its dependencies will not be available. This also means double click to open .h5 files will require configuration.
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
- fid: 'fid_class'
17
- cfg: 'ConfClass'
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}{FILE_END}"
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
- if self._breadcrumb_path.exists():
44
- os.remove(self._breadcrumb_path)
45
- self._breadcrumb_file = open(self._breadcrumb_path, mode="w")
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
- print(f"{uuid[:6]}={rel_path}", file=self._breadcrumb_file, flush=True) # Fails if uuid is not 6 digits
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]
@@ -189,6 +189,7 @@ class fid(file_system_service):
189
189
  self._h5_n_mtime = {}
190
190
 
191
191
  self._remove_cache_files()
192
+ self._breadcrumb_creator.clear_file()
192
193
  self.create_database()
193
194
 
194
195
  def update_all(self):
@@ -6,7 +6,7 @@ and check for commonly used libraries.
6
6
  """
7
7
 
8
8
  import qkit
9
- from pkgutil import find_loader
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(find_loader(module_name))
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()