scitex 2.11.0__py3-none-any.whl → 2.13.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.
- scitex/__main__.py +24 -5
- scitex/__version__.py +1 -1
- scitex/_optional_deps.py +33 -0
- scitex/ai/classification/reporters/_ClassificationReporter.py +1 -1
- scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +2 -2
- scitex/ai/classification/timeseries/_normalize_timestamp.py +1 -1
- scitex/ai/metrics/_calc_seizure_prediction_metrics.py +1 -1
- scitex/ai/plt/_plot_feature_importance.py +1 -1
- scitex/ai/plt/_plot_learning_curve.py +1 -1
- scitex/ai/plt/_plot_optuna_study.py +1 -1
- scitex/ai/plt/_plot_pre_rec_curve.py +1 -1
- scitex/ai/plt/_plot_roc_curve.py +1 -1
- scitex/ai/plt/_stx_conf_mat.py +1 -1
- scitex/ai/training/_LearningCurveLogger.py +1 -1
- scitex/audio/mcp_server.py +38 -8
- scitex/browser/automation/CookieHandler.py +1 -1
- scitex/browser/core/BrowserMixin.py +1 -1
- scitex/browser/core/ChromeProfileManager.py +1 -1
- scitex/browser/debugging/_browser_logger.py +1 -1
- scitex/browser/debugging/_highlight_element.py +1 -1
- scitex/browser/debugging/_show_grid.py +1 -1
- scitex/browser/interaction/click_center.py +1 -1
- scitex/browser/interaction/click_with_fallbacks.py +1 -1
- scitex/browser/interaction/close_popups.py +1 -1
- scitex/browser/interaction/fill_with_fallbacks.py +1 -1
- scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +1 -1
- scitex/browser/pdf/detect_chrome_pdf_viewer.py +1 -1
- scitex/browser/stealth/HumanBehavior.py +1 -1
- scitex/browser/stealth/StealthManager.py +1 -1
- scitex/canvas/_mcp_handlers.py +372 -0
- scitex/canvas/_mcp_tool_schemas.py +219 -0
- scitex/canvas/mcp_server.py +151 -0
- scitex/capture/mcp_server.py +41 -12
- scitex/cli/audio.py +233 -0
- scitex/cli/capture.py +307 -0
- scitex/cli/main.py +27 -4
- scitex/cli/repro.py +233 -0
- scitex/cli/resource.py +240 -0
- scitex/cli/stats.py +325 -0
- scitex/cli/template.py +236 -0
- scitex/cli/tex.py +286 -0
- scitex/cli/web.py +11 -12
- scitex/dev/__init__.py +3 -0
- scitex/dev/_pyproject.py +405 -0
- scitex/dev/plt/__init__.py +2 -2
- scitex/dev/plt/mpl/get_dir_ax.py +1 -1
- scitex/dev/plt/mpl/get_signatures.py +1 -1
- scitex/dev/plt/mpl/get_signatures_details.py +1 -1
- scitex/diagram/_mcp_handlers.py +400 -0
- scitex/diagram/_mcp_tool_schemas.py +157 -0
- scitex/diagram/mcp_server.py +151 -0
- scitex/dsp/_demo_sig.py +51 -5
- scitex/dsp/_mne.py +13 -2
- scitex/dsp/_modulation_index.py +15 -3
- scitex/dsp/_pac.py +23 -5
- scitex/dsp/_psd.py +16 -4
- scitex/dsp/_resample.py +24 -4
- scitex/dsp/_transform.py +16 -3
- scitex/dsp/add_noise.py +15 -1
- scitex/dsp/norm.py +17 -2
- scitex/dsp/reference.py +17 -1
- scitex/dsp/utils/_differential_bandpass_filters.py +20 -2
- scitex/dsp/utils/_zero_pad.py +18 -4
- scitex/dt/_normalize_timestamp.py +1 -1
- scitex/git/_session.py +1 -1
- scitex/io/_load_modules/_con.py +12 -1
- scitex/io/_load_modules/_eeg.py +12 -1
- scitex/io/_load_modules/_optuna.py +21 -63
- scitex/io/_load_modules/_torch.py +11 -3
- scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +13 -2
- scitex/io/_save_modules/_torch.py +11 -3
- scitex/mcp_server.py +159 -0
- scitex/plt/_mcp_handlers.py +361 -0
- scitex/plt/_mcp_tool_schemas.py +169 -0
- scitex/plt/mcp_server.py +205 -0
- scitex/repro/README_RandomStateManager.md +3 -3
- scitex/repro/_RandomStateManager.py +14 -14
- scitex/repro/_gen_ID.py +1 -1
- scitex/repro/_gen_timestamp.py +1 -1
- scitex/repro/_hash_array.py +4 -4
- scitex/scholar/__main__.py +24 -2
- scitex/scholar/_mcp_handlers.py +685 -0
- scitex/scholar/_mcp_tool_schemas.py +339 -0
- scitex/scholar/docs/template.py +1 -1
- scitex/scholar/examples/07_storage_integration.py +1 -1
- scitex/scholar/impact_factor/jcr/ImpactFactorJCREngine.py +1 -1
- scitex/scholar/impact_factor/jcr/build_database.py +1 -1
- scitex/scholar/mcp_server.py +315 -0
- scitex/scholar/pdf_download/ScholarPDFDownloader.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineBibTeX.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineParallel.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineSingle.py +1 -1
- scitex/scholar/storage/PaperIO.py +1 -1
- scitex/session/README.md +4 -4
- scitex/session/__init__.py +1 -1
- scitex/session/_decorator.py +9 -9
- scitex/session/_lifecycle.py +5 -5
- scitex/session/template.py +1 -1
- scitex/stats/__main__.py +281 -0
- scitex/stats/_mcp_handlers.py +1191 -0
- scitex/stats/_mcp_tool_schemas.py +384 -0
- scitex/stats/correct/_correct_bonferroni.py +1 -1
- scitex/stats/correct/_correct_fdr.py +1 -1
- scitex/stats/correct/_correct_fdr_.py +1 -1
- scitex/stats/correct/_correct_holm.py +1 -1
- scitex/stats/correct/_correct_sidak.py +1 -1
- scitex/stats/effect_sizes/_cliffs_delta.py +1 -1
- scitex/stats/effect_sizes/_cohens_d.py +1 -1
- scitex/stats/effect_sizes/_epsilon_squared.py +1 -1
- scitex/stats/effect_sizes/_eta_squared.py +1 -1
- scitex/stats/effect_sizes/_prob_superiority.py +1 -1
- scitex/stats/mcp_server.py +405 -0
- scitex/stats/posthoc/_dunnett.py +1 -1
- scitex/stats/posthoc/_games_howell.py +1 -1
- scitex/stats/posthoc/_tukey_hsd.py +1 -1
- scitex/stats/power/_power.py +1 -1
- scitex/stats/utils/_effect_size.py +1 -1
- scitex/stats/utils/_formatters.py +1 -1
- scitex/stats/utils/_power.py +1 -1
- scitex/template/_mcp_handlers.py +259 -0
- scitex/template/_mcp_tool_schemas.py +112 -0
- scitex/template/mcp_server.py +186 -0
- scitex/utils/_verify_scitex_format.py +2 -2
- scitex/utils/template.py +1 -1
- scitex/web/__init__.py +12 -11
- scitex/web/_scraping.py +26 -265
- scitex/web/download_images.py +316 -0
- scitex/writer/Writer.py +1 -1
- scitex/writer/_clone_writer_project.py +1 -1
- scitex/writer/_validate_tree_structures.py +1 -1
- scitex/writer/dataclasses/config/_WriterConfig.py +1 -1
- scitex/writer/dataclasses/contents/_ManuscriptContents.py +1 -1
- scitex/writer/dataclasses/core/_Document.py +1 -1
- scitex/writer/dataclasses/core/_DocumentSection.py +1 -1
- scitex/writer/dataclasses/results/_CompilationResult.py +1 -1
- scitex/writer/dataclasses/results/_LaTeXIssue.py +1 -1
- scitex/writer/utils/.legacy_git_retry.py +7 -5
- scitex/writer/utils/_parse_latex_logs.py +1 -1
- {scitex-2.11.0.dist-info → scitex-2.13.0.dist-info}/METADATA +431 -269
- {scitex-2.11.0.dist-info → scitex-2.13.0.dist-info}/RECORD +147 -118
- scitex-2.13.0.dist-info/entry_points.txt +11 -0
- scitex-2.11.0.dist-info/entry_points.txt +0 -2
- {scitex-2.11.0.dist-info → scitex-2.13.0.dist-info}/WHEEL +0 -0
- {scitex-2.11.0.dist-info → scitex-2.13.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scitex
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.13.0
|
|
4
4
|
Summary: A comprehensive Python library for scientific computing and data analysis
|
|
5
5
|
Project-URL: Homepage, https://github.com/ywatanabe1989/scitex-code
|
|
6
6
|
Project-URL: Documentation, https://scitex.readthedocs.io
|
|
@@ -42,10 +42,7 @@ Requires-Dist: markdown2; extra == 'ai'
|
|
|
42
42
|
Requires-Dist: matplotlib; extra == 'ai'
|
|
43
43
|
Requires-Dist: natsort; extra == 'ai'
|
|
44
44
|
Requires-Dist: openai; extra == 'ai'
|
|
45
|
-
Requires-Dist: optuna; extra == 'ai'
|
|
46
45
|
Requires-Dist: pillow; extra == 'ai'
|
|
47
|
-
Requires-Dist: psutil; extra == 'ai'
|
|
48
|
-
Requires-Dist: pytorch-pretrained-vit; extra == 'ai'
|
|
49
46
|
Requires-Dist: pyyaml; extra == 'ai'
|
|
50
47
|
Requires-Dist: requests; extra == 'ai'
|
|
51
48
|
Requires-Dist: ruamel-yaml; extra == 'ai'
|
|
@@ -53,8 +50,6 @@ Requires-Dist: scikit-learn; extra == 'ai'
|
|
|
53
50
|
Requires-Dist: scipy; extra == 'ai'
|
|
54
51
|
Requires-Dist: seaborn; extra == 'ai'
|
|
55
52
|
Requires-Dist: sktime; extra == 'ai'
|
|
56
|
-
Requires-Dist: torch; extra == 'ai'
|
|
57
|
-
Requires-Dist: torchvision; extra == 'ai'
|
|
58
53
|
Requires-Dist: umap-learn; extra == 'ai'
|
|
59
54
|
Requires-Dist: xarray; extra == 'ai'
|
|
60
55
|
Provides-Extra: all
|
|
@@ -211,7 +206,6 @@ Requires-Dist: joblib; extra == 'decorators'
|
|
|
211
206
|
Requires-Dist: matplotlib; extra == 'decorators'
|
|
212
207
|
Requires-Dist: pytest-asyncio; extra == 'decorators'
|
|
213
208
|
Requires-Dist: scipy; extra == 'decorators'
|
|
214
|
-
Requires-Dist: torch; extra == 'decorators'
|
|
215
209
|
Requires-Dist: tqdm; extra == 'decorators'
|
|
216
210
|
Requires-Dist: xarray; extra == 'decorators'
|
|
217
211
|
Provides-Extra: dev
|
|
@@ -246,6 +240,7 @@ Requires-Dist: sphinx-autobuild; extra == 'dev'
|
|
|
246
240
|
Requires-Dist: sphinx-autodoc-typehints; extra == 'dev'
|
|
247
241
|
Requires-Dist: sphinx-rtd-theme; extra == 'dev'
|
|
248
242
|
Requires-Dist: stdlib-list; extra == 'dev'
|
|
243
|
+
Requires-Dist: tomlkit; extra == 'dev'
|
|
249
244
|
Requires-Dist: twine; extra == 'dev'
|
|
250
245
|
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
251
246
|
Requires-Dist: types-requests; extra == 'dev'
|
|
@@ -263,19 +258,13 @@ Requires-Dist: pyyaml; extra == 'diagram'
|
|
|
263
258
|
Provides-Extra: dsp
|
|
264
259
|
Requires-Dist: h5py; extra == 'dsp'
|
|
265
260
|
Requires-Dist: joblib; extra == 'dsp'
|
|
266
|
-
Requires-Dist: julius; extra == 'dsp'
|
|
267
261
|
Requires-Dist: matplotlib; extra == 'dsp'
|
|
268
|
-
Requires-Dist: mne; extra == 'dsp'
|
|
269
262
|
Requires-Dist: readchar; extra == 'dsp'
|
|
270
|
-
Requires-Dist: ripple-detection; extra == 'dsp'
|
|
271
263
|
Requires-Dist: ruamel-yaml; extra == 'dsp'
|
|
272
264
|
Requires-Dist: scipy; extra == 'dsp'
|
|
273
265
|
Requires-Dist: seaborn; extra == 'dsp'
|
|
274
266
|
Requires-Dist: sounddevice; extra == 'dsp'
|
|
275
267
|
Requires-Dist: tensorpac; extra == 'dsp'
|
|
276
|
-
Requires-Dist: torch; extra == 'dsp'
|
|
277
|
-
Requires-Dist: torchaudio; extra == 'dsp'
|
|
278
|
-
Requires-Dist: torchsummary; extra == 'dsp'
|
|
279
268
|
Requires-Dist: xarray; extra == 'dsp'
|
|
280
269
|
Provides-Extra: dt
|
|
281
270
|
Requires-Dist: matplotlib; extra == 'dt'
|
|
@@ -288,13 +277,26 @@ Requires-Dist: pyperclip; extra == 'gen'
|
|
|
288
277
|
Requires-Dist: readchar; extra == 'gen'
|
|
289
278
|
Requires-Dist: requests; extra == 'gen'
|
|
290
279
|
Requires-Dist: scipy; extra == 'gen'
|
|
291
|
-
Requires-Dist: torch; extra == 'gen'
|
|
292
280
|
Requires-Dist: xarray; extra == 'gen'
|
|
293
281
|
Provides-Extra: git
|
|
294
282
|
Requires-Dist: gitpython; extra == 'git'
|
|
295
283
|
Requires-Dist: matplotlib; extra == 'git'
|
|
284
|
+
Provides-Extra: heavy
|
|
285
|
+
Requires-Dist: catboost; extra == 'heavy'
|
|
286
|
+
Requires-Dist: jax; extra == 'heavy'
|
|
287
|
+
Requires-Dist: julius; extra == 'heavy'
|
|
288
|
+
Requires-Dist: mne; extra == 'heavy'
|
|
289
|
+
Requires-Dist: optuna; extra == 'heavy'
|
|
290
|
+
Requires-Dist: psutil; extra == 'heavy'
|
|
291
|
+
Requires-Dist: pytorch-pretrained-vit; extra == 'heavy'
|
|
292
|
+
Requires-Dist: ripple-detection; extra == 'heavy'
|
|
293
|
+
Requires-Dist: tensorflow; extra == 'heavy'
|
|
294
|
+
Requires-Dist: torch; extra == 'heavy'
|
|
295
|
+
Requires-Dist: torchaudio; extra == 'heavy'
|
|
296
|
+
Requires-Dist: torchsummary; extra == 'heavy'
|
|
297
|
+
Requires-Dist: torchvision; extra == 'heavy'
|
|
298
|
+
Requires-Dist: umap-learn; extra == 'heavy'
|
|
296
299
|
Provides-Extra: io
|
|
297
|
-
Requires-Dist: catboost; extra == 'io'
|
|
298
300
|
Requires-Dist: gitpython; extra == 'io'
|
|
299
301
|
Requires-Dist: h5py; extra == 'io'
|
|
300
302
|
Requires-Dist: html2text; extra == 'io'
|
|
@@ -303,16 +305,13 @@ Requires-Dist: lxml; extra == 'io'
|
|
|
303
305
|
Requires-Dist: lxml-html-clean; extra == 'io'
|
|
304
306
|
Requires-Dist: markdown; extra == 'io'
|
|
305
307
|
Requires-Dist: matplotlib; extra == 'io'
|
|
306
|
-
Requires-Dist: mne; extra == 'io'
|
|
307
308
|
Requires-Dist: natsort; extra == 'io'
|
|
308
309
|
Requires-Dist: numcodecs; extra == 'io'
|
|
309
310
|
Requires-Dist: openpyxl; extra == 'io'
|
|
310
|
-
Requires-Dist: optuna; extra == 'io'
|
|
311
311
|
Requires-Dist: pdfplumber; extra == 'io'
|
|
312
312
|
Requires-Dist: piexif; extra == 'io'
|
|
313
313
|
Requires-Dist: pillow; extra == 'io'
|
|
314
314
|
Requires-Dist: plotly; extra == 'io'
|
|
315
|
-
Requires-Dist: psutil; extra == 'io'
|
|
316
315
|
Requires-Dist: pyarrow; extra == 'io'
|
|
317
316
|
Requires-Dist: pymatreader; extra == 'io'
|
|
318
317
|
Requires-Dist: pymupdf; extra == 'io'
|
|
@@ -323,7 +322,6 @@ Requires-Dist: pyyaml; extra == 'io'
|
|
|
323
322
|
Requires-Dist: qrcode[pil]; extra == 'io'
|
|
324
323
|
Requires-Dist: ruamel-yaml; extra == 'io'
|
|
325
324
|
Requires-Dist: scipy; extra == 'io'
|
|
326
|
-
Requires-Dist: torch; extra == 'io'
|
|
327
325
|
Requires-Dist: tqdm; extra == 'io'
|
|
328
326
|
Requires-Dist: xarray; extra == 'io'
|
|
329
327
|
Requires-Dist: xlrd; extra == 'io'
|
|
@@ -334,7 +332,6 @@ Requires-Dist: joblib; extra == 'linalg'
|
|
|
334
332
|
Requires-Dist: matplotlib; extra == 'linalg'
|
|
335
333
|
Requires-Dist: scipy; extra == 'linalg'
|
|
336
334
|
Requires-Dist: sympy; extra == 'linalg'
|
|
337
|
-
Requires-Dist: torch; extra == 'linalg'
|
|
338
335
|
Requires-Dist: xarray; extra == 'linalg'
|
|
339
336
|
Provides-Extra: logging
|
|
340
337
|
Requires-Dist: matplotlib; extra == 'logging'
|
|
@@ -345,17 +342,11 @@ Provides-Extra: nn
|
|
|
345
342
|
Requires-Dist: h5py; extra == 'nn'
|
|
346
343
|
Requires-Dist: ipdb; extra == 'nn'
|
|
347
344
|
Requires-Dist: joblib; extra == 'nn'
|
|
348
|
-
Requires-Dist: julius; extra == 'nn'
|
|
349
345
|
Requires-Dist: matplotlib; extra == 'nn'
|
|
350
|
-
Requires-Dist: mne; extra == 'nn'
|
|
351
346
|
Requires-Dist: readchar; extra == 'nn'
|
|
352
|
-
Requires-Dist: ripple-detection; extra == 'nn'
|
|
353
347
|
Requires-Dist: ruamel-yaml; extra == 'nn'
|
|
354
348
|
Requires-Dist: seaborn; extra == 'nn'
|
|
355
349
|
Requires-Dist: tensorpac; extra == 'nn'
|
|
356
|
-
Requires-Dist: torch; extra == 'nn'
|
|
357
|
-
Requires-Dist: torchaudio; extra == 'nn'
|
|
358
|
-
Requires-Dist: torchsummary; extra == 'nn'
|
|
359
350
|
Requires-Dist: xarray; extra == 'nn'
|
|
360
351
|
Provides-Extra: parallel
|
|
361
352
|
Requires-Dist: tqdm; extra == 'parallel'
|
|
@@ -376,10 +367,7 @@ Requires-Dist: seaborn; extra == 'plt'
|
|
|
376
367
|
Requires-Dist: termplotlib; extra == 'plt'
|
|
377
368
|
Requires-Dist: xarray; extra == 'plt'
|
|
378
369
|
Provides-Extra: repro
|
|
379
|
-
Requires-Dist: jax; extra == 'repro'
|
|
380
370
|
Requires-Dist: matplotlib; extra == 'repro'
|
|
381
|
-
Requires-Dist: tensorflow; extra == 'repro'
|
|
382
|
-
Requires-Dist: torch; extra == 'repro'
|
|
383
371
|
Provides-Extra: resource
|
|
384
372
|
Requires-Dist: h5py; extra == 'resource'
|
|
385
373
|
Requires-Dist: joblib; extra == 'resource'
|
|
@@ -389,7 +377,6 @@ Requires-Dist: pyyaml; extra == 'resource'
|
|
|
389
377
|
Requires-Dist: readchar; extra == 'resource'
|
|
390
378
|
Requires-Dist: ruamel-yaml; extra == 'resource'
|
|
391
379
|
Requires-Dist: scipy; extra == 'resource'
|
|
392
|
-
Requires-Dist: torch; extra == 'resource'
|
|
393
380
|
Provides-Extra: scholar
|
|
394
381
|
Requires-Dist: aiohttp; extra == 'scholar'
|
|
395
382
|
Requires-Dist: beautifulsoup4; extra == 'scholar'
|
|
@@ -421,7 +408,6 @@ Requires-Dist: selenium; extra == 'scholar'
|
|
|
421
408
|
Requires-Dist: sql-manager; extra == 'scholar'
|
|
422
409
|
Requires-Dist: sqlalchemy; extra == 'scholar'
|
|
423
410
|
Requires-Dist: tenacity; extra == 'scholar'
|
|
424
|
-
Requires-Dist: torch; extra == 'scholar'
|
|
425
411
|
Requires-Dist: tqdm; extra == 'scholar'
|
|
426
412
|
Requires-Dist: watchdog; extra == 'scholar'
|
|
427
413
|
Requires-Dist: webdriver-manager; extra == 'scholar'
|
|
@@ -435,7 +421,6 @@ Requires-Dist: matplotlib; extra == 'stats'
|
|
|
435
421
|
Requires-Dist: scipy; extra == 'stats'
|
|
436
422
|
Requires-Dist: statsmodels; extra == 'stats'
|
|
437
423
|
Requires-Dist: tabulate; extra == 'stats'
|
|
438
|
-
Requires-Dist: torch; extra == 'stats'
|
|
439
424
|
Provides-Extra: str
|
|
440
425
|
Requires-Dist: matplotlib; extra == 'str'
|
|
441
426
|
Requires-Dist: natsort; extra == 'str'
|
|
@@ -445,7 +430,6 @@ Requires-Dist: matplotlib; extra == 'tex'
|
|
|
445
430
|
Provides-Extra: torch
|
|
446
431
|
Requires-Dist: torch; extra == 'torch'
|
|
447
432
|
Provides-Extra: types
|
|
448
|
-
Requires-Dist: torch; extra == 'types'
|
|
449
433
|
Requires-Dist: xarray; extra == 'types'
|
|
450
434
|
Provides-Extra: utils
|
|
451
435
|
Requires-Dist: h5py; extra == 'utils'
|
|
@@ -471,9 +455,7 @@ Requires-Dist: ruamel-yaml; extra == 'web'
|
|
|
471
455
|
Requires-Dist: scikit-learn; extra == 'web'
|
|
472
456
|
Requires-Dist: scipy; extra == 'web'
|
|
473
457
|
Requires-Dist: seaborn; extra == 'web'
|
|
474
|
-
Requires-Dist: torch; extra == 'web'
|
|
475
458
|
Requires-Dist: tqdm; extra == 'web'
|
|
476
|
-
Requires-Dist: umap-learn; extra == 'web'
|
|
477
459
|
Requires-Dist: xarray; extra == 'web'
|
|
478
460
|
Provides-Extra: writer
|
|
479
461
|
Requires-Dist: csv2latex; extra == 'writer'
|
|
@@ -485,7 +467,7 @@ Requires-Dist: yq; extra == 'writer'
|
|
|
485
467
|
Description-Content-Type: text/markdown
|
|
486
468
|
|
|
487
469
|
<!-- ---
|
|
488
|
-
!-- Timestamp: 2026-01-
|
|
470
|
+
!-- Timestamp: 2026-01-08 11:41:42
|
|
489
471
|
!-- Author: ywatanabe
|
|
490
472
|
!-- File: /home/ywatanabe/proj/scitex-code/README.md
|
|
491
473
|
!-- --- -->
|
|
@@ -496,216 +478,125 @@ A Python framework for scientific research that makes the entire research pipeli
|
|
|
496
478
|
|
|
497
479
|
Part of the fully open-source SciTeX project: https://scitex.ai
|
|
498
480
|
|
|
481
|
+
## 📊 Status
|
|
482
|
+
|
|
499
483
|
<!-- badges -->
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
484
|
+
<div align="center">
|
|
485
|
+
<table>
|
|
486
|
+
<tr>
|
|
487
|
+
<td align="center"><strong>Package</strong></td>
|
|
488
|
+
<td>
|
|
489
|
+
<a href="https://badge.fury.io/py/scitex"><img src="https://badge.fury.io/py/scitex.svg" alt="PyPI version"></a>
|
|
490
|
+
<a href="https://pypi.org/project/scitex/"><img src="https://img.shields.io/pypi/pyversions/scitex.svg" alt="Python Versions"></a>
|
|
491
|
+
<a href="https://github.com/ywatanabe1989/SciTeX-Code/blob/main/LICENSE"><img src="https://img.shields.io/github/license/ywatanabe1989/SciTeX-Code" alt="License"></a>
|
|
492
|
+
</td>
|
|
493
|
+
</tr>
|
|
494
|
+
<tr>
|
|
495
|
+
<td align="center"><strong>Install</strong></td>
|
|
496
|
+
<td>
|
|
497
|
+
<img src="https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/core.json&label=core" alt="Core Install Time">
|
|
498
|
+
<img src="https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/all.json&label=all" alt="All Install Time">
|
|
499
|
+
<img src="https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/heavy.json&label=heavy" alt="Heavy Install Time">
|
|
500
|
+
<img src="https://img.shields.io/badge/uv-recommended-blue" alt="uv recommended">
|
|
501
|
+
</td>
|
|
502
|
+
</tr>
|
|
503
|
+
</table>
|
|
504
|
+
</div>
|
|
506
505
|
|
|
507
506
|
<details>
|
|
508
|
-
<summary><strong>Module
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
[ | Universal I/O (30+ formats) | `scitex[io]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-io.yml) |
|
|
514
|
+
| [`path`](./src/scitex/path#readme) | Path utilities | `scitex[path]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-path.yml) |
|
|
515
|
+
| [`str`](./src/scitex/str#readme) | String processing | `scitex[str]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-str.yml) |
|
|
516
|
+
| [`dict`](./src/scitex/dict#readme) | Dictionary utilities | core  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dict.yml) |
|
|
517
|
+
| [`types`](./src/scitex/types#readme) | Type checking | core  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-types.yml) |
|
|
518
|
+
| [`config`](./src/scitex/config#readme) | Configuration management | `scitex[config]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-config.yml) |
|
|
519
|
+
| [`utils`](./src/scitex/utils#readme) | General utilities | `scitex[utils]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-utils.yml) |
|
|
520
|
+
| [`decorators`](./src/scitex/decorators#readme) | Function decorators | `scitex[decorators]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-decorators.yml) |
|
|
521
|
+
| [`logging`](./src/scitex/logging#readme) | Structured logging | `scitex[logging]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-logging.yml) |
|
|
522
|
+
| [`gen`](./src/scitex/gen#readme) | Project setup | `scitex[gen]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-gen.yml) |
|
|
523
|
+
|
|
524
|
+
### Data Science & Statistics
|
|
525
|
+
|
|
526
|
+
| Module | Description | Install (Time) | Tests |
|
|
527
|
+
|--------|-------------|----------------|-------|
|
|
528
|
+
| [`stats`](./src/scitex/stats#readme) | Statistical tests & analysis | `scitex[stats]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-stats.yml) |
|
|
529
|
+
| [`pd`](./src/scitex/pd#readme) | Pandas extensions | `scitex[pd]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-pd.yml) |
|
|
530
|
+
| [`linalg`](./src/scitex/linalg#readme) | Linear algebra | `scitex[linalg]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-linalg.yml) |
|
|
531
|
+
| [`plt`](./src/scitex/plt#readme) | Enhanced matplotlib | `scitex[plt]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-plt.yml) |
|
|
532
|
+
| [`dsp`](./src/scitex/dsp#readme) | Signal processing | `scitex[dsp]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dsp.yml) |
|
|
533
|
+
|
|
534
|
+
### AI & Machine Learning
|
|
535
|
+
|
|
536
|
+
| Module | Description | Install (Time) | Tests |
|
|
537
|
+
|--------|-------------|----------------|-------|
|
|
538
|
+
| [`ai`](./src/scitex/ai#readme) | GenAI (7 providers) | `scitex[ai]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-ai.yml) |
|
|
539
|
+
| [`nn`](./src/scitex/nn#readme) | Neural network layers | `scitex[nn]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-nn.yml) |
|
|
540
|
+
| [`torch`](./src/scitex/torch#readme) | PyTorch utilities | `scitex[torch]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-torch.yml) |
|
|
541
|
+
|
|
542
|
+
### System & Tools
|
|
543
|
+
|
|
544
|
+
| Module | Description | Install (Time) | Tests |
|
|
545
|
+
|--------|-------------|----------------|-------|
|
|
546
|
+
| [`cli`](./src/scitex/cli#readme) | Command-line tools | `scitex[cli]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-cli.yml) |
|
|
547
|
+
| [`sh`](./src/scitex/sh#readme) | Shell utilities | `scitex[sh]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-sh.yml) |
|
|
548
|
+
| [`git`](./src/scitex/git#readme) | Git operations | `scitex[git]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-git.yml) |
|
|
549
|
+
| [`session`](./src/scitex/session#readme) | Session management | `scitex[session]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-session.yml) |
|
|
550
|
+
| [`resource`](./src/scitex/resource#readme) | System monitoring | `scitex[resource]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-resource.yml) |
|
|
551
|
+
| [`db`](./src/scitex/db#readme) | Database abstractions | `scitex[db]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-db.yml) |
|
|
552
|
+
|
|
553
|
+
### Research & Publishing
|
|
554
|
+
|
|
555
|
+
| Module | Description | Install (Time) | Tests |
|
|
556
|
+
|--------|-------------|----------------|-------|
|
|
557
|
+
| [`writer`](./src/scitex/writer#readme) | Document generation | `scitex[writer]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-writer.yml) |
|
|
558
|
+
| [`tex`](./src/scitex/tex#readme) | LaTeX processing | `scitex[tex]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-tex.yml) |
|
|
559
|
+
| [`msword`](./src/scitex/msword#readme) | MS Word conversion | `scitex[msword]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-msword.yml) |
|
|
560
|
+
| [`scholar`](./src/scitex/scholar#readme) | Literature management | `scitex[scholar]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-scholar.yml) |
|
|
561
|
+
| [`diagram`](./src/scitex/diagram#readme) | Diagram generation | `scitex[diagram]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-diagram.yml) |
|
|
562
|
+
|
|
563
|
+
### Web & Automation
|
|
564
|
+
|
|
565
|
+
| Module | Description | Install (Time) | Tests |
|
|
566
|
+
|--------|-------------|----------------|-------|
|
|
567
|
+
| [`web`](./src/scitex/web#readme) | Web scraping | `scitex[web]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-web.yml) |
|
|
568
|
+
| [`browser`](./src/scitex/browser#readme) | Browser automation | `scitex[browser]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-browser.yml) |
|
|
569
|
+
|
|
570
|
+
### Other Modules
|
|
571
|
+
|
|
572
|
+
| Module | Description | Install (Time) | Tests |
|
|
573
|
+
|--------|-------------|----------------|-------|
|
|
574
|
+
| [`audio`](./src/scitex/audio#readme) | Audio processing | `scitex[audio]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-audio.yml) |
|
|
575
|
+
| [`capture`](./src/scitex/capture#readme) | Screen capture | `scitex[capture]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-capture.yml) |
|
|
576
|
+
| [`repro`](./src/scitex/repro#readme) | Reproducibility | `scitex[repro]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-repro.yml) |
|
|
577
|
+
| [`benchmark`](./src/scitex/benchmark#readme) | Performance testing | `scitex[benchmark]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-benchmark.yml) |
|
|
578
|
+
| [`security`](./src/scitex/security#readme) | Security utilities | `scitex[security]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-security.yml) |
|
|
579
|
+
| [`dt`](./src/scitex/dt#readme) | Datetime utilities | `scitex[dt]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dt.yml) |
|
|
580
|
+
| [`dev`](./src/scitex/dev#readme) | Development tools | `scitex[dev]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dev.yml) |
|
|
581
|
+
| [`schema`](./src/scitex/schema#readme) | Data schemas | `scitex[schema]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-schema.yml) |
|
|
582
|
+
| [`bridge`](./src/scitex/bridge#readme) | Module integration | `scitex[bridge]`  | [](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-bridge.yml) |
|
|
559
583
|
|
|
560
584
|
</details>
|
|
561
585
|
|
|
562
586
|
## 📦 Installation
|
|
563
587
|
|
|
564
588
|
``` bash
|
|
565
|
-
uv pip install scitex[all]
|
|
566
|
-
uv pip install scitex
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
<details>
|
|
570
|
-
<summary><strong>Module Overview</strong></summary>
|
|
571
|
-
|
|
572
|
-
SciTeX is organized into focused modules for different aspects of scientific computing:
|
|
573
|
-
|
|
574
|
-
**Modular Installation** (See [./src/scitex](./src/scitex) for all available modules):
|
|
575
|
-
``` bash
|
|
576
|
-
# Install all modules
|
|
577
|
-
uv pip install scitex[all]
|
|
578
|
-
|
|
579
|
-
# Install only specific modules
|
|
580
|
-
uv pip install scitex[ai]
|
|
581
|
-
|
|
582
|
-
# All available modules, equivalent to scitex[all]
|
|
583
|
-
uv pip install ~/proj/scitex-code[\
|
|
584
|
-
ai,\
|
|
585
|
-
audio,\
|
|
586
|
-
benchmark,\
|
|
587
|
-
bridge,\
|
|
588
|
-
browser,\
|
|
589
|
-
capture,\
|
|
590
|
-
cli,\
|
|
591
|
-
cloud,\
|
|
592
|
-
config,\
|
|
593
|
-
db,\
|
|
594
|
-
decorators,\
|
|
595
|
-
diagram,\
|
|
596
|
-
dsp,\
|
|
597
|
-
devtools,\
|
|
598
|
-
dt,\
|
|
599
|
-
fig,\
|
|
600
|
-
fts,\
|
|
601
|
-
gen,\
|
|
602
|
-
git,\
|
|
603
|
-
io,\
|
|
604
|
-
linalg,\
|
|
605
|
-
logging,\
|
|
606
|
-
msword,\
|
|
607
|
-
nn,\
|
|
608
|
-
parallel,\
|
|
609
|
-
path,\
|
|
610
|
-
pd,\
|
|
611
|
-
plt,\
|
|
612
|
-
repro,\
|
|
613
|
-
resource,\
|
|
614
|
-
scholar,\
|
|
615
|
-
session,\
|
|
616
|
-
sh,\
|
|
617
|
-
stats,\
|
|
618
|
-
str,\
|
|
619
|
-
tex,\
|
|
620
|
-
torch,\
|
|
621
|
-
types,\
|
|
622
|
-
utils,\
|
|
623
|
-
web,\
|
|
624
|
-
writer,\
|
|
625
|
-
dev]
|
|
589
|
+
uv pip install scitex[all] # Recommended: Full installation with all modules
|
|
590
|
+
uv pip install scitex # Core only (numpy, pandas, PyYAML, tqdm)
|
|
591
|
+
uv pip install scitex[heavy] # Include heavy deps (torch, mne, optuna, etc.)
|
|
626
592
|
```
|
|
627
593
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
### 🔧 Core Utilities
|
|
632
|
-
| Module | Description |
|
|
633
|
-
|-------------------------------------------------|---------------------------------------------------------------------|
|
|
634
|
-
| [`scitex.gen`](./src/scitex/gen#readme) | Project setup, session management, and experiment tracking |
|
|
635
|
-
| [`scitex.io`](./src/scitex/io#readme) | Universal I/O for 30+ formats (CSV, JSON, HDF5, Zarr, pickle, etc.) |
|
|
636
|
-
| [`scitex.path`](./src/scitex/path#readme) | Path manipulation and project structure utilities |
|
|
637
|
-
| [`scitex.logging`](./src/scitex/logging#readme) | Structured logging with color support and context |
|
|
638
|
-
|
|
639
|
-
### 📊 Data Science & Statistics
|
|
640
|
-
| Module | Description |
|
|
641
|
-
|---------------------------------------------|--------------------------------------------------------------------------|
|
|
642
|
-
| [`scitex.stats`](./src/scitex/stats#readme) | 16 statistical tests, effect sizes, power analysis, multiple corrections |
|
|
643
|
-
| [`scitex.plt`](./src/scitex/plt#readme) | Enhanced matplotlib with auto-export and scientific captions |
|
|
644
|
-
| [`scitex.pd`](./src/scitex/pd#readme) | Pandas extensions for research workflows |
|
|
645
|
-
|
|
646
|
-
### 🧠 AI & Machine Learning
|
|
647
|
-
| Module | Description |
|
|
648
|
-
|---------------------------------------------|---------------------------------------------------------|
|
|
649
|
-
| [`scitex.ai`](./src/scitex/ai#readme) | GenAI (7 providers), classification, training utilities |
|
|
650
|
-
| [`scitex.torch`](./src/scitex/torch#readme) | PyTorch training loops, metrics, and utilities |
|
|
651
|
-
| [`scitex.nn`](./src/scitex/nn#readme) | Custom neural network layers |
|
|
652
|
-
|
|
653
|
-
### 🌊 Signal Processing
|
|
654
|
-
| Module | Description |
|
|
655
|
-
|-----------------------------------------|---------------------------------------------------------------|
|
|
656
|
-
| [`scitex.dsp`](./src/scitex/dsp#readme) | Filtering, spectral analysis, wavelets, PAC, ripple detection |
|
|
657
|
-
|
|
658
|
-
### 📚 Literature Management
|
|
659
|
-
| Module | Description |
|
|
660
|
-
|-------------------------------------------------|-----------------------------------------------------------------|
|
|
661
|
-
| [`scitex.scholar`](./src/scitex/scholar#readme) | Paper search, PDF download, BibTeX enrichment with IF/citations |
|
|
662
|
-
|
|
663
|
-
### 🌐 Web & Browser
|
|
664
|
-
| Module | Description |
|
|
665
|
-
|-------------------------------------------------|------------------------------------------------------------|
|
|
666
|
-
| [`scitex.browser`](./src/scitex/browser#readme) | Playwright automation with debugging, PDF handling, popups |
|
|
667
|
-
|
|
668
|
-
### 🗄️ Data Management
|
|
669
|
-
| Module | Description |
|
|
670
|
-
|---------------------------------------|-------------------------------------|
|
|
671
|
-
| [`scitex.db`](./src/scitex/db#readme) | SQLite3 and PostgreSQL abstractions |
|
|
672
|
-
|
|
673
|
-
### 🛠️ Utilities
|
|
674
|
-
| Module | Description |
|
|
675
|
-
|-------------------------------------------------------|-----------------------------------------------------|
|
|
676
|
-
| [`scitex.decorators`](./src/scitex/decorators#readme) | Function decorators for caching, timing, validation |
|
|
677
|
-
| [`scitex.rng`](./src/scitex/rng#readme) | Reproducible random number generation |
|
|
678
|
-
| [`scitex.resource`](./src/scitex/resource#readme) | System resource monitoring (CPU, memory, GPU) |
|
|
679
|
-
| [`scitex.dict`](./src/scitex/dict#readme) | Dictionary manipulation and nested access |
|
|
680
|
-
| [`scitex.str`](./src/scitex/str#readme) | String utilities for scientific text processing |
|
|
681
|
-
|
|
682
|
-
## 📖 Documentation
|
|
683
|
-
|
|
684
|
-
### Online Documentation
|
|
685
|
-
- **[Read the Docs](https://scitex.readthedocs.io/)**: Complete API reference and guides
|
|
686
|
-
- **[Interactive Examples](https://scitex.readthedocs.io/en/latest/examples/index.html)**: Browse all tutorial notebooks
|
|
687
|
-
- **[Quick Start Guide](https://scitex.readthedocs.io/en/latest/getting_started.html)**: Get up and running quickly
|
|
688
|
-
|
|
689
|
-
### Local Resources
|
|
690
|
-
- **[Master Tutorial Index](./examples/00_SCITEX_MASTER_INDEX.ipynb)**: Comprehensive guide to all features
|
|
691
|
-
- **[Examples Directory](./examples/)**: 25+ Jupyter notebooks covering all modules
|
|
692
|
-
- **[Module List](./docs/scitex_modules.csv)**: Complete list of all functions
|
|
693
|
-
- **(Experimental) [MCP Servers Documentation](./mcp_servers/README.md)**
|
|
694
|
-
|
|
695
|
-
### Key Tutorials
|
|
696
|
-
1. **[I/O Operations](./examples/01_scitex_io.ipynb)**: Essential file handling (start here!)
|
|
697
|
-
2. **[Plotting](./examples/14_scitex_plt.ipynb)**: Publication-ready visualizations
|
|
698
|
-
3. **[Statistics](./examples/11_scitex_stats.ipynb)**: Research-grade statistical analysis
|
|
699
|
-
4. **[Scholar](./examples/16_scitex_scholar.ipynb)**: Literature management with impact factors
|
|
700
|
-
5. **[AI/ML](./examples/16_scitex_ai.ipynb)**: Complete machine learning toolkit
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
</details>
|
|
704
|
-
|
|
705
|
-
## Font
|
|
594
|
+
> **Note**: Heavy dependencies (torch, mne, optuna, catboost, jax, tensorflow, umap-learn)
|
|
595
|
+
> are optional and NOT included by default. Install with `scitex[heavy]` if needed.
|
|
596
|
+
> Modules gracefully handle missing dependencies with `*_AVAILABLE` flags.
|
|
706
597
|
|
|
707
598
|
<details>
|
|
708
|
-
<summary><strong>Arial Font Setup</strong></summary>
|
|
599
|
+
<summary><strong>Arial Font Setup for Figures</strong></summary>
|
|
709
600
|
|
|
710
601
|
``` bash
|
|
711
602
|
# Ubuntu
|
|
@@ -751,10 +642,291 @@ plt.close(fig)
|
|
|
751
642
|
|
|
752
643
|
</details>
|
|
753
644
|
|
|
645
|
+
## Why SciTeX?
|
|
646
|
+
|
|
647
|
+
SciTeX automates research analysis code.
|
|
648
|
+
|
|
649
|
+
<!-- **What SciTeX Automates:**
|
|
650
|
+
!-- - ✅ Symlink management for centralized outputs
|
|
651
|
+
!-- - ✅ Error handling and directory cleanup
|
|
652
|
+
!-- - ✅ Global variable injection (CONFIG, plt, COLORS, logger, rng)
|
|
653
|
+
!--
|
|
654
|
+
!-- **Research Benefits:**
|
|
655
|
+
!-- - 📊 **Figures + data always together** - CSV auto-exported from every plot
|
|
656
|
+
!-- - 🔄 **Perfect reproducibility** - Every run tracked with unique session ID
|
|
657
|
+
!-- - 🌍 **Universal format** - CSV data readable anywhere
|
|
658
|
+
!-- - 📝 **Zero manual work** - Metadata embedded automatically
|
|
659
|
+
!-- - 🎯 **3.3× less code** - Focus on research, not infrastructure -->
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
<details>
|
|
663
|
+
<summary><strong><code>@scitex.session</code></strong> — Reproducible Experiment Tracking + Auto-CLI</summary>
|
|
664
|
+
|
|
665
|
+
Standardized outputs with automatic logging. Scripts and outputs closely linked for full traceability.
|
|
666
|
+
|
|
667
|
+
**Auto-CLI Generation**: Function arguments automatically become argparse options:
|
|
668
|
+
|
|
669
|
+
```python
|
|
670
|
+
# /path/to/script.py
|
|
671
|
+
import scitex as stx
|
|
672
|
+
|
|
673
|
+
@stx.session
|
|
674
|
+
def main(
|
|
675
|
+
# arg1, # Required: -a ARG1, --arg1 ARG1
|
|
676
|
+
# kwarg1="value1", # Optional: -k KWARG1, --kwarg1 KWARG1 (default: value1)
|
|
677
|
+
CONFIG=stx.INJECTED, # Auto-injected from $(pwd)/config/*.yaml files
|
|
678
|
+
plt=stx.INJECTED, # Pre-configured matplotlib
|
|
679
|
+
COLORS=stx.INJECTED, # Color palette
|
|
680
|
+
rng=stx.INJECTED, # Seeded random generator
|
|
681
|
+
logger=stx.INJECTED, # Session logger
|
|
682
|
+
):
|
|
683
|
+
"""This docstring becomes --help description."""
|
|
684
|
+
|
|
685
|
+
stx.io.save(results, "results.csv", symlink_to="./data/")
|
|
686
|
+
# SUCC: Saved to: /path/to/script_out/tmp.txt (4.0 B)
|
|
687
|
+
# SUCC: Symlinked: /path/to/script_out/tmp.txt ->
|
|
688
|
+
# SUCC: ./data/tmp.txt
|
|
689
|
+
|
|
690
|
+
return 0
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
```bash
|
|
694
|
+
$ python script.py --help
|
|
695
|
+
usage: script.py [-a ARG1] [-k KWARG1]
|
|
696
|
+
-a ARG1, --arg1 ARG1 (required)
|
|
697
|
+
-k KWARG1, --kwarg1 KWARG1 (default: value1)
|
|
698
|
+
|
|
699
|
+
$ python script.py -a myvalue
|
|
700
|
+
# Runs with arg1="myvalue", kwarg1="value1"
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
**Output Structure**:
|
|
704
|
+
```bash
|
|
705
|
+
/path/to/script.py
|
|
706
|
+
/path/to/script_out/
|
|
707
|
+
├── FINISHED_SUCCESS/
|
|
708
|
+
│ └── 2025-01-08_12-30-00_AbC1/ # Session ID allocated
|
|
709
|
+
│ ├── results.csv
|
|
710
|
+
│ ├── CONFIGS/
|
|
711
|
+
│ │ ├── CONFIG.pkl # Python object
|
|
712
|
+
│ │ └── CONFIG.yaml # Human-readable
|
|
713
|
+
│ └── logs/
|
|
714
|
+
│ ├── stderr.log # Standard Errors
|
|
715
|
+
│ └── stdout.log # Standard Outputs
|
|
716
|
+
├── FINISHED_FAILED/
|
|
717
|
+
│ └── ...
|
|
718
|
+
└── RUNNING/
|
|
719
|
+
└── ...
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
</details>
|
|
723
|
+
|
|
724
|
+
<details>
|
|
725
|
+
<summary><strong><code>scitex.plt</code></strong> — Auto-Export Figures with Data</summary>
|
|
726
|
+
|
|
727
|
+
Figures and data always together. CSV auto-exported from every plot.
|
|
728
|
+
|
|
729
|
+
```python
|
|
730
|
+
import scitex as stx
|
|
731
|
+
|
|
732
|
+
fig, ax = stx.plt.subplots()
|
|
733
|
+
ax.plot_line(x, y) # Data tracked automatically
|
|
734
|
+
stx.io.save(fig, "plot.png")
|
|
735
|
+
# Creates: plot.png + plot.csv
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
</details>
|
|
739
|
+
|
|
740
|
+
<details>
|
|
741
|
+
<summary><strong><code>scitex.io</code></strong> — Universal File I/O (30+ formats)</summary>
|
|
742
|
+
|
|
743
|
+
One API for all formats: CSV, JSON, YAML, pickle, NumPy, HDF5, Zarr, PyTorch, images, PDFs, EEG formats.
|
|
744
|
+
|
|
745
|
+
```python
|
|
746
|
+
import scitex as stx
|
|
747
|
+
|
|
748
|
+
# Unified API Call for +30 formats
|
|
749
|
+
stx.io.save(df, "output.csv")
|
|
750
|
+
stx.io.save(arr, "output.npy")
|
|
751
|
+
stx.io.save(fig, "output.jpg")
|
|
752
|
+
|
|
753
|
+
# Round Trip Loading
|
|
754
|
+
df = stx.io.load("output.csv")
|
|
755
|
+
arr = stx.io.load("output.npy")
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
</details>
|
|
759
|
+
|
|
760
|
+
<details>
|
|
761
|
+
<summary><strong><code>scitex.stats</code></strong> — Publication-Ready Statistics (23 tests)</summary>
|
|
762
|
+
|
|
763
|
+
Automatic assumption checking, effect sizes, multiple comparison corrections, 9 export formats.
|
|
764
|
+
|
|
765
|
+
```python
|
|
766
|
+
import scitex as stx
|
|
767
|
+
|
|
768
|
+
result = stx.stats.test_ttest_ind(
|
|
769
|
+
group1, group2,
|
|
770
|
+
return_as="dataframe" # or "latex", "markdown", "excel"
|
|
771
|
+
)
|
|
772
|
+
# Includes: p-value, effect size, CI, normality check, power analysis
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
</details>
|
|
776
|
+
|
|
777
|
+
<details>
|
|
778
|
+
<summary><strong><code>scitex.scholar</code></strong> — Literature Management & BibTeX Enrichment</summary>
|
|
779
|
+
|
|
780
|
+
BibTeX enrichment with abstracts for LLM context, DOI resolution, PDF download, Impact Factor.
|
|
781
|
+
|
|
782
|
+
```bash
|
|
783
|
+
scitex scholar bibtex papers.bib --project myresearch --num-workers 8
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
```bibtex
|
|
787
|
+
# Before: Minimal BibTeX
|
|
788
|
+
@article{Smith2024,
|
|
789
|
+
title = {Neural Networks},
|
|
790
|
+
author = {Smith, John},
|
|
791
|
+
doi = {10.1038/s41586-024-00001-1}
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
# After: Enriched with abstract for LLM context
|
|
795
|
+
@article{Smith2024,
|
|
796
|
+
title = {Neural Networks for Brain Signal Analysis},
|
|
797
|
+
author = {Smith, John and Lee, Alice},
|
|
798
|
+
doi = {10.1038/s41586-024-00001-1},
|
|
799
|
+
journal = {Nature},
|
|
800
|
+
year = {2024},
|
|
801
|
+
abstract = {We present a novel deep learning approach...}, # Rich context for LLMs
|
|
802
|
+
impact_factor = {64.8}
|
|
803
|
+
}
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
</details>
|
|
807
|
+
|
|
808
|
+
<details>
|
|
809
|
+
<summary><strong><code>scitex.writer</code></strong> — LaTeX Manuscript Management</summary>
|
|
810
|
+
|
|
811
|
+
Python interface for LaTeX manuscripts with git-based version control.
|
|
812
|
+
|
|
813
|
+
```python
|
|
814
|
+
from scitex.writer import Writer
|
|
815
|
+
|
|
816
|
+
writer = Writer("my_paper")
|
|
817
|
+
intro = writer.manuscript.contents.introduction
|
|
818
|
+
|
|
819
|
+
lines = intro.read()
|
|
820
|
+
intro.write(lines + ["New paragraph..."])
|
|
821
|
+
intro.commit("Update introduction")
|
|
822
|
+
|
|
823
|
+
result = writer.compile_manuscript()
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
</details>
|
|
827
|
+
|
|
828
|
+
<details>
|
|
829
|
+
<summary><strong><code>scitex.ai</code></strong> — Unified AI/ML Interface (7 providers)</summary>
|
|
830
|
+
|
|
831
|
+
Single API for OpenAI, Anthropic, Google, Perplexity, DeepSeek, Groq, local models.
|
|
832
|
+
|
|
833
|
+
```python
|
|
834
|
+
from scitex.ai.genai import GenAI
|
|
835
|
+
|
|
836
|
+
ai = GenAI(provider="openai")
|
|
837
|
+
response = ai("Explain this data pattern")
|
|
838
|
+
|
|
839
|
+
# Switch providers instantly
|
|
840
|
+
ai = GenAI(provider="anthropic", model="claude-3-opus-20240229")
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
</details>
|
|
844
|
+
|
|
845
|
+
## 🖥️ CLI Commands
|
|
846
|
+
|
|
847
|
+
SciTeX provides a comprehensive command-line interface:
|
|
848
|
+
|
|
849
|
+
<details>
|
|
850
|
+
<summary><strong>CLI Commands</strong></summary>
|
|
851
|
+
|
|
852
|
+
```bash
|
|
853
|
+
# SciTeX Cloud (https://scitex.ai)
|
|
854
|
+
scitex cloud login # Login to SciTeX Cloud
|
|
855
|
+
scitex cloud clone user/project # Clone from cloud
|
|
856
|
+
scitex cloud create my-project # Create new repository
|
|
857
|
+
scitex cloud enrich -i refs.bib -o enriched.bib # BibTeX enrichment API
|
|
858
|
+
|
|
859
|
+
# Configuration
|
|
860
|
+
scitex config list # Show all configured paths
|
|
861
|
+
scitex config init # Initialize directories
|
|
862
|
+
|
|
863
|
+
# Research Tools
|
|
864
|
+
scitex scholar bibtex papers.bib # Process BibTeX, download PDFs
|
|
865
|
+
scitex scholar single --doi "10.1038/nature12373"
|
|
866
|
+
|
|
867
|
+
# TIP: Get BibTeX from Scholar QA (https://scholarqa.allen.ai/chat/)
|
|
868
|
+
# Ask questions → Export All Citations → Save as .bib file
|
|
869
|
+
scitex stats recommend --data data.csv
|
|
870
|
+
|
|
871
|
+
# Media
|
|
872
|
+
scitex audio speak "Hello world"
|
|
873
|
+
scitex capture snap --output screenshot.jpg
|
|
874
|
+
|
|
875
|
+
# Document Processing
|
|
876
|
+
scitex tex compile manuscript.tex
|
|
877
|
+
scitex writer compile my_paper
|
|
878
|
+
|
|
879
|
+
# Utilities
|
|
880
|
+
scitex resource usage # System resource monitoring
|
|
881
|
+
scitex security check --save # Security audit
|
|
882
|
+
scitex web get-urls https://example.com
|
|
883
|
+
scitex completion # Enable tab completion
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
</details>
|
|
887
|
+
|
|
888
|
+
## 🔌 MCP Servers
|
|
889
|
+
|
|
890
|
+
<details>
|
|
891
|
+
<summary><strong>Model Context Protocol (MCP) servers for AI agent integration</strong></summary>
|
|
892
|
+
|
|
893
|
+
SciTeX provides Model Context Protocol (MCP) servers for AI agent integration:
|
|
894
|
+
|
|
895
|
+
| Server | Description |
|
|
896
|
+
|--------|-------------|
|
|
897
|
+
| `scitex-audio` | Text-to-speech for agent feedback |
|
|
898
|
+
| `scitex-capture` | Screen monitoring and capture |
|
|
899
|
+
| `scitex-plt` | Matplotlib figure creation |
|
|
900
|
+
| `scitex-stats` | Automated statistical testing |
|
|
901
|
+
| `scitex-scholar` | PDF download and metadata enrichment |
|
|
902
|
+
| `scitex-diagram` | Mermaid and flowchart creation |
|
|
903
|
+
| `scitex-template` | Project scaffolding |
|
|
904
|
+
| `scitex-canvas` | Scientific figure canvas |
|
|
905
|
+
|
|
906
|
+
**Claude Desktop Configuration** (`~/.config/claude/claude_desktop_config.json`):
|
|
907
|
+
|
|
908
|
+
```json
|
|
909
|
+
{
|
|
910
|
+
"mcpServers": {
|
|
911
|
+
"scitex-audio": {
|
|
912
|
+
"command": "scitex-audio"
|
|
913
|
+
},
|
|
914
|
+
"scitex-capture": {
|
|
915
|
+
"command": "scitex-capture"
|
|
916
|
+
},
|
|
917
|
+
"scitex-scholar": {
|
|
918
|
+
"command": "scitex-scholar"
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
</details>
|
|
925
|
+
|
|
754
926
|
## 🚀 Quick Start
|
|
755
927
|
|
|
756
928
|
|
|
757
|
-
###
|
|
929
|
+
### Research Analysis with **70% Less Code**
|
|
758
930
|
|
|
759
931
|
Compare these two implementations that produce **identical research outputs**:
|
|
760
932
|
|
|
@@ -822,7 +994,7 @@ if __name__ == "__main__":
|
|
|
822
994
|
|
|
823
995
|
|
|
824
996
|
<details>
|
|
825
|
-
<summary><strong>Equivalent without SciTeX ([188 Lines of Code](./examples/demo_session_plt_io_pure_python.py)), requiring 3.3× more code</strong></summary>
|
|
997
|
+
<summary><strong>Equivalent Script without SciTeX ([188 Lines of Code](./examples/demo_session_plt_io_pure_python.py)), requiring 3.3× more code</strong></summary>
|
|
826
998
|
|
|
827
999
|
```python
|
|
828
1000
|
#!/usr/bin/env python3
|
|
@@ -939,7 +1111,7 @@ def save_figure(fig, output_path, metadata=None, symlink_to=None, logger=None):
|
|
|
939
1111
|
symlink_path.symlink_to(output_path.resolve())
|
|
940
1112
|
|
|
941
1113
|
|
|
942
|
-
def demo(output_dir, filename, verbose=False, logger=None):
|
|
1114
|
+
def demo(output_dir, filename, verbose=False, logger=None):
|
|
943
1115
|
"""Generate, plot, and save signal."""
|
|
944
1116
|
fig, ax = plt.subplots(figsize=(8, 6))
|
|
945
1117
|
|
|
@@ -1017,41 +1189,31 @@ if __name__ == "__main__":
|
|
|
1017
1189
|
|
|
1018
1190
|
</details>
|
|
1019
1191
|
|
|
1020
|
-
### What You Get With `@stx.session`
|
|
1021
1192
|
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1193
|
+
## 📖 Documentation
|
|
1194
|
+
|
|
1195
|
+
<details>
|
|
1196
|
+
<summary><strong>Resources</strong></summary>
|
|
1197
|
+
|
|
1198
|
+
### Online Documentation
|
|
1199
|
+
- **[Read the Docs](https://scitex.readthedocs.io/)**: Complete API reference and guides
|
|
1200
|
+
- **[Interactive Examples](https://scitex.readthedocs.io/en/latest/examples/index.html)**: Browse all tutorial notebooks
|
|
1201
|
+
- **[Quick Start Guide](https://scitex.readthedocs.io/en/latest/getting_started.html)**: Get up and running quickly
|
|
1202
|
+
|
|
1203
|
+
### Local Resources
|
|
1204
|
+
- **[Master Tutorial Index](./examples/00_SCITEX_MASTER_INDEX.ipynb)**: Comprehensive guide to all features
|
|
1205
|
+
- **[Examples Directory](./examples/)**: 25+ Jupyter notebooks covering all modules
|
|
1206
|
+
- **[Module List](./docs/scitex_modules.csv)**: Complete list of all functions
|
|
1207
|
+
- **(Experimental) [MCP Servers Documentation](./mcp_servers/README.md)**
|
|
1208
|
+
|
|
1209
|
+
### Key Tutorials
|
|
1210
|
+
1. **[I/O Operations](./examples/01_scitex_io.ipynb)**: Essential file handling (start here!)
|
|
1211
|
+
2. **[Plotting](./examples/14_scitex_plt.ipynb)**: Publication-ready visualizations
|
|
1212
|
+
3. **[Statistics](./examples/11_scitex_stats.ipynb)**: Research-grade statistical analysis
|
|
1213
|
+
4. **[Scholar](./examples/16_scitex_scholar.ipynb)**: Literature management with impact factors
|
|
1214
|
+
5. **[AI/ML](./examples/16_scitex_ai.ipynb)**: Complete machine learning toolkit
|
|
1036
1215
|
|
|
1037
|
-
|
|
1038
|
-
- ✅ Session ID generation and tracking
|
|
1039
|
-
- ✅ Output directory management (`RUNNING/` → `FINISHED_SUCCESS/`)
|
|
1040
|
-
- ✅ Argument parsing with auto-generated help
|
|
1041
|
-
- ✅ Logging to files and console
|
|
1042
|
-
- ✅ Config serialization (YAML + pickle)
|
|
1043
|
-
- ✅ CSV export from matplotlib plots
|
|
1044
|
-
- ✅ Metadata embedding in images
|
|
1045
|
-
- ✅ Symlink management for centralized outputs
|
|
1046
|
-
- ✅ Error handling and directory cleanup
|
|
1047
|
-
- ✅ Global variable injection (CONFIG, plt, COLORS, logger, rng_manager)
|
|
1048
|
-
|
|
1049
|
-
**Research Benefits:**
|
|
1050
|
-
- 📊 **Figures + data always together** - CSV auto-exported from every plot
|
|
1051
|
-
- 🔄 **Perfect reproducibility** - Every run tracked with unique session ID
|
|
1052
|
-
- 🌍 **Universal format** - CSV data readable anywhere
|
|
1053
|
-
- 📝 **Zero manual work** - Metadata embedded automatically
|
|
1054
|
-
- 🎯 **3.3× less code** - Focus on research, not infrastructure
|
|
1216
|
+
</details>
|
|
1055
1217
|
|
|
1056
1218
|
## 🤝 Contributing
|
|
1057
1219
|
|