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,92 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>563</width>
10
+ <height>26</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Form</string>
15
+ </property>
16
+ <layout class="QHBoxLayout" name="horizontalLayout">
17
+ <property name="leftMargin">
18
+ <number>0</number>
19
+ </property>
20
+ <property name="topMargin">
21
+ <number>0</number>
22
+ </property>
23
+ <property name="rightMargin">
24
+ <number>0</number>
25
+ </property>
26
+ <property name="bottomMargin">
27
+ <number>0</number>
28
+ </property>
29
+ <item>
30
+ <widget class="QCheckBox" name="checkBox_dataset">
31
+ <property name="sizePolicy">
32
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
33
+ <horstretch>0</horstretch>
34
+ <verstretch>0</verstretch>
35
+ </sizepolicy>
36
+ </property>
37
+ <property name="text">
38
+ <string>CheckBox</string>
39
+ </property>
40
+ <property name="checked">
41
+ <bool>true</bool>
42
+ </property>
43
+ </widget>
44
+ </item>
45
+ <item>
46
+ <widget class="QLabel" name="label_region">
47
+ <property name="text">
48
+ <string>pxm</string>
49
+ </property>
50
+ <property name="alignment">
51
+ <set>Qt::AlignCenter</set>
52
+ </property>
53
+ </widget>
54
+ </item>
55
+ <item>
56
+ <widget class="QComboBox" name="comboBox_group">
57
+ <property name="toolTip">
58
+ <string>group</string>
59
+ </property>
60
+ <item>
61
+ <property name="text">
62
+ <string>control</string>
63
+ </property>
64
+ </item>
65
+ <item>
66
+ <property name="text">
67
+ <string>treatment</string>
68
+ </property>
69
+ </item>
70
+ </widget>
71
+ </item>
72
+ <item>
73
+ <widget class="QSpinBox" name="spinBox_repeat">
74
+ <property name="toolTip">
75
+ <string>repetition</string>
76
+ </property>
77
+ <property name="prefix">
78
+ <string>rep. </string>
79
+ </property>
80
+ <property name="minimum">
81
+ <number>1</number>
82
+ </property>
83
+ <property name="maximum">
84
+ <number>42</number>
85
+ </property>
86
+ </widget>
87
+ </item>
88
+ </layout>
89
+ </widget>
90
+ <resources/>
91
+ <connections/>
92
+ </ui>
@@ -0,0 +1,120 @@
1
+ import pathlib
2
+ import importlib.resources
3
+
4
+ import dclab
5
+ import numpy as np
6
+ from PyQt6 import uic, QtCore, QtGui, QtWidgets
7
+
8
+
9
+ class Rlme4ResultsDialog(QtWidgets.QDialog):
10
+ def __init__(self, parent, rlme4_results, *args, **kwargs):
11
+ super(Rlme4ResultsDialog, self).__init__(parent, *args, **kwargs)
12
+ ref = importlib.resources.files(
13
+ "dcscope.gui.compute") / "comp_lme4_results.ui"
14
+ with importlib.resources.as_file(ref) as path_ui:
15
+ uic.loadUi(path_ui, self)
16
+
17
+ res = rlme4_results
18
+
19
+ # parameters
20
+ self.label_model.setText(res["model"])
21
+ self.label_feature.setText(dclab.dfn.get_feature_label(res["feature"]))
22
+ if res["is differential"]:
23
+ self.label_differential.setText("Yes")
24
+ else:
25
+ self.label_differential.setText("No")
26
+
27
+ # results
28
+ if res["model converged"]:
29
+ self.label_yes.show()
30
+ self.label_no.hide()
31
+ else:
32
+ self.label_yes.hide()
33
+ self.label_no.show()
34
+ self.lineEdit_pvalue.setText(format_float(res["anova p-value"]))
35
+ self.lineEdit_intercept.setText(
36
+ format_float(res["fixed effects intercept"]))
37
+ self.lineEdit_treatment.setText(
38
+ format_float(res["fixed effects treatment"]))
39
+
40
+ # summary text
41
+ summary = []
42
+ if res["lme4 messages"]:
43
+ summary += ["lme4 messages"]
44
+ summary += ["-------------"]
45
+ summary += str(res["lme4 messages"]).split("\n")
46
+ summary += "\n"
47
+ summary += ["Model summary"]
48
+ summary += ["-------------"]
49
+ summary += self.parse_r_model_summary(
50
+ str(res["r model summary"]).split("\n"))
51
+ summary += "\n"
52
+ summary += ["Coefficient table"]
53
+ summary += ["-----------------"]
54
+ summary += str(res["r model coefficients"]).split("\n")
55
+ summary += "\n"
56
+ summary += ["Anova test"]
57
+ summary += ["----------"]
58
+ summary += str(res["r anova"]).split("\n")
59
+ excludelines = [
60
+ "$repetition",
61
+ 'attr(,"clas',
62
+ '[1] "coef.m',
63
+ "Data: struc",
64
+ ]
65
+ summary = [ll for ll in summary if not ll[:11] in excludelines]
66
+
67
+ self.summary = summary
68
+ font = QtGui.QFont("Courier")
69
+ self.plainTextEdit.setFont(font)
70
+ self.plainTextEdit.setPlainText("\n".join(summary))
71
+
72
+ # button signals
73
+ btn_close = self.buttonBox.button(
74
+ QtWidgets.QDialogButtonBox.StandardButton.Close)
75
+ btn_close.clicked.connect(self.on_close)
76
+ btn_close.setToolTip("Close this dialog")
77
+ closeicon = QtGui.QIcon.fromTheme("dialog-close")
78
+ btn_close.setIcon(closeicon)
79
+ btn_openlme4 = self.buttonBox.button(
80
+ QtWidgets.QDialogButtonBox.StandardButton.Apply)
81
+ btn_openlme4.clicked.connect(self.on_save)
82
+ btn_openlme4.setToolTip("Save report as text file")
83
+ btn_openlme4.setText("Save report (.txt)")
84
+
85
+ @staticmethod
86
+ def parse_r_model_summary(slist):
87
+ """Parse model summary from R (remove data lines)"""
88
+ use = []
89
+ just_data = False
90
+ for line in slist:
91
+ if line.startswith(" Data: "):
92
+ just_data = True
93
+ elif line.startswith("REML criterion "):
94
+ just_data = False
95
+ if not just_data:
96
+ use.append(line)
97
+ return use
98
+
99
+ @QtCore.pyqtSlot()
100
+ def on_close(self):
101
+ """Close window"""
102
+ self.close()
103
+
104
+ @QtCore.pyqtSlot()
105
+ def on_save(self):
106
+ """Save summary text as .txt file"""
107
+ path, _ = QtWidgets.QFileDialog.getSaveFileName(
108
+ self, "Save summary", ".", "*.txt (*.txt files)")
109
+ if path:
110
+ path = pathlib.Path(path)
111
+ if path.suffix != ".txt":
112
+ path = path.with_name(path.name + ".txt")
113
+ path.write_text("\n".join(self.summary))
114
+
115
+
116
+ def format_float(value):
117
+ return np.format_float_positional(value,
118
+ precision=5,
119
+ fractional=False,
120
+ trim="0")
@@ -0,0 +1,268 @@
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>684</width>
10
+ <height>573</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>R-lme4 results</string>
15
+ </property>
16
+ <layout class="QVBoxLayout" name="verticalLayout">
17
+ <item>
18
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
19
+ <item>
20
+ <widget class="QGroupBox" name="groupBox">
21
+ <property name="title">
22
+ <string>Parameters</string>
23
+ </property>
24
+ <layout class="QGridLayout" name="gridLayout">
25
+ <item row="2" column="1">
26
+ <widget class="QLabel" name="label_differential">
27
+ <property name="text">
28
+ <string>Yes/No</string>
29
+ </property>
30
+ </widget>
31
+ </item>
32
+ <item row="0" column="1">
33
+ <widget class="QLabel" name="label_model">
34
+ <property name="text">
35
+ <string>model</string>
36
+ </property>
37
+ </widget>
38
+ </item>
39
+ <item row="1" column="1">
40
+ <widget class="QLabel" name="label_feature">
41
+ <property name="text">
42
+ <string>feat</string>
43
+ </property>
44
+ </widget>
45
+ </item>
46
+ <item row="0" column="0">
47
+ <widget class="QLabel" name="label_5">
48
+ <property name="text">
49
+ <string>Model</string>
50
+ </property>
51
+ </widget>
52
+ </item>
53
+ <item row="2" column="0">
54
+ <widget class="QLabel" name="label_7">
55
+ <property name="text">
56
+ <string>Differential</string>
57
+ </property>
58
+ </widget>
59
+ </item>
60
+ <item row="1" column="0">
61
+ <widget class="QLabel" name="label_6">
62
+ <property name="text">
63
+ <string>Feature</string>
64
+ </property>
65
+ </widget>
66
+ </item>
67
+ <item row="3" column="0">
68
+ <spacer name="spacer_parms">
69
+ <property name="orientation">
70
+ <enum>Qt::Vertical</enum>
71
+ </property>
72
+ <property name="sizeType">
73
+ <enum>QSizePolicy::Fixed</enum>
74
+ </property>
75
+ <property name="sizeHint" stdset="0">
76
+ <size>
77
+ <width>20</width>
78
+ <height>30</height>
79
+ </size>
80
+ </property>
81
+ </spacer>
82
+ </item>
83
+ </layout>
84
+ </widget>
85
+ </item>
86
+ <item>
87
+ <widget class="QGroupBox" name="groupBox_2">
88
+ <property name="title">
89
+ <string>Results</string>
90
+ </property>
91
+ <layout class="QGridLayout" name="gridLayout_2">
92
+ <item row="3" column="0">
93
+ <widget class="QLabel" name="label_3">
94
+ <property name="toolTip">
95
+ <string>The effect size of the parameter chosen between the mean of all controls and the mean of all treatments</string>
96
+ </property>
97
+ <property name="text">
98
+ <string>Fixed effect treatment</string>
99
+ </property>
100
+ </widget>
101
+ </item>
102
+ <item row="2" column="1">
103
+ <widget class="QLineEdit" name="lineEdit_intercept">
104
+ <property name="toolTip">
105
+ <string>The mean of the parameter chosen for all controls</string>
106
+ </property>
107
+ <property name="text">
108
+ <string>nan</string>
109
+ </property>
110
+ <property name="readOnly">
111
+ <bool>true</bool>
112
+ </property>
113
+ </widget>
114
+ </item>
115
+ <item row="3" column="1">
116
+ <widget class="QLineEdit" name="lineEdit_treatment">
117
+ <property name="toolTip">
118
+ <string>The effect size of the parameter chosen between the mean of all controls and the mean of all treatments</string>
119
+ </property>
120
+ <property name="text">
121
+ <string>nan</string>
122
+ </property>
123
+ <property name="readOnly">
124
+ <bool>true</bool>
125
+ </property>
126
+ </widget>
127
+ </item>
128
+ <item row="1" column="0">
129
+ <widget class="QLabel" name="label_2">
130
+ <property name="toolTip">
131
+ <string>The p-value of the ANOVA test</string>
132
+ </property>
133
+ <property name="text">
134
+ <string>Anova p-value</string>
135
+ </property>
136
+ </widget>
137
+ </item>
138
+ <item row="2" column="0">
139
+ <widget class="QLabel" name="label_4">
140
+ <property name="toolTip">
141
+ <string>The mean of the parameter chosen for all controls</string>
142
+ </property>
143
+ <property name="text">
144
+ <string>Fixed effect intercept</string>
145
+ </property>
146
+ </widget>
147
+ </item>
148
+ <item row="0" column="0">
149
+ <widget class="QLabel" name="label">
150
+ <property name="text">
151
+ <string>Model converged</string>
152
+ </property>
153
+ </widget>
154
+ </item>
155
+ <item row="0" column="1">
156
+ <layout class="QHBoxLayout" name="horizontalLayout">
157
+ <item>
158
+ <widget class="QLabel" name="label_yes">
159
+ <property name="styleSheet">
160
+ <string notr="true">QLabel {
161
+ color: green;
162
+ font-weight:600}</string>
163
+ </property>
164
+ <property name="text">
165
+ <string>Yes</string>
166
+ </property>
167
+ </widget>
168
+ </item>
169
+ <item>
170
+ <widget class="QLabel" name="label_no">
171
+ <property name="styleSheet">
172
+ <string notr="true">QLabel {
173
+ color: red;
174
+ font-weight:600}</string>
175
+ </property>
176
+ <property name="text">
177
+ <string>No</string>
178
+ </property>
179
+ </widget>
180
+ </item>
181
+ <item>
182
+ <spacer name="horizontalSpacer">
183
+ <property name="orientation">
184
+ <enum>Qt::Horizontal</enum>
185
+ </property>
186
+ <property name="sizeHint" stdset="0">
187
+ <size>
188
+ <width>0</width>
189
+ <height>0</height>
190
+ </size>
191
+ </property>
192
+ </spacer>
193
+ </item>
194
+ </layout>
195
+ </item>
196
+ <item row="1" column="1">
197
+ <widget class="QLineEdit" name="lineEdit_pvalue">
198
+ <property name="toolTip">
199
+ <string>The p-value of the ANOVA test</string>
200
+ </property>
201
+ <property name="text">
202
+ <string>nan</string>
203
+ </property>
204
+ <property name="readOnly">
205
+ <bool>true</bool>
206
+ </property>
207
+ </widget>
208
+ </item>
209
+ </layout>
210
+ </widget>
211
+ </item>
212
+ </layout>
213
+ </item>
214
+ <item>
215
+ <widget class="QPlainTextEdit" name="plainTextEdit">
216
+ <property name="readOnly">
217
+ <bool>true</bool>
218
+ </property>
219
+ </widget>
220
+ </item>
221
+ <item>
222
+ <widget class="QDialogButtonBox" name="buttonBox">
223
+ <property name="orientation">
224
+ <enum>Qt::Horizontal</enum>
225
+ </property>
226
+ <property name="standardButtons">
227
+ <set>QDialogButtonBox::Apply|QDialogButtonBox::Close</set>
228
+ </property>
229
+ </widget>
230
+ </item>
231
+ </layout>
232
+ </widget>
233
+ <resources/>
234
+ <connections>
235
+ <connection>
236
+ <sender>buttonBox</sender>
237
+ <signal>accepted()</signal>
238
+ <receiver>Dialog</receiver>
239
+ <slot>accept()</slot>
240
+ <hints>
241
+ <hint type="sourcelabel">
242
+ <x>227</x>
243
+ <y>553</y>
244
+ </hint>
245
+ <hint type="destinationlabel">
246
+ <x>157</x>
247
+ <y>274</y>
248
+ </hint>
249
+ </hints>
250
+ </connection>
251
+ <connection>
252
+ <sender>buttonBox</sender>
253
+ <signal>rejected()</signal>
254
+ <receiver>Dialog</receiver>
255
+ <slot>reject()</slot>
256
+ <hints>
257
+ <hint type="sourcelabel">
258
+ <x>295</x>
259
+ <y>559</y>
260
+ </hint>
261
+ <hint type="destinationlabel">
262
+ <x>286</x>
263
+ <y>274</y>
264
+ </hint>
265
+ </hints>
266
+ </connection>
267
+ </connections>
268
+ </ui>