sprit 0.1.72.dev0__tar.gz → 0.1.77.dev0__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 (184) hide show
  1. {sprit-0.1.72.dev0/sprit.egg-info → sprit-0.1.77.dev0}/PKG-INFO +1 -1
  2. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/pyproject.toml +1 -1
  3. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/setup.py +1 -1
  4. sprit-0.1.77.dev0/sprit/resources/settings/gui_theme.json +1 -0
  5. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/sprit_cli.py +1 -0
  6. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/sprit_gui.py +138 -133
  7. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/sprit_hvsr.py +4 -5
  8. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/sprit_jupyter_UI.py +42 -25
  9. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0/sprit.egg-info}/PKG-INFO +1 -1
  10. sprit-0.1.72.dev0/sprit/resources/settings/gui_theme.json +0 -1
  11. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/LICENSE +0 -0
  12. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/README.md +0 -0
  13. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/setup.cfg +0 -0
  14. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/__init__.py +0 -0
  15. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/icon/sprit_icon.ico +0 -0
  16. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/icon/sprit_icon.png +0 -0
  17. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/icon/sprit_icon.xcf +0 -0
  18. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/icon/sprit_icon_alpha.ico +0 -0
  19. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/icon/sprit_icon_thickly.xcf +0 -0
  20. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/parameters.csv +0 -0
  21. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/rs3dv5plus_metadata.inv +0 -0
  22. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/rs3dv7_metadata.inv +0 -0
  23. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/Batch_SampleData.csv +0 -0
  24. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite1.hvsr +0 -0
  25. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite10_BNE_4_AM.RAC84.00.2023.191_2023-07-10_2237-2259.MSEED +0 -0
  26. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite1_AM.RAC84.00.2023.046_2023-02-15_1704-1734.MSEED +0 -0
  27. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite2_AM.RAC84.00.2023-02-15_2132-2200.MSEED +0 -0
  28. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite3_AM.RAC84.00.2023.199_2023-07-18_1432-1455.MSEED +0 -0
  29. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite4_AM.RAC84.00.2023.199_2023-07-18_1609-1629.MSEED +0 -0
  30. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite5_AM.RAC84.00.2023.199_2023-07-18_2039-2100.MSEED +0 -0
  31. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite6_AM.RAC84.00.2023.192_2023-07-11_1510-1528.MSEED +0 -0
  32. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite7_BNE_4_AM.RAC84.00.2023.191_2023-07-10_2237-2259.MSEED +0 -0
  33. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite8_BNE_6_AM.RAC84.00.2023.191_2023-07-10_1806-1825.MSEED +0 -0
  34. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/sample_data/SampleHVSRSite9_BNE-2_AM.RAC84.00.2023.192_2023-07-11_0000-0011.MSEED +0 -0
  35. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/settings/instrument_settings.inst +0 -0
  36. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/settings/processing_settings.proc +0 -0
  37. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/LICENSE +0 -0
  38. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/README.md +0 -0
  39. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/border-accent-hover.png +0 -0
  40. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/border-accent.png +0 -0
  41. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/border-basic.png +0 -0
  42. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/border-hover.png +0 -0
  43. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/border-invalid.png +0 -0
  44. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/card.png +0 -0
  45. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-accent.png +0 -0
  46. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-basic.png +0 -0
  47. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-hover.png +0 -0
  48. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-tri-accent.png +0 -0
  49. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-tri-basic.png +0 -0
  50. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-tri-hover.png +0 -0
  51. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-unsel-accent.png +0 -0
  52. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-unsel-basic.png +0 -0
  53. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-unsel-hover.png +0 -0
  54. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/check-unsel-pressed.png +0 -0
  55. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/combo-button-basic.png +0 -0
  56. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/combo-button-focus.png +0 -0
  57. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/combo-button-hover.png +0 -0
  58. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/down.png +0 -0
  59. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/empty.png +0 -0
  60. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/hor-accent.png +0 -0
  61. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/hor-basic.png +0 -0
  62. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/hor-hover.png +0 -0
  63. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/notebook.png +0 -0
  64. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/off-accent.png +0 -0
  65. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/off-basic.png +0 -0
  66. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/off-hover.png +0 -0
  67. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/on-accent.png +0 -0
  68. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/on-basic.png +0 -0
  69. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/on-hover.png +0 -0
  70. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-accent.png +0 -0
  71. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-basic.png +0 -0
  72. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-hover.png +0 -0
  73. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-tri-accent.png +0 -0
  74. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-tri-basic.png +0 -0
  75. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-tri-hover.png +0 -0
  76. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-unsel-accent.png +0 -0
  77. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-unsel-basic.png +0 -0
  78. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-unsel-hover.png +0 -0
  79. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/radio-unsel-pressed.png +0 -0
  80. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/rect-accent-hover.png +0 -0
  81. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/rect-accent.png +0 -0
  82. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/rect-basic.png +0 -0
  83. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/rect-hover.png +0 -0
  84. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/right.png +0 -0
  85. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/scale-hor.png +0 -0
  86. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/scale-vert.png +0 -0
  87. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/separator.png +0 -0
  88. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/sizegrip.png +0 -0
  89. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/spin-button-down-basic.png +0 -0
  90. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/spin-button-down-focus.png +0 -0
  91. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/spin-button-up.png +0 -0
  92. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/tab-accent.png +0 -0
  93. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/tab-basic.png +0 -0
  94. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/tab-hover.png +0 -0
  95. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/thumb-hor-accent.png +0 -0
  96. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/thumb-hor-basic.png +0 -0
  97. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/thumb-hor-hover.png +0 -0
  98. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/thumb-vert-accent.png +0 -0
  99. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/thumb-vert-basic.png +0 -0
  100. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/thumb-vert-hover.png +0 -0
  101. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/tree-basic.png +0 -0
  102. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/tree-pressed.png +0 -0
  103. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/up.png +0 -0
  104. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/vert-accent.png +0 -0
  105. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/vert-basic.png +0 -0
  106. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark/vert-hover.png +0 -0
  107. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-dark.tcl +0 -0
  108. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/border-accent-hover.png +0 -0
  109. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/border-accent.png +0 -0
  110. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/border-basic.png +0 -0
  111. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/border-hover.png +0 -0
  112. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/border-invalid.png +0 -0
  113. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/card.png +0 -0
  114. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-accent.png +0 -0
  115. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-basic.png +0 -0
  116. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-hover.png +0 -0
  117. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-tri-accent.png +0 -0
  118. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-tri-basic.png +0 -0
  119. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-tri-hover.png +0 -0
  120. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-unsel-accent.png +0 -0
  121. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-unsel-basic.png +0 -0
  122. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-unsel-hover.png +0 -0
  123. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/check-unsel-pressed.png +0 -0
  124. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/combo-button-basic.png +0 -0
  125. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/combo-button-focus.png +0 -0
  126. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/combo-button-hover.png +0 -0
  127. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/down-focus.png +0 -0
  128. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/down.png +0 -0
  129. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/empty.png +0 -0
  130. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/hor-accent.png +0 -0
  131. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/hor-basic.png +0 -0
  132. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/hor-hover.png +0 -0
  133. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/notebook.png +0 -0
  134. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/off-accent.png +0 -0
  135. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/off-basic.png +0 -0
  136. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/off-hover.png +0 -0
  137. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/on-accent.png +0 -0
  138. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/on-basic.png +0 -0
  139. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/on-hover.png +0 -0
  140. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-accent.png +0 -0
  141. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-basic.png +0 -0
  142. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-hover.png +0 -0
  143. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-tri-accent.png +0 -0
  144. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-tri-basic.png +0 -0
  145. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-tri-hover.png +0 -0
  146. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-unsel-accent.png +0 -0
  147. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-unsel-basic.png +0 -0
  148. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-unsel-hover.png +0 -0
  149. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/radio-unsel-pressed.png +0 -0
  150. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/rect-accent-hover.png +0 -0
  151. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/rect-accent.png +0 -0
  152. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/rect-basic.png +0 -0
  153. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/rect-hover.png +0 -0
  154. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/right-focus.png +0 -0
  155. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/right.png +0 -0
  156. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/scale-hor.png +0 -0
  157. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/scale-vert.png +0 -0
  158. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/separator.png +0 -0
  159. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/sizegrip.png +0 -0
  160. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/spin-button-down-basic.png +0 -0
  161. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/spin-button-down-focus.png +0 -0
  162. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/spin-button-up.png +0 -0
  163. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/tab-accent.png +0 -0
  164. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/tab-basic.png +0 -0
  165. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/tab-hover.png +0 -0
  166. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/thumb-hor-accent.png +0 -0
  167. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/thumb-hor-basic.png +0 -0
  168. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/thumb-hor-hover.png +0 -0
  169. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/thumb-vert-accent.png +0 -0
  170. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/thumb-vert-basic.png +0 -0
  171. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/thumb-vert-hover.png +0 -0
  172. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/tree-basic.png +0 -0
  173. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/tree-pressed.png +0 -0
  174. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/up.png +0 -0
  175. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/vert-accent.png +0 -0
  176. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/vert-basic.png +0 -0
  177. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light/vert-hover.png +0 -0
  178. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/resources/themes/forest-light.tcl +0 -0
  179. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit/sprit_utils.py +0 -0
  180. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit.egg-info/SOURCES.txt +0 -0
  181. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit.egg-info/dependency_links.txt +0 -0
  182. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit.egg-info/entry_points.txt +0 -0
  183. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit.egg-info/requires.txt +0 -0
  184. {sprit-0.1.72.dev0 → sprit-0.1.77.dev0}/sprit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sprit
3
- Version: 0.1.72.dev0
3
+ Version: 0.1.77.dev0
4
4
  Summary: A package for processing and analyzing HVSR (Horizontal to Vertical Spectral Ratio) data
5
5
  Author: Riley Balikian, Hongyu Xaio
6
6
  Author-email: balikian@illinois.edu
@@ -7,7 +7,7 @@ name = "sprit"
7
7
  authors = [{name="Riley Balikian"}, {name="Hongyu Xaio"}]
8
8
  dynamic = ["readme"]
9
9
  license = {file = "LICENSE"}
10
- version="0.1.72-dev"
10
+ version="0.1.77-dev"
11
11
  description = "A package for processing and analyzing HVSR (Horizontal to Vertical Spectral Ratio) data"
12
12
  keywords = ["HVSR", "seismic", "horizontal to vertical spectral ratio", "obspy", 'geology', 'geophysics', 'geotechnical']
13
13
  requires-python = ">=3.9"
@@ -7,7 +7,7 @@ setup(
7
7
  name="sprit",
8
8
  author= "Riley Balikian",
9
9
  author_email = "balikian@illinois.edu",
10
- version="0.1.72-dev",
10
+ version="0.1.77-dev",
11
11
  package_data={'sprit': ['resources/*', 'resources/icon/*', 'resources/themes/*', 'resources/themes/forest-dark/*',
12
12
  'resources/themes/forest-light/*', 'resources/sample_data/*','resources/settings/*']},
13
13
  long_description_content_type="text/markdown",
@@ -0,0 +1 @@
1
+ {"theme_name": "forest-dark"}
@@ -41,6 +41,7 @@ def main():
41
41
  sprit.remove_noise,
42
42
  sprit.generate_ppsds,
43
43
  sprit.process_hvsr,
44
+ sprit.remove_outlier_curves,
44
45
  sprit.check_peaks,
45
46
  sprit.get_report,
46
47
  sprit.plot_hvsr]
@@ -36,6 +36,7 @@ except: #For local testing
36
36
 
37
37
  global spritApp
38
38
  global current_theme_name
39
+ global SPRIT_App
39
40
 
40
41
  resource_dir = pathlib.Path(pkg_resources.resource_filename(__name__, 'resources/'))
41
42
  settings_dir = resource_dir.joinpath('settings')
@@ -44,109 +45,6 @@ with open(gui_theme_file, 'r') as f:
44
45
  curr_gui_dict = json.load(f)
45
46
  current_theme_name = curr_gui_dict['theme_name']
46
47
 
47
- #Decorator that catches errors and warnings (to be modified later for gui)
48
- def catch_errors(func):
49
- #Define a local function to get a list of warnings that we'll use in the output
50
- def get_warning_msg_list(w):
51
- messageList = []
52
- #Collect warnings that happened before we got to the error
53
- if w:
54
- hasWarnings = True
55
- for wi in w:
56
- warning_category = type(wi.message).__name__.title().replace('warning','Warning')
57
- #if w.line is None:
58
- # w.line = linecache.getline(wi.filename, wi.lineno)
59
- warning_lineNo = wi.lineno
60
- warning_message = str(wi.message)
61
- # append the warning category and message to messageList so we get all warnings
62
- messageList.append(f'{warning_category} ({warning_lineNo}): {warning_message}')
63
- return messageList
64
-
65
- # use functools.wraps to preserve the original function's metadata
66
- @functools.wraps(func)
67
- def wrapper(*args, **kwargs):
68
- result = None
69
- # use the global keyword to access the error_message and error_category variables
70
- global error_message
71
- global error_category
72
-
73
- messageList = []
74
- hasWarnings = False
75
- # use a try-except block to catch any exceptions
76
- #result = func(*args, **kwargs)
77
- try:
78
- # use a context manager to catch any warnings
79
- with warnings.catch_warnings(record=True) as w:
80
- warnings.simplefilter('always')
81
- # call the original function with the given arguments
82
- result = func(*args, **kwargs)
83
-
84
- #Get message list, [] if no messages, doesn't run at all if Error/exception in func
85
- messageList = get_warning_msg_list(w)
86
- if messageList == []:
87
- return result
88
- else:
89
- warningMessage = "WARNING:"
90
- for msg in messageList:
91
- warningMessage = "\n {}".format(msg)
92
-
93
- messagebox.showwarning(title='WARNINGS', message=warningMessage)
94
-
95
- except Exception as e:
96
- messageList = get_warning_msg_list(w)
97
- errorObj = sys.exc_info()[2]
98
-
99
- mainErrText = sys.exc_info()[1]
100
-
101
- mainErrTb = traceback.extract_tb(sys.exc_info()[2])[-1]
102
- mainErrFilePath = pathlib.Path(mainErrTb[0])
103
-
104
- mainErrFileName = mainErrFilePath.stem
105
- mainErrLineNo = mainErrTb[1]
106
- mainErrFunc = mainErrTb[2]
107
- mainErrCodeLine = mainErrTb[3]
108
-
109
- errLineNo1 = str(traceback.extract_tb(sys.exc_info()[2])[-1].lineno)
110
- error_category = type(e).__name__.title().replace('error', 'Error')
111
- error_message = f"{e} ({errLineNo1})"
112
-
113
- #Get message list, [] if no messages, doesn't run at all if Error/exception in func
114
- warningMessageList = get_warning_msg_list(w)
115
-
116
- #Build error messages
117
- tbTuple0 = sys.exc_info()[0]
118
- tbTuple1 = sys.exc_info()[1]
119
- tbTuple2 = traceback.extract_tb(sys.exc_info()[2])
120
-
121
- logMsg = f"**ERROR**\n{tbTuple0.__name__}: {tbTuple1}"
122
- dialogErrMsg = logMsg.split(':')[1]
123
- for tb in tbTuple2:
124
- logMsg = logMsg + '\n\t'
125
- logMsg = logMsg + f"{pathlib.Path(tb[0]).stem}.{tb[2]}(): {tb[3]} (Line {tb[1]})"
126
- dialogErrMsg = dialogErrMsg + f"\n{pathlib.Path(tb[0]).stem}.{tb[2]}(), Line {tb[1]}"
127
- logMsg = logMsg + '\n\n'
128
-
129
- #fullErrorMessage = f'ERROR {mainErrFileName}.{mainErrFunc} ({mainErrLineNo}): {mainErrText} \n\n {mainErrFileName} Line {mainErrLineNo}: {mainErrCodeLine}.'
130
- if messageList == []:
131
- pass
132
- else:
133
- dialogErrMsg = dialogErrMsg+"\n\n Additional Warnings along the way. See Log for more information."
134
- logMsg = logMsg + "\n\n\t *WARNING(S)*\n\tAdditional Warnings along the way:"
135
- for addMsg in warningMessageList:
136
- logMsg = logMsg+"\n\t\t{}".format(addMsg)
137
-
138
-
139
- SPRIT_App.log_errorMsg(spritApp, logMsg)
140
-
141
- messagebox.showerror(title=f'ERROR ({error_category})',
142
- message=dialogErrMsg)
143
- update_progress_bars(100)
144
-
145
- # return the result of the function or the error/warning messages and categories
146
- return result
147
- # return the wrapper function
148
- return wrapper
149
-
150
48
  class SPRIT_App:
151
49
  global spritApp
152
50
  def __init__(self, master):
@@ -493,51 +391,51 @@ class SPRIT_App:
493
391
  self.tab_control.select(self.preview_data_tab)
494
392
  return self.hvsr_data
495
393
 
496
- def report_results(hvsr_results):
497
- self.curveTest1ResultText.configure(text=hvsr_results['BestPeak']['Report']['Lw'][:-1])
498
- self.curveTest1Result.configure(text=hvsr_results['BestPeak']['Report']['Lw'][-1])
394
+ def report_results(hvsr_results, azimuth='HV'):
395
+ self.curveTest1ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Lw'][:-1])
396
+ self.curveTest1Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Lw'][-1])
499
397
 
500
- self.curveTest2ResultText.configure(text=hvsr_results['BestPeak']['Report']['Nc'][:-1])
501
- self.curveTest2Result.configure(text=hvsr_results['BestPeak']['Report']['Nc'][-1])
398
+ self.curveTest2ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Nc'][:-1])
399
+ self.curveTest2Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Nc'][-1])
502
400
 
503
- self.curveTest3ResultText.configure(text=hvsr_results['BestPeak']['Report']['σ_A(f)'][:-1])
504
- self.curveTest3Result.configure(text=hvsr_results['BestPeak']['Report']['σ_A(f)'][-1])
401
+ self.curveTest3ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['σ_A(f)'][:-1])
402
+ self.curveTest3Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['σ_A(f)'][-1])
505
403
 
506
- curvePass = (hvsr_results['BestPeak']['PassList']['WindowLengthFreq.'] +
507
- hvsr_results['BestPeak']['PassList']['SignificantCycles']+
508
- hvsr_results['BestPeak']['PassList']['LowCurveStDevOverTime']) > 2
404
+ curvePass = (hvsr_results['BestPeak'][azimuth]['PassList']['WindowLengthFreq.'] +
405
+ hvsr_results['BestPeak'][azimuth]['PassList']['SignificantCycles']+
406
+ hvsr_results['BestPeak'][azimuth]['PassList']['LowCurveStDevOverTime']) > 2
509
407
  if curvePass:
510
408
  self.totalCurveResult.configure(text=sprit_utils.check_mark(), font=("TkDefaultFont", 16, "bold"), foreground='green')
511
409
  else:
512
410
  self.totalCurveResult.configure(text=sprit_utils.x_mark(), font=("TkDefaultFont", 16, "bold"), foreground='red')
513
411
 
514
- self.peakTest1ResultText.configure(text=hvsr_results['BestPeak']['Report']['A(f-)'][:-1])
515
- self.peakTest1Result.configure(text=hvsr_results['BestPeak']['Report']['A(f-)'][-1])
412
+ self.peakTest1ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['A(f-)'][:-1])
413
+ self.peakTest1Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['A(f-)'][-1])
516
414
 
517
- self.peakTest2ResultText.configure(text=hvsr_results['BestPeak']['Report']['A(f+)'][:-1])
518
- self.peakTest2Result.configure(text=hvsr_results['BestPeak']['Report']['A(f+)'][-1])
415
+ self.peakTest2ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['A(f+)'][:-1])
416
+ self.peakTest2Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['A(f+)'][-1])
519
417
 
520
- self.peakTest3ResultText.configure(text=hvsr_results['BestPeak']['Report']['A0'][:-1])
521
- self.peakTest3Result.configure(text=hvsr_results['BestPeak']['Report']['A0'][-1])
418
+ self.peakTest3ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['A0'][:-1])
419
+ self.peakTest3Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['A0'][-1])
522
420
 
523
- self.peakTest4ResultText.configure(text=hvsr_results['BestPeak']['Report']['P-'][:5] + ' and ' +hvsr_results['BestPeak']['Report']['P+'][:-1])
524
- if hvsr_results['BestPeak']['PassList']['FreqStability']:
421
+ self.peakTest4ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['P-'][:5] + ' and ' +hvsr_results['BestPeak'][azimuth]['Report']['P+'][:-1])
422
+ if hvsr_results['BestPeak'][azimuth]['PassList']['FreqStability']:
525
423
  self.peakTest4Result.configure(text=sprit_utils.check_mark())
526
424
  else:
527
425
  self.peakTest4Result.configure(text=sprit_utils.x_mark())
528
426
 
529
- self.peakTest5ResultText.configure(text=hvsr_results['BestPeak']['Report']['Sf'][:-1])
530
- self.peakTest5Result.configure(text=hvsr_results['BestPeak']['Report']['Sf'][-1])
427
+ self.peakTest5ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Sf'][:-1])
428
+ self.peakTest5Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Sf'][-1])
531
429
 
532
- self.peakTest6ResultText.configure(text=hvsr_results['BestPeak']['Report']['Sa'][:-1])
533
- self.peakTest6Result.configure(text=hvsr_results['BestPeak']['Report']['Sa'][-1])
534
-
535
- peakPass = (hvsr_results['BestPeak']['PassList']['PeakProminenceBelow'] +
536
- hvsr_results['BestPeak']['PassList']['PeakProminenceAbove']+
537
- hvsr_results['BestPeak']['PassList']['PeakAmpClarity']+
538
- hvsr_results['BestPeak']['PassList']['FreqStability']+
539
- hvsr_results['BestPeak']['PassList']['PeakStability_FreqStD']+
540
- hvsr_results['BestPeak']['PassList']['PeakStability_AmpStD']) >= 5
430
+ self.peakTest6ResultText.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Sa'][:-1])
431
+ self.peakTest6Result.configure(text=hvsr_results['BestPeak'][azimuth]['Report']['Sa'][-1])
432
+
433
+ peakPass = (hvsr_results['BestPeak'][azimuth]['PassList']['PeakProminenceBelow'] +
434
+ hvsr_results['BestPeak'][azimuth]['PassList']['PeakProminenceAbove']+
435
+ hvsr_results['BestPeak'][azimuth]['PassList']['PeakAmpClarity']+
436
+ hvsr_results['BestPeak'][azimuth]['PassList']['FreqStability']+
437
+ hvsr_results['BestPeak'][azimuth]['PassList']['PeakStability_FreqStD']+
438
+ hvsr_results['BestPeak'][azimuth]['PassList']['PeakStability_AmpStD']) >= 5
541
439
  if peakPass:
542
440
  self.totalPeakResult.configure(text=sprit_utils.check_mark(), font=("TkDefaultFont", 16, "bold"), foreground='green')
543
441
  else:
@@ -598,7 +496,7 @@ class SPRIT_App:
598
496
  rmse_thresh=98,
599
497
  use_percentile=True,
600
498
  use_hv_curve = False,
601
- show_plot = False)
499
+ show_outlier_plot = False)
602
500
  update_progress_bars(prog_percent=60)
603
501
 
604
502
  self.log_text.insert('end', f"{self.procHVSR_call['text']}\n\n")
@@ -3085,6 +2983,113 @@ class SPRIT_App:
3085
2983
  # Pack tab control
3086
2984
  self.tab_control.pack(expand=True, fill="both")
3087
2985
 
2986
+
2987
+ #Decorator that catches errors and warnings (to be modified later for gui)
2988
+ def catch_errors(func):
2989
+ global spritApp
2990
+
2991
+ #Define a local function to get a list of warnings that we'll use in the output
2992
+ def get_warning_msg_list(w):
2993
+ messageList = []
2994
+ #Collect warnings that happened before we got to the error
2995
+ if w:
2996
+ hasWarnings = True
2997
+ for wi in w:
2998
+ warning_category = type(wi.message).__name__.title().replace('warning','Warning')
2999
+ #if w.line is None:
3000
+ # w.line = linecache.getline(wi.filename, wi.lineno)
3001
+ warning_lineNo = wi.lineno
3002
+ warning_message = str(wi.message)
3003
+ # append the warning category and message to messageList so we get all warnings
3004
+ messageList.append(f'{warning_category} ({warning_lineNo}): {warning_message}')
3005
+ return messageList
3006
+
3007
+ # use functools.wraps to preserve the original function's metadata
3008
+ @functools.wraps(func)
3009
+ def wrapper(*args, **kwargs):
3010
+ result = None
3011
+ # use the global keyword to access the error_message and error_category variables
3012
+ global error_message
3013
+ global error_category
3014
+ global spritApp
3015
+
3016
+ messageList = []
3017
+ hasWarnings = False
3018
+ # use a try-except block to catch any exceptions
3019
+ #result = func(*args, **kwargs)
3020
+ try:
3021
+ # use a context manager to catch any warnings
3022
+ with warnings.catch_warnings(record=True) as w:
3023
+ warnings.simplefilter('always')
3024
+ # call the original function with the given arguments
3025
+ result = func(*args, **kwargs)
3026
+
3027
+ #Get message list, [] if no messages, doesn't run at all if Error/exception in func
3028
+ messageList = get_warning_msg_list(w)
3029
+ if messageList == []:
3030
+ return result
3031
+ else:
3032
+ warningMessage = "WARNING:"
3033
+ for msg in messageList:
3034
+ warningMessage = "\n {}".format(msg)
3035
+
3036
+ messagebox.showwarning(title='WARNINGS', message=warningMessage)
3037
+
3038
+ except Exception as e:
3039
+ messageList = get_warning_msg_list(w)
3040
+ errorObj = sys.exc_info()[2]
3041
+
3042
+ mainErrText = sys.exc_info()[1]
3043
+
3044
+ mainErrTb = traceback.extract_tb(sys.exc_info()[2])[-1]
3045
+ mainErrFilePath = pathlib.Path(mainErrTb[0])
3046
+
3047
+ mainErrFileName = mainErrFilePath.stem
3048
+ mainErrLineNo = mainErrTb[1]
3049
+ mainErrFunc = mainErrTb[2]
3050
+ mainErrCodeLine = mainErrTb[3]
3051
+
3052
+ errLineNo1 = str(traceback.extract_tb(sys.exc_info()[2])[-1].lineno)
3053
+ error_category = type(e).__name__.title().replace('error', 'Error')
3054
+ error_message = f"{e} ({errLineNo1})"
3055
+
3056
+ #Get message list, [] if no messages, doesn't run at all if Error/exception in func
3057
+ warningMessageList = get_warning_msg_list(w)
3058
+
3059
+ #Build error messages
3060
+ tbTuple0 = sys.exc_info()[0]
3061
+ tbTuple1 = sys.exc_info()[1]
3062
+ tbTuple2 = traceback.extract_tb(sys.exc_info()[2])
3063
+
3064
+ logMsg = f"**ERROR**\n{tbTuple0.__name__}: {tbTuple1}"
3065
+ dialogErrMsg = logMsg.split(':')[1]
3066
+ for tb in tbTuple2:
3067
+ logMsg = logMsg + '\n\t'
3068
+ logMsg = logMsg + f"{pathlib.Path(tb[0]).stem}.{tb[2]}(): {tb[3]} (Line {tb[1]})"
3069
+ dialogErrMsg = dialogErrMsg + f"\n{pathlib.Path(tb[0]).stem}.{tb[2]}(), Line {tb[1]}"
3070
+ logMsg = logMsg + '\n\n'
3071
+
3072
+ #fullErrorMessage = f'ERROR {mainErrFileName}.{mainErrFunc} ({mainErrLineNo}): {mainErrText} \n\n {mainErrFileName} Line {mainErrLineNo}: {mainErrCodeLine}.'
3073
+ if messageList == []:
3074
+ pass
3075
+ else:
3076
+ dialogErrMsg = dialogErrMsg+"\n\n Additional Warnings along the way. See Log for more information."
3077
+ logMsg = logMsg + "\n\n\t *WARNING(S)*\n\tAdditional Warnings along the way:"
3078
+ for addMsg in warningMessageList:
3079
+ logMsg = logMsg+"\n\t\t{}".format(addMsg)
3080
+
3081
+
3082
+ SPRIT_App.log_errorMsg(spritApp, logMsg)
3083
+
3084
+ messagebox.showerror(title=f'ERROR ({error_category})',
3085
+ message=dialogErrMsg)
3086
+ update_progress_bars(100)
3087
+
3088
+ # return the result of the function or the error/warning messages and categories
3089
+ return result
3090
+ # return the wrapper function
3091
+ return wrapper
3092
+
3088
3093
  def on_closing():
3089
3094
  plt.close('all')
3090
3095
  root.destroy()
@@ -1159,7 +1159,6 @@ def check_peaks(hvsr_data, hvsr_band=[0.4, 40], peak_selection='max', peak_freq_
1159
1159
  if not hvsr_band:
1160
1160
  hvsr_band = [0.4, 40]
1161
1161
 
1162
- print('hvsr_band again', hvsr_band)
1163
1162
  hvsr_data['hvsr_band'] = hvsr_band
1164
1163
 
1165
1164
  anyK = list(hvsr_data['x_freqs'].keys())[0]
@@ -3840,7 +3839,7 @@ def process_hvsr(hvsr_data, method=3, smooth=True, freq_smooth='konno ohmachi',
3840
3839
  hvsr_out['ind_hvsr_peak_indices'] = {}
3841
3840
  #hvsr_out['hvsr_windows_df']['CurvesPeakFreqs'] = {}
3842
3841
  for col_name in hvsr_out['hvsr_windows_df'].columns:
3843
- if "HV_Curves" in col_name:
3842
+ if col_name.startswith("HV_Curves"):
3844
3843
  tStepPeaks = []
3845
3844
  if len(col_name.split('_')) > 2:
3846
3845
  colSuffix = "_"+'_'.join(col_name.split('_')[2:])
@@ -6769,7 +6768,7 @@ def __gethvsrparams(hvsr_out):
6769
6768
  hvsrm2 = {}
6770
6769
  hvsr_log_std = {}
6771
6770
  for col_name in hvsr_out['hvsr_windows_df'].columns:
6772
- if "HV_Curves" in col_name:
6771
+ if col_name.startswith("HV_Curves"):
6773
6772
  if col_name == 'HV_Curves':
6774
6773
  colSuffix = '_HV'
6775
6774
  colID = 'HV'
@@ -6782,8 +6781,8 @@ def __gethvsrparams(hvsr_out):
6782
6781
  for i, r in enumerate(logStackedata):
6783
6782
  logStackedata[i] = np.array(r)
6784
6783
 
6785
- hvsr_out['hvsr_windows_df']['HV_Curves_Log10'+colSuffix] = logStackedata
6786
- hvsr_log_std[colID] = np.nanstd(np.stack(hvsr_out['hvsr_windows_df']['HV_Curves_Log10'+colSuffix][hvsrDF['Use']]), axis=0)
6784
+ hvsr_out['hvsr_windows_df']['Log10_HV_Curves'+colSuffix] = logStackedata
6785
+ hvsr_log_std[colID] = np.nanstd(np.stack(hvsr_out['hvsr_windows_df']['Log10_HV_Curves'+colSuffix][hvsrDF['Use']]), axis=0)
6787
6786
 
6788
6787
  #The components are already calculated, don't need to recalculate aren't calculated at the time-step level
6789
6788
  hvsrp[colID] = np.add(hvsr_out['hvsr_curve'], hvsr_out['ind_hvsr_stdDev'][colID])
@@ -932,24 +932,29 @@ def create_jupyter_ui():
932
932
 
933
933
  return plot_list_list
934
934
 
935
- def parse_hv_plot_list(hv_data, hvsr_plot_list):
935
+ def parse_hv_plot_list(hv_data, hvsr_plot_list, azimuth='HV'):
936
936
  hvsr_data = hv_data
937
937
  x_data = hvsr_data.x_freqs['Z']
938
938
  hvsrDF = hvsr_data.hvsr_windows_df
939
+ if azimuth == 'HV':
940
+ HVCol = 'HV_Curves'
941
+ else:
942
+ HVCol = 'HV_Curves_'+azimuth
939
943
 
940
944
  if 'tp' in hvsr_plot_list:
941
945
  allpeaks = []
942
- for row in hvsrDF[hvsrDF['Use']]['CurvesPeakFreqs'].values:
946
+ for row in hvsrDF[hvsrDF['Use']]['CurvesPeakFreqs_'+azimuth].values:
943
947
  for peak in row:
944
948
  allpeaks.append(peak)
945
949
  allInd = []
946
- for row, peakList in enumerate(hvsrDF[hvsrDF['Use']]['CurvesPeakIndices'].values):
950
+ for row, peakList in enumerate(hvsrDF[hvsrDF['Use']]['CurvesPeakIndices_'+azimuth].values):
947
951
  for ind in peakList:
948
952
  allInd.append((row, ind))
949
953
  x_vals = []
950
954
  y_vals = []
951
- y_max = np.nanmax(hvsr_data.hvsrp)
952
- hvCurveInd = list(hvsrDF.columns).index('HV_Curves')
955
+ y_max = np.nanmax(hvsr_data.hvsrp[azimuth])
956
+ hvCurveInd = list(hvsrDF.columns).index(HVCol)
957
+
953
958
  for i, tp in enumerate(allpeaks):
954
959
  x_vals.extend([tp, tp, None]) # add two x values and a None
955
960
  y_vals.extend([0, hvsrDF.iloc[allInd[i][0], hvCurveInd][allInd[i][1]], None]) # add the first and last y values and a None
@@ -961,7 +966,7 @@ def create_jupyter_ui():
961
966
  row=1, col=1)
962
967
 
963
968
  if 't' in hvsr_plot_list:
964
- alltimecurves = np.stack(hvsrDF[hvsrDF['Use']]['HV_Curves'])
969
+ alltimecurves = np.stack(hvsrDF[hvsrDF['Use']][HVCol])
965
970
  for i, row in enumerate(alltimecurves):
966
971
  if i==0:
967
972
  showLeg = True
@@ -970,13 +975,13 @@ def create_jupyter_ui():
970
975
  results_fig.add_trace(go.Scatter(x=x_data[:-1], y=row, mode='lines',
971
976
  line=dict(width=0.5, dash="solid",
972
977
  color="rgba(100, 110, 100, 0.8)"),
973
- showlegend=showLeg,
978
+ showlegend=showLeg,
974
979
  name='Ind. time win. curve',
975
980
  hoverinfo='none'),
976
981
  row=1, col=1)
977
982
 
978
983
  if 'all' in hvsr_plot_list:
979
- for i, p in enumerate(hvsr_data['hvsr_peak_freqs']):
984
+ for i, p in enumerate(hvsr_data['hvsr_peak_freqs'][azimuth]):
980
985
  if i==0:
981
986
  showLeg = True
982
987
  else:
@@ -984,7 +989,7 @@ def create_jupyter_ui():
984
989
 
985
990
  results_fig.add_trace(go.Scatter(
986
991
  x=[p, p, None], # set x to None
987
- y=[0, np.nanmax(np.stack(hvsrDF['HV_Curves'])),None], # set y to None
992
+ y=[0, np.nanmax(np.stack(hvsrDF[HVCol])),None], # set y to None
988
993
  mode="lines", # set mode to lines
989
994
  line=dict(width=1, dash="dot", color="gray"), # set line properties
990
995
  name="All checked peaks", # set legend name
@@ -993,13 +998,13 @@ def create_jupyter_ui():
993
998
 
994
999
  if '-s' not in hvsr_plot_list:
995
1000
  # Show standard deviation
996
- results_fig.add_trace(go.Scatter(x=x_data, y=hvsr_data.hvsrp2,
1001
+ results_fig.add_trace(go.Scatter(x=x_data, y=hvsr_data.hvsrp2[azimuth],
997
1002
  line={'color':'black', 'width':0.1},marker=None,
998
1003
  showlegend=False, name='Log. St.Dev. Upper',
999
1004
  hoverinfo='none'),
1000
1005
  row=1, col=1)
1001
1006
 
1002
- results_fig.add_trace(go.Scatter(x=x_data, y=hvsr_data.hvsrm2,
1007
+ results_fig.add_trace(go.Scatter(x=x_data, y=hvsr_data.hvsrm2[azimuth],
1003
1008
  line={'color':'black', 'width':0.1},marker=None,
1004
1009
  fill='tonexty', fillcolor="rgba(128, 128, 128, 0.6)",
1005
1010
  name='Log. St.Dev.', hoverinfo='none'),
@@ -1007,7 +1012,7 @@ def create_jupyter_ui():
1007
1012
 
1008
1013
  if 'p' in hvsr_plot_list:
1009
1014
  results_fig.add_trace(go.Scatter(
1010
- x=[hvsr_data['BestPeak']['f0'], hvsr_data['BestPeak']['f0'], None], # set x to None
1015
+ x=[hvsr_data['BestPeak'][azimuth]['f0'], hvsr_data['BestPeak'][azimuth]['f0'], None], # set x to None
1011
1016
  y=[0,np.nanmax(np.stack(hvsrDF['HV_Curves'])),None], # set y to None
1012
1017
  mode="lines", # set mode to lines
1013
1018
  line=dict(width=1, dash="dash", color="black"), # set line properties
@@ -1016,15 +1021,15 @@ def create_jupyter_ui():
1016
1021
 
1017
1022
  if 'ann' in hvsr_plot_list:
1018
1023
  # Annotate best peak
1019
- results_fig.add_annotation(x=np.log10(hvsr_data['BestPeak']['f0']),
1024
+ results_fig.add_annotation(x=np.log10(hvsr_data['BestPeak'][azimuth]['f0']),
1020
1025
  y=0, yanchor='bottom', xanchor='center',
1021
- text=f"{hvsr_data['BestPeak']['f0']:.3f} Hz",
1026
+ text=f"{hvsr_data['BestPeak'][azimuth]['f0']:.3f} Hz",
1022
1027
  bgcolor='rgba(255, 255, 255, 0.7)',
1023
1028
  showarrow=False,
1024
1029
  row=1, col=1)
1025
1030
  return results_fig
1026
1031
 
1027
- def parse_comp_plot_list(hv_data, comp_plot_list):
1032
+ def parse_comp_plot_list(hv_data, comp_plot_list, azimuth='HV'):
1028
1033
 
1029
1034
  hvsr_data = hv_data
1030
1035
  # Initial setup
@@ -1043,12 +1048,13 @@ def create_jupyter_ui():
1043
1048
 
1044
1049
  alpha = 0.4 * transparency_modifier
1045
1050
  components = ['Z', 'E', 'N']
1051
+
1046
1052
  compColor_semi_light = {'Z':f'rgba(128,128,128,{alpha})',
1047
1053
  'E':f'rgba(0,0,128,{alpha})',
1048
1054
  'N':f'rgba(128,0,0,{alpha})'}
1049
1055
 
1050
1056
  alpha = 0.7 * transparency_modifier
1051
- compColor_semi = {'Z':f'rgba(128,128,128,{alpha})',
1057
+ compColor_semi = {'Z':f'rgba(128,128,128,{alpha})',
1052
1058
  'E':f'rgba(100,100,128,{alpha})',
1053
1059
  'N':f'rgba(128,100,100,{alpha})'}
1054
1060
 
@@ -1056,6 +1062,12 @@ def create_jupyter_ui():
1056
1062
  'E':f'rgba(100,100,250,{alpha})',
1057
1063
  'N':f'rgba(250,100,100,{alpha})'}
1058
1064
 
1065
+ for az in hvsr_data.hvsr_az.keys():
1066
+ components.append(az)
1067
+ compColor_semi_light[az] = f'rgba(0,128,0,{alpha})'
1068
+ compColor_semi[az] = f'rgba(100,128,100,{alpha})'
1069
+ compColor[az] = f'rgba(100,250,100,{alpha})'
1070
+
1059
1071
  # Whether to plot in new subplot or not
1060
1072
  if comp_plot_list != [] and '+' in comp_plot_list[0]:
1061
1073
  compRow=2
@@ -1114,7 +1126,7 @@ def create_jupyter_ui():
1114
1126
  maxVal = np.nanmax(currPPSDCurve)
1115
1127
 
1116
1128
  results_fig.add_trace(go.Scatter(
1117
- x=[hvsr_data['BestPeak']['f0'], hvsr_data['BestPeak']['f0'], None], # set x to None
1129
+ x=[hvsr_data['BestPeak'][azimuth]['f0'], hvsr_data['BestPeak'][azimuth]['f0'], None], # set x to None
1118
1130
  y=[minVal,maxVal,None], # set y to None
1119
1131
  mode="lines", # set mode to lines
1120
1132
  line=dict(width=1, dash="dash", color="black"), # set line properties
@@ -1130,9 +1142,9 @@ def create_jupyter_ui():
1130
1142
  currPPSDCurve = hvsr_data['psd_values_tavg'][comp]
1131
1143
  if np.nanmin(currPPSDCurve) < minVal:
1132
1144
  minVal = np.nanmin(currPPSDCurve)
1133
- results_fig.add_annotation(x=np.log10(hvsr_data['BestPeak']['f0']),
1145
+ results_fig.add_annotation(x=np.log10(hvsr_data['BestPeak'][azimuth]['f0']),
1134
1146
  y=minVal,
1135
- text=f"{hvsr_data['BestPeak']['f0']:.3f} Hz",
1147
+ text=f"{hvsr_data['BestPeak'][azimuth]['f0']:.3f} Hz",
1136
1148
  bgcolor='rgba(255, 255, 255, 0.7)',
1137
1149
  showarrow=False,
1138
1150
  yref=yaxis_to_use,
@@ -1157,13 +1169,18 @@ def create_jupyter_ui():
1157
1169
  row=compRow, col=1)
1158
1170
  return results_fig
1159
1171
 
1160
- def parse_spec_plot_list(hv_data, spec_plot_list, subplot_num):
1172
+ def parse_spec_plot_list(hv_data, spec_plot_list, subplot_num, azimuth='HV'):
1161
1173
  hvsr_data = hv_data
1174
+ if azimuth == 'HV':
1175
+ HVCol = 'HV_Curves'
1176
+ else:
1177
+ HVCol = 'HV_Curves_'+azimuth
1178
+
1162
1179
  # Initial setup
1163
1180
  hvsrDF = hvsr_data.hvsr_windows_df
1164
1181
  specAxisTimes = np.array([dt.isoformat() for dt in hvsrDF.index.to_pydatetime()])
1165
1182
  y_data = hvsr_data.x_freqs['Z'][1:]
1166
- image_data = np.stack(hvsrDF['HV_Curves']).T
1183
+ image_data = np.stack(hvsrDF[HVCol]).T
1167
1184
 
1168
1185
  maxZ = np.percentile(image_data, 100)
1169
1186
  minZ = np.percentile(image_data, 0)
@@ -1195,7 +1212,7 @@ def create_jupyter_ui():
1195
1212
  # tp currently is not being added to spec_plot_list
1196
1213
  if 'tp' in spec_plot_list:
1197
1214
  yvals = []
1198
- for row in hvsrDF['HV_Curves'].values:
1215
+ for row in hvsrDF[HVCol].values:
1199
1216
  maxInd = np.argmax(row)
1200
1217
  yvals.append(y_data[maxInd])
1201
1218
  tp_trace = go.Scatter(x=specAxisTimes, y=yvals, mode='markers',
@@ -1203,12 +1220,12 @@ def create_jupyter_ui():
1203
1220
  results_fig.add_trace(tp_trace, row=subplot_num, col='all')
1204
1221
 
1205
1222
  if 'p' in spec_plot_list:
1206
- results_fig.add_hline(y=hvsr_data['BestPeak']['f0'], line_width=1, line_dash='dash', line_color='black', row=subplot_num, col='all')
1223
+ results_fig.add_hline(y=hvsr_data['BestPeak'][azimuth]['f0'], line_width=1, line_dash='dash', line_color='black', row=subplot_num, col='all')
1207
1224
 
1208
1225
  if 'ann' in spec_plot_list:
1209
1226
  results_fig.add_annotation(x=specAxisTimes[-1],
1210
1227
  y=hvsr_data['hvsr_band'][1],
1211
- text=f"Peak: {hvsr_data['BestPeak']['f0']:.3f} Hz",
1228
+ text=f"Peak: {hvsr_data['BestPeak'][azimuth]['f0']:.3f} Hz",
1212
1229
  bgcolor='rgba(255, 255, 255, 0.7)',
1213
1230
  showarrow=False, xanchor='right', yanchor='top',
1214
1231
  row=subplot_num, col='all')
@@ -1221,7 +1238,7 @@ def create_jupyter_ui():
1221
1238
  row=subplot_num, col=1)
1222
1239
 
1223
1240
  results_fig.add_annotation(
1224
- text=f"{hvsrDF['Use'].sum()}/{hvsrDF.shape[0]} windows used",
1241
+ text=f"{hvsrDF['Use'].astype(bool).sum()}/{hvsrDF.shape[0]} windows used",
1225
1242
  x=max(specAxisTimes),
1226
1243
  y=np.log10(min(y_data))+(np.log10(max(y_data))-np.log10(min(y_data)))*0.01,
1227
1244
  xanchor="right", yanchor="bottom",bgcolor='rgba(256,256,256,0.7)',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sprit
3
- Version: 0.1.72.dev0
3
+ Version: 0.1.77.dev0
4
4
  Summary: A package for processing and analyzing HVSR (Horizontal to Vertical Spectral Ratio) data
5
5
  Author: Riley Balikian, Hongyu Xaio
6
6
  Author-email: balikian@illinois.edu
@@ -1 +0,0 @@
1
- {"theme_name": "default"}
File without changes
File without changes
File without changes