dcscope 2.22.1__py3-none-any.whl

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 (267) hide show
  1. dcscope/__init__.py +17 -0
  2. dcscope/__main__.py +44 -0
  3. dcscope/_version.py +21 -0
  4. dcscope/extensions.py +250 -0
  5. dcscope/gui/__init__.py +2 -0
  6. dcscope/gui/analysis/__init__.py +10 -0
  7. dcscope/gui/analysis/ana_basins.py +110 -0
  8. dcscope/gui/analysis/ana_basins.ui +143 -0
  9. dcscope/gui/analysis/ana_filter.py +341 -0
  10. dcscope/gui/analysis/ana_filter.ui +364 -0
  11. dcscope/gui/analysis/ana_log.py +122 -0
  12. dcscope/gui/analysis/ana_log.ui +100 -0
  13. dcscope/gui/analysis/ana_meta.py +207 -0
  14. dcscope/gui/analysis/ana_meta.ui +141 -0
  15. dcscope/gui/analysis/ana_plot.py +638 -0
  16. dcscope/gui/analysis/ana_plot.ui +1060 -0
  17. dcscope/gui/analysis/ana_slot.py +504 -0
  18. dcscope/gui/analysis/ana_slot.ui +684 -0
  19. dcscope/gui/analysis/ana_tables.py +227 -0
  20. dcscope/gui/analysis/ana_tables.ui +195 -0
  21. dcscope/gui/analysis/ana_view.py +69 -0
  22. dcscope/gui/analysis/ana_view.ui +269 -0
  23. dcscope/gui/analysis/dlg_slot_reorder.py +55 -0
  24. dcscope/gui/analysis/dlg_slot_reorder.ui +138 -0
  25. dcscope/gui/bulk/__init__.py +2 -0
  26. dcscope/gui/bulk/bulk_emodulus.py +200 -0
  27. dcscope/gui/bulk/bulk_emodulus.ui +245 -0
  28. dcscope/gui/compute/__init__.py +3 -0
  29. dcscope/gui/compute/comp_lme4.py +115 -0
  30. dcscope/gui/compute/comp_lme4.ui +194 -0
  31. dcscope/gui/compute/comp_lme4_dataset.py +51 -0
  32. dcscope/gui/compute/comp_lme4_dataset.ui +92 -0
  33. dcscope/gui/compute/comp_lme4_results.py +120 -0
  34. dcscope/gui/compute/comp_lme4_results.ui +268 -0
  35. dcscope/gui/compute/comp_stats.py +223 -0
  36. dcscope/gui/compute/comp_stats.ui +187 -0
  37. dcscope/gui/dcor/__init__.py +304 -0
  38. dcscope/gui/dcor/dcor.ui +118 -0
  39. dcscope/gui/export/__init__.py +3 -0
  40. dcscope/gui/export/e2data.py +394 -0
  41. dcscope/gui/export/e2data.ui +367 -0
  42. dcscope/gui/export/e2filter.py +76 -0
  43. dcscope/gui/export/e2filter.ui +111 -0
  44. dcscope/gui/export/e2plot.py +94 -0
  45. dcscope/gui/export/e2plot.ui +175 -0
  46. dcscope/gui/main.py +1089 -0
  47. dcscope/gui/main.ui +579 -0
  48. dcscope/gui/matrix/__init__.py +4 -0
  49. dcscope/gui/matrix/block_matrix.py +141 -0
  50. dcscope/gui/matrix/block_matrix.ui +207 -0
  51. dcscope/gui/matrix/data_matrix.py +574 -0
  52. dcscope/gui/matrix/dm_dataset.py +116 -0
  53. dcscope/gui/matrix/dm_dataset.ui +348 -0
  54. dcscope/gui/matrix/dm_element.py +111 -0
  55. dcscope/gui/matrix/dm_element.ui +169 -0
  56. dcscope/gui/matrix/dm_filter.py +115 -0
  57. dcscope/gui/matrix/dm_filter.ui +287 -0
  58. dcscope/gui/matrix/plot_matrix.py +316 -0
  59. dcscope/gui/matrix/pm_element.py +39 -0
  60. dcscope/gui/matrix/pm_plot.py +86 -0
  61. dcscope/gui/matrix/pm_plot.ui +249 -0
  62. dcscope/gui/pipeline_plot.py +797 -0
  63. dcscope/gui/pipeline_plot.ui +66 -0
  64. dcscope/gui/preferences.py +380 -0
  65. dcscope/gui/preferences.ui +554 -0
  66. dcscope/gui/quick_view/__init__.py +1 -0
  67. dcscope/gui/quick_view/qv_main.py +1072 -0
  68. dcscope/gui/quick_view/qv_main.ui +1297 -0
  69. dcscope/gui/quick_view/qv_scatter.py +284 -0
  70. dcscope/gui/quick_view/qv_style.css +10 -0
  71. dcscope/gui/update.py +90 -0
  72. dcscope/gui/widgets/__init__.py +15 -0
  73. dcscope/gui/widgets/bg_thread.py +29 -0
  74. dcscope/gui/widgets/bulk_list.py +79 -0
  75. dcscope/gui/widgets/bulk_list.ui +95 -0
  76. dcscope/gui/widgets/double_spin_box_nan.py +75 -0
  77. dcscope/gui/widgets/feature_combobox.py +140 -0
  78. dcscope/gui/widgets/get_path.py +42 -0
  79. dcscope/gui/widgets/key_value_table_widget.css +12 -0
  80. dcscope/gui/widgets/key_value_table_widget.py +75 -0
  81. dcscope/gui/widgets/mdi_subwindow_wo_close.py +12 -0
  82. dcscope/gui/widgets/qrangeslider.py +262 -0
  83. dcscope/gui/widgets/rangecontrol.py +308 -0
  84. dcscope/gui/widgets/rangecontrol.ui +136 -0
  85. dcscope/gui/widgets/simple_image_view.py +55 -0
  86. dcscope/gui/widgets/simple_plot_widget.py +113 -0
  87. dcscope/gui/widgets/so_colorbaritem.py +29 -0
  88. dcscope/gui/widgets/wait_cursor.py +33 -0
  89. dcscope/idiom.py +26 -0
  90. dcscope/img/__init__.py +2 -0
  91. dcscope/img/icon-theme/breeze/COPYING-ICONS +209 -0
  92. dcscope/img/icon-theme/breeze/COPYING.LIB +510 -0
  93. dcscope/img/icon-theme/breeze/README +5 -0
  94. dcscope/img/icon-theme/breeze/actions/16/application-exit.svg +17 -0
  95. dcscope/img/icon-theme/breeze/actions/16/code-context.svg +13 -0
  96. dcscope/img/icon-theme/breeze/actions/16/dialog-cancel.svg +13 -0
  97. dcscope/img/icon-theme/breeze/actions/16/dialog-close.svg +17 -0
  98. dcscope/img/icon-theme/breeze/actions/16/dialog-messages.svg +13 -0
  99. dcscope/img/icon-theme/breeze/actions/16/dialog-ok-apply.svg +13 -0
  100. dcscope/img/icon-theme/breeze/actions/16/dialog-ok.svg +13 -0
  101. dcscope/img/icon-theme/breeze/actions/16/document-open-folder.svg +13 -0
  102. dcscope/img/icon-theme/breeze/actions/16/document-open.svg +13 -0
  103. dcscope/img/icon-theme/breeze/actions/16/document-save.svg +13 -0
  104. dcscope/img/icon-theme/breeze/actions/16/documentinfo.svg +12 -0
  105. dcscope/img/icon-theme/breeze/actions/16/draw-watercolor.svg +13 -0
  106. dcscope/img/icon-theme/breeze/actions/16/edit-clear-all.svg +13 -0
  107. dcscope/img/icon-theme/breeze/actions/16/edit-clear.svg +13 -0
  108. dcscope/img/icon-theme/breeze/actions/16/edit-paste.svg +13 -0
  109. dcscope/img/icon-theme/breeze/actions/16/globe.svg +16 -0
  110. dcscope/img/icon-theme/breeze/actions/16/gtk-preferences.svg +13 -0
  111. dcscope/img/icon-theme/breeze/actions/16/list-add.svg +13 -0
  112. dcscope/img/icon-theme/breeze/actions/16/messagebox_warning.svg +20 -0
  113. dcscope/img/icon-theme/breeze/actions/16/object-columns.svg +13 -0
  114. dcscope/img/icon-theme/breeze/actions/16/object-order-lower.svg +13 -0
  115. dcscope/img/icon-theme/breeze/actions/16/object-rows.svg +13 -0
  116. dcscope/img/icon-theme/breeze/actions/16/office-chart-line-stacked.svg +13 -0
  117. dcscope/img/icon-theme/breeze/actions/16/office-chart-ring.svg +13 -0
  118. dcscope/img/icon-theme/breeze/actions/16/office-chart-scatter.svg +13 -0
  119. dcscope/img/icon-theme/breeze/actions/16/path-mode-polyline.svg +13 -0
  120. dcscope/img/icon-theme/breeze/actions/16/preferences-activities.svg +13 -0
  121. dcscope/img/icon-theme/breeze/actions/16/remove.svg +10 -0
  122. dcscope/img/icon-theme/breeze/actions/16/search.svg +13 -0
  123. dcscope/img/icon-theme/breeze/actions/16/show-grid.svg +13 -0
  124. dcscope/img/icon-theme/breeze/actions/16/special_paste.svg +13 -0
  125. dcscope/img/icon-theme/breeze/actions/16/tools-wizard.svg +13 -0
  126. dcscope/img/icon-theme/breeze/actions/16/view-calendar-list.svg +13 -0
  127. dcscope/img/icon-theme/breeze/actions/16/view-filter.svg +13 -0
  128. dcscope/img/icon-theme/breeze/actions/16/view-list-tree.svg +13 -0
  129. dcscope/img/icon-theme/breeze/actions/16/view-statistics.svg +13 -0
  130. dcscope/img/icon-theme/breeze/actions/16/visibility.svg +21 -0
  131. dcscope/img/icon-theme/breeze/actions/22/application-exit.svg +13 -0
  132. dcscope/img/icon-theme/breeze/actions/22/code-context.svg +14 -0
  133. dcscope/img/icon-theme/breeze/actions/22/dialog-cancel.svg +14 -0
  134. dcscope/img/icon-theme/breeze/actions/22/dialog-close.svg +10 -0
  135. dcscope/img/icon-theme/breeze/actions/22/dialog-messages.svg +14 -0
  136. dcscope/img/icon-theme/breeze/actions/22/dialog-ok-apply.svg +14 -0
  137. dcscope/img/icon-theme/breeze/actions/22/dialog-ok.svg +14 -0
  138. dcscope/img/icon-theme/breeze/actions/22/document-open-folder.svg +14 -0
  139. dcscope/img/icon-theme/breeze/actions/22/document-open.svg +14 -0
  140. dcscope/img/icon-theme/breeze/actions/22/document-save.svg +14 -0
  141. dcscope/img/icon-theme/breeze/actions/22/documentinfo.svg +14 -0
  142. dcscope/img/icon-theme/breeze/actions/22/draw-watercolor.svg +14 -0
  143. dcscope/img/icon-theme/breeze/actions/22/edit-clear-all.svg +14 -0
  144. dcscope/img/icon-theme/breeze/actions/22/edit-clear.svg +14 -0
  145. dcscope/img/icon-theme/breeze/actions/22/edit-paste.svg +14 -0
  146. dcscope/img/icon-theme/breeze/actions/22/globe.svg +12 -0
  147. dcscope/img/icon-theme/breeze/actions/22/gtk-preferences.svg +13 -0
  148. dcscope/img/icon-theme/breeze/actions/22/list-add.svg +14 -0
  149. dcscope/img/icon-theme/breeze/actions/22/messagebox_warning.svg +17 -0
  150. dcscope/img/icon-theme/breeze/actions/22/object-columns.svg +14 -0
  151. dcscope/img/icon-theme/breeze/actions/22/object-order-lower.svg +17 -0
  152. dcscope/img/icon-theme/breeze/actions/22/object-rows.svg +17 -0
  153. dcscope/img/icon-theme/breeze/actions/22/office-chart-line-stacked.svg +17 -0
  154. dcscope/img/icon-theme/breeze/actions/22/office-chart-ring.svg +17 -0
  155. dcscope/img/icon-theme/breeze/actions/22/office-chart-scatter.svg +17 -0
  156. dcscope/img/icon-theme/breeze/actions/22/path-mode-polyline.svg +17 -0
  157. dcscope/img/icon-theme/breeze/actions/22/preferences-activities.svg +14 -0
  158. dcscope/img/icon-theme/breeze/actions/22/remove.svg +10 -0
  159. dcscope/img/icon-theme/breeze/actions/22/special_paste.svg +14 -0
  160. dcscope/img/icon-theme/breeze/actions/22/tools-wizard.svg +14 -0
  161. dcscope/img/icon-theme/breeze/actions/22/view-calendar-list.svg +14 -0
  162. dcscope/img/icon-theme/breeze/actions/22/view-filter.svg +14 -0
  163. dcscope/img/icon-theme/breeze/actions/22/view-list-tree.svg +14 -0
  164. dcscope/img/icon-theme/breeze/actions/22/view-statistics.svg +14 -0
  165. dcscope/img/icon-theme/breeze/actions/22/visibility.svg +14 -0
  166. dcscope/img/icon-theme/breeze/actions/24/application-exit.svg +12 -0
  167. dcscope/img/icon-theme/breeze/actions/24/code-context.svg +12 -0
  168. dcscope/img/icon-theme/breeze/actions/24/dialog-cancel.svg +12 -0
  169. dcscope/img/icon-theme/breeze/actions/24/dialog-close.svg +10 -0
  170. dcscope/img/icon-theme/breeze/actions/24/dialog-messages.svg +12 -0
  171. dcscope/img/icon-theme/breeze/actions/24/dialog-ok-apply.svg +12 -0
  172. dcscope/img/icon-theme/breeze/actions/24/dialog-ok.svg +14 -0
  173. dcscope/img/icon-theme/breeze/actions/24/document-open-folder.svg +12 -0
  174. dcscope/img/icon-theme/breeze/actions/24/document-open.svg +12 -0
  175. dcscope/img/icon-theme/breeze/actions/24/document-save.svg +12 -0
  176. dcscope/img/icon-theme/breeze/actions/24/documentinfo.svg +14 -0
  177. dcscope/img/icon-theme/breeze/actions/24/draw-watercolor.svg +12 -0
  178. dcscope/img/icon-theme/breeze/actions/24/edit-clear-all.svg +14 -0
  179. dcscope/img/icon-theme/breeze/actions/24/edit-clear.svg +12 -0
  180. dcscope/img/icon-theme/breeze/actions/24/edit-paste.svg +12 -0
  181. dcscope/img/icon-theme/breeze/actions/24/globe.svg +14 -0
  182. dcscope/img/icon-theme/breeze/actions/24/gtk-preferences.svg +13 -0
  183. dcscope/img/icon-theme/breeze/actions/24/list-add.svg +12 -0
  184. dcscope/img/icon-theme/breeze/actions/24/messagebox_warning.svg +13 -0
  185. dcscope/img/icon-theme/breeze/actions/24/object-columns.svg +12 -0
  186. dcscope/img/icon-theme/breeze/actions/24/object-order-lower.svg +15 -0
  187. dcscope/img/icon-theme/breeze/actions/24/object-rows.svg +15 -0
  188. dcscope/img/icon-theme/breeze/actions/24/office-chart-line-stacked.svg +15 -0
  189. dcscope/img/icon-theme/breeze/actions/24/office-chart-ring.svg +15 -0
  190. dcscope/img/icon-theme/breeze/actions/24/office-chart-scatter.svg +15 -0
  191. dcscope/img/icon-theme/breeze/actions/24/path-mode-polyline.svg +15 -0
  192. dcscope/img/icon-theme/breeze/actions/24/preferences-activities.svg +13 -0
  193. dcscope/img/icon-theme/breeze/actions/24/remove.svg +10 -0
  194. dcscope/img/icon-theme/breeze/actions/24/special_paste.svg +12 -0
  195. dcscope/img/icon-theme/breeze/actions/24/tools-wizard.svg +12 -0
  196. dcscope/img/icon-theme/breeze/actions/24/view-calendar-list.svg +12 -0
  197. dcscope/img/icon-theme/breeze/actions/24/view-filter.svg +12 -0
  198. dcscope/img/icon-theme/breeze/actions/24/view-list-tree.svg +12 -0
  199. dcscope/img/icon-theme/breeze/actions/24/view-statistics.svg +12 -0
  200. dcscope/img/icon-theme/breeze/actions/24/visibility.svg +14 -0
  201. dcscope/img/icon-theme/breeze/actions/32/application-exit.svg +8 -0
  202. dcscope/img/icon-theme/breeze/actions/32/dialog-cancel.svg +13 -0
  203. dcscope/img/icon-theme/breeze/actions/32/dialog-messages.svg +13 -0
  204. dcscope/img/icon-theme/breeze/actions/32/dialog-ok-apply.svg +1 -0
  205. dcscope/img/icon-theme/breeze/actions/32/dialog-ok.svg +1 -0
  206. dcscope/img/icon-theme/breeze/actions/32/document-open-folder.svg +13 -0
  207. dcscope/img/icon-theme/breeze/actions/32/document-open.svg +13 -0
  208. dcscope/img/icon-theme/breeze/actions/32/document-save.svg +18 -0
  209. dcscope/img/icon-theme/breeze/actions/32/gtk-preferences.svg +17 -0
  210. dcscope/img/icon-theme/breeze/actions/32/object-order-lower.svg +18 -0
  211. dcscope/img/icon-theme/breeze/actions/32/view-filter.svg +18 -0
  212. dcscope/img/icon-theme/breeze/actions/32/view-list-tree.svg +18 -0
  213. dcscope/img/icon-theme/breeze/places/16/folder-cloud.svg +13 -0
  214. dcscope/img/icon-theme/breeze/places/16/folder.svg +13 -0
  215. dcscope/img/icon-theme/breeze/places/22/folder-cloud.svg +13 -0
  216. dcscope/img/icon-theme/breeze/places/22/folder.svg +13 -0
  217. dcscope/img/icon-theme/breeze/places/24/folder-cloud.svg +12 -0
  218. dcscope/img/icon-theme/breeze/places/24/folder.svg +12 -0
  219. dcscope/img/icon-theme/breeze/places/32/folder-cloud.svg +35 -0
  220. dcscope/img/icon-theme/breeze/places/32/folder.svg +30 -0
  221. dcscope/img/icon-theme/breeze/places/64/folder-cloud.svg +35 -0
  222. dcscope/img/icon-theme/breeze/places/64/folder.svg +30 -0
  223. dcscope/img/icon-theme/breeze/status/16/dialog-error.svg +9 -0
  224. dcscope/img/icon-theme/breeze/status/16/dialog-information.svg +9 -0
  225. dcscope/img/icon-theme/breeze/status/16/dialog-question.svg +7 -0
  226. dcscope/img/icon-theme/breeze/status/16/dialog-warning.svg +9 -0
  227. dcscope/img/icon-theme/breeze/status/22/dialog-error.svg +9 -0
  228. dcscope/img/icon-theme/breeze/status/22/dialog-information.svg +9 -0
  229. dcscope/img/icon-theme/breeze/status/22/dialog-question.svg +7 -0
  230. dcscope/img/icon-theme/breeze/status/22/dialog-warning.svg +9 -0
  231. dcscope/img/icon-theme/breeze/status/24/dialog-error.svg +13 -0
  232. dcscope/img/icon-theme/breeze/status/24/dialog-information.svg +13 -0
  233. dcscope/img/icon-theme/breeze/status/24/dialog-question.svg +9 -0
  234. dcscope/img/icon-theme/breeze/status/24/dialog-warning.svg +1 -0
  235. dcscope/img/icon-theme/breeze/status/64/dialog-error.svg +25 -0
  236. dcscope/img/icon-theme/breeze/status/64/dialog-information.svg +25 -0
  237. dcscope/img/icon-theme/breeze/status/64/dialog-question.svg +25 -0
  238. dcscope/img/icon-theme/breeze/status/64/dialog-warning.svg +25 -0
  239. dcscope/img/icon-theme/collect_icons.py +124 -0
  240. dcscope/img/icon-theme/dcscope/dcor.png +0 -0
  241. dcscope/img/icon-theme/dcscope/edit-copy-anew.svg +13 -0
  242. dcscope/img/icon-theme/dcscope/emodulus.svg +69 -0
  243. dcscope/img/icon-theme/dcscope/filter_ray.svg +54 -0
  244. dcscope/img/icon-theme/dcscope/region_channel.svg +86 -0
  245. dcscope/img/icon-theme/dcscope/region_reservoir.svg +89 -0
  246. dcscope/img/icon-theme/dcscope/rlang.svg +108 -0
  247. dcscope/img/icon-theme/dcscope/statistical_significance.svg +106 -0
  248. dcscope/img/icon-theme/index.theme +81 -0
  249. dcscope/img/icon.png +0 -0
  250. dcscope/img/icon.svg +73 -0
  251. dcscope/img/splash.png +0 -0
  252. dcscope/meta_tool.py +143 -0
  253. dcscope/pipeline/__init__.py +5 -0
  254. dcscope/pipeline/core.py +632 -0
  255. dcscope/pipeline/dataslot.py +270 -0
  256. dcscope/pipeline/filter.py +161 -0
  257. dcscope/pipeline/filter_ray.py +170 -0
  258. dcscope/pipeline/plot.py +187 -0
  259. dcscope/plot_cache.py +79 -0
  260. dcscope/session.py +379 -0
  261. dcscope/util.py +34 -0
  262. dcscope-2.22.1.dist-info/METADATA +95 -0
  263. dcscope-2.22.1.dist-info/RECORD +267 -0
  264. dcscope-2.22.1.dist-info/WHEEL +5 -0
  265. dcscope-2.22.1.dist-info/entry_points.txt +2 -0
  266. dcscope-2.22.1.dist-info/licenses/LICENSE +621 -0
  267. dcscope-2.22.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,245 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Dialog</class>
4
+ <widget class="QDialog" name="Dialog">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>400</width>
10
+ <height>274</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Young's modulus computation</string>
15
+ </property>
16
+ <property name="windowIcon">
17
+ <iconset theme="view-statistics"/>
18
+ </property>
19
+ <layout class="QVBoxLayout" name="verticalLayout">
20
+ <item>
21
+ <widget class="QLabel" name="label">
22
+ <property name="text">
23
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Here you can set the parameters for Young's modulus computation for all datasets loaded. This is the bulk-version of the corresponding options in the &lt;span style=&quot; font-style:italic;&quot;&gt;Dataset &lt;/span&gt; tab in the &lt;span style=&quot; font-style:italic;&quot;&gt;Analysis View&lt;/span&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
24
+ </property>
25
+ <property name="wordWrap">
26
+ <bool>true</bool>
27
+ </property>
28
+ </widget>
29
+ </item>
30
+ <item>
31
+ <layout class="QGridLayout" name="gridLayout">
32
+ <item row="1" column="2">
33
+ <widget class="DoubleSpinBoxNan" name="doubleSpinBox_temp">
34
+ <property name="wrapping">
35
+ <bool>false</bool>
36
+ </property>
37
+ <property name="readOnly">
38
+ <bool>false</bool>
39
+ </property>
40
+ <property name="specialValueText">
41
+ <string/>
42
+ </property>
43
+ <property name="suffix">
44
+ <string>°C</string>
45
+ </property>
46
+ <property name="minimum">
47
+ <double>10.000000000000000</double>
48
+ </property>
49
+ <property name="maximum">
50
+ <double>45.000000000000000</double>
51
+ </property>
52
+ <property name="value">
53
+ <double>23.000000000000000</double>
54
+ </property>
55
+ </widget>
56
+ </item>
57
+ <item row="0" column="1">
58
+ <widget class="QComboBox" name="comboBox_medium">
59
+ <property name="currentIndex">
60
+ <number>0</number>
61
+ </property>
62
+ <item>
63
+ <property name="text">
64
+ <string>CellCarrier</string>
65
+ </property>
66
+ </item>
67
+ <item>
68
+ <property name="text">
69
+ <string>CellCarrier B</string>
70
+ </property>
71
+ </item>
72
+ <item>
73
+ <property name="text">
74
+ <string>water</string>
75
+ </property>
76
+ </item>
77
+ <item>
78
+ <property name="text">
79
+ <string>other</string>
80
+ </property>
81
+ </item>
82
+ <item>
83
+ <property name="text">
84
+ <string>unknown</string>
85
+ </property>
86
+ </item>
87
+ </widget>
88
+ </item>
89
+ <item row="0" column="0">
90
+ <widget class="QLabel" name="label_6">
91
+ <property name="text">
92
+ <string>Medium</string>
93
+ </property>
94
+ </widget>
95
+ </item>
96
+ <item row="1" column="3">
97
+ <spacer name="horizontalSpacer">
98
+ <property name="orientation">
99
+ <enum>Qt::Orientation::Horizontal</enum>
100
+ </property>
101
+ <property name="sizeHint" stdset="0">
102
+ <size>
103
+ <width>0</width>
104
+ <height>20</height>
105
+ </size>
106
+ </property>
107
+ </spacer>
108
+ </item>
109
+ <item row="2" column="1">
110
+ <widget class="QComboBox" name="comboBox_visc_model">
111
+ <item>
112
+ <property name="text">
113
+ <string>buyukurganci-2022</string>
114
+ </property>
115
+ </item>
116
+ <item>
117
+ <property name="text">
118
+ <string>herold-2017</string>
119
+ </property>
120
+ </item>
121
+ </widget>
122
+ </item>
123
+ <item row="1" column="1">
124
+ <widget class="QComboBox" name="comboBox_temp">
125
+ <item>
126
+ <property name="text">
127
+ <string>Configuration</string>
128
+ </property>
129
+ </item>
130
+ <item>
131
+ <property name="text">
132
+ <string>Feature</string>
133
+ </property>
134
+ </item>
135
+ <item>
136
+ <property name="text">
137
+ <string>Manual</string>
138
+ </property>
139
+ </item>
140
+ </widget>
141
+ </item>
142
+ <item row="2" column="0">
143
+ <widget class="QLabel" name="label_8">
144
+ <property name="text">
145
+ <string>Viscosity</string>
146
+ </property>
147
+ </widget>
148
+ </item>
149
+ <item row="1" column="0">
150
+ <widget class="QLabel" name="label_temp">
151
+ <property name="text">
152
+ <string>Temperature</string>
153
+ </property>
154
+ </widget>
155
+ </item>
156
+ <item row="2" column="2">
157
+ <widget class="DoubleSpinBoxNan" name="doubleSpinBox_visc">
158
+ <property name="showGroupSeparator" stdset="0">
159
+ <bool>false</bool>
160
+ </property>
161
+ <property name="suffix">
162
+ <string> mPa·s</string>
163
+ </property>
164
+ </widget>
165
+ </item>
166
+ <item row="3" column="0">
167
+ <widget class="QLabel" name="label_2">
168
+ <property name="text">
169
+ <string>Look-up table</string>
170
+ </property>
171
+ </widget>
172
+ </item>
173
+ <item row="3" column="1">
174
+ <widget class="QComboBox" name="comboBox_lut"/>
175
+ </item>
176
+ </layout>
177
+ </item>
178
+ <item>
179
+ <spacer name="verticalSpacer">
180
+ <property name="orientation">
181
+ <enum>Qt::Orientation::Vertical</enum>
182
+ </property>
183
+ <property name="sizeHint" stdset="0">
184
+ <size>
185
+ <width>20</width>
186
+ <height>0</height>
187
+ </size>
188
+ </property>
189
+ </spacer>
190
+ </item>
191
+ <item>
192
+ <widget class="QDialogButtonBox" name="buttonBox">
193
+ <property name="orientation">
194
+ <enum>Qt::Orientation::Horizontal</enum>
195
+ </property>
196
+ <property name="standardButtons">
197
+ <set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
198
+ </property>
199
+ </widget>
200
+ </item>
201
+ </layout>
202
+ </widget>
203
+ <customwidgets>
204
+ <customwidget>
205
+ <class>DoubleSpinBoxNan</class>
206
+ <extends>QDoubleSpinBox</extends>
207
+ <header>dcscope.gui.widgets</header>
208
+ </customwidget>
209
+ </customwidgets>
210
+ <resources/>
211
+ <connections>
212
+ <connection>
213
+ <sender>buttonBox</sender>
214
+ <signal>accepted()</signal>
215
+ <receiver>Dialog</receiver>
216
+ <slot>accept()</slot>
217
+ <hints>
218
+ <hint type="sourcelabel">
219
+ <x>248</x>
220
+ <y>254</y>
221
+ </hint>
222
+ <hint type="destinationlabel">
223
+ <x>157</x>
224
+ <y>274</y>
225
+ </hint>
226
+ </hints>
227
+ </connection>
228
+ <connection>
229
+ <sender>buttonBox</sender>
230
+ <signal>rejected()</signal>
231
+ <receiver>Dialog</receiver>
232
+ <slot>reject()</slot>
233
+ <hints>
234
+ <hint type="sourcelabel">
235
+ <x>316</x>
236
+ <y>260</y>
237
+ </hint>
238
+ <hint type="destinationlabel">
239
+ <x>286</x>
240
+ <y>274</y>
241
+ </hint>
242
+ </hints>
243
+ </connection>
244
+ </connections>
245
+ </ui>
@@ -0,0 +1,3 @@
1
+ # flake8: noqa: F401
2
+ from .comp_lme4 import ComputeSignificance
3
+ from .comp_stats import ComputeStatistics
@@ -0,0 +1,115 @@
1
+ import importlib.resources
2
+ import webbrowser
3
+
4
+ from dclab import lme4
5
+ from PyQt6 import uic, QtCore, QtGui, QtWidgets
6
+
7
+ from .comp_lme4_dataset import LME4Dataset
8
+ from .comp_lme4_results import Rlme4ResultsDialog
9
+
10
+ from ..widgets import ShowWaitCursor
11
+
12
+
13
+ class ComputeSignificance(QtWidgets.QDialog):
14
+ def __init__(self, parent, pipeline, *args, **kwargs):
15
+ super(ComputeSignificance, self).__init__(parent, *args, **kwargs)
16
+ ref = importlib.resources.files(
17
+ "dcscope.gui.compute") / "comp_lme4.ui"
18
+ with importlib.resources.as_file(ref) as path_ui:
19
+ uic.loadUi(path_ui, self)
20
+
21
+ # set pipeline
22
+ self.pipeline = pipeline
23
+
24
+ # populate feature combo box
25
+ feats, labs = pipeline.get_features(scalar=True, label_sort=True,
26
+ union=False, ret_labels=True)
27
+ for feat, lab in zip(feats, labs):
28
+ self.comboBox_feat.addItem(lab, feat)
29
+
30
+ # populate datasets
31
+ self.datasets = []
32
+ for slot in self.pipeline.slots:
33
+ dw = LME4Dataset(self, slot=slot)
34
+ self.dataset_layout.addWidget(dw)
35
+ self.datasets.append(dw)
36
+ spacer = QtWidgets.QSpacerItem(20, 0,
37
+ QtWidgets.QSizePolicy.Policy.Minimum,
38
+ QtWidgets.QSizePolicy.Policy.Expanding)
39
+ self.dataset_layout.addItem(spacer)
40
+ self.update()
41
+
42
+ # button signals
43
+ btn_close = self.buttonBox.button(
44
+ QtWidgets.QDialogButtonBox.StandardButton.Close)
45
+ btn_close.clicked.connect(self.on_close)
46
+ btn_close.setToolTip("Close this dialog")
47
+ closeicon = QtGui.QIcon.fromTheme("dialog-close")
48
+ btn_close.setIcon(closeicon)
49
+ btn_openlme4 = self.buttonBox.button(
50
+ QtWidgets.QDialogButtonBox.StandardButton.Apply)
51
+ btn_openlme4.clicked.connect(self.on_lme4)
52
+ btn_openlme4.setToolTip("Perform lme4 analysis")
53
+ btn_openlme4.setText("Run R-lme4")
54
+ picon = QtGui.QIcon.fromTheme("rlang")
55
+ btn_openlme4.setIcon(picon)
56
+ btn_help = self.buttonBox.button(
57
+ QtWidgets.QDialogButtonBox.StandardButton.Help)
58
+ btn_help.clicked.connect(self.on_help)
59
+ btn_help.setToolTip("View R-lme4 Quick Guide online")
60
+ helpicon = QtGui.QIcon.fromTheme("documentinfo")
61
+ btn_help.setIcon(helpicon)
62
+
63
+ @property
64
+ def feature(self):
65
+ return self.comboBox_feat.currentData()
66
+
67
+ @property
68
+ def model(self):
69
+ if self.radioButton_lmer.isChecked():
70
+ return "lmer"
71
+ else:
72
+ return "glmer+loglink"
73
+
74
+ @QtCore.pyqtSlot()
75
+ def on_lme4(self, ret_dlg=False):
76
+ """Run lme4 analysis
77
+
78
+ Parameters
79
+ ----------
80
+ ret_dlg: bool
81
+ If set to True, then the dialog is returned without
82
+ `_exec`uting it (used for testing).
83
+ """
84
+ self.setEnabled(False)
85
+ # set R HOME from settings
86
+ settings = QtCore.QSettings()
87
+ r_path = settings.value("lme4/r path", "")
88
+ if r_path:
89
+ lme4.set_r_path(r_path)
90
+ r_libs_path = settings.value("lme4/r libs user", "")
91
+ if r_libs_path:
92
+ lme4.set_r_lib_path(r_libs_path)
93
+ # compute LMM
94
+ with ShowWaitCursor():
95
+ rlme4 = lme4.Rlme4(model=self.model, feature=self.feature)
96
+ for wds in self.datasets:
97
+ wds.add_to_rlme4(self.pipeline, rlme4)
98
+ result = rlme4.fit()
99
+ self.setEnabled(True)
100
+ dlg = Rlme4ResultsDialog(self, result)
101
+ if ret_dlg:
102
+ return dlg
103
+ else:
104
+ dlg.exec()
105
+
106
+ @QtCore.pyqtSlot()
107
+ def on_close(self):
108
+ """Close window"""
109
+ self.close()
110
+
111
+ @QtCore.pyqtSlot()
112
+ def on_help(self):
113
+ """Show DCscope docs"""
114
+ webbrowser.open(
115
+ "https://dclab.readthedocs.io/en/stable/sec_av_lme4.html")
@@ -0,0 +1,194 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Dialog</class>
4
+ <widget class="QDialog" name="Dialog">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>593</width>
10
+ <height>544</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Compute statistical significance with R-lme4</string>
15
+ </property>
16
+ <property name="windowIcon">
17
+ <iconset theme="statistical_significance">
18
+ <normaloff>../../../../../.designer/backup</normaloff>../../../../../.designer/backup</iconset>
19
+ </property>
20
+ <layout class="QVBoxLayout" name="verticalLayout_3">
21
+ <item>
22
+ <widget class="QLabel" name="label">
23
+ <property name="text">
24
+ <string>Compute the statistical significance using linear mixed-effects models</string>
25
+ </property>
26
+ </widget>
27
+ </item>
28
+ <item>
29
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
30
+ <item>
31
+ <widget class="QLabel" name="label_2">
32
+ <property name="text">
33
+ <string>Model:</string>
34
+ </property>
35
+ </widget>
36
+ </item>
37
+ <item>
38
+ <widget class="QRadioButton" name="radioButton_lmer">
39
+ <property name="toolTip">
40
+ <string>linear mixed-effects model</string>
41
+ </property>
42
+ <property name="text">
43
+ <string>lmer</string>
44
+ </property>
45
+ <property name="checked">
46
+ <bool>true</bool>
47
+ </property>
48
+ </widget>
49
+ </item>
50
+ <item>
51
+ <widget class="QRadioButton" name="radioButton_glmer">
52
+ <property name="toolTip">
53
+ <string>generalized linear mixed-effects model with a log-link function</string>
54
+ </property>
55
+ <property name="text">
56
+ <string>glmer+loglink</string>
57
+ </property>
58
+ </widget>
59
+ </item>
60
+ <item>
61
+ <spacer name="horizontalSpacer">
62
+ <property name="orientation">
63
+ <enum>Qt::Horizontal</enum>
64
+ </property>
65
+ <property name="sizeHint" stdset="0">
66
+ <size>
67
+ <width>40</width>
68
+ <height>20</height>
69
+ </size>
70
+ </property>
71
+ </spacer>
72
+ </item>
73
+ </layout>
74
+ </item>
75
+ <item>
76
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
77
+ <item>
78
+ <widget class="QLabel" name="label_3">
79
+ <property name="text">
80
+ <string>Feature:</string>
81
+ </property>
82
+ </widget>
83
+ </item>
84
+ <item>
85
+ <widget class="QComboBox" name="comboBox_feat">
86
+ <property name="sizePolicy">
87
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
88
+ <horstretch>0</horstretch>
89
+ <verstretch>0</verstretch>
90
+ </sizepolicy>
91
+ </property>
92
+ </widget>
93
+ </item>
94
+ <item>
95
+ <spacer name="horizontalSpacer_2">
96
+ <property name="orientation">
97
+ <enum>Qt::Horizontal</enum>
98
+ </property>
99
+ <property name="sizeHint" stdset="0">
100
+ <size>
101
+ <width>40</width>
102
+ <height>20</height>
103
+ </size>
104
+ </property>
105
+ </spacer>
106
+ </item>
107
+ </layout>
108
+ </item>
109
+ <item>
110
+ <widget class="QLabel" name="label_4">
111
+ <property name="text">
112
+ <string>Datasets:</string>
113
+ </property>
114
+ </widget>
115
+ </item>
116
+ <item>
117
+ <widget class="QScrollArea" name="scrollArea">
118
+ <property name="horizontalScrollBarPolicy">
119
+ <enum>Qt::ScrollBarAlwaysOff</enum>
120
+ </property>
121
+ <property name="sizeAdjustPolicy">
122
+ <enum>QAbstractScrollArea::AdjustToContents</enum>
123
+ </property>
124
+ <property name="widgetResizable">
125
+ <bool>true</bool>
126
+ </property>
127
+ <widget class="QWidget" name="scrollAreaWidgetContents">
128
+ <property name="geometry">
129
+ <rect>
130
+ <x>0</x>
131
+ <y>0</y>
132
+ <width>573</width>
133
+ <height>396</height>
134
+ </rect>
135
+ </property>
136
+ <layout class="QVBoxLayout" name="verticalLayout_4">
137
+ <item>
138
+ <layout class="QVBoxLayout" name="dataset_layout"/>
139
+ </item>
140
+ </layout>
141
+ </widget>
142
+ </widget>
143
+ </item>
144
+ <item>
145
+ <widget class="QDialogButtonBox" name="buttonBox">
146
+ <property name="orientation">
147
+ <enum>Qt::Horizontal</enum>
148
+ </property>
149
+ <property name="standardButtons">
150
+ <set>QDialogButtonBox::Apply|QDialogButtonBox::Close|QDialogButtonBox::Help</set>
151
+ </property>
152
+ <property name="centerButtons">
153
+ <bool>false</bool>
154
+ </property>
155
+ </widget>
156
+ </item>
157
+ </layout>
158
+ </widget>
159
+ <resources/>
160
+ <connections>
161
+ <connection>
162
+ <sender>buttonBox</sender>
163
+ <signal>accepted()</signal>
164
+ <receiver>Dialog</receiver>
165
+ <slot>accept()</slot>
166
+ <hints>
167
+ <hint type="sourcelabel">
168
+ <x>248</x>
169
+ <y>254</y>
170
+ </hint>
171
+ <hint type="destinationlabel">
172
+ <x>157</x>
173
+ <y>274</y>
174
+ </hint>
175
+ </hints>
176
+ </connection>
177
+ <connection>
178
+ <sender>buttonBox</sender>
179
+ <signal>rejected()</signal>
180
+ <receiver>Dialog</receiver>
181
+ <slot>reject()</slot>
182
+ <hints>
183
+ <hint type="sourcelabel">
184
+ <x>316</x>
185
+ <y>260</y>
186
+ </hint>
187
+ <hint type="destinationlabel">
188
+ <x>286</x>
189
+ <y>274</y>
190
+ </hint>
191
+ </hints>
192
+ </connection>
193
+ </connections>
194
+ </ui>
@@ -0,0 +1,51 @@
1
+ import importlib.resources
2
+
3
+ from PyQt6 import uic, QtGui, QtWidgets
4
+
5
+ from ... import meta_tool
6
+
7
+
8
+ class LME4Dataset(QtWidgets.QDialog):
9
+ def __init__(self, parent, slot, *args, **kwargs):
10
+ super(LME4Dataset, self).__init__(parent, *args, **kwargs)
11
+ ref = importlib.resources.files(
12
+ "dcscope.gui.compute") / "comp_lme4_dataset.ui"
13
+ with importlib.resources.as_file(ref) as path_ui:
14
+ uic.loadUi(path_ui, self)
15
+
16
+ self.identifier = slot.identifier
17
+
18
+ # set dataset label
19
+ self.checkBox_dataset.setText(slot.name)
20
+
21
+ # set region icon
22
+ region = meta_tool.get_info(slot.path,
23
+ section="setup",
24
+ key="chip region")
25
+ icon = QtGui.QIcon.fromTheme("region_{}".format(region))
26
+ pixmap = icon.pixmap(16)
27
+ self.label_region.setPixmap(pixmap)
28
+ self.label_region.setToolTip(region)
29
+
30
+ def add_to_rlme4(self, pipeline, rlme4):
31
+ """Add the dataset to an Rlme4 analysis
32
+
33
+ Parameters
34
+ ----------
35
+ pipeline: dcscope.pipeline.core.Pipeline
36
+ The pipeline from which to extract the filtered dataset
37
+ using `self.identifier`.
38
+ rlme4: dclab.lme4.wrapr.Rlme4
39
+ The analysis to which to append this dataset.
40
+
41
+ Notes
42
+ -----
43
+ If the check box is not checked, then the dataset is ignored.
44
+ """
45
+ if self.checkBox_dataset.isChecked():
46
+ ds_index = pipeline.slot_ids.index(self.identifier)
47
+ ds = pipeline.get_dataset(ds_index)
48
+ group_id = self.comboBox_group.currentIndex()
49
+ group = "control" if group_id == 0 else "treatment"
50
+ repetition = self.spinBox_repeat.value()
51
+ rlme4.add_dataset(ds=ds, group=group, repetition=repetition)