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.
Files changed (148) hide show
  1. scitex/__main__.py +24 -5
  2. scitex/__version__.py +1 -1
  3. scitex/_optional_deps.py +33 -0
  4. scitex/ai/classification/reporters/_ClassificationReporter.py +1 -1
  5. scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +2 -2
  6. scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +2 -2
  7. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +2 -2
  8. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +2 -2
  9. scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +2 -2
  10. scitex/ai/classification/timeseries/_normalize_timestamp.py +1 -1
  11. scitex/ai/metrics/_calc_seizure_prediction_metrics.py +1 -1
  12. scitex/ai/plt/_plot_feature_importance.py +1 -1
  13. scitex/ai/plt/_plot_learning_curve.py +1 -1
  14. scitex/ai/plt/_plot_optuna_study.py +1 -1
  15. scitex/ai/plt/_plot_pre_rec_curve.py +1 -1
  16. scitex/ai/plt/_plot_roc_curve.py +1 -1
  17. scitex/ai/plt/_stx_conf_mat.py +1 -1
  18. scitex/ai/training/_LearningCurveLogger.py +1 -1
  19. scitex/audio/mcp_server.py +38 -8
  20. scitex/browser/automation/CookieHandler.py +1 -1
  21. scitex/browser/core/BrowserMixin.py +1 -1
  22. scitex/browser/core/ChromeProfileManager.py +1 -1
  23. scitex/browser/debugging/_browser_logger.py +1 -1
  24. scitex/browser/debugging/_highlight_element.py +1 -1
  25. scitex/browser/debugging/_show_grid.py +1 -1
  26. scitex/browser/interaction/click_center.py +1 -1
  27. scitex/browser/interaction/click_with_fallbacks.py +1 -1
  28. scitex/browser/interaction/close_popups.py +1 -1
  29. scitex/browser/interaction/fill_with_fallbacks.py +1 -1
  30. scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +1 -1
  31. scitex/browser/pdf/detect_chrome_pdf_viewer.py +1 -1
  32. scitex/browser/stealth/HumanBehavior.py +1 -1
  33. scitex/browser/stealth/StealthManager.py +1 -1
  34. scitex/canvas/_mcp_handlers.py +372 -0
  35. scitex/canvas/_mcp_tool_schemas.py +219 -0
  36. scitex/canvas/mcp_server.py +151 -0
  37. scitex/capture/mcp_server.py +41 -12
  38. scitex/cli/audio.py +233 -0
  39. scitex/cli/capture.py +307 -0
  40. scitex/cli/main.py +27 -4
  41. scitex/cli/repro.py +233 -0
  42. scitex/cli/resource.py +240 -0
  43. scitex/cli/stats.py +325 -0
  44. scitex/cli/template.py +236 -0
  45. scitex/cli/tex.py +286 -0
  46. scitex/cli/web.py +11 -12
  47. scitex/dev/__init__.py +3 -0
  48. scitex/dev/_pyproject.py +405 -0
  49. scitex/dev/plt/__init__.py +2 -2
  50. scitex/dev/plt/mpl/get_dir_ax.py +1 -1
  51. scitex/dev/plt/mpl/get_signatures.py +1 -1
  52. scitex/dev/plt/mpl/get_signatures_details.py +1 -1
  53. scitex/diagram/_mcp_handlers.py +400 -0
  54. scitex/diagram/_mcp_tool_schemas.py +157 -0
  55. scitex/diagram/mcp_server.py +151 -0
  56. scitex/dsp/_demo_sig.py +51 -5
  57. scitex/dsp/_mne.py +13 -2
  58. scitex/dsp/_modulation_index.py +15 -3
  59. scitex/dsp/_pac.py +23 -5
  60. scitex/dsp/_psd.py +16 -4
  61. scitex/dsp/_resample.py +24 -4
  62. scitex/dsp/_transform.py +16 -3
  63. scitex/dsp/add_noise.py +15 -1
  64. scitex/dsp/norm.py +17 -2
  65. scitex/dsp/reference.py +17 -1
  66. scitex/dsp/utils/_differential_bandpass_filters.py +20 -2
  67. scitex/dsp/utils/_zero_pad.py +18 -4
  68. scitex/dt/_normalize_timestamp.py +1 -1
  69. scitex/git/_session.py +1 -1
  70. scitex/io/_load_modules/_con.py +12 -1
  71. scitex/io/_load_modules/_eeg.py +12 -1
  72. scitex/io/_load_modules/_optuna.py +21 -63
  73. scitex/io/_load_modules/_torch.py +11 -3
  74. scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +13 -2
  75. scitex/io/_save_modules/_torch.py +11 -3
  76. scitex/mcp_server.py +159 -0
  77. scitex/plt/_mcp_handlers.py +361 -0
  78. scitex/plt/_mcp_tool_schemas.py +169 -0
  79. scitex/plt/mcp_server.py +205 -0
  80. scitex/repro/README_RandomStateManager.md +3 -3
  81. scitex/repro/_RandomStateManager.py +14 -14
  82. scitex/repro/_gen_ID.py +1 -1
  83. scitex/repro/_gen_timestamp.py +1 -1
  84. scitex/repro/_hash_array.py +4 -4
  85. scitex/scholar/__main__.py +24 -2
  86. scitex/scholar/_mcp_handlers.py +685 -0
  87. scitex/scholar/_mcp_tool_schemas.py +339 -0
  88. scitex/scholar/docs/template.py +1 -1
  89. scitex/scholar/examples/07_storage_integration.py +1 -1
  90. scitex/scholar/impact_factor/jcr/ImpactFactorJCREngine.py +1 -1
  91. scitex/scholar/impact_factor/jcr/build_database.py +1 -1
  92. scitex/scholar/mcp_server.py +315 -0
  93. scitex/scholar/pdf_download/ScholarPDFDownloader.py +1 -1
  94. scitex/scholar/pipelines/ScholarPipelineBibTeX.py +1 -1
  95. scitex/scholar/pipelines/ScholarPipelineParallel.py +1 -1
  96. scitex/scholar/pipelines/ScholarPipelineSingle.py +1 -1
  97. scitex/scholar/storage/PaperIO.py +1 -1
  98. scitex/session/README.md +4 -4
  99. scitex/session/__init__.py +1 -1
  100. scitex/session/_decorator.py +9 -9
  101. scitex/session/_lifecycle.py +5 -5
  102. scitex/session/template.py +1 -1
  103. scitex/stats/__main__.py +281 -0
  104. scitex/stats/_mcp_handlers.py +1191 -0
  105. scitex/stats/_mcp_tool_schemas.py +384 -0
  106. scitex/stats/correct/_correct_bonferroni.py +1 -1
  107. scitex/stats/correct/_correct_fdr.py +1 -1
  108. scitex/stats/correct/_correct_fdr_.py +1 -1
  109. scitex/stats/correct/_correct_holm.py +1 -1
  110. scitex/stats/correct/_correct_sidak.py +1 -1
  111. scitex/stats/effect_sizes/_cliffs_delta.py +1 -1
  112. scitex/stats/effect_sizes/_cohens_d.py +1 -1
  113. scitex/stats/effect_sizes/_epsilon_squared.py +1 -1
  114. scitex/stats/effect_sizes/_eta_squared.py +1 -1
  115. scitex/stats/effect_sizes/_prob_superiority.py +1 -1
  116. scitex/stats/mcp_server.py +405 -0
  117. scitex/stats/posthoc/_dunnett.py +1 -1
  118. scitex/stats/posthoc/_games_howell.py +1 -1
  119. scitex/stats/posthoc/_tukey_hsd.py +1 -1
  120. scitex/stats/power/_power.py +1 -1
  121. scitex/stats/utils/_effect_size.py +1 -1
  122. scitex/stats/utils/_formatters.py +1 -1
  123. scitex/stats/utils/_power.py +1 -1
  124. scitex/template/_mcp_handlers.py +259 -0
  125. scitex/template/_mcp_tool_schemas.py +112 -0
  126. scitex/template/mcp_server.py +186 -0
  127. scitex/utils/_verify_scitex_format.py +2 -2
  128. scitex/utils/template.py +1 -1
  129. scitex/web/__init__.py +12 -11
  130. scitex/web/_scraping.py +26 -265
  131. scitex/web/download_images.py +316 -0
  132. scitex/writer/Writer.py +1 -1
  133. scitex/writer/_clone_writer_project.py +1 -1
  134. scitex/writer/_validate_tree_structures.py +1 -1
  135. scitex/writer/dataclasses/config/_WriterConfig.py +1 -1
  136. scitex/writer/dataclasses/contents/_ManuscriptContents.py +1 -1
  137. scitex/writer/dataclasses/core/_Document.py +1 -1
  138. scitex/writer/dataclasses/core/_DocumentSection.py +1 -1
  139. scitex/writer/dataclasses/results/_CompilationResult.py +1 -1
  140. scitex/writer/dataclasses/results/_LaTeXIssue.py +1 -1
  141. scitex/writer/utils/.legacy_git_retry.py +7 -5
  142. scitex/writer/utils/_parse_latex_logs.py +1 -1
  143. {scitex-2.11.0.dist-info → scitex-2.13.0.dist-info}/METADATA +431 -269
  144. {scitex-2.11.0.dist-info → scitex-2.13.0.dist-info}/RECORD +147 -118
  145. scitex-2.13.0.dist-info/entry_points.txt +11 -0
  146. scitex-2.11.0.dist-info/entry_points.txt +0 -2
  147. {scitex-2.11.0.dist-info → scitex-2.13.0.dist-info}/WHEEL +0 -0
  148. {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.11.0
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-07 22:01:07
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
- [![PyPI version](https://badge.fury.io/py/scitex.svg)](https://badge.fury.io/py/scitex)
501
- [![Python Versions](https://img.shields.io/pypi/pyversions/scitex.svg)](https://pypi.org/project/scitex/)
502
- [![License](https://img.shields.io/github/license/ywatanabe1989/SciTeX-Code)](https://github.com/ywatanabe1989/SciTeX-Code/blob/main/LICENSE)
503
- [![Documentation](https://readthedocs.org/projects/scitex/badge/?version=latest)](https://scitex.readthedocs.io/en/latest/?badge=latest)
504
- [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
505
- [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
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 Test Status (v2.10.0) - 41 modules</strong></summary>
509
-
510
- **Core Modules**
511
-
512
- [![io](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-io.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-io.yml)
513
- [![path](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-path.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-path.yml)
514
- [![str](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-str.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-str.yml)
515
- [![dict](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dict.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dict.yml)
516
- [![types](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-types.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-types.yml)
517
- [![config](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-config.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-config.yml)
518
- [![utils](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-utils.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-utils.yml)
519
- [![decorators](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-decorators.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-decorators.yml)
520
- [![logging](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-logging.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-logging.yml)
521
- [![stats](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-stats.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-stats.yml)
522
- [![pd](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-pd.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-pd.yml)
523
- [![linalg](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-linalg.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-linalg.yml)
524
- [![torch](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-torch.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-torch.yml)
525
- [![gen](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-gen.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-gen.yml)
526
-
527
- **Extended Modules**
528
-
529
- [![nn](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-nn.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-nn.yml)
530
- [![ai](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-ai.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-ai.yml)
531
- [![writer](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-writer.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-writer.yml)
532
- [![audio](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-audio.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-audio.yml)
533
- [![capture](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-capture.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-capture.yml)
534
- [![cli](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-cli.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-cli.yml)
535
- [![sh](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-sh.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-sh.yml)
536
- [![git](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-git.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-git.yml)
537
- [![session](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-session.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-session.yml)
538
- [![diagram](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-diagram.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-diagram.yml)
539
- [![resource](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-resource.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-resource.yml)
540
- [![repro](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-repro.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-repro.yml)
541
- [![benchmark](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-benchmark.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-benchmark.yml)
542
- [![security](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-security.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-security.yml)
543
- [![tex](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-tex.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-tex.yml)
544
- [![msword](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-msword.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-msword.yml)
545
- [![web](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-web.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-web.yml)
546
- [![dev](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dev.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dev.yml)
547
- [![dt](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dt.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dt.yml)
548
- [![scholar](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-scholar.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-scholar.yml)
549
-
550
- **Pending Modules**
551
-
552
- [![dsp](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dsp.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dsp.yml)
553
- [![db](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-db.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-db.yml)
554
- [![browser](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-browser.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-browser.yml)
555
- [![plt](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-plt.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-plt.yml)
556
- [![schema](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-schema.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-schema.yml)
557
- [![bridge](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-bridge.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-bridge.yml)
558
- [![fts](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-fts.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-fts.yml)
507
+ <summary><strong>Module Status - Tests & Installation</strong></summary>
508
+
509
+ ### Core Modules
510
+
511
+ | Module | Description | Install (Time) | Tests |
512
+ |--------|-------------|----------------|-------|
513
+ | [`io`](./src/scitex/io#readme) | Universal I/O (30+ formats) | `scitex[io]` ![io](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/io.json) | [![io](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-io.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-io.yml) |
514
+ | [`path`](./src/scitex/path#readme) | Path utilities | `scitex[path]` ![path](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/path.json) | [![path](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-path.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-path.yml) |
515
+ | [`str`](./src/scitex/str#readme) | String processing | `scitex[str]` ![str](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/str.json) | [![str](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-str.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-str.yml) |
516
+ | [`dict`](./src/scitex/dict#readme) | Dictionary utilities | core ![dict](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/dict.json) | [![dict](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dict.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dict.yml) |
517
+ | [`types`](./src/scitex/types#readme) | Type checking | core ![types](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/types.json) | [![types](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-types.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-types.yml) |
518
+ | [`config`](./src/scitex/config#readme) | Configuration management | `scitex[config]` ![config](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/config.json) | [![config](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-config.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-config.yml) |
519
+ | [`utils`](./src/scitex/utils#readme) | General utilities | `scitex[utils]` ![utils](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/utils.json) | [![utils](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-utils.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-utils.yml) |
520
+ | [`decorators`](./src/scitex/decorators#readme) | Function decorators | `scitex[decorators]` ![decorators](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/decorators.json) | [![decorators](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-decorators.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-decorators.yml) |
521
+ | [`logging`](./src/scitex/logging#readme) | Structured logging | `scitex[logging]` ![logging](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/logging.json) | [![logging](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-logging.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-logging.yml) |
522
+ | [`gen`](./src/scitex/gen#readme) | Project setup | `scitex[gen]` ![gen](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/gen.json) | [![gen](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-gen.yml/badge.svg)](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]` ![stats](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/stats.json) | [![stats](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-stats.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-stats.yml) |
529
+ | [`pd`](./src/scitex/pd#readme) | Pandas extensions | `scitex[pd]` ![pd](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/pd.json) | [![pd](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-pd.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-pd.yml) |
530
+ | [`linalg`](./src/scitex/linalg#readme) | Linear algebra | `scitex[linalg]` ![linalg](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/linalg.json) | [![linalg](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-linalg.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-linalg.yml) |
531
+ | [`plt`](./src/scitex/plt#readme) | Enhanced matplotlib | `scitex[plt]` ![plt](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/plt.json) | [![plt](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-plt.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-plt.yml) |
532
+ | [`dsp`](./src/scitex/dsp#readme) | Signal processing | `scitex[dsp]` ![dsp](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/dsp.json) | [![dsp](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dsp.yml/badge.svg)](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]` ![ai](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/ai.json) | [![ai](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-ai.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-ai.yml) |
539
+ | [`nn`](./src/scitex/nn#readme) | Neural network layers | `scitex[nn]` ![nn](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/nn.json) | [![nn](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-nn.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-nn.yml) |
540
+ | [`torch`](./src/scitex/torch#readme) | PyTorch utilities | `scitex[torch]` ![torch](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/torch.json) | [![torch](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-torch.yml/badge.svg)](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]` ![cli](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/cli.json) | [![cli](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-cli.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-cli.yml) |
547
+ | [`sh`](./src/scitex/sh#readme) | Shell utilities | `scitex[sh]` ![sh](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/sh.json) | [![sh](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-sh.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-sh.yml) |
548
+ | [`git`](./src/scitex/git#readme) | Git operations | `scitex[git]` ![git](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/git.json) | [![git](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-git.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-git.yml) |
549
+ | [`session`](./src/scitex/session#readme) | Session management | `scitex[session]` ![session](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/session.json) | [![session](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-session.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-session.yml) |
550
+ | [`resource`](./src/scitex/resource#readme) | System monitoring | `scitex[resource]` ![resource](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/resource.json) | [![resource](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-resource.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-resource.yml) |
551
+ | [`db`](./src/scitex/db#readme) | Database abstractions | `scitex[db]` ![db](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/db.json) | [![db](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-db.yml/badge.svg)](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]` ![writer](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/writer.json) | [![writer](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-writer.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-writer.yml) |
558
+ | [`tex`](./src/scitex/tex#readme) | LaTeX processing | `scitex[tex]` ![tex](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/tex.json) | [![tex](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-tex.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-tex.yml) |
559
+ | [`msword`](./src/scitex/msword#readme) | MS Word conversion | `scitex[msword]` ![msword](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/msword.json) | [![msword](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-msword.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-msword.yml) |
560
+ | [`scholar`](./src/scitex/scholar#readme) | Literature management | `scitex[scholar]` ![scholar](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/scholar.json) | [![scholar](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-scholar.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-scholar.yml) |
561
+ | [`diagram`](./src/scitex/diagram#readme) | Diagram generation | `scitex[diagram]` ![diagram](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/diagram.json) | [![diagram](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-diagram.yml/badge.svg)](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]` ![web](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/web.json) | [![web](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-web.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-web.yml) |
568
+ | [`browser`](./src/scitex/browser#readme) | Browser automation | `scitex[browser]` ![browser](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/browser.json) | [![browser](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-browser.yml/badge.svg)](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]` ![audio](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/audio.json) | [![audio](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-audio.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-audio.yml) |
575
+ | [`capture`](./src/scitex/capture#readme) | Screen capture | `scitex[capture]` ![capture](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/capture.json) | [![capture](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-capture.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-capture.yml) |
576
+ | [`repro`](./src/scitex/repro#readme) | Reproducibility | `scitex[repro]` ![repro](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/repro.json) | [![repro](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-repro.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-repro.yml) |
577
+ | [`benchmark`](./src/scitex/benchmark#readme) | Performance testing | `scitex[benchmark]` ![benchmark](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/benchmark.json) | [![benchmark](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-benchmark.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-benchmark.yml) |
578
+ | [`security`](./src/scitex/security#readme) | Security utilities | `scitex[security]` ![security](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/security.json) | [![security](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-security.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-security.yml) |
579
+ | [`dt`](./src/scitex/dt#readme) | Datetime utilities | `scitex[dt]` ![dt](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/dt.json) | [![dt](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dt.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dt.yml) |
580
+ | [`dev`](./src/scitex/dev#readme) | Development tools | `scitex[dev]` ![dev](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/dev.json) | [![dev](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dev.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-dev.yml) |
581
+ | [`schema`](./src/scitex/schema#readme) | Data schemas | `scitex[schema]` ![schema](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/schema.json) | [![schema](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-schema.yml/badge.svg)](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-schema.yml) |
582
+ | [`bridge`](./src/scitex/bridge#readme) | Module integration | `scitex[bridge]` ![bridge](https://img.shields.io/endpoint?url=https://ywatanabe1989.github.io/scitex-code/badges/bridge.json) | [![bridge](https://github.com/ywatanabe1989/scitex-code/actions/workflows/test-bridge.yml/badge.svg)](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] # Recommended: Full installation with all modules
566
- uv pip install scitex # Core only (numpy, pandas, PyYAML, tqdm)
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
- ## 📦 Module Overview
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
- ### The SciTeX Advantage: **70% Less Code**
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
- Both implementations produce **identical outputs**, but SciTeX eliminates 131 lines of boilerplate:
1023
- ```bash
1024
- demo_session_plt_io_out/
1025
- ├── demo.csv # Auto-extracted plot data
1026
- ├── demo.jpg # With embedded metadata
1027
- └── FINISHED_SUCCESS/
1028
- └── 2025Y-11M-18D-09h12m03s_HmH5-main/
1029
- ├── CONFIGS/
1030
- │ ├── CONFIG.pkl # Python object
1031
- │ └── CONFIG.yaml # Human-readable
1032
- └── logs/
1033
- ├── stderr.log
1034
- └── stdout.log
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
- **What SciTeX Automates:**
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