scitex 2.15.1__py3-none-any.whl → 2.15.2__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 (107) hide show
  1. scitex/__init__.py +68 -61
  2. scitex/_mcp_tools/introspect.py +42 -23
  3. scitex/_mcp_tools/template.py +24 -0
  4. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +30 -1550
  5. scitex/ai/classification/timeseries/_sliding_window_core.py +467 -0
  6. scitex/ai/classification/timeseries/_sliding_window_plotting.py +369 -0
  7. scitex/audio/__init__.py +2 -2
  8. scitex/audio/_tts.py +18 -10
  9. scitex/audio/engines/base.py +17 -10
  10. scitex/audio/engines/elevenlabs_engine.py +1 -1
  11. scitex/canvas/editor/flask_editor/_core/__init__.py +27 -0
  12. scitex/canvas/editor/flask_editor/_core/_bbox_extraction.py +200 -0
  13. scitex/canvas/editor/flask_editor/_core/_editor.py +173 -0
  14. scitex/canvas/editor/flask_editor/_core/_export_helpers.py +353 -0
  15. scitex/canvas/editor/flask_editor/_core/_routes_basic.py +190 -0
  16. scitex/canvas/editor/flask_editor/_core/_routes_export.py +332 -0
  17. scitex/canvas/editor/flask_editor/_core/_routes_panels.py +252 -0
  18. scitex/canvas/editor/flask_editor/_core/_routes_save.py +218 -0
  19. scitex/canvas/editor/flask_editor/_core.py +25 -1684
  20. scitex/cli/introspect.py +112 -74
  21. scitex/cli/main.py +2 -0
  22. scitex/cli/plt.py +357 -0
  23. scitex/cli/repro.py +15 -8
  24. scitex/cli/resource.py +15 -8
  25. scitex/cli/scholar/__init__.py +15 -8
  26. scitex/cli/social.py +6 -6
  27. scitex/cli/stats.py +15 -8
  28. scitex/cli/template.py +129 -12
  29. scitex/cli/tex.py +15 -8
  30. scitex/cli/writer.py +15 -8
  31. scitex/cloud/__init__.py +41 -2
  32. scitex/config/_env_registry.py +84 -19
  33. scitex/context/__init__.py +22 -0
  34. scitex/dev/__init__.py +20 -1
  35. scitex/gen/__init__.py +50 -14
  36. scitex/gen/_list_packages.py +4 -4
  37. scitex/introspect/__init__.py +16 -9
  38. scitex/introspect/_core.py +7 -8
  39. scitex/{gen/_inspect_module.py → introspect/_list_api.py} +43 -54
  40. scitex/introspect/_mcp/__init__.py +10 -6
  41. scitex/introspect/_mcp/handlers.py +37 -12
  42. scitex/introspect/_members.py +7 -3
  43. scitex/introspect/_signature.py +3 -3
  44. scitex/introspect/_source.py +2 -2
  45. scitex/io/_save.py +1 -2
  46. scitex/logging/_formatters.py +19 -9
  47. scitex/mcp_server.py +1 -1
  48. scitex/os/__init__.py +4 -0
  49. scitex/{gen → os}/_check_host.py +4 -5
  50. scitex/plt/__init__.py +11 -14
  51. scitex/session/__init__.py +26 -7
  52. scitex/session/_decorator.py +1 -1
  53. scitex/sh/__init__.py +7 -4
  54. scitex/social/__init__.py +10 -8
  55. scitex/stats/_mcp/_handlers/__init__.py +31 -0
  56. scitex/stats/_mcp/_handlers/_corrections.py +113 -0
  57. scitex/stats/_mcp/_handlers/_descriptive.py +78 -0
  58. scitex/stats/_mcp/_handlers/_effect_size.py +106 -0
  59. scitex/stats/_mcp/_handlers/_format.py +94 -0
  60. scitex/stats/_mcp/_handlers/_normality.py +110 -0
  61. scitex/stats/_mcp/_handlers/_posthoc.py +224 -0
  62. scitex/stats/_mcp/_handlers/_power.py +247 -0
  63. scitex/stats/_mcp/_handlers/_recommend.py +102 -0
  64. scitex/stats/_mcp/_handlers/_run_test.py +279 -0
  65. scitex/stats/_mcp/_handlers/_stars.py +48 -0
  66. scitex/stats/_mcp/handlers.py +19 -1171
  67. scitex/stats/auto/_stat_style.py +175 -0
  68. scitex/stats/auto/_style_definitions.py +411 -0
  69. scitex/stats/auto/_styles.py +22 -620
  70. scitex/stats/descriptive/__init__.py +11 -8
  71. scitex/stats/descriptive/_ci.py +39 -0
  72. scitex/stats/power/_power.py +15 -4
  73. scitex/str/__init__.py +2 -1
  74. scitex/str/_title_case.py +63 -0
  75. scitex/template/__init__.py +25 -10
  76. scitex/template/_code_templates.py +147 -0
  77. scitex/template/_mcp/handlers.py +81 -0
  78. scitex/template/_mcp/tool_schemas.py +55 -0
  79. scitex/template/_templates/__init__.py +51 -0
  80. scitex/template/_templates/audio.py +233 -0
  81. scitex/template/_templates/canvas.py +312 -0
  82. scitex/template/_templates/capture.py +268 -0
  83. scitex/template/_templates/config.py +43 -0
  84. scitex/template/_templates/diagram.py +294 -0
  85. scitex/template/_templates/io.py +107 -0
  86. scitex/template/_templates/module.py +53 -0
  87. scitex/template/_templates/plt.py +202 -0
  88. scitex/template/_templates/scholar.py +267 -0
  89. scitex/template/_templates/session.py +130 -0
  90. scitex/template/_templates/session_minimal.py +43 -0
  91. scitex/template/_templates/session_plot.py +67 -0
  92. scitex/template/_templates/session_stats.py +77 -0
  93. scitex/template/_templates/stats.py +323 -0
  94. scitex/template/_templates/writer.py +296 -0
  95. scitex/ui/_backends/_email.py +10 -2
  96. scitex/ui/_backends/_webhook.py +5 -1
  97. scitex/web/_search_pubmed.py +10 -6
  98. {scitex-2.15.1.dist-info → scitex-2.15.2.dist-info}/METADATA +1 -1
  99. {scitex-2.15.1.dist-info → scitex-2.15.2.dist-info}/RECORD +105 -64
  100. scitex/gen/_ci.py +0 -12
  101. scitex/gen/_title_case.py +0 -89
  102. /scitex/{gen → context}/_detect_environment.py +0 -0
  103. /scitex/{gen → context}/_get_notebook_path.py +0 -0
  104. /scitex/{gen/_shell.py → sh/_shell_legacy.py} +0 -0
  105. {scitex-2.15.1.dist-info → scitex-2.15.2.dist-info}/WHEEL +0 -0
  106. {scitex-2.15.1.dist-info → scitex-2.15.2.dist-info}/entry_points.txt +0 -0
  107. {scitex-2.15.1.dist-info → scitex-2.15.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env python3
2
+ # Timestamp: "2026-01-24 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-python/src/scitex/stats/auto/_stat_style.py
4
+
5
+ """StatStyle dataclass for statistical reporting."""
6
+
7
+ from __future__ import annotations
8
+
9
+ from dataclasses import dataclass, field
10
+ from typing import Dict, List, Literal, Optional, Tuple
11
+
12
+ OutputTarget = Literal["latex", "html", "plain"]
13
+
14
+ __all__ = ["StatStyle", "OutputTarget"]
15
+
16
+
17
+ @dataclass
18
+ class StatStyle:
19
+ """Style configuration for statistical reporting.
20
+
21
+ Defines how to format statistical results for a specific journal
22
+ or output format.
23
+
24
+ Parameters
25
+ ----------
26
+ id : str
27
+ Unique identifier for this style.
28
+ label : str
29
+ Human-readable label (e.g., "APA (LaTeX)").
30
+ target : OutputTarget
31
+ Output format: "latex", "html", or "plain".
32
+ stat_symbol_format : dict
33
+ Maps statistic symbols to their formatted versions.
34
+ p_format : str
35
+ Format string for p-values.
36
+ alpha_thresholds : list of (float, str)
37
+ P-value thresholds for stars.
38
+ effect_label_format : dict
39
+ Maps effect size names to their formatted labels.
40
+ n_format : str
41
+ Format string for sample sizes.
42
+ decimal_places_p : int
43
+ Decimal places for p-values.
44
+ decimal_places_stat : int
45
+ Decimal places for test statistics.
46
+ decimal_places_effect : int
47
+ Decimal places for effect sizes.
48
+ """
49
+
50
+ id: str
51
+ label: str
52
+ target: OutputTarget
53
+
54
+ stat_symbol_format: Dict[str, str] = field(default_factory=dict)
55
+ p_format: str = "p = {p:.3f}"
56
+ alpha_thresholds: List[Tuple[float, str]] = field(default_factory=list)
57
+ effect_label_format: Dict[str, str] = field(default_factory=dict)
58
+ n_format: str = "n_{%s} = %d"
59
+
60
+ decimal_places_p: int = 3
61
+ decimal_places_stat: int = 2
62
+ decimal_places_effect: int = 2
63
+
64
+ def format_stat(
65
+ self,
66
+ symbol: str,
67
+ value: float,
68
+ df: Optional[float] = None,
69
+ ) -> str:
70
+ """Format a test statistic.
71
+
72
+ Parameters
73
+ ----------
74
+ symbol : str
75
+ Statistic symbol (e.g., "t", "F", "chi2").
76
+ value : float
77
+ Statistic value.
78
+ df : float, optional
79
+ Degrees of freedom.
80
+
81
+ Returns
82
+ -------
83
+ str
84
+ Formatted statistic string.
85
+ """
86
+ fmt_symbol = self.stat_symbol_format.get(symbol, symbol)
87
+ dp = self.decimal_places_stat
88
+
89
+ if df is not None:
90
+ return f"{fmt_symbol}({df:.1f}) = {value:.{dp}f}"
91
+ return f"{fmt_symbol} = {value:.{dp}f}"
92
+
93
+ def format_p(self, p_value: float) -> str:
94
+ """Format a p-value.
95
+
96
+ Parameters
97
+ ----------
98
+ p_value : float
99
+ P-value to format.
100
+
101
+ Returns
102
+ -------
103
+ str
104
+ Formatted p-value string.
105
+ """
106
+ p_symbol = self.stat_symbol_format.get("p", "p")
107
+ dp = self.decimal_places_p
108
+
109
+ if p_value < 0.001:
110
+ return f"{p_symbol} < 0.001"
111
+ if p_value < 0.0001:
112
+ return f"{p_symbol} < 0.0001"
113
+ return f"{p_symbol} = {p_value:.{dp}f}"
114
+
115
+ def format_effect(self, name: str, value: float) -> str:
116
+ """Format an effect size.
117
+
118
+ Parameters
119
+ ----------
120
+ name : str
121
+ Effect size name (e.g., "cohens_d_ind").
122
+ value : float
123
+ Effect size value.
124
+
125
+ Returns
126
+ -------
127
+ str
128
+ Formatted effect size string.
129
+ """
130
+ label = self.effect_label_format.get(name, name)
131
+ dp = self.decimal_places_effect
132
+ return f"{label} = {value:.{dp}f}"
133
+
134
+ def format_n(self, group: str, n: int) -> str:
135
+ """Format a sample size.
136
+
137
+ Parameters
138
+ ----------
139
+ group : str
140
+ Group name/label.
141
+ n : int
142
+ Sample size.
143
+
144
+ Returns
145
+ -------
146
+ str
147
+ Formatted sample size string.
148
+ """
149
+ if "%s" in self.n_format:
150
+ return self.n_format % (group, n)
151
+ return self.n_format % n
152
+
153
+ def p_to_stars(self, p_value: float) -> str:
154
+ """Convert p-value to significance stars.
155
+
156
+ Parameters
157
+ ----------
158
+ p_value : float
159
+ P-value.
160
+
161
+ Returns
162
+ -------
163
+ str
164
+ Stars string ("***", "**", "*", or "ns").
165
+ """
166
+ if p_value is None:
167
+ return "ns"
168
+
169
+ for threshold, stars in self.alpha_thresholds:
170
+ if p_value < threshold:
171
+ return stars
172
+ return "ns"
173
+
174
+
175
+ # EOF
@@ -0,0 +1,411 @@
1
+ #!/usr/bin/env python3
2
+ # Timestamp: "2026-01-24 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-python/src/scitex/stats/auto/_style_definitions.py
4
+
5
+ """Journal style preset definitions for statistical formatting."""
6
+
7
+ from ._stat_style import StatStyle
8
+
9
+ __all__ = [
10
+ "APA_LATEX_STYLE",
11
+ "APA_HTML_STYLE",
12
+ "NATURE_LATEX_STYLE",
13
+ "NATURE_HTML_STYLE",
14
+ "CELL_LATEX_STYLE",
15
+ "CELL_HTML_STYLE",
16
+ "ELSEVIER_LATEX_STYLE",
17
+ "ELSEVIER_HTML_STYLE",
18
+ "PLAIN_STYLE",
19
+ ]
20
+
21
+ # =============================================================================
22
+ # APA Style (LaTeX)
23
+ # =============================================================================
24
+
25
+ APA_LATEX_STYLE = StatStyle(
26
+ id="apa_latex",
27
+ label="APA (LaTeX)",
28
+ target="latex",
29
+ stat_symbol_format={
30
+ "t": "\\mathit{t}",
31
+ "F": "\\mathit{F}",
32
+ "chi2": "\\chi^2",
33
+ "U": "\\mathit{U}",
34
+ "W": "\\mathit{W}",
35
+ "BM": "\\mathit{BM}",
36
+ "r": "\\mathit{r}",
37
+ "n": "\\mathit{n}",
38
+ "p": "\\mathit{p}",
39
+ },
40
+ p_format="\\mathit{p} = {p:.3f}",
41
+ alpha_thresholds=[
42
+ (0.001, "***"),
43
+ (0.01, "**"),
44
+ (0.05, "*"),
45
+ ],
46
+ effect_label_format={
47
+ "cohens_d_ind": "Cohen's~d",
48
+ "cohens_d_paired": "Cohen's~d",
49
+ "hedges_g": "Hedges'~g",
50
+ "cliffs_delta": "Cliff's~$\\delta$",
51
+ "eta_squared": "$\\eta^2$",
52
+ "partial_eta_squared": "$\\eta^2_{p}$",
53
+ "effect_size_r": "\\mathit{r}",
54
+ "odds_ratio": "OR",
55
+ "risk_ratio": "RR",
56
+ "prob_superiority": "P(X>Y)",
57
+ },
58
+ n_format="\\mathit{n}_{%s} = %d",
59
+ decimal_places_p=3,
60
+ decimal_places_stat=2,
61
+ decimal_places_effect=2,
62
+ )
63
+
64
+ # =============================================================================
65
+ # APA Style (HTML)
66
+ # =============================================================================
67
+
68
+ APA_HTML_STYLE = StatStyle(
69
+ id="apa_html",
70
+ label="APA (HTML)",
71
+ target="html",
72
+ stat_symbol_format={
73
+ "t": "<i>t</i>",
74
+ "F": "<i>F</i>",
75
+ "chi2": "<i>&chi;</i><sup>2</sup>",
76
+ "U": "<i>U</i>",
77
+ "W": "<i>W</i>",
78
+ "BM": "<i>BM</i>",
79
+ "r": "<i>r</i>",
80
+ "n": "<i>n</i>",
81
+ "p": "<i>p</i>",
82
+ },
83
+ p_format="<i>p</i> = {p:.3f}",
84
+ alpha_thresholds=[
85
+ (0.001, "***"),
86
+ (0.01, "**"),
87
+ (0.05, "*"),
88
+ ],
89
+ effect_label_format={
90
+ "cohens_d_ind": "Cohen's d",
91
+ "cohens_d_paired": "Cohen's d",
92
+ "hedges_g": "Hedges' g",
93
+ "cliffs_delta": "Cliff's &delta;",
94
+ "eta_squared": "&eta;<sup>2</sup>",
95
+ "partial_eta_squared": "&eta;<sup>2</sup><sub>p</sub>",
96
+ "effect_size_r": "<i>r</i>",
97
+ "odds_ratio": "OR",
98
+ "risk_ratio": "RR",
99
+ "prob_superiority": "P(X>Y)",
100
+ },
101
+ n_format="<i>n</i><sub>%s</sub> = %d",
102
+ decimal_places_p=3,
103
+ decimal_places_stat=2,
104
+ decimal_places_effect=2,
105
+ )
106
+
107
+ # =============================================================================
108
+ # Nature Style (LaTeX)
109
+ # =============================================================================
110
+
111
+ NATURE_LATEX_STYLE = StatStyle(
112
+ id="nature_latex",
113
+ label="Nature (LaTeX)",
114
+ target="latex",
115
+ stat_symbol_format={
116
+ "t": "\\mathit{t}",
117
+ "F": "\\mathit{F}",
118
+ "chi2": "\\chi^2",
119
+ "U": "\\mathit{U}",
120
+ "W": "\\mathit{W}",
121
+ "BM": "\\mathit{BM}",
122
+ "r": "\\mathit{r}",
123
+ "n": "\\mathit{n}",
124
+ "p": "\\mathit{P}", # Nature uses uppercase P
125
+ },
126
+ p_format="\\mathit{P} = {p:.3g}",
127
+ alpha_thresholds=[
128
+ (0.001, "***"),
129
+ (0.01, "**"),
130
+ (0.05, "*"),
131
+ ],
132
+ effect_label_format={
133
+ "cohens_d_ind": "Cohen's~d",
134
+ "cohens_d_paired": "Cohen's~d",
135
+ "hedges_g": "Hedges'~g",
136
+ "cliffs_delta": "Cliff's~$\\delta$",
137
+ "eta_squared": "$\\eta^2$",
138
+ "partial_eta_squared": "$\\eta^2_{p}$",
139
+ "effect_size_r": "\\mathit{r}",
140
+ "odds_ratio": "OR",
141
+ "risk_ratio": "RR",
142
+ "prob_superiority": "P(X>Y)",
143
+ },
144
+ n_format="\\mathit{n} = %d",
145
+ decimal_places_p=3,
146
+ decimal_places_stat=2,
147
+ decimal_places_effect=2,
148
+ )
149
+
150
+ # =============================================================================
151
+ # Nature Style (HTML)
152
+ # =============================================================================
153
+
154
+ NATURE_HTML_STYLE = StatStyle(
155
+ id="nature_html",
156
+ label="Nature (HTML)",
157
+ target="html",
158
+ stat_symbol_format={
159
+ "t": "<i>t</i>",
160
+ "F": "<i>F</i>",
161
+ "chi2": "<i>&chi;</i><sup>2</sup>",
162
+ "U": "<i>U</i>",
163
+ "W": "<i>W</i>",
164
+ "BM": "<i>BM</i>",
165
+ "r": "<i>r</i>",
166
+ "n": "<i>n</i>",
167
+ "p": "<i>P</i>",
168
+ },
169
+ p_format="<i>P</i> = {p:.3g}",
170
+ alpha_thresholds=[
171
+ (0.001, "***"),
172
+ (0.01, "**"),
173
+ (0.05, "*"),
174
+ ],
175
+ effect_label_format={
176
+ "cohens_d_ind": "Cohen's d",
177
+ "cohens_d_paired": "Cohen's d",
178
+ "hedges_g": "Hedges' g",
179
+ "cliffs_delta": "Cliff's &delta;",
180
+ "eta_squared": "&eta;<sup>2</sup>",
181
+ "partial_eta_squared": "&eta;<sup>2</sup><sub>p</sub>",
182
+ "effect_size_r": "<i>r</i>",
183
+ "odds_ratio": "OR",
184
+ "risk_ratio": "RR",
185
+ "prob_superiority": "P(X>Y)",
186
+ },
187
+ n_format="<i>n</i> = %d",
188
+ decimal_places_p=3,
189
+ decimal_places_stat=2,
190
+ decimal_places_effect=2,
191
+ )
192
+
193
+ # =============================================================================
194
+ # Cell Press Style (LaTeX)
195
+ # =============================================================================
196
+
197
+ CELL_LATEX_STYLE = StatStyle(
198
+ id="cell_latex",
199
+ label="Cell (LaTeX)",
200
+ target="latex",
201
+ stat_symbol_format={
202
+ "t": "\\mathit{t}",
203
+ "F": "\\mathit{F}",
204
+ "chi2": "\\chi^2",
205
+ "U": "\\mathit{U}",
206
+ "W": "\\mathit{W}",
207
+ "BM": "\\mathit{BM}",
208
+ "r": "\\mathit{r}",
209
+ "n": "\\mathit{n}",
210
+ "p": "\\mathit{p}",
211
+ },
212
+ p_format="\\mathit{p} = {p:.3g}",
213
+ alpha_thresholds=[
214
+ (0.0001, "****"),
215
+ (0.001, "***"),
216
+ (0.01, "**"),
217
+ (0.05, "*"),
218
+ ],
219
+ effect_label_format={
220
+ "cohens_d_ind": "Cohen's~d",
221
+ "cohens_d_paired": "Cohen's~d",
222
+ "hedges_g": "Hedges'~g",
223
+ "cliffs_delta": "Cliff's~$\\delta$",
224
+ "eta_squared": "$\\eta^2$",
225
+ "partial_eta_squared": "$\\eta^2_{p}$",
226
+ "effect_size_r": "\\mathit{r}",
227
+ "odds_ratio": "OR",
228
+ "risk_ratio": "RR",
229
+ "prob_superiority": "P(X>Y)",
230
+ },
231
+ n_format="\\mathit{n} = %d",
232
+ decimal_places_p=3,
233
+ decimal_places_stat=2,
234
+ decimal_places_effect=2,
235
+ )
236
+
237
+ # =============================================================================
238
+ # Cell Press Style (HTML)
239
+ # =============================================================================
240
+
241
+ CELL_HTML_STYLE = StatStyle(
242
+ id="cell_html",
243
+ label="Cell (HTML)",
244
+ target="html",
245
+ stat_symbol_format={
246
+ "t": "<i>t</i>",
247
+ "F": "<i>F</i>",
248
+ "chi2": "<i>&chi;</i><sup>2</sup>",
249
+ "U": "<i>U</i>",
250
+ "W": "<i>W</i>",
251
+ "BM": "<i>BM</i>",
252
+ "r": "<i>r</i>",
253
+ "n": "<i>n</i>",
254
+ "p": "<i>p</i>",
255
+ },
256
+ p_format="<i>p</i> = {p:.3g}",
257
+ alpha_thresholds=[
258
+ (0.0001, "****"),
259
+ (0.001, "***"),
260
+ (0.01, "**"),
261
+ (0.05, "*"),
262
+ ],
263
+ effect_label_format={
264
+ "cohens_d_ind": "Cohen's d",
265
+ "cohens_d_paired": "Cohen's d",
266
+ "hedges_g": "Hedges' g",
267
+ "cliffs_delta": "Cliff's &delta;",
268
+ "eta_squared": "&eta;<sup>2</sup>",
269
+ "partial_eta_squared": "&eta;<sup>2</sup><sub>p</sub>",
270
+ "effect_size_r": "<i>r</i>",
271
+ "odds_ratio": "OR",
272
+ "risk_ratio": "RR",
273
+ "prob_superiority": "P(X>Y)",
274
+ },
275
+ n_format="<i>n</i> = %d",
276
+ decimal_places_p=3,
277
+ decimal_places_stat=2,
278
+ decimal_places_effect=2,
279
+ )
280
+
281
+ # =============================================================================
282
+ # Elsevier Style (LaTeX)
283
+ # =============================================================================
284
+
285
+ ELSEVIER_LATEX_STYLE = StatStyle(
286
+ id="elsevier_latex",
287
+ label="Elsevier (LaTeX)",
288
+ target="latex",
289
+ stat_symbol_format={
290
+ "t": "\\mathit{t}",
291
+ "F": "\\mathit{F}",
292
+ "chi2": "\\chi^2",
293
+ "U": "\\mathit{U}",
294
+ "W": "\\mathit{W}",
295
+ "BM": "\\mathit{BM}",
296
+ "r": "\\mathit{r}",
297
+ "n": "\\mathit{n}",
298
+ "p": "\\mathit{p}",
299
+ },
300
+ p_format="\\mathit{p} = {p:.3f}",
301
+ alpha_thresholds=[
302
+ (0.001, "***"),
303
+ (0.01, "**"),
304
+ (0.05, "*"),
305
+ ],
306
+ effect_label_format={
307
+ "cohens_d_ind": "Cohen's~d",
308
+ "cohens_d_paired": "Cohen's~d",
309
+ "hedges_g": "Hedges'~g",
310
+ "cliffs_delta": "Cliff's~$\\delta$",
311
+ "eta_squared": "$\\eta^2$",
312
+ "partial_eta_squared": "$\\eta^2_{p}$",
313
+ "effect_size_r": "\\mathit{r}",
314
+ "odds_ratio": "OR",
315
+ "risk_ratio": "RR",
316
+ "prob_superiority": "P(X>Y)",
317
+ },
318
+ n_format="\\mathit{n} = %d",
319
+ decimal_places_p=3,
320
+ decimal_places_stat=2,
321
+ decimal_places_effect=2,
322
+ )
323
+
324
+ # =============================================================================
325
+ # Elsevier Style (HTML)
326
+ # =============================================================================
327
+
328
+ ELSEVIER_HTML_STYLE = StatStyle(
329
+ id="elsevier_html",
330
+ label="Elsevier (HTML)",
331
+ target="html",
332
+ stat_symbol_format={
333
+ "t": "<i>t</i>",
334
+ "F": "<i>F</i>",
335
+ "chi2": "<i>&chi;</i><sup>2</sup>",
336
+ "U": "<i>U</i>",
337
+ "W": "<i>W</i>",
338
+ "BM": "<i>BM</i>",
339
+ "r": "<i>r</i>",
340
+ "n": "<i>n</i>",
341
+ "p": "<i>p</i>",
342
+ },
343
+ p_format="<i>p</i> = {p:.3f}",
344
+ alpha_thresholds=[
345
+ (0.001, "***"),
346
+ (0.01, "**"),
347
+ (0.05, "*"),
348
+ ],
349
+ effect_label_format={
350
+ "cohens_d_ind": "Cohen's d",
351
+ "cohens_d_paired": "Cohen's d",
352
+ "hedges_g": "Hedges' g",
353
+ "cliffs_delta": "Cliff's &delta;",
354
+ "eta_squared": "&eta;<sup>2</sup>",
355
+ "partial_eta_squared": "&eta;<sup>2</sup><sub>p</sub>",
356
+ "effect_size_r": "<i>r</i>",
357
+ "odds_ratio": "OR",
358
+ "risk_ratio": "RR",
359
+ "prob_superiority": "P(X>Y)",
360
+ },
361
+ n_format="<i>n</i> = %d",
362
+ decimal_places_p=3,
363
+ decimal_places_stat=2,
364
+ decimal_places_effect=2,
365
+ )
366
+
367
+ # =============================================================================
368
+ # Plain Text Style
369
+ # =============================================================================
370
+
371
+ PLAIN_STYLE = StatStyle(
372
+ id="plain",
373
+ label="Plain Text",
374
+ target="plain",
375
+ stat_symbol_format={
376
+ "t": "t",
377
+ "F": "F",
378
+ "chi2": "chi2",
379
+ "U": "U",
380
+ "W": "W",
381
+ "BM": "BM",
382
+ "r": "r",
383
+ "n": "n",
384
+ "p": "p",
385
+ },
386
+ p_format="p = {p:.3f}",
387
+ alpha_thresholds=[
388
+ (0.001, "***"),
389
+ (0.01, "**"),
390
+ (0.05, "*"),
391
+ ],
392
+ effect_label_format={
393
+ "cohens_d_ind": "Cohen's d",
394
+ "cohens_d_paired": "Cohen's d",
395
+ "hedges_g": "Hedges' g",
396
+ "cliffs_delta": "Cliff's delta",
397
+ "eta_squared": "eta^2",
398
+ "partial_eta_squared": "partial eta^2",
399
+ "effect_size_r": "r",
400
+ "odds_ratio": "OR",
401
+ "risk_ratio": "RR",
402
+ "prob_superiority": "P(X>Y)",
403
+ },
404
+ n_format="n_%s = %d",
405
+ decimal_places_p=3,
406
+ decimal_places_stat=2,
407
+ decimal_places_effect=2,
408
+ )
409
+
410
+
411
+ # EOF