qplotter 1.6.0__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 (130) hide show
  1. qplot/__init__.py +46 -0
  2. qplot/__main__.py +232 -0
  3. qplot/_auxiliary_paths.py +67 -0
  4. qplot/_build_info.json +1 -0
  5. qplot/_metadata.py +75 -0
  6. qplot/_repair.py +14 -0
  7. qplot/_shutdown_supervisor.py +4049 -0
  8. qplot/_version.py +12 -0
  9. qplot/_windows_shutdown_job.py +1166 -0
  10. qplot/configuration/__init__.py +3 -0
  11. qplot/configuration/config.py +578 -0
  12. qplot/configuration/config_schema.json +357 -0
  13. qplot/configuration/fonts.py +3 -0
  14. qplot/configuration/scripts.py +255 -0
  15. qplot/configuration/themes/__init__.py +13 -0
  16. qplot/configuration/themes/_base.py +592 -0
  17. qplot/configuration/themes/blank.py +17 -0
  18. qplot/configuration/themes/dark.py +54 -0
  19. qplot/configuration/themes/light.py +54 -0
  20. qplot/datahandling/LoadFromDB.py +224 -0
  21. qplot/datahandling/__init__.py +47 -0
  22. qplot/datahandling/_trusted_live_helper.py +812 -0
  23. qplot/datahandling/_trusted_live_protocol.py +1745 -0
  24. qplot/datahandling/database.py +2340 -0
  25. qplot/datahandling/dimensions.py +43 -0
  26. qplot/datahandling/file_identity.py +461 -0
  27. qplot/datahandling/parameter_data.py +149 -0
  28. qplot/datahandling/plot_progress.py +17 -0
  29. qplot/datahandling/qcodes_cache.py +277 -0
  30. qplot/datahandling/qcodes_compat.py +14 -0
  31. qplot/datahandling/readSQL.py +2442 -0
  32. qplot/datahandling/readonly.py +2566 -0
  33. qplot/datahandling/source_activity.py +21 -0
  34. qplot/datahandling/trusted_array_preview.py +148 -0
  35. qplot/datahandling/trusted_derived_cache.py +1605 -0
  36. qplot/datahandling/trusted_derived_rendering.py +876 -0
  37. qplot/datahandling/trusted_heatmap.py +246 -0
  38. qplot/datahandling/trusted_live.py +2808 -0
  39. qplot/datahandling/trusted_live_queries.py +5907 -0
  40. qplot/datahandling/trusted_live_service.py +1919 -0
  41. qplot/datahandling/trusted_live_supervisor.py +2161 -0
  42. qplot/datahandling/trusted_plot.py +283 -0
  43. qplot/datahandling/trusted_presentation.py +1065 -0
  44. qplot/datahandling/trusted_snapshot.py +1132 -0
  45. qplot/datahandling/trusted_work_coordinator.py +2157 -0
  46. qplot/datahandling/trusted_work_scheduler.py +1204 -0
  47. qplot/diagnostics.py +241 -0
  48. qplot/resources/testdata/qplot_test_db_01_10mb.csv +11 -0
  49. qplot/resources/testdata/qplot_test_db_02_25mb.csv +14 -0
  50. qplot/resources/testdata/qplot_test_db_03_50mb.csv +17 -0
  51. qplot/resources/testdata/qplot_test_db_04_100mb.csv +20 -0
  52. qplot/resources/testdata/qplot_test_db_05_250mb.csv +23 -0
  53. qplot/resources/testdata/qplot_test_db_06_500mb.csv +26 -0
  54. qplot/resources/testdata/qplot_test_db_07_1gb.csv +29 -0
  55. qplot/resources/testdata/qplot_test_db_08_5gb.csv +32 -0
  56. qplot/resources/testdata/qplot_test_db_09_10gb.csv +35 -0
  57. qplot/resources/testdata/qplot_test_db_10_30gb.csv +38 -0
  58. qplot/testdata.py +1804 -0
  59. qplot/tools/__init__.py +13 -0
  60. qplot/tools/finite_means.py +123 -0
  61. qplot/tools/general.py +139 -0
  62. qplot/tools/heatmap_geometry.py +391 -0
  63. qplot/tools/operation_registry.py +179 -0
  64. qplot/tools/plot_tools.py +650 -0
  65. qplot/tools/sample_statistics.py +111 -0
  66. qplot/tools/worker.py +2838 -0
  67. qplot/windows/__init__.py +9 -0
  68. qplot/windows/_colorbar.py +422 -0
  69. qplot/windows/_commands.py +523 -0
  70. qplot/windows/_config_persistence.py +123 -0
  71. qplot/windows/_database_actions.py +4933 -0
  72. qplot/windows/_dataset_handle.py +221 -0
  73. qplot/windows/_display_precision.py +48 -0
  74. qplot/windows/_dragdrop.py +70 -0
  75. qplot/windows/_export_paths.py +1167 -0
  76. qplot/windows/_help.py +210 -0
  77. qplot/windows/_mixed_appearance.py +303 -0
  78. qplot/windows/_mixed_plots.py +461 -0
  79. qplot/windows/_native_averaging.py +323 -0
  80. qplot/windows/_native_transforms.py +551 -0
  81. qplot/windows/_plot1d_snap.py +612 -0
  82. qplot/windows/_plot1d_traces.py +2236 -0
  83. qplot/windows/_plot2d_colorbar.py +1127 -0
  84. qplot/windows/_plot2d_colorbar_dialog.py +786 -0
  85. qplot/windows/_plot2d_layers.py +2291 -0
  86. qplot/windows/_plot2d_sweeps.py +712 -0
  87. qplot/windows/_plotWin.py +2082 -0
  88. qplot/windows/_plot_actions.py +2703 -0
  89. qplot/windows/_plot_annotation.py +186 -0
  90. qplot/windows/_plot_appearance.py +283 -0
  91. qplot/windows/_plot_axis_scaling.py +1521 -0
  92. qplot/windows/_plot_data_viewbox.py +94 -0
  93. qplot/windows/_plot_drop_axes.py +224 -0
  94. qplot/windows/_plot_export.py +1445 -0
  95. qplot/windows/_plot_feedback.py +112 -0
  96. qplot/windows/_plot_marquee.py +659 -0
  97. qplot/windows/_plot_refresh.py +950 -0
  98. qplot/windows/_plot_source_promotion.py +178 -0
  99. qplot/windows/_plot_state.py +237 -0
  100. qplot/windows/_plot_status.py +115 -0
  101. qplot/windows/_plot_tiling.py +35 -0
  102. qplot/windows/_plot_transform_labels.py +60 -0
  103. qplot/windows/_preferences.py +724 -0
  104. qplot/windows/_refresh_interval.py +172 -0
  105. qplot/windows/_run_controls.py +789 -0
  106. qplot/windows/_shortcuts.py +47 -0
  107. qplot/windows/_subplots/__init__.py +8 -0
  108. qplot/windows/_subplots/subplot1d.py +532 -0
  109. qplot/windows/_subplots/subplot2d.py +919 -0
  110. qplot/windows/_svg_export.py +209 -0
  111. qplot/windows/_trusted_derived_qt.py +1759 -0
  112. qplot/windows/_widgets/__init__.py +23 -0
  113. qplot/windows/_widgets/_run_formatting.py +387 -0
  114. qplot/windows/_widgets/details_tables.py +1119 -0
  115. qplot/windows/_widgets/dropbox.py +290 -0
  116. qplot/windows/_widgets/operations.py +460 -0
  117. qplot/windows/_widgets/preview.py +2997 -0
  118. qplot/windows/_widgets/run_list_items.py +488 -0
  119. qplot/windows/_widgets/toolbar.py +111 -0
  120. qplot/windows/_widgets/treeWidgets.py +2572 -0
  121. qplot/windows/_window_controls.py +414 -0
  122. qplot/windows/main.py +1632 -0
  123. qplot/windows/plot1d.py +313 -0
  124. qplot/windows/plot2d.py +1935 -0
  125. qplotter-1.6.0.dist-info/METADATA +322 -0
  126. qplotter-1.6.0.dist-info/RECORD +130 -0
  127. qplotter-1.6.0.dist-info/WHEEL +5 -0
  128. qplotter-1.6.0.dist-info/entry_points.txt +4 -0
  129. qplotter-1.6.0.dist-info/licenses/LICENSE +21 -0
  130. qplotter-1.6.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,179 @@
1
+ """
2
+ Operation metadata for plot refresh processing.
3
+
4
+ The functions live in ``plot_tools``; this module records which operations are
5
+ available for each plot surface and what kind of user input they need.
6
+ """
7
+
8
+ from collections.abc import Callable
9
+ from dataclasses import dataclass
10
+ from decimal import Decimal
11
+
12
+ from qplot.tools.plot_tools import (
13
+ differentiate,
14
+ fill_heatmap,
15
+ pass_filter,
16
+ subtract_mean,
17
+ )
18
+
19
+
20
+ @dataclass(frozen=True)
21
+ class OperationSpec:
22
+ name: str
23
+ func: Callable
24
+ input_type: object
25
+ default: object = ""
26
+ derivative_axis: str | None = None
27
+
28
+
29
+ @dataclass(frozen=True)
30
+ class OperationCall:
31
+ """A configured operation and the metadata needed after it succeeds."""
32
+
33
+ name: str
34
+ func: Callable
35
+ derivative_axis: str | None = None
36
+ cooperative: bool = False
37
+
38
+ def __call__(self, data):
39
+ return self.func(data)
40
+
41
+ def execute(self, data, cancelled_callback):
42
+ """Run qPlot operations cooperatively while retaining one-arg calls."""
43
+
44
+ if self.cooperative:
45
+ return self.func(data, cancelled_callback=cancelled_callback)
46
+ return self.func(data)
47
+
48
+
49
+ class OperationValidationError(ValueError):
50
+ """Raised when an enabled operation has missing or invalid input."""
51
+
52
+
53
+ class OperationExecutionError(RuntimeError):
54
+ """Raised when an operation pipeline cannot be completed atomically."""
55
+
56
+
57
+ COMMON_OPERATION_SPECS = (
58
+ OperationSpec(
59
+ "Limit Maximum",
60
+ lambda limit, data, cancelled_callback=None: pass_filter(
61
+ "low", limit, data, cancelled_callback=cancelled_callback
62
+ ),
63
+ Decimal,
64
+ ),
65
+ OperationSpec(
66
+ "Limit Minimum",
67
+ lambda limit, data, cancelled_callback=None: pass_filter(
68
+ "high", limit, data, cancelled_callback=cancelled_callback
69
+ ),
70
+ Decimal,
71
+ ),
72
+ )
73
+
74
+ PLOT_OPERATION_SPECS = {
75
+ "plot1d": (
76
+ OperationSpec(
77
+ "dy/dx",
78
+ lambda data, cancelled_callback=None: differentiate(
79
+ "x", data, cancelled_callback=cancelled_callback
80
+ ),
81
+ None,
82
+ derivative_axis="x",
83
+ ),
84
+ ),
85
+ "plot2d": (
86
+ OperationSpec(
87
+ "Subtract Row Mean",
88
+ lambda data, cancelled_callback=None: subtract_mean(
89
+ "x", data, cancelled_callback=cancelled_callback
90
+ ),
91
+ None,
92
+ ),
93
+ OperationSpec(
94
+ "Subtract Column Mean",
95
+ lambda data, cancelled_callback=None: subtract_mean(
96
+ "y", data, cancelled_callback=cancelled_callback
97
+ ),
98
+ None,
99
+ ),
100
+ OperationSpec(
101
+ "dz/dx",
102
+ lambda data, cancelled_callback=None: differentiate(
103
+ "x", data, cancelled_callback=cancelled_callback
104
+ ),
105
+ None,
106
+ derivative_axis="x",
107
+ ),
108
+ OperationSpec(
109
+ "dz/dy",
110
+ lambda data, cancelled_callback=None: differentiate(
111
+ "y", data, cancelled_callback=cancelled_callback
112
+ ),
113
+ None,
114
+ derivative_axis="y",
115
+ ),
116
+ OperationSpec(
117
+ "Fill Below",
118
+ lambda value, data, cancelled_callback=None: fill_heatmap(
119
+ "below",
120
+ data,
121
+ max_depth=value,
122
+ cancelled_callback=cancelled_callback,
123
+ ),
124
+ int,
125
+ 10,
126
+ ),
127
+ OperationSpec(
128
+ "Fill Right",
129
+ lambda value, data, cancelled_callback=None: fill_heatmap(
130
+ "right",
131
+ data,
132
+ max_depth=value,
133
+ cancelled_callback=cancelled_callback,
134
+ ),
135
+ int,
136
+ 10,
137
+ ),
138
+ ),
139
+ "sweeper": (
140
+ OperationSpec(
141
+ "Subtract Cut Mean",
142
+ lambda data, cancelled_callback=None: subtract_mean(
143
+ "x", data, cancelled_callback=cancelled_callback
144
+ ),
145
+ None,
146
+ ),
147
+ OperationSpec(
148
+ "Subtract Fixed Mean",
149
+ lambda data, cancelled_callback=None: subtract_mean(
150
+ "y", data, cancelled_callback=cancelled_callback
151
+ ),
152
+ None,
153
+ ),
154
+ OperationSpec(
155
+ "Differentiate Cut",
156
+ lambda data, cancelled_callback=None: differentiate(
157
+ "x", data, cancelled_callback=cancelled_callback
158
+ ),
159
+ None,
160
+ derivative_axis="x",
161
+ ),
162
+ OperationSpec(
163
+ "Differentiate Fixed",
164
+ lambda data, cancelled_callback=None: differentiate(
165
+ "y", data, cancelled_callback=cancelled_callback
166
+ ),
167
+ None,
168
+ derivative_axis="y",
169
+ ),
170
+ ),
171
+ }
172
+
173
+
174
+ def operation_specs_for(plot_type):
175
+ """
176
+ Return common and plot-specific operations for a plot widget class name.
177
+
178
+ """
179
+ return COMMON_OPERATION_SPECS + PLOT_OPERATION_SPECS[plot_type]