pyRFtk 2.0.2__tar.gz → 2.0.3__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 (231) hide show
  1. pyrftk-2.0.3/.gitignore +2 -0
  2. {pyrftk-2.0.2 → pyrftk-2.0.3}/PKG-INFO +3 -2
  3. {pyrftk-2.0.2 → pyrftk-2.0.3}/README.md +1 -0
  4. pyrftk-2.0.3/logo.pdf +0 -0
  5. {pyrftk-2.0.2 → pyrftk-2.0.3}/pyproject.toml +1 -1
  6. pyrftk-2.0.3/src/pyRFtk/.gitignore +2 -0
  7. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/ReadTSF.py +39 -10
  8. pyrftk-2.0.3/src/pyRFtk/WriteTSF.py +174 -0
  9. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/__init__.py +4 -1
  10. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/config.py +1 -1
  11. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfObject.py +1 -0
  12. pyrftk-2.0.3/tests/WEST_TWA_7s_4_No_FS_protruding.s7p +3256 -0
  13. pyrftk-2.0.2/src/pyRFtk/.gitignore +0 -1
  14. {pyrftk-2.0.2 → pyrftk-2.0.3}/LICENCE +0 -0
  15. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/Makefile +0 -0
  16. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.buildinfo +0 -0
  17. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Arcs.doctree +0 -0
  18. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Deembedding.doctree +0 -0
  19. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Examples.doctree +0 -0
  20. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Installation.doctree +0 -0
  21. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Introduction.doctree +0 -0
  22. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Logging.doctree +0 -0
  23. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Touchstone.doctree +0 -0
  24. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/Tutorials.doctree +0 -0
  25. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/backup.doctree +0 -0
  26. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/environment.pickle +0 -0
  27. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/index.doctree +0 -0
  28. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/modules.doctree +0 -0
  29. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.doctrees/pyRFtk.doctree +0 -0
  30. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/.nojekyll +0 -0
  31. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Arcs.html +0 -0
  32. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Deembedding.html +0 -0
  33. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Examples.html +0 -0
  34. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Installation.html +0 -0
  35. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Introduction.html +0 -0
  36. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Logging.html +0 -0
  37. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Touchstone.html +0 -0
  38. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/Tutorials.html +0 -0
  39. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_downloads/b90e652aafe314ced71820d596828aed/Tomas-Ref_geo-R=200-Diel_eps=0500.s2p +0 -0
  40. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_downloads/bf8243189246eb0547daf197b1578bac/tomas_icrh_linear_2017-vacuum.s2p +0 -0
  41. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_images/RLC.png +0 -0
  42. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_images/RLCSC.png +0 -0
  43. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_images/SC.png +0 -0
  44. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_images/SimpleCircuit.png +0 -0
  45. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_images/TomasCircuit.png +0 -0
  46. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Arcs.rst.txt +0 -0
  47. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Deembedding.rst.txt +0 -0
  48. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Examples.rst.txt +0 -0
  49. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Installation.rst.txt +0 -0
  50. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Introduction.rst.txt +0 -0
  51. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Logging.rst.txt +0 -0
  52. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Touchstone.rst.txt +0 -0
  53. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/Tutorials.rst.txt +0 -0
  54. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/backup.rst.txt +0 -0
  55. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/index.rst.txt +0 -0
  56. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/modules.rst.txt +0 -0
  57. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_sources/pyRFtk.rst.txt +0 -0
  58. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  59. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/alabaster.css +0 -0
  60. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/basic.css +0 -0
  61. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/classic.css +0 -0
  62. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/badge_only.css +0 -0
  63. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  64. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  65. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  66. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  67. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/fontawesome-webfont.eot +0 -0
  68. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/fontawesome-webfont.svg +0 -0
  69. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  70. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/fontawesome-webfont.woff +0 -0
  71. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  72. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-bold-italic.woff +0 -0
  73. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  74. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-bold.woff +0 -0
  75. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-bold.woff2 +0 -0
  76. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-normal-italic.woff +0 -0
  77. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  78. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-normal.woff +0 -0
  79. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/fonts/lato-normal.woff2 +0 -0
  80. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/css/theme.css +0 -0
  81. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/custom.css +0 -0
  82. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/doctools.js +0 -0
  83. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/documentation_options.js +0 -0
  84. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/file.png +0 -0
  85. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/groundwork.css +0 -0
  86. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/gw_logo.png +0 -0
  87. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/jquery.js +0 -0
  88. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/js/badge_only.js +0 -0
  89. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/js/html5shiv-printshiv.min.js +0 -0
  90. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/js/html5shiv.min.js +0 -0
  91. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/js/theme.js +0 -0
  92. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/language_data.js +0 -0
  93. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/minus.png +0 -0
  94. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/plus.png +0 -0
  95. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/pygments.css +0 -0
  96. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/searchtools.js +0 -0
  97. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/sidebar.js +0 -0
  98. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/small_groundwork.css +0 -0
  99. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/_static/sphinx_highlight.js +0 -0
  100. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/backup.html +0 -0
  101. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/Deembedding.doctree +0 -0
  102. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/Examples.doctree +0 -0
  103. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/Installation.doctree +0 -0
  104. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/Introduction.doctree +0 -0
  105. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/TOMAS.doctree +0 -0
  106. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/Touchstone.doctree +0 -0
  107. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/Tutorials.doctree +0 -0
  108. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/backup.doctree +0 -0
  109. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/environment.pickle +0 -0
  110. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/index.doctree +0 -0
  111. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/modules.doctree +0 -0
  112. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/pyRFtk.doctree +0 -0
  113. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/doctrees/usage.doctree +0 -0
  114. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/genindex.html +0 -0
  115. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/.buildinfo +0 -0
  116. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/.nojekyll +0 -0
  117. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/Deembedding.html +0 -0
  118. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/Examples.html +0 -0
  119. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/Installation.html +0 -0
  120. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/Introduction.html +0 -0
  121. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/TOMAS.html +0 -0
  122. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/Touchstone.html +0 -0
  123. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/Tutorials.html +0 -0
  124. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/RLC.png +0 -0
  125. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/RLCSC.png +0 -0
  126. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/SC.png +0 -0
  127. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/SimpleCircuit.pdf +0 -0
  128. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/SimpleCircuit.png +0 -0
  129. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/TOMAS_ICRH_Antenna.png +0 -0
  130. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/TOMAS_ICRH_Circuit.png +0 -0
  131. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_images/TomasCircuit.png +0 -0
  132. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/Deembedding.rst.txt +0 -0
  133. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/Examples.rst.txt +0 -0
  134. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/Installation.rst.txt +0 -0
  135. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/Introduction.rst.txt +0 -0
  136. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/TOMAS.rst.txt +0 -0
  137. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/Touchstone.rst.txt +0 -0
  138. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/Tutorials.rst.txt +0 -0
  139. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/backup.rst.txt +0 -0
  140. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/index.rst.txt +0 -0
  141. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/modules.rst.txt +0 -0
  142. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/pyRFtk.rst.txt +0 -0
  143. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_sources/usage.rst.txt +0 -0
  144. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/alabaster.css +0 -0
  145. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/basic.css +0 -0
  146. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/classic.css +0 -0
  147. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/custom.css +0 -0
  148. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/doctools.js +0 -0
  149. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/documentation_options.js +0 -0
  150. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/file.png +0 -0
  151. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/language_data.js +0 -0
  152. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/minus.png +0 -0
  153. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/plus.png +0 -0
  154. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/pygments.css +0 -0
  155. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/searchtools.js +0 -0
  156. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/sidebar.js +0 -0
  157. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/_static/sphinx_highlight.js +0 -0
  158. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/backup.html +0 -0
  159. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/genindex.html +0 -0
  160. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/index.html +0 -0
  161. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/modules.html +0 -0
  162. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/objects.inv +0 -0
  163. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/py-modindex.html +0 -0
  164. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/pyRFtk.html +0 -0
  165. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/search.html +0 -0
  166. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/searchindex.js +0 -0
  167. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/html/usage.html +0 -0
  168. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/index.html +0 -0
  169. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/modules.html +0 -0
  170. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/objects.inv +0 -0
  171. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/py-modindex.html +0 -0
  172. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/pyRFtk.html +0 -0
  173. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/search.html +0 -0
  174. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/build/searchindex.js +0 -0
  175. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/make.bat +0 -0
  176. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Arcs.rst +0 -0
  177. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Deembedding.rst +0 -0
  178. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Drawings/SimpleCircuit.odg +0 -0
  179. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Examples.rst +0 -0
  180. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Files/Tomas-Ref_geo-R=200-Diel_eps=0500.s2p +0 -0
  181. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Files/tomas_icrh_linear_2017-vacuum.s2p +0 -0
  182. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/RLC.png +0 -0
  183. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/RLCSC.png +0 -0
  184. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/SC.png +0 -0
  185. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/SimpleCircuit.pdf +0 -0
  186. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/SimpleCircuit.png +0 -0
  187. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/TOMAS_ICRH_Antenna.png +0 -0
  188. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/TOMAS_ICRH_Circuit.png +0 -0
  189. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Images/TomasCircuit.png +0 -0
  190. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Installation.rst +0 -0
  191. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Introduction.rst +0 -0
  192. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Logging.rst +0 -0
  193. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Touchstone.rst +0 -0
  194. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/Tutorials.rst +0 -0
  195. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/backup.rst +0 -0
  196. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/conf.py +0 -0
  197. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/index.rst +0 -0
  198. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/modules.rst +0 -0
  199. {pyrftk-2.0.2 → pyrftk-2.0.3}/docs/source/pyRFtk.rst +0 -0
  200. {pyrftk-2.0.2 → pyrftk-2.0.3}/logo.png +0 -0
  201. {pyrftk-2.0.2 → pyrftk-2.0.3}/rfCommon.log +0 -0
  202. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/ConvertGeneral.py +0 -0
  203. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/ReadDictData.py +0 -0
  204. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/S_from_VI.py +0 -0
  205. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/S_from_Y.py +0 -0
  206. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/S_from_Z.py +0 -0
  207. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/Y_from_S.py +0 -0
  208. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/Z_from_S.py +0 -0
  209. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/_check_3D_shape_.py +0 -0
  210. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/circuit.py +0 -0
  211. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/codebase.py +0 -0
  212. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/compareSs.py +0 -0
  213. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/findpath.py +0 -0
  214. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/getlines.py +0 -0
  215. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/maxfun.py +0 -0
  216. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/plotVSWs.py +0 -0
  217. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/printMatrices.py +0 -0
  218. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/resolveTLparams.py +0 -0
  219. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfArcObj.py +0 -0
  220. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfBase.py +0 -0
  221. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfCircuit.py +0 -0
  222. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfCoupler.py +0 -0
  223. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfGTL.py +0 -0
  224. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfRLC.py +0 -0
  225. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/rfTRL.py +0 -0
  226. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/str_dict.py +0 -0
  227. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/tictoc.py +0 -0
  228. {pyrftk-2.0.2 → pyrftk-2.0.3}/src/pyRFtk/whoami.py +0 -0
  229. {pyrftk-2.0.2 → pyrftk-2.0.3}/tests/rfCommon.log +0 -0
  230. {pyrftk-2.0.2 → pyrftk-2.0.3}/tests/routine.sh +0 -0
  231. {pyrftk-2.0.2 → pyrftk-2.0.3}/tests/tests.py +0 -0
@@ -0,0 +1,2 @@
1
+ /.project
2
+ /.pydevproject
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: pyRFtk
3
- Version: 2.0.2
3
+ Version: 2.0.3
4
4
  Summary: Design tool for RF antennae networks
5
5
  Project-URL: Homepage, https://lpp-erm-kms.github.io/pyrftk/
6
6
  Author-email: Frederic Durodie <frederic.durodie@rma.ac.be>, Arthur Adriaens <arthur.adriaens@mil.be>
@@ -11,6 +11,7 @@ Requires-Python: >=3.8
11
11
  Description-Content-Type: text/markdown
12
12
 
13
13
  # pyRFtk
14
+ [![DOI](https://zenodo.org/badge/702980029.svg)](https://zenodo.org/doi/10.5281/zenodo.10391750)
14
15
  ![logo](logo.png)
15
16
  ## About
16
17
 
@@ -1,4 +1,5 @@
1
1
  # pyRFtk
2
+ [![DOI](https://zenodo.org/badge/702980029.svg)](https://zenodo.org/doi/10.5281/zenodo.10391750)
2
3
  ![logo](logo.png)
3
4
  ## About
4
5
 
pyrftk-2.0.3/logo.pdf ADDED
Binary file
@@ -3,7 +3,7 @@ requires = ["hatchling","numpy","matplotlib","logging"]
3
3
  build-backend = "hatchling.build"
4
4
  [project]
5
5
  name = "pyRFtk"
6
- version = "2.0.2"
6
+ version = "2.0.3"
7
7
  authors = [
8
8
  { name="Frederic Durodie", email="frederic.durodie@rma.ac.be" },
9
9
  { name="Arthur Adriaens", email="arthur.adriaens@mil.be" },
@@ -0,0 +1,2 @@
1
+ /rfCommon.log
2
+ /__pycache__/*
@@ -35,7 +35,7 @@ def ReadTSF(src, **kwargs):
35
35
 
36
36
  #TODO: implement ports, funit
37
37
 
38
- TZbase = kwargs.pop('Zbase', 50.)
38
+ TZbase = kwargs.pop('Zbase', None)
39
39
  Tfunit = kwargs.get('funit', 'GHz')
40
40
  Tports = kwargs.get('ports', 'port-%03d')
41
41
  Tcomments = kwargs.get('comments',[])
@@ -114,7 +114,26 @@ def ReadTSF(src, **kwargs):
114
114
  elif kw in ['HZ','KHZ','MHZ','GHZ']:
115
115
  funit = kw
116
116
  elif kw == 'R':
117
- Zbase = float(items.pop())
117
+ Zlist = []
118
+ while len(items):
119
+ try:
120
+ item = items[-1]
121
+ Zlist.append(float(item))
122
+ except ValueError:
123
+ break
124
+ items.pop()
125
+
126
+ if (NZ := len(Zlist)) == 1:
127
+ Zbase = Zlist[0]
128
+
129
+ elif NZ > 1:
130
+ debug and tLogger.debug(ident(f'Zbase [{len(Zlist)}] {", ".join([str(z) for z in Zlist])}'))
131
+ Zbase = Zlist
132
+
133
+ else:
134
+ # this should be flagged as an error in the touchstone
135
+ Zbase = 50. if TZbase is None else TZbase
136
+ debug and tLogger.debug(ident(f'Zbase not specified in R [ERROR]: set to {Zbase}'))
118
137
  else:
119
138
  raise ValueError('Unrecognized format specification: %r' % kw)
120
139
 
@@ -190,7 +209,7 @@ def ReadTSF(src, **kwargs):
190
209
  lineno += 1
191
210
  aline = comments[lineno]
192
211
  while aline.strip() != '!':
193
- varline = re.findall('!\s*([A-Za-z0-9_]+)\s*=\s*(.+)',
212
+ varline = re.findall('!\s*([\$]?[A-Za-z0-9_]+)\s*=\s*(.+)',
194
213
  aline)
195
214
  if varline:
196
215
  pvars[varline[0][0]] = varline[0][1]
@@ -322,17 +341,26 @@ def ReadTSF(src, **kwargs):
322
341
  pass
323
342
 
324
343
  # if the data type is Z or Y we need to convert to S
344
+
345
+ #FIXME: if TZbase was given then Zbase can be ignored
346
+ Zbase = 50. if datatype in 'ZY' and Zbase is None else Zbase
325
347
  if datatype == 'Z':
326
- Ss = S_from_Z(Ss, Zbase if Zbase else TZbase)
348
+ # Ss = S_from_Z(Ss, Zbase if Zbase else TZbase)
349
+ Ss = S_from_Z(Ss, TZbase if TZbase else Zbase)
327
350
 
328
351
  elif datatype == 'Y':
329
- Ss = S_from_Y(Ss, Zbase if Zbase else TZbase)
330
-
352
+ # Ss = S_from_Y(Ss, Zbase if Zbase else TZbase)
353
+ Ss = S_from_Y(Ss, TZbase if TZbase else Zbase)
354
+
331
355
  else: # datatype == 'S':
332
356
 
333
357
  if Zbase is not None:
334
- if Zbase != TZbase:
335
- Ss = ConvertGeneral(TZbase, Ss, Zbase, 'V', 'V')
358
+ if not hasattr(Zbase,'__iter__'):
359
+ if Zbase != TZbase:
360
+ Ss = ConvertGeneral(TZbase, Ss, Zbase, 'V', 'V')
361
+
362
+ else:
363
+ Ss = ConvertGeneral(TZbase, Ss, Zbase, 'P', 'V')
336
364
 
337
365
  else: # Zbase is None:
338
366
  if len(Zcs[0]) == N:
@@ -340,7 +368,8 @@ def ReadTSF(src, **kwargs):
340
368
  else:
341
369
  logit['ERROR'] and tLogger.error(f'len(Zcs)[{len(Zcs)}] != N[{N}]')
342
370
  logit['ERROR'] and tLogger.error(f'Zcs={Zcs}')
343
-
371
+
372
+
344
373
  # set the portnames
345
374
 
346
375
  if 'ports' in kwargs:
@@ -387,7 +416,7 @@ def ReadTSF(src, **kwargs):
387
416
  "markers" : markers,
388
417
  "Zc" : Zcs,
389
418
  "Gm" : Gms,
390
- "variables" : None,
419
+ "variables" : pvars,
391
420
  "datafmt" : datafmt,
392
421
  }
393
422
 
@@ -0,0 +1,174 @@
1
+ __updated__ = "2024-08-29 15:46:08"
2
+
3
+ import numpy as np
4
+ import re
5
+ import time
6
+
7
+
8
+
9
+ #===============================================================================
10
+ #
11
+ # W r i t e T S F
12
+ #
13
+ #===============================================================================
14
+
15
+ def WriteTSF(object, path2tsf=None,
16
+ fs=[],
17
+ tsf_format='MHZ S DB R 50',
18
+ num_format=None,
19
+ comments = ''):
20
+
21
+ """WriteTSF:
22
+
23
+ object : a pyFtk object (rfCircuit, fObject, rfTRL, ...)
24
+ path2tsf : path to file: if it is None or an empty string the TSF is
25
+ returned as a string
26
+ tsf_format : the touchstone version 1.1 string
27
+ num_format : tuple for resp. the freq, reat and imag number format
28
+ comments : multi-line string
29
+
30
+
31
+ note (I believe) the touchstone specification 1.1 transposes the
32
+ the coefficients for .s2p (2-ports): this is not implemented here
33
+ as it is (apparently) not done in ReadTSF.
34
+
35
+ """
36
+
37
+ s = '! TouchStone file (pyRFtk.WriteTSF version %s)\n' % __updated__
38
+ s += '! Date : %s \n\n' % time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
39
+
40
+ scomments = comments.split('\n')
41
+ if len(scomments) > 0 :
42
+ for line in scomments :
43
+ s += '! %s\n' % line
44
+
45
+ s += '\n# %s \n\n' % tsf_format
46
+
47
+ fscale = {'HZ': 1e0, 'KHZ':1e3,'MHZ':1e6, 'GHZ':1e9, 'THZ':1e12}[
48
+ re.findall('^.*?([KMG]?HZ).*$',tsf_format.upper())[0]]
49
+
50
+ try:
51
+ zref = float(
52
+ re.findall(
53
+ '^.*?R\s*([-+]?(?:\d*[\.])?\d+(?:[eE][-+]?\d+)?).*?$',
54
+ tsf_format
55
+ )[0]
56
+ )
57
+ except:
58
+ zref = 50.0
59
+
60
+ fmt = re.findall('(RI|MA|DB)',tsf_format.upper())
61
+ if len(fmt) == 0:
62
+ fmt = 'DB' # default
63
+ elif len(fmt) == 1:
64
+ fmt = fmt[0]
65
+ else:
66
+ raise ValueError(
67
+ 'WriteTSF: one one of DB, RI or MA allowed in format string'
68
+ )
69
+
70
+ try:
71
+ if len(object.ports) > 0 :
72
+ s += '!PORTS ' + ', '.join(object.ports) + '\n\n'
73
+ except AttributeError:
74
+ pass
75
+
76
+ if len(fs) == 0:
77
+
78
+ # try an find a way to a list of meaning full frequencies
79
+ try:
80
+ if len(object.fs) > 0:
81
+ fs = object.fs
82
+ except AttributeError:
83
+ pass
84
+
85
+ if len(fs) == 0:
86
+ raise ValueError(
87
+ 'could not find list of frequencies in object and no list was supplied'
88
+ )
89
+ nports = len(object)
90
+
91
+ if num_format is None:
92
+ if fmt in ['DB','MA']:
93
+ num_format = ('9.5f', '15.12f', '+8.4f')
94
+ else:
95
+ num_format = ('8.4f', '10.7f', '10.7f')
96
+
97
+ tnumfmt = f'%{num_format[1]} %{num_format[2]} '
98
+
99
+ for k,fk in enumerate(fs):
100
+ s += (f'%{num_format[0]}' % (fk / fscale)) + ' '
101
+ d = object.getS(fk, Zbase=zref)
102
+ for kr in range(nports):
103
+ for kc in range(nports):
104
+ dij = d[kr,kc]
105
+ if fmt == 'RI':
106
+ s += tnumfmt % (np.real(dij),np.imag(dij))
107
+
108
+ elif fmt == 'DB':
109
+ s += tnumfmt% (20.*np.log10(np.abs(dij)),
110
+ np.angle(dij,1))
111
+
112
+ else: # can only be MA
113
+ s += tnumfmt % (np.abs(dij),np.angle(dij,1))
114
+
115
+ if (kc % 4 == 3) and (kc is not nports-1):
116
+ if kc == 3:
117
+ s += ' ! row %d' % (kr+1)
118
+ s += '\n'+' '*10
119
+
120
+ if nports > 2:
121
+ s += '\n'
122
+ if kr != nports-1:
123
+ s += ' '*9
124
+
125
+ s += '\n'
126
+
127
+
128
+ if path2tsf:
129
+ with open(path2tsf,'w') as f:
130
+ f.write(s)
131
+
132
+ else:
133
+ return s
134
+
135
+
136
+ #===============================================================================
137
+ #
138
+ # _ _ m a i n _ _
139
+ #
140
+ #===============================================================================
141
+
142
+ if __name__ == '__main__':
143
+
144
+ import os
145
+ import matplotlib.pyplot as pl
146
+
147
+ import sys
148
+ sys.path.insert(0, '/home/frederic/git/pyrftk/src/pyRFtk')
149
+
150
+ from pyRFtk import rfObject
151
+
152
+ path2data = '/home/frederic/git/twa-on-west/data/high'
153
+
154
+ fs = np.load(os.path.join(path2data,'f_lst.npy'))
155
+ R = np.load(os.path.join(path2data,'S22_TWA.npy'))
156
+
157
+ Q = rfObject(Zbase=30)
158
+ Q.setS(f=fs, S=R, Portnames=['in','out'])
159
+
160
+ WriteTSF(Q, tsf := os.path.join(path2data,f'test.s{len(Q)}p'),fs=np.linspace(45e6,65e6,201))
161
+
162
+ T = rfObject(touchstone=tsf)
163
+ print(T)
164
+
165
+ Sq = Q.getS(fs,Zbase=30)
166
+ St = T.getS(fs,Zbase=30)
167
+ print(St.shape)
168
+ for i in range(len(Q)):
169
+ for j in range(len(Q)):
170
+ pl.plot(fs, np.abs(Sq[:,i,j]-St[:,i,j]), label=f'Sq$_{{{i}{j}}}$')
171
+
172
+ pl.show()
173
+ print(Q)
174
+
@@ -1,4 +1,6 @@
1
- __updated__ = "2023-09-22 15:55:47"
1
+ __updated__ = "2024-08-29 09:55:04"
2
+
3
+ print('using local copy of pyRFtk')
2
4
 
3
5
  from .config import tLogger, setLogLevel, logit, ident, _newID, logident
4
6
  from .rfBase import rfBase
@@ -19,6 +21,7 @@ from .Y_from_S import Y_from_S
19
21
 
20
22
  from .ConvertGeneral import ConvertGeneral
21
23
  from .ReadTSF import ReadTSF
24
+ from .WriteTSF import WriteTSF
22
25
  from .maxfun import maxfun
23
26
  from .resolveTLparams import TLresolver
24
27
  from .plotVSWs import plotVSWs, scaleVSW, strVSW
@@ -195,7 +195,7 @@ rcparams = {
195
195
  'funit' : 'Hz', # 'Hz' | 'kHz' | 'MHz' | 'GHz' # keep to Hz for the moment
196
196
  'fs' : (35e6, 60e6, 251),
197
197
  'interp' : 'MA', # 'MA' | 'RI' | 'dB'
198
- 'interpkws' : {'kind': 3,
198
+ 'interpkws' : {'kind': 1,
199
199
  'fill_value':'extrapolate'
200
200
  },
201
201
  }
@@ -573,6 +573,7 @@ class rfObject():
573
573
  self.shape = r['shape']
574
574
  self.Zcs = np.array(r['Zc'])
575
575
  self.Gms = np.array(r['Gm'])
576
+ self.variables = r['variables']
576
577
  self.xpos = [0.] * len(self)
577
578
 
578
579
  #===========================================================================