celldetective 1.4.2__py3-none-any.whl → 1.5.0b0__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 (151) hide show
  1. celldetective/__init__.py +25 -0
  2. celldetective/__main__.py +62 -43
  3. celldetective/_version.py +1 -1
  4. celldetective/extra_properties.py +477 -399
  5. celldetective/filters.py +192 -97
  6. celldetective/gui/InitWindow.py +541 -411
  7. celldetective/gui/__init__.py +0 -15
  8. celldetective/gui/about.py +44 -39
  9. celldetective/gui/analyze_block.py +120 -84
  10. celldetective/gui/base/__init__.py +0 -0
  11. celldetective/gui/base/channel_norm_generator.py +335 -0
  12. celldetective/gui/base/components.py +249 -0
  13. celldetective/gui/base/feature_choice.py +92 -0
  14. celldetective/gui/base/figure_canvas.py +52 -0
  15. celldetective/gui/base/list_widget.py +133 -0
  16. celldetective/gui/{styles.py → base/styles.py} +92 -36
  17. celldetective/gui/base/utils.py +33 -0
  18. celldetective/gui/base_annotator.py +900 -767
  19. celldetective/gui/classifier_widget.py +6 -22
  20. celldetective/gui/configure_new_exp.py +777 -671
  21. celldetective/gui/control_panel.py +635 -524
  22. celldetective/gui/dynamic_progress.py +449 -0
  23. celldetective/gui/event_annotator.py +2023 -1662
  24. celldetective/gui/generic_signal_plot.py +1292 -944
  25. celldetective/gui/gui_utils.py +899 -1289
  26. celldetective/gui/interactions_block.py +658 -0
  27. celldetective/gui/interactive_timeseries_viewer.py +447 -0
  28. celldetective/gui/json_readers.py +48 -15
  29. celldetective/gui/layouts/__init__.py +5 -0
  30. celldetective/gui/layouts/background_model_free_layout.py +537 -0
  31. celldetective/gui/layouts/channel_offset_layout.py +134 -0
  32. celldetective/gui/layouts/local_correction_layout.py +91 -0
  33. celldetective/gui/layouts/model_fit_layout.py +372 -0
  34. celldetective/gui/layouts/operation_layout.py +68 -0
  35. celldetective/gui/layouts/protocol_designer_layout.py +96 -0
  36. celldetective/gui/pair_event_annotator.py +3130 -2435
  37. celldetective/gui/plot_measurements.py +586 -267
  38. celldetective/gui/plot_signals_ui.py +724 -506
  39. celldetective/gui/preprocessing_block.py +395 -0
  40. celldetective/gui/process_block.py +1678 -1831
  41. celldetective/gui/seg_model_loader.py +580 -473
  42. celldetective/gui/settings/__init__.py +0 -7
  43. celldetective/gui/settings/_cellpose_model_params.py +181 -0
  44. celldetective/gui/settings/_event_detection_model_params.py +95 -0
  45. celldetective/gui/settings/_segmentation_model_params.py +159 -0
  46. celldetective/gui/settings/_settings_base.py +77 -65
  47. celldetective/gui/settings/_settings_event_model_training.py +752 -526
  48. celldetective/gui/settings/_settings_measurements.py +1133 -964
  49. celldetective/gui/settings/_settings_neighborhood.py +574 -488
  50. celldetective/gui/settings/_settings_segmentation_model_training.py +779 -564
  51. celldetective/gui/settings/_settings_signal_annotator.py +329 -305
  52. celldetective/gui/settings/_settings_tracking.py +1304 -1094
  53. celldetective/gui/settings/_stardist_model_params.py +98 -0
  54. celldetective/gui/survival_ui.py +422 -312
  55. celldetective/gui/tableUI.py +1665 -1701
  56. celldetective/gui/table_ops/_maths.py +295 -0
  57. celldetective/gui/table_ops/_merge_groups.py +140 -0
  58. celldetective/gui/table_ops/_merge_one_hot.py +95 -0
  59. celldetective/gui/table_ops/_query_table.py +43 -0
  60. celldetective/gui/table_ops/_rename_col.py +44 -0
  61. celldetective/gui/thresholds_gui.py +382 -179
  62. celldetective/gui/viewers/__init__.py +0 -0
  63. celldetective/gui/viewers/base_viewer.py +700 -0
  64. celldetective/gui/viewers/channel_offset_viewer.py +331 -0
  65. celldetective/gui/viewers/contour_viewer.py +394 -0
  66. celldetective/gui/viewers/size_viewer.py +153 -0
  67. celldetective/gui/viewers/spot_detection_viewer.py +341 -0
  68. celldetective/gui/viewers/threshold_viewer.py +309 -0
  69. celldetective/gui/workers.py +304 -126
  70. celldetective/log_manager.py +92 -0
  71. celldetective/measure.py +1895 -1478
  72. celldetective/napari/__init__.py +0 -0
  73. celldetective/napari/utils.py +1025 -0
  74. celldetective/neighborhood.py +1914 -1448
  75. celldetective/preprocessing.py +1620 -1220
  76. celldetective/processes/__init__.py +0 -0
  77. celldetective/processes/background_correction.py +271 -0
  78. celldetective/processes/compute_neighborhood.py +894 -0
  79. celldetective/processes/detect_events.py +246 -0
  80. celldetective/processes/measure_cells.py +565 -0
  81. celldetective/processes/segment_cells.py +760 -0
  82. celldetective/processes/track_cells.py +435 -0
  83. celldetective/processes/train_segmentation_model.py +694 -0
  84. celldetective/processes/train_signal_model.py +265 -0
  85. celldetective/processes/unified_process.py +292 -0
  86. celldetective/regionprops/_regionprops.py +358 -317
  87. celldetective/relative_measurements.py +987 -710
  88. celldetective/scripts/measure_cells.py +313 -212
  89. celldetective/scripts/measure_relative.py +90 -46
  90. celldetective/scripts/segment_cells.py +165 -104
  91. celldetective/scripts/segment_cells_thresholds.py +96 -68
  92. celldetective/scripts/track_cells.py +198 -149
  93. celldetective/scripts/train_segmentation_model.py +324 -201
  94. celldetective/scripts/train_signal_model.py +87 -45
  95. celldetective/segmentation.py +844 -749
  96. celldetective/signals.py +3514 -2861
  97. celldetective/tracking.py +30 -15
  98. celldetective/utils/__init__.py +0 -0
  99. celldetective/utils/cellpose_utils/__init__.py +133 -0
  100. celldetective/utils/color_mappings.py +42 -0
  101. celldetective/utils/data_cleaning.py +630 -0
  102. celldetective/utils/data_loaders.py +450 -0
  103. celldetective/utils/dataset_helpers.py +207 -0
  104. celldetective/utils/downloaders.py +197 -0
  105. celldetective/utils/event_detection/__init__.py +8 -0
  106. celldetective/utils/experiment.py +1782 -0
  107. celldetective/utils/image_augmenters.py +308 -0
  108. celldetective/utils/image_cleaning.py +74 -0
  109. celldetective/utils/image_loaders.py +926 -0
  110. celldetective/utils/image_transforms.py +335 -0
  111. celldetective/utils/io.py +62 -0
  112. celldetective/utils/mask_cleaning.py +348 -0
  113. celldetective/utils/mask_transforms.py +5 -0
  114. celldetective/utils/masks.py +184 -0
  115. celldetective/utils/maths.py +351 -0
  116. celldetective/utils/model_getters.py +325 -0
  117. celldetective/utils/model_loaders.py +296 -0
  118. celldetective/utils/normalization.py +380 -0
  119. celldetective/utils/parsing.py +465 -0
  120. celldetective/utils/plots/__init__.py +0 -0
  121. celldetective/utils/plots/regression.py +53 -0
  122. celldetective/utils/resources.py +34 -0
  123. celldetective/utils/stardist_utils/__init__.py +104 -0
  124. celldetective/utils/stats.py +90 -0
  125. celldetective/utils/types.py +21 -0
  126. {celldetective-1.4.2.dist-info → celldetective-1.5.0b0.dist-info}/METADATA +1 -1
  127. celldetective-1.5.0b0.dist-info/RECORD +187 -0
  128. {celldetective-1.4.2.dist-info → celldetective-1.5.0b0.dist-info}/WHEEL +1 -1
  129. tests/gui/test_new_project.py +129 -117
  130. tests/gui/test_project.py +127 -79
  131. tests/test_filters.py +39 -15
  132. tests/test_notebooks.py +8 -0
  133. tests/test_tracking.py +232 -13
  134. tests/test_utils.py +123 -77
  135. celldetective/gui/base_components.py +0 -23
  136. celldetective/gui/layouts.py +0 -1602
  137. celldetective/gui/processes/compute_neighborhood.py +0 -594
  138. celldetective/gui/processes/measure_cells.py +0 -360
  139. celldetective/gui/processes/segment_cells.py +0 -499
  140. celldetective/gui/processes/track_cells.py +0 -303
  141. celldetective/gui/processes/train_segmentation_model.py +0 -270
  142. celldetective/gui/processes/train_signal_model.py +0 -108
  143. celldetective/gui/table_ops/merge_groups.py +0 -118
  144. celldetective/gui/viewers.py +0 -1354
  145. celldetective/io.py +0 -3663
  146. celldetective/utils.py +0 -3108
  147. celldetective-1.4.2.dist-info/RECORD +0 -123
  148. /celldetective/{gui/processes → processes}/downloader.py +0 -0
  149. {celldetective-1.4.2.dist-info → celldetective-1.5.0b0.dist-info}/entry_points.txt +0 -0
  150. {celldetective-1.4.2.dist-info → celldetective-1.5.0b0.dist-info}/licenses/LICENSE +0 -0
  151. {celldetective-1.4.2.dist-info → celldetective-1.5.0b0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,90 @@
1
+ from typing import Optional, Union, List
2
+
3
+ import pandas as pd
4
+ from cliffs_delta import cliffs_delta
5
+ from scipy.stats import ks_2samp
6
+
7
+
8
+ def test_2samp_generic(
9
+ data: pd.DataFrame,
10
+ feature: Optional[str] = None,
11
+ groupby_cols: Optional[Union[str, List[str]]] = None,
12
+ method="ks_2samp",
13
+ *args,
14
+ **kwargs,
15
+ ) -> pd.DataFrame:
16
+ """
17
+ Performs pairwise statistical tests between groups of data, comparing a specified feature using a chosen method.
18
+
19
+ The function applies two-sample statistical tests, such as the Kolmogorov-Smirnov (KS) test or Cliff's Delta,
20
+ to compare distributions of a given feature across groups defined by `groupby_cols`. It returns the test results
21
+ in a pivot table format with each group's pairwise comparison.
22
+
23
+ Parameters
24
+ ----------
25
+ data : pandas.DataFrame
26
+ The input dataset containing the feature to be tested.
27
+ feature : str
28
+ The name of the column representing the feature to compare between groups.
29
+ groupby_cols : list or str
30
+ The column(s) used to group the data. These columns define the groups that will be compared pairwise.
31
+ method : str, optional, default="ks_2samp"
32
+ The statistical test to use. Options:
33
+ - "ks_2samp": Two-sample Kolmogorov-Smirnov test (default).
34
+ - "cliffs_delta": Cliff's Delta for effect size between two distributions.
35
+ *args, **kwargs :
36
+ Additional arguments and keyword arguments for the selected test method.
37
+
38
+ Returns
39
+ -------
40
+ pivot : pandas.DataFrame
41
+ A pivot table containing the pairwise test results (p-values or effect sizes).
42
+ The rows and columns represent the unique groups defined by `groupby_cols`,
43
+ and the values represent the test result (e.g., p-values or effect sizes) between each group.
44
+
45
+ Notes
46
+ -----
47
+ - The function compares all unique pairwise combinations of the groups based on `groupby_cols`.
48
+ - For the "ks_2samp" method, the test compares the distributions using the Kolmogorov-Smirnov test.
49
+ - For the "cliffs_delta" method, the function calculates the effect size between two distributions.
50
+ - The results are returned in a symmetric pivot table where each cell represents the test result for the corresponding group pair.
51
+
52
+ """
53
+
54
+ assert groupby_cols is not None, "Please set a valid groupby_cols..."
55
+ assert feature is not None, "Please set a feature to test..."
56
+
57
+ results = []
58
+
59
+ for lbl1, group1 in data.dropna(subset=feature).groupby(groupby_cols):
60
+ for lbl2, group2 in data.dropna(subset=feature).groupby(groupby_cols):
61
+
62
+ dist1 = group1[feature].values
63
+ dist2 = group2[feature].values
64
+ if method == "ks_2samp":
65
+ test = ks_2samp(
66
+ list(dist1),
67
+ list(dist2),
68
+ alternative="less",
69
+ mode="auto",
70
+ *args,
71
+ **kwargs,
72
+ )
73
+ val = test.pvalue
74
+ elif method == "cliffs_delta":
75
+ test = cliffs_delta(list(dist1), list(dist2), *args, **kwargs)
76
+ val = test[0]
77
+
78
+ results.append({"cdt1": lbl1, "cdt2": lbl2, "value": val})
79
+
80
+ results = pd.DataFrame(results)
81
+ results["cdt1"] = results["cdt1"].astype(str)
82
+ results["cdt2"] = results["cdt2"].astype(str)
83
+
84
+ pivot = results.pivot(index="cdt1", columns="cdt2", values="value")
85
+ pivot.reset_index(inplace=True)
86
+ pivot.columns.name = None
87
+ pivot.set_index("cdt1", drop=True, inplace=True)
88
+ pivot.index.name = None
89
+
90
+ return pivot
@@ -0,0 +1,21 @@
1
+ import numpy
2
+ import numpy as np
3
+
4
+
5
+ def is_integer_array(arr: np.ndarray) -> bool:
6
+
7
+ # Mask out NaNs
8
+ non_nan_values = arr[arr == arr].flatten()
9
+ test = np.all(np.mod(non_nan_values, 1) == 0)
10
+
11
+ if test:
12
+ return True
13
+ else:
14
+ return False
15
+
16
+
17
+ def test_bool_array(array):
18
+ if array.dtype == "bool":
19
+ return np.array(array, dtype=int)
20
+ else:
21
+ return array
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: celldetective
3
- Version: 1.4.2
3
+ Version: 1.5.0b0
4
4
  Summary: description
5
5
  Home-page: http://github.com/remyeltorro/celldetective
6
6
  Author: Rémy Torro
@@ -0,0 +1,187 @@
1
+ celldetective/__init__.py,sha256=LfnOyfUnYPGDc8xcsF_PfYEL7-CqAb7BMBPBIWGv84o,666
2
+ celldetective/__main__.py,sha256=Rzzu9ArxZSgfBVjV-lyn-3oanQB2MumQR6itK5ZaRpA,2597
3
+ celldetective/_version.py,sha256=AMZ674Vi7YVfxguQYyBETUqhTbHYuk3GDM_LK-X1UBg,23
4
+ celldetective/events.py,sha256=n15R53c7QZ2wT8gjb0oeNikQbuRBrVVbyNsRCqXjzXA,8166
5
+ celldetective/exceptions.py,sha256=f3VmIYOthWTiqMEV5xQCox2rw5c5e7yog88h-CcV4oI,356
6
+ celldetective/extra_properties.py,sha256=s_2R4_El2p-gQNZ_EpgDxgrN3UnRitN7KDKHhyLuoHc,21681
7
+ celldetective/filters.py,sha256=QSRSpqvwUfa0YrU5EKoobJWCQFy07fFHwZ2bXxTL3hE,6933
8
+ celldetective/log_manager.py,sha256=Tv7_mVn0TVOyTs_2VnyEKl9_NMeDUtEkLC5njUq-r-Y,2968
9
+ celldetective/measure.py,sha256=Nlbh-YT7D2uafRRGFTl2a63UDkBkbBXnnMqs9zWXP_I,71854
10
+ celldetective/neighborhood.py,sha256=Z5wu2nSMvabrQz91oy6DRf2o90LUY0RMXTEwgW7ORAg,74844
11
+ celldetective/preprocessing.py,sha256=tjAMLG4ZMfopMSFulGGjMQox7czEcReV2MzEkWlL2eQ,59948
12
+ celldetective/relative_measurements.py,sha256=j7xIj1FiY3kn5nA_wMqHV3wvjqikjnk99kZ7v9G6I5Q,42928
13
+ celldetective/segmentation.py,sha256=Itg8xbfEziQKApA7YCo9FTk8c44OrlsJbvtkik6tkgE,33567
14
+ celldetective/signals.py,sha256=2UURVmeonNgUHpiMQVSps0E9VuskKSbsfsmeCtEmfp8,137484
15
+ celldetective/tracking.py,sha256=pjejp65IltUMjW_tlbxjYW0SoBR1-gaEeSJa0y2cWpw,49286
16
+ celldetective/datasets/segmentation_annotations/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ celldetective/datasets/signal_annotations/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ celldetective/gui/InitWindow.py,sha256=ynelHEkC9USY14MrsHr_HKtC6YPWQOahk3sv-ZcaKFc,20921
19
+ celldetective/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ celldetective/gui/about.py,sha256=l9SA7WnQs3ISPvZYAGMmf1A0GRXcinkyGwWJpG8akFQ,1977
21
+ celldetective/gui/analyze_block.py,sha256=R82PVFHXfKn8BvUCpbjDOkLBNF4xRVCzYKFHitjw0kk,4114
22
+ celldetective/gui/base_annotator.py,sha256=zMvfbuijCiEdPFOGTc_LPxGpdBX-BRtq6VuDXGvXk08,32364
23
+ celldetective/gui/classifier_widget.py,sha256=uQ9KQmUFp6qWy0Aic-AKB9DkGNpOLxaERtYBSIX9RHw,25424
24
+ celldetective/gui/configure_new_exp.py,sha256=vgT6ozRIGDvT3R0qENlqvDn17BpKnwyJRhRhDS6ax8A,29954
25
+ celldetective/gui/control_panel.py,sha256=vT8Ny9JHGnx25CygjkjqLHBqwj7tL7q-tE4R_iildiQ,24115
26
+ celldetective/gui/dynamic_progress.py,sha256=wjTmDPy62qssY0zdteP3T9umIGGQk0UvebFIdn54CIc,16676
27
+ celldetective/gui/event_annotator.py,sha256=kCrehnLQagLXqViWHcOF-kHj9i1pbdJ97CLUU-HOM7w,73019
28
+ celldetective/gui/generic_signal_plot.py,sha256=D3b6pG1yrSi8C2PPyYzK2yA6711CBBPRp5_OIrjayqs,49348
29
+ celldetective/gui/gui_utils.py,sha256=KbxgwOXGKup_w2FntJxFDSl-eUmc2aqq6h3O5nW8nO0,33258
30
+ celldetective/gui/interactions_block.py,sha256=6HiCvRnVpfxgPJLYOy9gFyPKTApsXjGgojTqri9gW6Y,27401
31
+ celldetective/gui/interactive_timeseries_viewer.py,sha256=BLVOXf2Rx-6DFDW-dKqa8Fw0Q1OeC72J0qwUytuZUaU,15943
32
+ celldetective/gui/json_readers.py,sha256=t5rhtIxACj0pdwLrnPs-QjyhQo3P25UGWGgOCIBhQxs,4572
33
+ celldetective/gui/pair_event_annotator.py,sha256=QJHaM-z0K2I36sLf6XCMFMymfw-nFhzfGJ8oxrMfZco,124091
34
+ celldetective/gui/plot_measurements.py,sha256=pTBA8_XtAZRsxNtWqd8obOHbDqKyz-c1R085xy7y4Ns,56675
35
+ celldetective/gui/plot_signals_ui.py,sha256=oReZwCZw89pFtwuezGQNI6kAz8Q_daKHvNoAKEgzn2w,28195
36
+ celldetective/gui/preprocessing_block.py,sha256=cgUBv-eQBwfidK48-cTWJi0PS62wlXhsNLnsKhy6MQY,14967
37
+ celldetective/gui/process_block.py,sha256=byOZ-dz65mUJ66shzu3RNsuVQ4zGhiolAzI5LlKsxAc,67444
38
+ celldetective/gui/seg_model_loader.py,sha256=6DzpX630JJgtcsaDEuWA8PEkeb8FC3p__3xeSiFqdGo,23549
39
+ celldetective/gui/survival_ui.py,sha256=IwdRm1gRvhkWdMtrQk04OIKKksW3NZSGYtZO_2GptrA,16034
40
+ celldetective/gui/tableUI.py,sha256=kZP2lp9NwHtbWEqIyaDwohX42tRkhI0Hlf_8O5w5BD0,61267
41
+ celldetective/gui/thresholds_gui.py,sha256=w6ke2TyIEi71LxbuFGz0UrwH8h21N_ESU-o6xq_NNKo,33346
42
+ celldetective/gui/workers.py,sha256=0U-wn_dmZjB2idGjpM8s_1dLET9Eh2TmVWB6PLJTSas,11411
43
+ celldetective/gui/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ celldetective/gui/base/channel_norm_generator.py,sha256=JqNAo87zA3nMKzkGjvoeV-SHI89eIATwQj4jHv3-LpI,13973
45
+ celldetective/gui/base/components.py,sha256=DF1sT2AZIpTec7mYYihIMTDYKRrT5k2DoaceZjvAEEw,7452
46
+ celldetective/gui/base/feature_choice.py,sha256=n1T2fPoNLiTDS_6fa_GuGReDhBW11HdUrKy2RywotF8,2800
47
+ celldetective/gui/base/figure_canvas.py,sha256=dQlmLfB3PUttFmyHZIvSc_9GQ5JRy7jH9w7lyKAGElk,1523
48
+ celldetective/gui/base/list_widget.py,sha256=_WU3ZRU7UcJZIxm8qx_5HF7IK7dUu8IU1FY2AaW_qgo,4694
49
+ celldetective/gui/base/styles.py,sha256=3Kz1eXw6OLr90wtErhK0KPJyJbyhAlqkniqm0JNGwFc,7407
50
+ celldetective/gui/base/utils.py,sha256=KojauRKGM9XKNhaWn211p6mJNZWIHLH75yeLpDd7pvA,1103
51
+ celldetective/gui/help/DL-segmentation-strategy.json,sha256=PZD9xXjrwbX3TiudHJPuvcyZD28o4k-fVgeTd7dBKzI,1583
52
+ celldetective/gui/help/Threshold-vs-DL.json,sha256=rrFnZT2DhyS7g1nIDWeUV8-HH7M2Sv8D7sDCGBU1M_0,934
53
+ celldetective/gui/help/cell-populations.json,sha256=e5yJp75rKsYkGVuO8stXxU1TznkADw71djdMUs21gd8,1200
54
+ celldetective/gui/help/exp-structure.json,sha256=61zZAHms7se4Vtuma904xKMsNlWuTOIeF24cbwQiYQg,1973
55
+ celldetective/gui/help/feature-btrack.json,sha256=wvKFiM38AvfQ2QsePDjTflOovqq04CWYcK2QXZhHs-A,693
56
+ celldetective/gui/help/neighborhood.json,sha256=h-aFuQUFM1mnjZPLE0eR6oaRGcRFLeK8ilTXICqkzzg,1259
57
+ celldetective/gui/help/prefilter-for-segmentation.json,sha256=NEL6O2nj_l8ImjMzzX6qqg7U9QV01sgZMFvkGHUiG4E,791
58
+ celldetective/gui/help/preprocessing.json,sha256=M-AxW6zYB5oDiQdoc9wcky8C5p0m6uv-CJMLpUVboew,4716
59
+ celldetective/gui/help/propagate-classification.json,sha256=F7Ir1mtgRVTXWLN7n3ny3vrU01LFNeDh5dN2QBIXHqE,1227
60
+ celldetective/gui/help/track-postprocessing.json,sha256=VaGd8EEkA33OL-EI3NXWZ8yHeWWyUeImDF5yAjsVYGA,3990
61
+ celldetective/gui/help/tracking.json,sha256=yIAoOToqCSQ_XF4gwEZCcyXcvQ3mROju263ZPDvlUyY,776
62
+ celldetective/gui/layouts/__init__.py,sha256=Rm0i-juuITLlBLyvwaLaOCY9yyWV4OCKp8uVc89rQps,320
63
+ celldetective/gui/layouts/background_model_free_layout.py,sha256=YvuO2YmHxDTuPxIwfuVsNrO_uM3TQCiFvZFT_6diBaI,20332
64
+ celldetective/gui/layouts/channel_offset_layout.py,sha256=DKn0HKSVg_44khxopUz55YQoLxccMM84fmyH8H88n-c,5133
65
+ celldetective/gui/layouts/local_correction_layout.py,sha256=oSRPYYMHsYvafxmBQ7oFTP9UajuD0cH276sO9pd4wVY,3136
66
+ celldetective/gui/layouts/model_fit_layout.py,sha256=7rxwYKaV9YaMuJljjx2oDvlF38fgd7nvWM5rCxFV_QA,14474
67
+ celldetective/gui/layouts/operation_layout.py,sha256=mdUPEdoViFlvLy05-XP9lQyN6-MlEx3EcbbQbovUONs,2381
68
+ celldetective/gui/layouts/protocol_designer_layout.py,sha256=JkEbUiYOHSPV08hYIC8_g2Znj4IznTYO-ui-iR_F9Us,3344
69
+ celldetective/gui/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
+ celldetective/gui/settings/_cellpose_model_params.py,sha256=oeoyT_aGIQe_Y9LJi6ZZD9cnQT5sZvErxxPWAyy30Eo,7705
71
+ celldetective/gui/settings/_event_detection_model_params.py,sha256=f3jkh6f3oE-_5pCaf44yKSA-hs9YoSZoFQU7v9pJLKI,3683
72
+ celldetective/gui/settings/_segmentation_model_params.py,sha256=YooEXRlkmOlHCyReiFynagrxBQn2y-dTB0FgowqZno0,6471
73
+ celldetective/gui/settings/_settings_base.py,sha256=_Yfq6vLkwm4FW5n0-SjVQjdhfL3hR5pUGBc0ttq_YXE,2576
74
+ celldetective/gui/settings/_settings_event_model_training.py,sha256=TVPnnYPmdAF6PJciJ0Y9z5uC9Md8rlrsUJWcp_IrIRk,29546
75
+ celldetective/gui/settings/_settings_measurements.py,sha256=nrVR1dG3B7iyJayRql1yierhKvgXZiu6qVtfkxI1ABA,47947
76
+ celldetective/gui/settings/_settings_neighborhood.py,sha256=ws6H99bKU4NYd2IYyaJj7g9-MScr5W6UB2raP88ytfE,23767
77
+ celldetective/gui/settings/_settings_segmentation.py,sha256=6DihD1mk-dN4Sstdth1iJ-0HR34rTVlTHP-pXUh_rY0,1901
78
+ celldetective/gui/settings/_settings_segmentation_model_training.py,sha256=XxqSCxLHOvn1w8V8ZEEfPAvdwfS0IKz107ox4yll7AA,30229
79
+ celldetective/gui/settings/_settings_signal_annotator.py,sha256=Mvvre-yHJvRoR-slbkLNwEemuGgiMCQQ4H1BHjFk3r4,12412
80
+ celldetective/gui/settings/_settings_tracking.py,sha256=5ZxJp3o3stD2NKdhqZofIgsUNp73oAN_pIi_bDFAd0Y,53293
81
+ celldetective/gui/settings/_stardist_model_params.py,sha256=dEKhaLcJ4r8VxgBU2DI-hcTaTk5S181O-_CN0j7JSgE,4020
82
+ celldetective/gui/table_ops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
+ celldetective/gui/table_ops/_maths.py,sha256=bvsZCGnGX3EScQ4XJ6CBgyRiHPIBviyZtfsukE5IbZw,10672
84
+ celldetective/gui/table_ops/_merge_groups.py,sha256=Pjfuk1o6cRWGaybCqL4YxPjFvbWKi6DpRFx2nhlEYZE,4895
85
+ celldetective/gui/table_ops/_merge_one_hot.py,sha256=gKRgem-u_-JENkVkbjRobsH4TkScojbNrkVqaS8MCI0,3472
86
+ celldetective/gui/table_ops/_query_table.py,sha256=K-XHSZ1I4v2wwqWjyQAgyFRZJbem3CmTfHmO0vijh9g,1345
87
+ celldetective/gui/table_ops/_rename_col.py,sha256=UAgDSpXJo_h4pLJpHaNc2w2VhbaW4D2JZTgJ3cYC4-g,1457
88
+ celldetective/gui/viewers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ celldetective/gui/viewers/base_viewer.py,sha256=etX9c9Fw-LXXzD_zUrcOHFEaHKF-XZt7VlZ2YmMvFhc,25303
90
+ celldetective/gui/viewers/channel_offset_viewer.py,sha256=aQpxrJX9qM_xX848XnFrxrhTqE22DIshtD-uKL8e4gU,12423
91
+ celldetective/gui/viewers/contour_viewer.py,sha256=zN0MKYZRM4mSFIoaeDPf36RcH7D8j1VUsgD_r8HPtDc,14696
92
+ celldetective/gui/viewers/size_viewer.py,sha256=uXITjaxg5dhQ09Q6TNUxwLxi-ZglyGFcxEH1RtGIZWw,6020
93
+ celldetective/gui/viewers/spot_detection_viewer.py,sha256=JO7kcqATHXR91lLvo8aQ5xVYdtxkMxV-xx36s01VlNQ,12545
94
+ celldetective/gui/viewers/threshold_viewer.py,sha256=CBc6Y7cGK5U3ptAMMkmRLBvm5yl7pjGEUJjB4PKWjfM,11627
95
+ celldetective/icons/logo-large.png,sha256=FXSwV3u6zEKcfpuSn4unnqB0oUnN9cHqQ9BCKWytrpg,36631
96
+ celldetective/icons/logo.png,sha256=wV2OS8_dU5Td5cgdPbCOU3JpMpTwNuYLnfVcnQX0tJA,2437
97
+ celldetective/icons/signals_icon.png,sha256=vEiKoqWTtN0-uJgVqtAlwCuP-f4QeWYOlO3sdp2tg2w,3969
98
+ celldetective/icons/splash-test.png,sha256=W9smcuuwJUF9DU-rz4aACx7_rCmGRsxYUGPBDlDnrJk,17523
99
+ celldetective/icons/splash.png,sha256=J_1jPJylxwHGzGF1xCGocc-BmylHtHTII9VJSLKnezY,17895
100
+ celldetective/icons/splash0.png,sha256=qVXsrYUinm5g6-vbHcqwyjh8SIqs9lEqPWnPa1WijaQ,14233
101
+ celldetective/icons/survival2.png,sha256=8zsualD7d9VPAecoFA4Om9TFARErqpJzMg6U7XANXf4,4479
102
+ celldetective/icons/vignette_signals2.png,sha256=hsVOdQDpEfMGM45aaSeacEm3lvxbquRKKYutiS9qoS0,20743
103
+ celldetective/icons/vignette_signals2.svg,sha256=muGNcQudV1jG-bmFd9FwV-Wb8PcrRV5osdZ7pHR7Ekk,5947
104
+ celldetective/links/zenodo.json,sha256=3OSml-j5FbCY5B24t7LZ7raXyVA1834osurmaEckIP8,34511
105
+ celldetective/models/pair_signal_detection/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ celldetective/models/segmentation_effectors/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
+ celldetective/models/segmentation_generic/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
+ celldetective/models/segmentation_targets/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
+ celldetective/models/signal_detection/blank,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
+ celldetective/models/tracking_configs/biased_motion.json,sha256=RZa-ZCP4jbFtMVz-M4lf1LtqmAvBrUxIhhudNiU1jtY,1782
111
+ celldetective/models/tracking_configs/mcf7.json,sha256=iDjb8i6yxs0GleW39dvY3Ld5bZJatlXJrwI8PG3vCT0,1780
112
+ celldetective/models/tracking_configs/no_z_motion.json,sha256=b4RWOJ0w6Y2e0vJYwKMyOexedeL2eA8fEDbSzbNmB4A,2702
113
+ celldetective/models/tracking_configs/ricm.json,sha256=L-vmwCR1f89U-qnH2Ms0cBfPFR_dxIWoe2ccH8V-QBA,2727
114
+ celldetective/models/tracking_configs/ricm2.json,sha256=DDjJ6ScYcDWvlsy7ujPID8v8H28vcNcMuZmNR8XmGxo,2718
115
+ celldetective/napari/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ celldetective/napari/utils.py,sha256=mjFeG1TDqHJs7cRcpfGWwAoFpWzJYZOEmUue7ZMYmzI,35106
117
+ celldetective/processes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
+ celldetective/processes/background_correction.py,sha256=fyv2_7ztUex7RDwIRaURweYZsRe-YD_ZPUHeiFmVq6Q,10715
119
+ celldetective/processes/compute_neighborhood.py,sha256=DGi4U3el0OisRNaOQSzUaXpEgHBO440-Q4cUphB6FAA,34393
120
+ celldetective/processes/detect_events.py,sha256=4psWjnYxbMB3p0BrRoQgkXgIdsnUIErrqUkE9CU4hRM,9733
121
+ celldetective/processes/downloader.py,sha256=jnNitmQ9xUCGJHSvr3Myts5soe6rdYDBx_AGJKr1AWk,3406
122
+ celldetective/processes/measure_cells.py,sha256=ccf2j7_6dcRevEhseVXioIjiATx8IvIsi5ZG3IcdhJY,20876
123
+ celldetective/processes/segment_cells.py,sha256=klGl5y3tHbLbQFNAQz0PV1FspmiPC-GHVGWYLgyLqwc,26500
124
+ celldetective/processes/track_cells.py,sha256=cgQNn7fsqPCHODhe27sqvMUlubsi7qM_0qjAXbj68oY,15084
125
+ celldetective/processes/train_segmentation_model.py,sha256=j1aPgR4CzF2OR-9njriNmUStVViiWaiicQA9YWRWOTo,25411
126
+ celldetective/processes/train_signal_model.py,sha256=HInUHCXNePhfQs8-DQOreJ19LtLkQopvYSyX8tj0mOo,9498
127
+ celldetective/processes/unified_process.py,sha256=vHAS_LbtwmlOjKho_FpwDy7WHVgyY38s3X2BtHxep7A,11671
128
+ celldetective/regionprops/__init__.py,sha256=ohe9vC7j4lnpKnGXidVo1PVfoQfC8TqCuHTNo8rXmdg,44
129
+ celldetective/regionprops/_regionprops.py,sha256=spq_Mb43HjHiKqot7yjLJl_jrMTNfIP8NLrPnCEm8Nc,13306
130
+ celldetective/regionprops/props.json,sha256=sCwACmbh0n-JAw9eve9yV85REukoMBJLsRjxCwTRMm8,2424
131
+ celldetective/scripts/analyze_signals.py,sha256=WfBqWFKzPpJNkkgLSWwpmpqFO67ZSewdxe2NCIXxEyQ,2190
132
+ celldetective/scripts/measure_cells.py,sha256=MuF8w3PFCE8OoYh_-V8ru8c4fzCoSMqgolfix-6u508,13667
133
+ celldetective/scripts/measure_relative.py,sha256=sjKRvbJ-E-n1adN4Lq0B2IjEaNkkFjXMixm9ZJGSUD0,4632
134
+ celldetective/scripts/segment_cells.py,sha256=YjiwHT2tAjWW7M6Fu5wf-6P35lPU9z16rcYqbH48GAY,8022
135
+ celldetective/scripts/segment_cells_thresholds.py,sha256=eeVr4mH_OMPogtp_8VaH7B7wfDVZ1G7vUcqIws7HX70,5557
136
+ celldetective/scripts/track_cells.py,sha256=h6ZhkeM73w_ziVjH7jJBejhZYZhf_Vpeg-9G6xQtmDE,9670
137
+ celldetective/scripts/train_segmentation_model.py,sha256=IKZGXf8i74xrc-wQ_oGgdE30FSO8eh2dhZDZfnBjkEk,12740
138
+ celldetective/scripts/train_signal_model.py,sha256=zPSdlr4WnnL6yTSL9ZreFNVw1is4E7GatjKzIASL99A,3711
139
+ celldetective/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
+ celldetective/utils/color_mappings.py,sha256=yarqOTSrTsnOPPiPrrN_vLoPCbgWqF3wjqFwpbp-KsU,1007
141
+ celldetective/utils/data_cleaning.py,sha256=K-2gScxLreX7QkrM0h3dZdP0IsmvCzcxNh2-M9PALZY,22025
142
+ celldetective/utils/data_loaders.py,sha256=tExtC_7gX16VYmYFz8BU7jRKLDug2egVghU1YIcGRh0,16292
143
+ celldetective/utils/dataset_helpers.py,sha256=3ezpHO6nytw2Mx0D3maP_4535V2ohOTQn6Qpfk8gnms,6898
144
+ celldetective/utils/downloaders.py,sha256=Cf7K-f_Bm4M6HIfgiSoIoph0O1NS6LZIaYvgWKauXes,6595
145
+ celldetective/utils/experiment.py,sha256=bgADS70QuW4KGbzDJbVpVM-tw4qmZKMWtDT1cSxugrY,58342
146
+ celldetective/utils/image_augmenters.py,sha256=USYd8z6dVn5z1x96IYJ4mG0smN9I_S21QMGU0wyHmjc,11654
147
+ celldetective/utils/image_cleaning.py,sha256=KliQ3K5hdwPx4eFxJnmg3yi-ZIoimEveunPJkbbA6wA,2388
148
+ celldetective/utils/image_loaders.py,sha256=nsyneHM67R9r-mmWKI7Z6xpe5MQCLOFsaYKFhxw2R-c,34032
149
+ celldetective/utils/image_transforms.py,sha256=cgaHuEUArWWHgxlBlcQLf--zQa-4VphPJ2s2EyPN29o,11213
150
+ celldetective/utils/io.py,sha256=WQH6B27iS722eVV8HHRaSvxMRZ217LoiEIPOqNGtqJk,1632
151
+ celldetective/utils/mask_cleaning.py,sha256=n1Q2RfyhX0W3AcLO0U6ucSyDGRCofj6bPLSO_xeVZPI,12545
152
+ celldetective/utils/mask_transforms.py,sha256=fX-ajhUhzZwOe7rAnMcQc6w4e2B8SZeRp9jrQLF6DFs,144
153
+ celldetective/utils/masks.py,sha256=wz47NrCsLD_9WX2Goswl_ThgnxyLJokIN6cj8KH7ZjI,7075
154
+ celldetective/utils/maths.py,sha256=cYdIqSgpaDO1JZOpmgGFPPikEvu66absC64op_6kw0o,12003
155
+ celldetective/utils/model_getters.py,sha256=jVq9FhAF-xUmFOETWP6hByhoWgapmJGlNmSK11fQ69g,11370
156
+ celldetective/utils/model_loaders.py,sha256=CjScJBGtnenb8qRMZkEozdj1-ULYHvsDFS4AVgYbB5s,10576
157
+ celldetective/utils/normalization.py,sha256=SN-nrycZtmtqv8v1S9bAKvDTGiN6cQKfryitwNtH1bA,15635
158
+ celldetective/utils/parsing.py,sha256=1zpIH9tyULCRmO5Kwzy6yA01fqm5uE_mZKYtondy-VA,14443
159
+ celldetective/utils/resources.py,sha256=3Fz_W0NYWl_Ixc2AjEmkOv5f7ejXerCLJ2z1iWhGWUI,1153
160
+ celldetective/utils/stats.py,sha256=4TVHRqi38Y0sed-izaMI51sMP0fd5tC5M68EYyfJjkE,3636
161
+ celldetective/utils/types.py,sha256=lRfWSMVzTkxgoctGGp0NqD551akuxu0ygna7zVGonTg,397
162
+ celldetective/utils/cellpose_utils/__init__.py,sha256=grsglxR29vj42tlgsBoXnVnjrIJWsBXqbtkjFjzqH7A,4898
163
+ celldetective/utils/event_detection/__init__.py,sha256=KX20PwPTevdbZ-25otDy_QTmealcDx5xNCfH2SOVIZM,323
164
+ celldetective/utils/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
+ celldetective/utils/plots/regression.py,sha256=oUCn29-hp7PxMqC-R0yoL60KMw5ZWpZAIoCDh2ErlcY,1764
166
+ celldetective/utils/stardist_utils/__init__.py,sha256=e9s3DEaTKCUOGZb5k_DgShBTl4B0U-Jmg3Ioo8D5PyE,3978
167
+ celldetective-1.5.0b0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
168
+ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
+ tests/test_events.py,sha256=eLFwwEEJfQAdwhews3-fn1HSvzozcNNFN_Qn0gOvQkE,685
170
+ tests/test_filters.py,sha256=uj4NVyUnKXa18EpTSiWCetGKI1VFopDyNSJSUxX44wA,1689
171
+ tests/test_io.py,sha256=gk5FmoI7ANEczUtNXYRxc48KzkfYzemwS_eYaLq4_NI,2093
172
+ tests/test_measure.py,sha256=FEUAs1rVHylvIvubCb0bJDNGZLVmkgXNgI3NaGQ1dA8,4542
173
+ tests/test_neighborhood.py,sha256=gk5FmoI7ANEczUtNXYRxc48KzkfYzemwS_eYaLq4_NI,2093
174
+ tests/test_notebooks.py,sha256=WP5TJM1HV1oN8Hp38MLyE2YuLXjUoMvMJBa343vp1Dg,299
175
+ tests/test_preprocessing.py,sha256=c0rKS9d5h37uDcV7fVOTnn5GMVbEB84b8ZTCTdRmvFs,1422
176
+ tests/test_segmentation.py,sha256=k1b_zIZdlytEdJcHjAUQEO3gTBAHtv5WvrwQN2xD4kc,3470
177
+ tests/test_signals.py,sha256=No4cah6KxplhDcKXnU8RrA7eDla4hWw6ccf7xGnBokU,3599
178
+ tests/test_tracking.py,sha256=_YLjwQ3EChQssoHDfEnUJ7fI1yC5KEcJsFnAVR64L70,18909
179
+ tests/test_utils.py,sha256=aSB_eMw9fzTsnxxdYoNmdQQRrXkWqBXB7Uv4TGU6kYE,4778
180
+ tests/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
+ tests/gui/test_new_project.py,sha256=wRjW2vEaZb0LWT-f8G8-Ptk8CW9z8-FDPLpV5uqj6ck,8778
182
+ tests/gui/test_project.py,sha256=KzAnodIc0Ovta0ARL5Kr5PkOR5euA6qczT_GhEZpyE4,4710
183
+ celldetective-1.5.0b0.dist-info/METADATA,sha256=btAint9Y6sB0i_XItoVQqUHMsn1KtXNm0JSeavdXH48,10947
184
+ celldetective-1.5.0b0.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
185
+ celldetective-1.5.0b0.dist-info/entry_points.txt,sha256=2NU6_EOByvPxqBbCvjwxlVlvnQreqZ3BKRCVIKEv3dg,62
186
+ celldetective-1.5.0b0.dist-info/top_level.txt,sha256=6rsIKKfGMKgud7HPuATcpq6EhdXwcg_yknBVWn9x4C4,20
187
+ celldetective-1.5.0b0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.10.2)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -2,7 +2,7 @@ import pytest
2
2
  from PyQt5 import QtCore
3
3
  from PyQt5.QtWidgets import QApplication
4
4
  from celldetective.gui.InitWindow import AppInitWindow
5
- from celldetective.utils import get_software_location
5
+ from celldetective import get_software_location
6
6
  import os
7
7
  from unittest.mock import patch
8
8
  import shutil
@@ -11,126 +11,138 @@ from pathlib import Path
11
11
  abs_path = os.sep.join([os.path.split(os.path.dirname(os.path.realpath(__file__)))[0]])
12
12
  print(abs_path)
13
13
 
14
+
14
15
  @pytest.fixture
15
16
  def app(qtbot):
16
- software_location = get_software_location()
17
- test_app = AppInitWindow(software_location=software_location)
18
- qtbot.addWidget(test_app)
19
- return test_app
17
+ software_location = get_software_location()
18
+ test_app = AppInitWindow(software_location=software_location)
19
+ qtbot.addWidget(test_app)
20
+ return test_app
21
+
20
22
 
21
23
  def test_new_project(app, qtbot):
22
- # app.newExpAction.trigger()
23
- # qtbot.wait(1000)
24
- interaction_time = 500
25
- test_directory = os.path.dirname(os.path.abspath(__file__))
26
- parent_directory = str(Path(test_directory).parent)
27
-
28
- # Patch QFileDialog.getExistingDirectory to return test_directory
29
- with patch('PyQt5.QtWidgets.QFileDialog.getExistingDirectory', return_value=parent_directory):
30
-
31
- if os.path.exists(os.sep.join([parent_directory, "ExperimentTest"])):
32
- shutil.rmtree(os.sep.join([parent_directory, "ExperimentTest"]))
33
-
34
- app.newExpAction.trigger()
35
- qtbot.wait(interaction_time*3)
36
-
37
- app.new_exp_window.expName.setText('ExperimentTest')
38
- qtbot.wait(interaction_time)
39
-
40
- app.new_exp_window.SliderWells.setValue(10)
41
- qtbot.wait(interaction_time)
42
-
43
- app.new_exp_window.SliderPos.setValue(3)
44
- qtbot.wait(interaction_time)
45
-
46
- app.new_exp_window.MovieLengthSlider.setValue(1)
47
- qtbot.wait(interaction_time)
48
-
49
- app.new_exp_window.PxToUm_field.setText("0,3112")
50
- qtbot.wait(interaction_time)
51
-
52
- app.new_exp_window.shape_x_field.setText("660")
53
- qtbot.wait(interaction_time)
54
-
55
- app.new_exp_window.shape_y_field.setText('682')
56
- qtbot.wait(interaction_time)
57
-
58
- # set first channel
59
- app.new_exp_window.checkBoxes[0].setChecked(True)
60
- qtbot.wait(interaction_time)
61
-
62
- app.new_exp_window.sliders[0].setValue(0)
63
- qtbot.wait(interaction_time)
64
-
65
- # set second with channel index of 1
66
- app.new_exp_window.checkBoxes[1].setChecked(True)
67
- qtbot.wait(interaction_time)
68
-
69
- app.new_exp_window.sliders[1].setValue(3)
70
- qtbot.wait(interaction_time)
71
-
72
- app.new_exp_window.checkBoxes[2].setChecked(True)
73
- qtbot.wait(interaction_time)
74
-
75
- app.new_exp_window.sliders[2].setValue(1)
76
- qtbot.wait(interaction_time)
77
-
78
- # add extra custom channel
79
- qtbot.mouseClick(app.new_exp_window.addChannelBtn, QtCore.Qt.LeftButton)
80
- qtbot.wait(interaction_time)
81
-
82
- app.new_exp_window.name_le.setText('empty_channel')
83
- qtbot.wait(interaction_time)
84
-
85
- qtbot.mouseClick(app.new_exp_window.createBtn, QtCore.Qt.LeftButton)
86
- qtbot.wait(interaction_time)
87
-
88
- app.new_exp_window.checkBoxes[-1].setChecked(True)
89
- qtbot.wait(interaction_time)
90
-
91
- app.new_exp_window.sliders[-1].setValue(2)
92
- qtbot.wait(interaction_time)
93
-
94
- # Untick populations and create new one
95
- for box in app.new_exp_window.population_checkboxes:
96
- if box.text() == 'targets':
97
- box.setChecked(True)
98
- else:
99
- box.setChecked(False)
100
-
101
- qtbot.mouseClick(app.new_exp_window.addPopBtn, QtCore.Qt.LeftButton)
102
- qtbot.wait(interaction_time)
103
-
104
- app.new_exp_window.name_le.setText('more_cells')
105
- qtbot.wait(interaction_time)
106
-
107
- qtbot.mouseClick(app.new_exp_window.addPopBtn, QtCore.Qt.LeftButton)
108
- qtbot.wait(interaction_time)
109
-
110
- qtbot.mouseClick(app.new_exp_window.validate_button, QtCore.Qt.LeftButton)
111
- qtbot.wait(interaction_time)
112
-
113
- qtbot.mouseClick(app.new_exp_window.w.submit_btn, QtCore.Qt.LeftButton)
114
- qtbot.wait(interaction_time)
115
-
116
- shutil.copy(os.sep.join([parent_directory, "assets", "sample.tif"]), os.sep.join([parent_directory, "ExperimentTest", "W1", "100", "movie", "sample.tif"]))
117
- qtbot.wait(interaction_time)
118
-
119
- qtbot.mouseClick(app.validate_button, QtCore.Qt.LeftButton)
120
- qtbot.mouseClick(app.control_panel.view_stack_btn, QtCore.Qt.LeftButton)
121
- qtbot.wait(interaction_time)
122
-
123
- app.control_panel.viewer.channels_cb.setCurrentIndex(1)
124
- qtbot.wait(interaction_time*2)
125
-
126
- app.control_panel.viewer.contrast_slider.setValue([200,300])
127
- qtbot.wait(interaction_time*2)
128
-
129
- # QApplication.closeAllWindows()
130
- # try:
131
- # shutil.rmtree(os.sep.join([parent_directory, "ExperimentTest"]))
132
- # except:
133
- # pass
24
+ # app.newExpAction.trigger()
25
+ # qtbot.wait(1000)
26
+ interaction_time = 500
27
+ test_directory = os.path.dirname(os.path.abspath(__file__))
28
+ parent_directory = str(Path(test_directory).parent)
29
+
30
+ # Patch QFileDialog.getExistingDirectory to return test_directory
31
+ with patch(
32
+ "PyQt5.QtWidgets.QFileDialog.getExistingDirectory",
33
+ return_value=parent_directory,
34
+ ):
35
+
36
+ if os.path.exists(os.sep.join([parent_directory, "ExperimentTest"])):
37
+ shutil.rmtree(os.sep.join([parent_directory, "ExperimentTest"]))
38
+
39
+ app.new_exp_action.trigger()
40
+ qtbot.wait(interaction_time * 3)
41
+
42
+ app.new_exp_window.expName.setText("ExperimentTest")
43
+ qtbot.wait(interaction_time)
44
+
45
+ app.new_exp_window.SliderWells.setValue(10)
46
+ qtbot.wait(interaction_time)
47
+
48
+ app.new_exp_window.SliderPos.setValue(3)
49
+ qtbot.wait(interaction_time)
50
+
51
+ app.new_exp_window.MovieLengthSlider.setValue(1)
52
+ qtbot.wait(interaction_time)
53
+
54
+ app.new_exp_window.PxToUm_field.setText("0,3112")
55
+ qtbot.wait(interaction_time)
56
+
57
+ app.new_exp_window.shape_x_field.setText("660")
58
+ qtbot.wait(interaction_time)
59
+
60
+ app.new_exp_window.shape_y_field.setText("682")
61
+ qtbot.wait(interaction_time)
62
+
63
+ # set first channel
64
+ app.new_exp_window.checkBoxes[0].setChecked(True)
65
+ qtbot.wait(interaction_time)
66
+
67
+ app.new_exp_window.sliders[0].setValue(0)
68
+ qtbot.wait(interaction_time)
69
+
70
+ # set second with channel index of 1
71
+ app.new_exp_window.checkBoxes[1].setChecked(True)
72
+ qtbot.wait(interaction_time)
73
+
74
+ app.new_exp_window.sliders[1].setValue(3)
75
+ qtbot.wait(interaction_time)
76
+
77
+ app.new_exp_window.checkBoxes[2].setChecked(True)
78
+ qtbot.wait(interaction_time)
79
+
80
+ app.new_exp_window.sliders[2].setValue(1)
81
+ qtbot.wait(interaction_time)
82
+
83
+ # add extra custom channel
84
+ qtbot.mouseClick(app.new_exp_window.addChannelBtn, QtCore.Qt.LeftButton)
85
+ qtbot.wait(interaction_time)
86
+
87
+ app.new_exp_window.name_le.setText("empty_channel")
88
+ qtbot.wait(interaction_time)
89
+
90
+ qtbot.mouseClick(app.new_exp_window.createBtn, QtCore.Qt.LeftButton)
91
+ qtbot.wait(interaction_time)
92
+
93
+ app.new_exp_window.checkBoxes[-1].setChecked(True)
94
+ qtbot.wait(interaction_time)
95
+
96
+ app.new_exp_window.sliders[-1].setValue(2)
97
+ qtbot.wait(interaction_time)
98
+
99
+ # Untick populations and create new one
100
+ for box in app.new_exp_window.population_checkboxes:
101
+ if box.text() == "targets":
102
+ box.setChecked(True)
103
+ else:
104
+ box.setChecked(False)
105
+
106
+ qtbot.mouseClick(app.new_exp_window.addPopBtn, QtCore.Qt.LeftButton)
107
+ qtbot.wait(interaction_time)
108
+
109
+ app.new_exp_window.name_le.setText("more_cells")
110
+ qtbot.wait(interaction_time)
111
+
112
+ qtbot.mouseClick(app.new_exp_window.addPopBtn, QtCore.Qt.LeftButton)
113
+ qtbot.wait(interaction_time)
114
+
115
+ qtbot.mouseClick(app.new_exp_window.validate_button, QtCore.Qt.LeftButton)
116
+ qtbot.wait(interaction_time)
117
+
118
+ qtbot.mouseClick(app.new_exp_window.w.submit_btn, QtCore.Qt.LeftButton)
119
+ qtbot.wait(interaction_time)
120
+
121
+ shutil.copy(
122
+ os.sep.join([parent_directory, "assets", "sample.tif"]),
123
+ os.sep.join(
124
+ [parent_directory, "ExperimentTest", "W1", "100", "movie", "sample.tif"]
125
+ ),
126
+ )
127
+ qtbot.wait(interaction_time)
128
+
129
+ qtbot.mouseClick(app.validate_button, QtCore.Qt.LeftButton)
130
+ qtbot.mouseClick(app.control_panel.view_stack_btn, QtCore.Qt.LeftButton)
131
+ qtbot.wait(interaction_time)
132
+
133
+ app.control_panel.viewer.channel_cb.setCurrentIndex(1)
134
+ qtbot.wait(interaction_time * 2)
135
+
136
+ app.control_panel.viewer.contrast_slider.setValue([200, 300])
137
+ qtbot.wait(interaction_time * 2)
138
+
139
+ # QApplication.closeAllWindows()
140
+ # try:
141
+ # shutil.rmtree(os.sep.join([parent_directory, "ExperimentTest"]))
142
+ # except:
143
+ # pass
144
+
145
+
134
146
  # def test_lauch_app(app, qtbot):
135
147
  # app.show()
136
148
  # qtbot.wait(1000)