scitex 2.0.0__py2.py3-none-any.whl → 2.1.0__py2.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 (704) hide show
  1. scitex/__init__.py +53 -15
  2. scitex/__main__.py +72 -26
  3. scitex/__version__.py +1 -1
  4. scitex/_sh.py +145 -23
  5. scitex/ai/__init__.py +30 -16
  6. scitex/ai/_gen_ai/_Anthropic.py +5 -7
  7. scitex/ai/_gen_ai/_BaseGenAI.py +2 -2
  8. scitex/ai/_gen_ai/_DeepSeek.py +10 -2
  9. scitex/ai/_gen_ai/_Google.py +2 -2
  10. scitex/ai/_gen_ai/_Llama.py +2 -2
  11. scitex/ai/_gen_ai/_OpenAI.py +2 -2
  12. scitex/ai/_gen_ai/_PARAMS.py +51 -65
  13. scitex/ai/_gen_ai/_Perplexity.py +2 -2
  14. scitex/ai/_gen_ai/__init__.py +25 -14
  15. scitex/ai/_gen_ai/_format_output_func.py +4 -4
  16. scitex/ai/classification/{classifier_server.py → Classifier.py} +5 -5
  17. scitex/ai/classification/CrossValidationExperiment.py +374 -0
  18. scitex/ai/classification/__init__.py +43 -4
  19. scitex/ai/classification/reporters/_BaseClassificationReporter.py +281 -0
  20. scitex/ai/classification/reporters/_ClassificationReporter.py +773 -0
  21. scitex/ai/classification/reporters/_MultiClassificationReporter.py +406 -0
  22. scitex/ai/classification/reporters/_SingleClassificationReporter.py +1834 -0
  23. scitex/ai/classification/reporters/__init__.py +11 -0
  24. scitex/ai/classification/reporters/reporter_utils/_Plotter.py +1028 -0
  25. scitex/ai/classification/reporters/reporter_utils/__init__.py +80 -0
  26. scitex/ai/classification/reporters/reporter_utils/aggregation.py +457 -0
  27. scitex/ai/classification/reporters/reporter_utils/data_models.py +313 -0
  28. scitex/ai/classification/reporters/reporter_utils/reporting.py +1056 -0
  29. scitex/ai/classification/reporters/reporter_utils/storage.py +221 -0
  30. scitex/ai/classification/reporters/reporter_utils/validation.py +395 -0
  31. scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +568 -0
  32. scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +688 -0
  33. scitex/ai/classification/timeseries/_TimeSeriesMetadata.py +139 -0
  34. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +1716 -0
  35. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +1685 -0
  36. scitex/ai/classification/timeseries/_TimeSeriesStrategy.py +84 -0
  37. scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +610 -0
  38. scitex/ai/classification/timeseries/__init__.py +39 -0
  39. scitex/ai/classification/timeseries/_normalize_timestamp.py +436 -0
  40. scitex/ai/clustering/_umap.py +2 -2
  41. scitex/ai/feature_extraction/vit.py +1 -0
  42. scitex/ai/feature_selection/__init__.py +30 -0
  43. scitex/ai/feature_selection/feature_selection.py +364 -0
  44. scitex/ai/loss/multi_task_loss.py +1 -1
  45. scitex/ai/metrics/__init__.py +51 -4
  46. scitex/ai/metrics/_calc_bacc.py +61 -0
  47. scitex/ai/metrics/_calc_bacc_from_conf_mat.py +38 -0
  48. scitex/ai/metrics/_calc_clf_report.py +78 -0
  49. scitex/ai/metrics/_calc_conf_mat.py +93 -0
  50. scitex/ai/metrics/_calc_feature_importance.py +183 -0
  51. scitex/ai/metrics/_calc_mcc.py +61 -0
  52. scitex/ai/metrics/_calc_pre_rec_auc.py +116 -0
  53. scitex/ai/metrics/_calc_roc_auc.py +110 -0
  54. scitex/ai/metrics/_calc_seizure_prediction_metrics.py +490 -0
  55. scitex/ai/metrics/{silhoute_score_block.py → _calc_silhouette_score.py} +15 -8
  56. scitex/ai/metrics/_normalize_labels.py +83 -0
  57. scitex/ai/plt/__init__.py +47 -8
  58. scitex/ai/plt/{_conf_mat.py → _plot_conf_mat.py} +158 -87
  59. scitex/ai/plt/_plot_feature_importance.py +323 -0
  60. scitex/ai/plt/_plot_learning_curve.py +345 -0
  61. scitex/ai/plt/_plot_optuna_study.py +225 -0
  62. scitex/ai/plt/_plot_pre_rec_curve.py +290 -0
  63. scitex/ai/plt/_plot_roc_curve.py +255 -0
  64. scitex/ai/training/{learning_curve_logger.py → _LearningCurveLogger.py} +197 -213
  65. scitex/ai/training/__init__.py +2 -2
  66. scitex/ai/utils/grid_search.py +3 -3
  67. scitex/benchmark/__init__.py +52 -0
  68. scitex/benchmark/benchmark.py +400 -0
  69. scitex/benchmark/monitor.py +370 -0
  70. scitex/benchmark/profiler.py +297 -0
  71. scitex/browser/__init__.py +48 -0
  72. scitex/browser/automation/CookieHandler.py +216 -0
  73. scitex/browser/automation/__init__.py +7 -0
  74. scitex/browser/collaboration/__init__.py +55 -0
  75. scitex/browser/collaboration/auth_helpers.py +94 -0
  76. scitex/browser/collaboration/collaborative_agent.py +136 -0
  77. scitex/browser/collaboration/credential_manager.py +188 -0
  78. scitex/browser/collaboration/interactive_panel.py +400 -0
  79. scitex/browser/collaboration/persistent_browser.py +170 -0
  80. scitex/browser/collaboration/shared_session.py +383 -0
  81. scitex/browser/collaboration/standard_interactions.py +246 -0
  82. scitex/browser/collaboration/visual_feedback.py +181 -0
  83. scitex/browser/core/BrowserMixin.py +326 -0
  84. scitex/browser/core/ChromeProfileManager.py +446 -0
  85. scitex/browser/core/__init__.py +9 -0
  86. scitex/browser/debugging/__init__.py +18 -0
  87. scitex/browser/debugging/_browser_logger.py +657 -0
  88. scitex/browser/debugging/_highlight_element.py +143 -0
  89. scitex/browser/debugging/_show_grid.py +154 -0
  90. scitex/browser/interaction/__init__.py +24 -0
  91. scitex/browser/interaction/click_center.py +149 -0
  92. scitex/browser/interaction/click_with_fallbacks.py +206 -0
  93. scitex/browser/interaction/close_popups.py +498 -0
  94. scitex/browser/interaction/fill_with_fallbacks.py +209 -0
  95. scitex/browser/pdf/__init__.py +14 -0
  96. scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +200 -0
  97. scitex/browser/pdf/detect_chrome_pdf_viewer.py +198 -0
  98. scitex/browser/remote/CaptchaHandler.py +434 -0
  99. scitex/browser/remote/ZenRowsAPIClient.py +347 -0
  100. scitex/browser/remote/ZenRowsBrowserManager.py +570 -0
  101. scitex/browser/remote/__init__.py +11 -0
  102. scitex/browser/stealth/HumanBehavior.py +344 -0
  103. scitex/browser/stealth/StealthManager.py +1008 -0
  104. scitex/browser/stealth/__init__.py +9 -0
  105. scitex/browser/template.py +122 -0
  106. scitex/capture/__init__.py +110 -0
  107. scitex/capture/__main__.py +25 -0
  108. scitex/capture/capture.py +848 -0
  109. scitex/capture/cli.py +233 -0
  110. scitex/capture/gif.py +344 -0
  111. scitex/capture/mcp_server.py +961 -0
  112. scitex/capture/session.py +70 -0
  113. scitex/capture/utils.py +705 -0
  114. scitex/cli/__init__.py +17 -0
  115. scitex/cli/cloud.py +447 -0
  116. scitex/cli/main.py +42 -0
  117. scitex/cli/scholar.py +280 -0
  118. scitex/context/_suppress_output.py +5 -3
  119. scitex/db/__init__.py +30 -3
  120. scitex/db/__main__.py +75 -0
  121. scitex/db/_check_health.py +381 -0
  122. scitex/db/_delete_duplicates.py +25 -386
  123. scitex/db/_inspect.py +335 -114
  124. scitex/db/_inspect_optimized.py +301 -0
  125. scitex/db/{_PostgreSQL.py → _postgresql/_PostgreSQL.py} +3 -3
  126. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_BackupMixin.py +1 -1
  127. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_BatchMixin.py +1 -1
  128. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_BlobMixin.py +1 -1
  129. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_ConnectionMixin.py +1 -1
  130. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_MaintenanceMixin.py +1 -1
  131. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_QueryMixin.py +1 -1
  132. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_SchemaMixin.py +1 -1
  133. scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_TransactionMixin.py +1 -1
  134. scitex/db/_postgresql/__init__.py +6 -0
  135. scitex/db/_sqlite3/_SQLite3.py +210 -0
  136. scitex/db/_sqlite3/_SQLite3Mixins/_ArrayMixin.py +581 -0
  137. scitex/db/_sqlite3/_SQLite3Mixins/_ArrayMixin_v01-need-_hash-col.py +517 -0
  138. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_BatchMixin.py +1 -1
  139. scitex/db/_sqlite3/_SQLite3Mixins/_BlobMixin.py +281 -0
  140. scitex/db/_sqlite3/_SQLite3Mixins/_ColumnMixin.py +548 -0
  141. scitex/db/_sqlite3/_SQLite3Mixins/_ColumnMixin_v01-indentation-issues.py +583 -0
  142. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_ConnectionMixin.py +29 -13
  143. scitex/db/_sqlite3/_SQLite3Mixins/_GitMixin.py +583 -0
  144. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_ImportExportMixin.py +1 -1
  145. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_IndexMixin.py +1 -1
  146. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_MaintenanceMixin.py +2 -1
  147. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_QueryMixin.py +37 -10
  148. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_RowMixin.py +46 -6
  149. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_TableMixin.py +56 -10
  150. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_TransactionMixin.py +1 -1
  151. scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/__init__.py +14 -2
  152. scitex/db/_sqlite3/__init__.py +7 -0
  153. scitex/db/_sqlite3/_delete_duplicates.py +274 -0
  154. scitex/decorators/__init__.py +2 -0
  155. scitex/decorators/_cache_disk.py +13 -5
  156. scitex/decorators/_cache_disk_async.py +49 -0
  157. scitex/decorators/_deprecated.py +175 -10
  158. scitex/decorators/_timeout.py +1 -1
  159. scitex/dev/_analyze_code_flow.py +2 -2
  160. scitex/dict/_DotDict.py +73 -15
  161. scitex/dict/_DotDict_v01-not-handling-recursive-instantiations.py +442 -0
  162. scitex/dict/_DotDict_v02-not-serializing-Path-object.py +446 -0
  163. scitex/dict/__init__.py +2 -0
  164. scitex/dict/_flatten.py +27 -0
  165. scitex/dsp/_crop.py +2 -2
  166. scitex/dsp/_demo_sig.py +2 -2
  167. scitex/dsp/_detect_ripples.py +2 -2
  168. scitex/dsp/_hilbert.py +2 -2
  169. scitex/dsp/_listen.py +6 -6
  170. scitex/dsp/_modulation_index.py +2 -2
  171. scitex/dsp/_pac.py +1 -1
  172. scitex/dsp/_psd.py +2 -2
  173. scitex/dsp/_resample.py +2 -1
  174. scitex/dsp/_time.py +3 -2
  175. scitex/dsp/_wavelet.py +3 -2
  176. scitex/dsp/add_noise.py +2 -2
  177. scitex/dsp/example.py +1 -0
  178. scitex/dsp/filt.py +10 -9
  179. scitex/dsp/template.py +3 -2
  180. scitex/dsp/utils/_differential_bandpass_filters.py +1 -1
  181. scitex/dsp/utils/pac.py +2 -2
  182. scitex/dt/_normalize_timestamp.py +432 -0
  183. scitex/errors.py +572 -0
  184. scitex/gen/_DimHandler.py +2 -2
  185. scitex/gen/__init__.py +37 -7
  186. scitex/gen/_deprecated_close.py +80 -0
  187. scitex/gen/_deprecated_start.py +26 -0
  188. scitex/gen/_detect_environment.py +152 -0
  189. scitex/gen/_detect_notebook_path.py +169 -0
  190. scitex/gen/_embed.py +6 -2
  191. scitex/gen/_get_notebook_path.py +257 -0
  192. scitex/gen/_less.py +1 -1
  193. scitex/gen/_list_packages.py +2 -2
  194. scitex/gen/_norm.py +44 -9
  195. scitex/gen/_norm_cache.py +269 -0
  196. scitex/gen/_src.py +3 -5
  197. scitex/gen/_title_case.py +3 -3
  198. scitex/io/__init__.py +28 -6
  199. scitex/io/_glob.py +13 -7
  200. scitex/io/_load.py +108 -21
  201. scitex/io/_load_cache.py +303 -0
  202. scitex/io/_load_configs.py +40 -15
  203. scitex/io/{_H5Explorer.py → _load_modules/_H5Explorer.py} +80 -17
  204. scitex/io/_load_modules/_ZarrExplorer.py +114 -0
  205. scitex/io/_load_modules/_bibtex.py +207 -0
  206. scitex/io/_load_modules/_hdf5.py +53 -178
  207. scitex/io/_load_modules/_json.py +5 -3
  208. scitex/io/_load_modules/_pdf.py +871 -16
  209. scitex/io/_load_modules/_sqlite3.py +15 -0
  210. scitex/io/_load_modules/_txt.py +41 -12
  211. scitex/io/_load_modules/_yaml.py +4 -3
  212. scitex/io/_load_modules/_zarr.py +126 -0
  213. scitex/io/_save.py +429 -171
  214. scitex/io/_save_modules/__init__.py +6 -0
  215. scitex/io/_save_modules/_bibtex.py +194 -0
  216. scitex/io/_save_modules/_csv.py +8 -4
  217. scitex/io/_save_modules/_excel.py +174 -15
  218. scitex/io/_save_modules/_hdf5.py +251 -226
  219. scitex/io/_save_modules/_image.py +1 -3
  220. scitex/io/_save_modules/_json.py +49 -4
  221. scitex/io/_save_modules/_listed_dfs_as_csv.py +1 -3
  222. scitex/io/_save_modules/_listed_scalars_as_csv.py +1 -3
  223. scitex/io/_save_modules/_tex.py +277 -0
  224. scitex/io/_save_modules/_yaml.py +42 -3
  225. scitex/io/_save_modules/_zarr.py +160 -0
  226. scitex/io/utils/__init__.py +20 -0
  227. scitex/io/utils/h5_to_zarr.py +616 -0
  228. scitex/linalg/_geometric_median.py +6 -2
  229. scitex/{gen/_tee.py → logging/_Tee.py} +43 -84
  230. scitex/logging/__init__.py +122 -0
  231. scitex/logging/_config.py +158 -0
  232. scitex/logging/_context.py +103 -0
  233. scitex/logging/_formatters.py +128 -0
  234. scitex/logging/_handlers.py +64 -0
  235. scitex/logging/_levels.py +35 -0
  236. scitex/logging/_logger.py +163 -0
  237. scitex/logging/_print_capture.py +95 -0
  238. scitex/ml/__init__.py +69 -0
  239. scitex/{ai/genai/anthropic.py → ml/_gen_ai/_Anthropic.py} +13 -19
  240. scitex/{ai/genai/base_genai.py → ml/_gen_ai/_BaseGenAI.py} +5 -5
  241. scitex/{ai/genai/deepseek.py → ml/_gen_ai/_DeepSeek.py} +11 -16
  242. scitex/{ai/genai/google.py → ml/_gen_ai/_Google.py} +7 -15
  243. scitex/{ai/genai/groq.py → ml/_gen_ai/_Groq.py} +1 -8
  244. scitex/{ai/genai/llama.py → ml/_gen_ai/_Llama.py} +3 -16
  245. scitex/{ai/genai/openai.py → ml/_gen_ai/_OpenAI.py} +3 -3
  246. scitex/{ai/genai/params.py → ml/_gen_ai/_PARAMS.py} +51 -65
  247. scitex/{ai/genai/perplexity.py → ml/_gen_ai/_Perplexity.py} +3 -14
  248. scitex/ml/_gen_ai/__init__.py +43 -0
  249. scitex/{ai/genai/calc_cost.py → ml/_gen_ai/_calc_cost.py} +1 -1
  250. scitex/{ai/genai/format_output_func.py → ml/_gen_ai/_format_output_func.py} +4 -4
  251. scitex/{ai/genai/genai_factory.py → ml/_gen_ai/_genai_factory.py} +8 -8
  252. scitex/ml/activation/__init__.py +8 -0
  253. scitex/ml/activation/_define.py +11 -0
  254. scitex/{ai/classifier_server.py → ml/classification/Classifier.py} +5 -5
  255. scitex/ml/classification/CrossValidationExperiment.py +374 -0
  256. scitex/ml/classification/__init__.py +46 -0
  257. scitex/ml/classification/reporters/_BaseClassificationReporter.py +281 -0
  258. scitex/ml/classification/reporters/_ClassificationReporter.py +773 -0
  259. scitex/ml/classification/reporters/_MultiClassificationReporter.py +406 -0
  260. scitex/ml/classification/reporters/_SingleClassificationReporter.py +1834 -0
  261. scitex/ml/classification/reporters/__init__.py +11 -0
  262. scitex/ml/classification/reporters/reporter_utils/_Plotter.py +1028 -0
  263. scitex/ml/classification/reporters/reporter_utils/__init__.py +80 -0
  264. scitex/ml/classification/reporters/reporter_utils/aggregation.py +457 -0
  265. scitex/ml/classification/reporters/reporter_utils/data_models.py +313 -0
  266. scitex/ml/classification/reporters/reporter_utils/reporting.py +1056 -0
  267. scitex/ml/classification/reporters/reporter_utils/storage.py +221 -0
  268. scitex/ml/classification/reporters/reporter_utils/validation.py +395 -0
  269. scitex/ml/classification/timeseries/_TimeSeriesBlockingSplit.py +568 -0
  270. scitex/ml/classification/timeseries/_TimeSeriesCalendarSplit.py +688 -0
  271. scitex/ml/classification/timeseries/_TimeSeriesMetadata.py +139 -0
  272. scitex/ml/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +1716 -0
  273. scitex/ml/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +1685 -0
  274. scitex/ml/classification/timeseries/_TimeSeriesStrategy.py +84 -0
  275. scitex/ml/classification/timeseries/_TimeSeriesStratifiedSplit.py +610 -0
  276. scitex/ml/classification/timeseries/__init__.py +39 -0
  277. scitex/ml/classification/timeseries/_normalize_timestamp.py +436 -0
  278. scitex/ml/clustering/__init__.py +11 -0
  279. scitex/ml/clustering/_pca.py +115 -0
  280. scitex/ml/clustering/_umap.py +376 -0
  281. scitex/ml/feature_extraction/__init__.py +56 -0
  282. scitex/ml/feature_extraction/vit.py +149 -0
  283. scitex/ml/feature_selection/__init__.py +30 -0
  284. scitex/ml/feature_selection/feature_selection.py +364 -0
  285. scitex/ml/loss/_L1L2Losses.py +34 -0
  286. scitex/ml/loss/__init__.py +12 -0
  287. scitex/ml/loss/multi_task_loss.py +47 -0
  288. scitex/ml/metrics/__init__.py +56 -0
  289. scitex/ml/metrics/_calc_bacc.py +61 -0
  290. scitex/ml/metrics/_calc_bacc_from_conf_mat.py +38 -0
  291. scitex/ml/metrics/_calc_clf_report.py +78 -0
  292. scitex/ml/metrics/_calc_conf_mat.py +93 -0
  293. scitex/ml/metrics/_calc_feature_importance.py +183 -0
  294. scitex/ml/metrics/_calc_mcc.py +61 -0
  295. scitex/ml/metrics/_calc_pre_rec_auc.py +116 -0
  296. scitex/ml/metrics/_calc_roc_auc.py +110 -0
  297. scitex/ml/metrics/_calc_seizure_prediction_metrics.py +490 -0
  298. scitex/ml/metrics/_calc_silhouette_score.py +503 -0
  299. scitex/ml/metrics/_normalize_labels.py +83 -0
  300. scitex/ml/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
  301. scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
  302. scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +207 -0
  303. scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +238 -0
  304. scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +215 -0
  305. scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
  306. scitex/ml/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
  307. scitex/ml/optim/__init__.py +13 -0
  308. scitex/ml/optim/_get_set.py +31 -0
  309. scitex/ml/optim/_optimizers.py +71 -0
  310. scitex/ml/plt/__init__.py +60 -0
  311. scitex/ml/plt/_plot_conf_mat.py +663 -0
  312. scitex/ml/plt/_plot_feature_importance.py +323 -0
  313. scitex/ml/plt/_plot_learning_curve.py +345 -0
  314. scitex/ml/plt/_plot_optuna_study.py +225 -0
  315. scitex/ml/plt/_plot_pre_rec_curve.py +290 -0
  316. scitex/ml/plt/_plot_roc_curve.py +255 -0
  317. scitex/ml/sk/__init__.py +11 -0
  318. scitex/ml/sk/_clf.py +58 -0
  319. scitex/ml/sk/_to_sktime.py +100 -0
  320. scitex/ml/sklearn/__init__.py +26 -0
  321. scitex/ml/sklearn/clf.py +58 -0
  322. scitex/ml/sklearn/to_sktime.py +100 -0
  323. scitex/{ai/training/early_stopping.py → ml/training/_EarlyStopping.py} +1 -2
  324. scitex/{ai → ml/training}/_LearningCurveLogger.py +198 -242
  325. scitex/ml/training/__init__.py +7 -0
  326. scitex/ml/utils/__init__.py +22 -0
  327. scitex/ml/utils/_check_params.py +50 -0
  328. scitex/ml/utils/_default_dataset.py +46 -0
  329. scitex/ml/utils/_format_samples_for_sktime.py +26 -0
  330. scitex/ml/utils/_label_encoder.py +134 -0
  331. scitex/ml/utils/_merge_labels.py +22 -0
  332. scitex/ml/utils/_sliding_window_data_augmentation.py +11 -0
  333. scitex/ml/utils/_under_sample.py +51 -0
  334. scitex/ml/utils/_verify_n_gpus.py +16 -0
  335. scitex/ml/utils/grid_search.py +148 -0
  336. scitex/nn/_BNet.py +15 -9
  337. scitex/nn/_Filters.py +2 -2
  338. scitex/nn/_ModulationIndex.py +2 -2
  339. scitex/nn/_PAC.py +1 -1
  340. scitex/nn/_Spectrogram.py +12 -3
  341. scitex/nn/__init__.py +9 -10
  342. scitex/path/__init__.py +18 -0
  343. scitex/path/_clean.py +4 -0
  344. scitex/path/_find.py +9 -4
  345. scitex/path/_symlink.py +348 -0
  346. scitex/path/_version.py +4 -3
  347. scitex/pd/__init__.py +2 -0
  348. scitex/pd/_get_unique.py +99 -0
  349. scitex/plt/__init__.py +114 -5
  350. scitex/plt/_subplots/_AxesWrapper.py +1 -3
  351. scitex/plt/_subplots/_AxisWrapper.py +7 -3
  352. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +47 -13
  353. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +160 -2
  354. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +26 -4
  355. scitex/plt/_subplots/_AxisWrapperMixins/_UnitAwareMixin.py +322 -0
  356. scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +1 -0
  357. scitex/plt/_subplots/_FigWrapper.py +62 -6
  358. scitex/plt/_subplots/_export_as_csv.py +43 -27
  359. scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +5 -4
  360. scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +81 -0
  361. scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +1 -3
  362. scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +20 -5
  363. scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +1 -3
  364. scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +1 -3
  365. scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +35 -18
  366. scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +1 -3
  367. scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +1 -3
  368. scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +1 -3
  369. scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +1 -3
  370. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +1 -3
  371. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +1 -3
  372. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +15 -3
  373. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +1 -3
  374. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py +1 -3
  375. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py +1 -3
  376. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py +1 -3
  377. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.py +1 -3
  378. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py +1 -3
  379. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py +1 -3
  380. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +1 -3
  381. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py +1 -3
  382. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py +1 -3
  383. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py +1 -3
  384. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py +1 -3
  385. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py +1 -3
  386. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.py +1 -3
  387. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +35 -0
  388. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_hist.py +1 -3
  389. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py +1 -3
  390. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.py +1 -3
  391. scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +6 -4
  392. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +1 -3
  393. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +1 -3
  394. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +1 -3
  395. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +1 -3
  396. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +1 -3
  397. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +1 -3
  398. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +1 -3
  399. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +1 -3
  400. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +1 -3
  401. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +1 -3
  402. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +1 -3
  403. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +1 -3
  404. scitex/plt/_subplots/_export_as_csv_formatters/_format_text.py +60 -0
  405. scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +1 -3
  406. scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +1 -3
  407. scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +1 -3
  408. scitex/plt/_subplots/_export_as_csv_formatters.py +56 -59
  409. scitex/plt/ax/_style/_hide_spines.py +1 -3
  410. scitex/plt/ax/_style/_rotate_labels.py +180 -76
  411. scitex/plt/ax/_style/_rotate_labels_v01.py +248 -0
  412. scitex/plt/ax/_style/_set_meta.py +11 -4
  413. scitex/plt/ax/_style/_set_supxyt.py +3 -3
  414. scitex/plt/ax/_style/_set_xyt.py +3 -3
  415. scitex/plt/ax/_style/_share_axes.py +2 -2
  416. scitex/plt/color/__init__.py +4 -4
  417. scitex/plt/color/{_get_colors_from_cmap.py → _get_colors_from_conf_matap.py} +7 -7
  418. scitex/plt/utils/_configure_mpl.py +99 -86
  419. scitex/plt/utils/_histogram_utils.py +1 -3
  420. scitex/plt/utils/_is_valid_axis.py +1 -3
  421. scitex/plt/utils/_scitex_config.py +1 -0
  422. scitex/repro/__init__.py +75 -0
  423. scitex/{reproduce → repro}/_gen_ID.py +1 -1
  424. scitex/{reproduce → repro}/_gen_timestamp.py +1 -1
  425. scitex/repro_rng/_RandomStateManager.py +590 -0
  426. scitex/repro_rng/_RandomStateManager_v01-no-verbose-options.py +414 -0
  427. scitex/repro_rng/__init__.py +39 -0
  428. scitex/reproduce/__init__.py +25 -13
  429. scitex/reproduce/_hash_array.py +22 -0
  430. scitex/resource/_get_processor_usages.py +4 -4
  431. scitex/resource/_get_specs.py +2 -2
  432. scitex/resource/_log_processor_usages.py +2 -2
  433. scitex/rng/_RandomStateManager.py +590 -0
  434. scitex/rng/_RandomStateManager_v01-no-verbose-options.py +414 -0
  435. scitex/rng/__init__.py +39 -0
  436. scitex/scholar/__init__.py +309 -19
  437. scitex/scholar/__main__.py +319 -0
  438. scitex/scholar/auth/ScholarAuthManager.py +308 -0
  439. scitex/scholar/auth/__init__.py +12 -0
  440. scitex/scholar/auth/core/AuthenticationGateway.py +473 -0
  441. scitex/scholar/auth/core/BrowserAuthenticator.py +386 -0
  442. scitex/scholar/auth/core/StrategyResolver.py +309 -0
  443. scitex/scholar/auth/core/__init__.py +16 -0
  444. scitex/scholar/auth/gateway/_OpenURLLinkFinder.py +120 -0
  445. scitex/scholar/auth/gateway/_OpenURLResolver.py +209 -0
  446. scitex/scholar/auth/gateway/__init__.py +38 -0
  447. scitex/scholar/auth/gateway/_resolve_functions.py +101 -0
  448. scitex/scholar/auth/providers/BaseAuthenticator.py +166 -0
  449. scitex/scholar/auth/providers/EZProxyAuthenticator.py +484 -0
  450. scitex/scholar/auth/providers/OpenAthensAuthenticator.py +619 -0
  451. scitex/scholar/auth/providers/ShibbolethAuthenticator.py +686 -0
  452. scitex/scholar/auth/providers/__init__.py +18 -0
  453. scitex/scholar/auth/session/AuthCacheManager.py +189 -0
  454. scitex/scholar/auth/session/SessionManager.py +159 -0
  455. scitex/scholar/auth/session/__init__.py +11 -0
  456. scitex/scholar/auth/sso/BaseSSOAutomator.py +373 -0
  457. scitex/scholar/auth/sso/OpenAthensSSOAutomator.py +378 -0
  458. scitex/scholar/auth/sso/SSOAutomator.py +180 -0
  459. scitex/scholar/auth/sso/UniversityOfMelbourneSSOAutomator.py +380 -0
  460. scitex/scholar/auth/sso/__init__.py +15 -0
  461. scitex/scholar/browser/ScholarBrowserManager.py +705 -0
  462. scitex/scholar/browser/__init__.py +38 -0
  463. scitex/scholar/browser/utils/__init__.py +13 -0
  464. scitex/scholar/browser/utils/click_and_wait.py +205 -0
  465. scitex/scholar/browser/utils/close_unwanted_pages.py +140 -0
  466. scitex/scholar/browser/utils/wait_redirects.py +732 -0
  467. scitex/scholar/config/PublisherRules.py +132 -0
  468. scitex/scholar/config/ScholarConfig.py +126 -0
  469. scitex/scholar/config/__init__.py +17 -0
  470. scitex/scholar/core/Paper.py +627 -0
  471. scitex/scholar/core/Papers.py +722 -0
  472. scitex/scholar/core/Scholar.py +1975 -0
  473. scitex/scholar/core/__init__.py +9 -0
  474. scitex/scholar/impact_factor/ImpactFactorEngine.py +204 -0
  475. scitex/scholar/impact_factor/__init__.py +20 -0
  476. scitex/scholar/impact_factor/estimation/ImpactFactorEstimationEngine.py +0 -0
  477. scitex/scholar/impact_factor/estimation/__init__.py +40 -0
  478. scitex/scholar/impact_factor/estimation/build_database.py +0 -0
  479. scitex/scholar/impact_factor/estimation/core/__init__.py +28 -0
  480. scitex/scholar/impact_factor/estimation/core/cache_manager.py +523 -0
  481. scitex/scholar/impact_factor/estimation/core/calculator.py +355 -0
  482. scitex/scholar/impact_factor/estimation/core/journal_matcher.py +428 -0
  483. scitex/scholar/integration/__init__.py +59 -0
  484. scitex/scholar/integration/base.py +502 -0
  485. scitex/scholar/integration/mendeley/__init__.py +22 -0
  486. scitex/scholar/integration/mendeley/exporter.py +166 -0
  487. scitex/scholar/integration/mendeley/importer.py +236 -0
  488. scitex/scholar/integration/mendeley/linker.py +79 -0
  489. scitex/scholar/integration/mendeley/mapper.py +212 -0
  490. scitex/scholar/integration/zotero/__init__.py +27 -0
  491. scitex/scholar/integration/zotero/__main__.py +264 -0
  492. scitex/scholar/integration/zotero/exporter.py +351 -0
  493. scitex/scholar/integration/zotero/importer.py +372 -0
  494. scitex/scholar/integration/zotero/linker.py +415 -0
  495. scitex/scholar/integration/zotero/mapper.py +286 -0
  496. scitex/scholar/metadata_engines/ScholarEngine.py +588 -0
  497. scitex/scholar/metadata_engines/__init__.py +21 -0
  498. scitex/scholar/metadata_engines/individual/ArXivEngine.py +397 -0
  499. scitex/scholar/metadata_engines/individual/CrossRefEngine.py +274 -0
  500. scitex/scholar/metadata_engines/individual/CrossRefLocalEngine.py +263 -0
  501. scitex/scholar/metadata_engines/individual/OpenAlexEngine.py +350 -0
  502. scitex/scholar/metadata_engines/individual/PubMedEngine.py +329 -0
  503. scitex/scholar/metadata_engines/individual/SemanticScholarEngine.py +438 -0
  504. scitex/scholar/metadata_engines/individual/URLDOIEngine.py +410 -0
  505. scitex/scholar/metadata_engines/individual/_BaseDOIEngine.py +487 -0
  506. scitex/scholar/metadata_engines/individual/__init__.py +7 -0
  507. scitex/scholar/metadata_engines/utils/_PubMedConverter.py +469 -0
  508. scitex/scholar/metadata_engines/utils/_URLDOIExtractor.py +283 -0
  509. scitex/scholar/metadata_engines/utils/__init__.py +30 -0
  510. scitex/scholar/metadata_engines/utils/_metadata2bibtex.py +103 -0
  511. scitex/scholar/metadata_engines/utils/_standardize_metadata.py +376 -0
  512. scitex/scholar/pdf_download/ScholarPDFDownloader.py +579 -0
  513. scitex/scholar/pdf_download/__init__.py +5 -0
  514. scitex/scholar/pdf_download/strategies/__init__.py +38 -0
  515. scitex/scholar/pdf_download/strategies/chrome_pdf_viewer.py +376 -0
  516. scitex/scholar/pdf_download/strategies/direct_download.py +131 -0
  517. scitex/scholar/pdf_download/strategies/manual_download_fallback.py +167 -0
  518. scitex/scholar/pdf_download/strategies/manual_download_utils.py +996 -0
  519. scitex/scholar/pdf_download/strategies/response_body.py +207 -0
  520. scitex/scholar/pipelines/ScholarPipelineBibTeX.py +364 -0
  521. scitex/scholar/pipelines/ScholarPipelineParallel.py +478 -0
  522. scitex/scholar/pipelines/ScholarPipelineSingle.py +767 -0
  523. scitex/scholar/pipelines/__init__.py +49 -0
  524. scitex/scholar/storage/BibTeXHandler.py +1018 -0
  525. scitex/scholar/storage/PaperIO.py +468 -0
  526. scitex/scholar/storage/ScholarLibrary.py +182 -0
  527. scitex/scholar/storage/_DeduplicationManager.py +548 -0
  528. scitex/scholar/storage/_LibraryCacheManager.py +724 -0
  529. scitex/scholar/storage/_LibraryManager.py +1835 -0
  530. scitex/scholar/storage/__init__.py +28 -0
  531. scitex/scholar/url_finder/ScholarURLFinder.py +379 -0
  532. scitex/scholar/url_finder/__init__.py +7 -0
  533. scitex/scholar/url_finder/strategies/__init__.py +33 -0
  534. scitex/scholar/url_finder/strategies/find_pdf_urls_by_direct_links.py +261 -0
  535. scitex/scholar/url_finder/strategies/find_pdf_urls_by_dropdown.py +67 -0
  536. scitex/scholar/url_finder/strategies/find_pdf_urls_by_href.py +204 -0
  537. scitex/scholar/url_finder/strategies/find_pdf_urls_by_navigation.py +256 -0
  538. scitex/scholar/url_finder/strategies/find_pdf_urls_by_publisher_patterns.py +165 -0
  539. scitex/scholar/url_finder/strategies/find_pdf_urls_by_zotero_translators.py +163 -0
  540. scitex/scholar/url_finder/strategies/find_supplementary_urls_by_href.py +70 -0
  541. scitex/scholar/utils/__init__.py +22 -0
  542. scitex/scholar/utils/bibtex/__init__.py +9 -0
  543. scitex/scholar/utils/bibtex/_parse_bibtex.py +71 -0
  544. scitex/scholar/utils/cleanup/__init__.py +8 -0
  545. scitex/scholar/utils/cleanup/_cleanup_scholar_processes.py +96 -0
  546. scitex/scholar/utils/cleanup/cleanup_old_extractions.py +117 -0
  547. scitex/scholar/utils/text/_TextNormalizer.py +407 -0
  548. scitex/scholar/utils/text/__init__.py +9 -0
  549. scitex/scholar/zotero/__init__.py +38 -0
  550. scitex/session/__init__.py +51 -0
  551. scitex/session/_lifecycle.py +736 -0
  552. scitex/session/_manager.py +102 -0
  553. scitex/session/template.py +122 -0
  554. scitex/stats/__init__.py +30 -26
  555. scitex/stats/correct/__init__.py +21 -0
  556. scitex/stats/correct/_correct_bonferroni.py +551 -0
  557. scitex/stats/correct/_correct_fdr.py +634 -0
  558. scitex/stats/correct/_correct_holm.py +548 -0
  559. scitex/stats/correct/_correct_sidak.py +499 -0
  560. scitex/stats/descriptive/__init__.py +85 -0
  561. scitex/stats/descriptive/_circular.py +540 -0
  562. scitex/stats/descriptive/_describe.py +219 -0
  563. scitex/stats/descriptive/_nan.py +518 -0
  564. scitex/stats/descriptive/_real.py +189 -0
  565. scitex/stats/effect_sizes/__init__.py +41 -0
  566. scitex/stats/effect_sizes/_cliffs_delta.py +325 -0
  567. scitex/stats/effect_sizes/_cohens_d.py +342 -0
  568. scitex/stats/effect_sizes/_epsilon_squared.py +315 -0
  569. scitex/stats/effect_sizes/_eta_squared.py +302 -0
  570. scitex/stats/effect_sizes/_prob_superiority.py +296 -0
  571. scitex/stats/posthoc/__init__.py +19 -0
  572. scitex/stats/posthoc/_dunnett.py +463 -0
  573. scitex/stats/posthoc/_games_howell.py +383 -0
  574. scitex/stats/posthoc/_tukey_hsd.py +367 -0
  575. scitex/stats/power/__init__.py +19 -0
  576. scitex/stats/power/_power.py +433 -0
  577. scitex/stats/template.py +119 -0
  578. scitex/stats/utils/__init__.py +62 -0
  579. scitex/stats/utils/_effect_size.py +985 -0
  580. scitex/stats/utils/_formatters.py +270 -0
  581. scitex/stats/utils/_normalizers.py +927 -0
  582. scitex/stats/utils/_power.py +433 -0
  583. scitex/stats_v01/_EffectSizeCalculator.py +488 -0
  584. scitex/stats_v01/_StatisticalValidator.py +411 -0
  585. scitex/stats_v01/__init__.py +60 -0
  586. scitex/stats_v01/_additional_tests.py +415 -0
  587. scitex/{stats → stats_v01}/_p2stars.py +19 -5
  588. scitex/stats_v01/_two_sample_tests.py +141 -0
  589. scitex/stats_v01/desc/__init__.py +83 -0
  590. scitex/stats_v01/desc/_circular.py +540 -0
  591. scitex/stats_v01/desc/_describe.py +219 -0
  592. scitex/stats_v01/desc/_nan.py +518 -0
  593. scitex/{stats/desc/_nan.py → stats_v01/desc/_nan_v01-20250920_145731.py} +23 -12
  594. scitex/stats_v01/desc/_real.py +189 -0
  595. scitex/stats_v01/tests/__corr_test_optimized.py +221 -0
  596. scitex/stats_v01/tests/_corr_test_optimized.py +179 -0
  597. scitex/str/__init__.py +1 -3
  598. scitex/str/_clean_path.py +6 -2
  599. scitex/str/_latex_fallback.py +267 -160
  600. scitex/str/_parse.py +44 -36
  601. scitex/str/_printc.py +1 -3
  602. scitex/template/__init__.py +87 -0
  603. scitex/template/_create_project.py +267 -0
  604. scitex/template/create_pip_project.py +80 -0
  605. scitex/template/create_research.py +80 -0
  606. scitex/template/create_singularity.py +80 -0
  607. scitex/units.py +291 -0
  608. scitex/utils/_compress_hdf5.py +14 -3
  609. scitex/utils/_email.py +21 -2
  610. scitex/utils/_grid.py +6 -4
  611. scitex/utils/_notify.py +13 -10
  612. scitex/utils/_verify_scitex_format.py +589 -0
  613. scitex/utils/_verify_scitex_format_v01.py +370 -0
  614. scitex/utils/template.py +122 -0
  615. scitex/web/_search_pubmed.py +62 -16
  616. scitex-2.1.0.dist-info/LICENSE +21 -0
  617. scitex-2.1.0.dist-info/METADATA +677 -0
  618. scitex-2.1.0.dist-info/RECORD +919 -0
  619. {scitex-2.0.0.dist-info → scitex-2.1.0.dist-info}/WHEEL +1 -1
  620. scitex-2.1.0.dist-info/entry_points.txt +3 -0
  621. scitex/ai/__Classifiers.py +0 -101
  622. scitex/ai/classification/classification_reporter.py +0 -1137
  623. scitex/ai/classification/classifiers.py +0 -101
  624. scitex/ai/classification_reporter.py +0 -1161
  625. scitex/ai/genai/__init__.py +0 -277
  626. scitex/ai/genai/anthropic_provider.py +0 -320
  627. scitex/ai/genai/anthropic_refactored.py +0 -109
  628. scitex/ai/genai/auth_manager.py +0 -200
  629. scitex/ai/genai/base_provider.py +0 -291
  630. scitex/ai/genai/chat_history.py +0 -307
  631. scitex/ai/genai/cost_tracker.py +0 -276
  632. scitex/ai/genai/deepseek_provider.py +0 -251
  633. scitex/ai/genai/google_provider.py +0 -228
  634. scitex/ai/genai/groq_provider.py +0 -248
  635. scitex/ai/genai/image_processor.py +0 -250
  636. scitex/ai/genai/llama_provider.py +0 -214
  637. scitex/ai/genai/mock_provider.py +0 -127
  638. scitex/ai/genai/model_registry.py +0 -304
  639. scitex/ai/genai/openai_provider.py +0 -293
  640. scitex/ai/genai/perplexity_provider.py +0 -205
  641. scitex/ai/genai/provider_base.py +0 -302
  642. scitex/ai/genai/provider_factory.py +0 -370
  643. scitex/ai/genai/response_handler.py +0 -235
  644. scitex/ai/layer/_Pass.py +0 -21
  645. scitex/ai/layer/__init__.py +0 -10
  646. scitex/ai/layer/_switch.py +0 -8
  647. scitex/ai/metrics/_bACC.py +0 -51
  648. scitex/ai/plt/_learning_curve.py +0 -194
  649. scitex/ai/plt/_optuna_study.py +0 -111
  650. scitex/ai/plt/aucs/__init__.py +0 -2
  651. scitex/ai/plt/aucs/example.py +0 -60
  652. scitex/ai/plt/aucs/pre_rec_auc.py +0 -223
  653. scitex/ai/plt/aucs/roc_auc.py +0 -246
  654. scitex/ai/sampling/undersample.py +0 -29
  655. scitex/db/_SQLite3.py +0 -2136
  656. scitex/db/_SQLite3Mixins/_BlobMixin.py +0 -229
  657. scitex/gen/_close.py +0 -222
  658. scitex/gen/_start.py +0 -451
  659. scitex/general/__init__.py +0 -5
  660. scitex/io/_load_modules/_db.py +0 -24
  661. scitex/life/__init__.py +0 -10
  662. scitex/life/_monitor_rain.py +0 -49
  663. scitex/reproduce/_fix_seeds.py +0 -45
  664. scitex/res/__init__.py +0 -5
  665. scitex/scholar/_local_search.py +0 -454
  666. scitex/scholar/_paper.py +0 -244
  667. scitex/scholar/_pdf_downloader.py +0 -325
  668. scitex/scholar/_search.py +0 -393
  669. scitex/scholar/_vector_search.py +0 -370
  670. scitex/scholar/_web_sources.py +0 -457
  671. scitex/stats/desc/__init__.py +0 -40
  672. scitex-2.0.0.dist-info/METADATA +0 -307
  673. scitex-2.0.0.dist-info/RECORD +0 -572
  674. scitex-2.0.0.dist-info/licenses/LICENSE +0 -7
  675. /scitex/ai/{act → activation}/__init__.py +0 -0
  676. /scitex/ai/{act → activation}/_define.py +0 -0
  677. /scitex/ai/{early_stopping.py → training/_EarlyStopping.py} +0 -0
  678. /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_ImportExportMixin.py +0 -0
  679. /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_IndexMixin.py +0 -0
  680. /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_RowMixin.py +0 -0
  681. /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_TableMixin.py +0 -0
  682. /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/__init__.py +0 -0
  683. /scitex/{stats → stats_v01}/_calc_partial_corr.py +0 -0
  684. /scitex/{stats → stats_v01}/_corr_test_multi.py +0 -0
  685. /scitex/{stats → stats_v01}/_corr_test_wrapper.py +0 -0
  686. /scitex/{stats → stats_v01}/_describe_wrapper.py +0 -0
  687. /scitex/{stats → stats_v01}/_multiple_corrections.py +0 -0
  688. /scitex/{stats → stats_v01}/_nan_stats.py +0 -0
  689. /scitex/{stats → stats_v01}/_p2stars_wrapper.py +0 -0
  690. /scitex/{stats → stats_v01}/_statistical_tests.py +0 -0
  691. /scitex/{stats/desc/_describe.py → stats_v01/desc/_describe_v01-20250920_145731.py} +0 -0
  692. /scitex/{stats/desc/_real.py → stats_v01/desc/_real_v01-20250920_145731.py} +0 -0
  693. /scitex/{stats → stats_v01}/multiple/__init__.py +0 -0
  694. /scitex/{stats → stats_v01}/multiple/_bonferroni_correction.py +0 -0
  695. /scitex/{stats → stats_v01}/multiple/_fdr_correction.py +0 -0
  696. /scitex/{stats → stats_v01}/multiple/_multicompair.py +0 -0
  697. /scitex/{stats → stats_v01}/tests/__corr_test.py +0 -0
  698. /scitex/{stats → stats_v01}/tests/__corr_test_multi.py +0 -0
  699. /scitex/{stats → stats_v01}/tests/__corr_test_single.py +0 -0
  700. /scitex/{stats → stats_v01}/tests/__init__.py +0 -0
  701. /scitex/{stats → stats_v01}/tests/_brunner_munzel_test.py +0 -0
  702. /scitex/{stats → stats_v01}/tests/_nocorrelation_test.py +0 -0
  703. /scitex/{stats → stats_v01}/tests/_smirnov_grubbs.py +0 -0
  704. {scitex-2.0.0.dist-info → scitex-2.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,677 @@
1
+ Metadata-Version: 2.1
2
+ Name: scitex
3
+ Version: 2.1.0
4
+ Summary: A comprehensive scientific computing framework for Python
5
+ Home-page: https://github.com/ywatanabe1989/SciTeX-Code
6
+ Author: Yusuke Watanabe
7
+ Author-email: ywatanabe@scitex.ai
8
+ License: UNKNOWN
9
+ Project-URL: Bug Tracker, https://github.com/ywatanabe1989/scitex/issues
10
+ Project-URL: Documentation, https://scitex.readthedocs.io
11
+ Project-URL: Source Code, https://github.com/ywatanabe1989/scitex
12
+ Keywords: scientific computing,data analysis,machine learning,visualization,research
13
+ Platform: UNKNOWN
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Scientific/Engineering
25
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
26
+ Classifier: Topic :: Scientific/Engineering :: Visualization
27
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
+ Requires-Python: >=3.8
29
+ Description-Content-Type: text/markdown
30
+ License-File: LICENSE
31
+ Requires-Dist: GitPython
32
+ Requires-Dist: Pillow
33
+ Requires-Dist: PyMuPDF
34
+ Requires-Dist: PyPDF2
35
+ Requires-Dist: PyYAML
36
+ Requires-Dist: Pyarrow
37
+ Requires-Dist: accelerate
38
+ Requires-Dist: aiohttp
39
+ Requires-Dist: ansi-escapes
40
+ Requires-Dist: anthropic
41
+ Requires-Dist: attrdict
42
+ Requires-Dist: autopep8
43
+ Requires-Dist: bitsandbytes
44
+ Requires-Dist: black
45
+ Requires-Dist: bs4
46
+ Requires-Dist: build
47
+ Requires-Dist: catboost
48
+ Requires-Dist: chardet
49
+ Requires-Dist: click
50
+ Requires-Dist: crawl4ai
51
+ Requires-Dist: docutils<0.18
52
+ Requires-Dist: einops
53
+ Requires-Dist: fairscale
54
+ Requires-Dist: fastapi
55
+ Requires-Dist: flake8
56
+ Requires-Dist: flask
57
+ Requires-Dist: geom-median
58
+ Requires-Dist: google-genai
59
+ Requires-Dist: google-search-results
60
+ Requires-Dist: googlesearch-python
61
+ Requires-Dist: groq
62
+ Requires-Dist: h5py
63
+ Requires-Dist: html2text
64
+ Requires-Dist: icecream
65
+ Requires-Dist: imbalanced-learn
66
+ Requires-Dist: impact-factor
67
+ Requires-Dist: ipdb
68
+ Requires-Dist: ipykernel
69
+ Requires-Dist: ipython
70
+ Requires-Dist: isort
71
+ Requires-Dist: jedi
72
+ Requires-Dist: joblib
73
+ Requires-Dist: joypy
74
+ Requires-Dist: julius
75
+ Requires-Dist: jupyter-collaboration
76
+ Requires-Dist: jupyterlab
77
+ Requires-Dist: jupytext
78
+ Requires-Dist: line-profiler
79
+ Requires-Dist: llama-stack
80
+ Requires-Dist: lxml
81
+ Requires-Dist: lxml-html-clean
82
+ Requires-Dist: markdown
83
+ Requires-Dist: markdown2
84
+ Requires-Dist: matplotlib
85
+ Requires-Dist: memory-profiler
86
+ Requires-Dist: mne
87
+ Requires-Dist: more-itertools
88
+ Requires-Dist: mypy
89
+ Requires-Dist: myst-parser
90
+ Requires-Dist: natsort
91
+ Requires-Dist: nbsphinx
92
+ Requires-Dist: nest-asyncio
93
+ Requires-Dist: numpy
94
+ Requires-Dist: obspy
95
+ Requires-Dist: openai
96
+ Requires-Dist: opencv-python
97
+ Requires-Dist: openpyxl
98
+ Requires-Dist: optuna
99
+ Requires-Dist: packaging
100
+ Requires-Dist: pandas
101
+ Requires-Dist: papermill
102
+ Requires-Dist: pdfplumber
103
+ Requires-Dist: pebble
104
+ Requires-Dist: platformdirs
105
+ Requires-Dist: plotly
106
+ Requires-Dist: plyer
107
+ Requires-Dist: pre-commit
108
+ Requires-Dist: psutil
109
+ Requires-Dist: psycopg2-binary
110
+ Requires-Dist: pyautogui
111
+ Requires-Dist: pybids
112
+ Requires-Dist: pyedflib
113
+ Requires-Dist: pygments
114
+ Requires-Dist: pylint
115
+ Requires-Dist: pyls
116
+ Requires-Dist: pymatreader
117
+ Requires-Dist: pymed
118
+ Requires-Dist: pyperclip
119
+ Requires-Dist: pyright
120
+ Requires-Dist: pytesseract
121
+ Requires-Dist: pytest
122
+ Requires-Dist: pytest-asyncio
123
+ Requires-Dist: pytest-cov
124
+ Requires-Dist: pytest-env
125
+ Requires-Dist: pytest-mock
126
+ Requires-Dist: pytest-testmon
127
+ Requires-Dist: pytest-timeout
128
+ Requires-Dist: pytest-xdist
129
+ Requires-Dist: python-docx
130
+ Requires-Dist: python-lsp-server
131
+ Requires-Dist: python-magic
132
+ Requires-Dist: pytorch-optimizer
133
+ Requires-Dist: pytorch-pretrained-vit
134
+ Requires-Dist: pyupgrade
135
+ Requires-Dist: readability
136
+ Requires-Dist: readability-lxml
137
+ Requires-Dist: readchar
138
+ Requires-Dist: reportlab
139
+ Requires-Dist: requests
140
+ Requires-Dist: ripple-detection
141
+ Requires-Dist: rope
142
+ Requires-Dist: ruamel.yaml
143
+ Requires-Dist: ruff-lsp
144
+ Requires-Dist: scholarly
145
+ Requires-Dist: scikit-image
146
+ Requires-Dist: scikit-learn
147
+ Requires-Dist: scipy
148
+ Requires-Dist: seaborn
149
+ Requires-Dist: selenium
150
+ Requires-Dist: setuptools
151
+ Requires-Dist: six
152
+ Requires-Dist: sktime
153
+ Requires-Dist: sounddevice
154
+ Requires-Dist: sphinx
155
+ Requires-Dist: sphinx-autobuild
156
+ Requires-Dist: sphinx-autodoc-typehints
157
+ Requires-Dist: sphinx-rtd-theme
158
+ Requires-Dist: sql-manager
159
+ Requires-Dist: sqlalchemy
160
+ Requires-Dist: statsmodels
161
+ Requires-Dist: streamlit
162
+ Requires-Dist: sympy
163
+ Requires-Dist: tabulate
164
+ Requires-Dist: tensorpac
165
+ Requires-Dist: termplotlib
166
+ Requires-Dist: thefuzz
167
+ Requires-Dist: timeout-decorator
168
+ Requires-Dist: tk
169
+ Requires-Dist: tldr
170
+ Requires-Dist: torch
171
+ Requires-Dist: torchaudio
172
+ Requires-Dist: torchsummary
173
+ Requires-Dist: torchvision
174
+ Requires-Dist: transformers
175
+ Requires-Dist: twine
176
+ Requires-Dist: types-PyYAML
177
+ Requires-Dist: types-requests
178
+ Requires-Dist: types-setuptools
179
+ Requires-Dist: umap-learn
180
+ Requires-Dist: webdriver-manager
181
+ Requires-Dist: webrequests
182
+ Requires-Dist: wheel
183
+ Requires-Dist: xarray
184
+ Requires-Dist: xlrd
185
+ Requires-Dist: xmltodict
186
+ Requires-Dist: zarr
187
+ Provides-Extra: dev
188
+ Requires-Dist: black; extra == "dev"
189
+ Requires-Dist: flake8; extra == "dev"
190
+ Requires-Dist: isort; extra == "dev"
191
+ Requires-Dist: pytest; extra == "dev"
192
+ Requires-Dist: pytest-cov; extra == "dev"
193
+ Requires-Dist: sphinx; extra == "dev"
194
+ Provides-Extra: docs
195
+ Requires-Dist: sphinx; extra == "docs"
196
+ Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
197
+ Requires-Dist: sphinx-rtd-theme; extra == "docs"
198
+
199
+ <!-- ---
200
+ !-- Timestamp: 2025-10-09 10:41:59
201
+ !-- Author: ywatanabe
202
+ !-- File: /home/ywatanabe/proj/scitex_repo/README.md
203
+ !-- --- -->
204
+
205
+ # SciTeX
206
+
207
+ A Python framework for scientific research that makes the entire research pipeline more standardized, structured, and reproducible by automating repetitive processes.
208
+
209
+ Part of the fully open-source SciTeX project: https://scitex.ai
210
+
211
+ <!-- badges -->
212
+ [![PyPI version](https://badge.fury.io/py/scitex.svg)](https://badge.fury.io/py/scitex)
213
+ [![Python Versions](https://img.shields.io/pypi/pyversions/scitex.svg)](https://pypi.org/project/scitex/)
214
+ [![License](https://img.shields.io/github/license/ywatanabe1989/SciTeX-Code)](https://github.com/ywatanabe1989/SciTeX-Code/blob/main/LICENSE)
215
+ [![Tests](https://github.com/ywatanabe1989/SciTeX-Code/actions/workflows/ci.yml/badge.svg)](https://github.com/ywatanabe1989/SciTeX-Code/actions)
216
+ [![Coverage](https://codecov.io/gh/ywatanabe1989/SciTeX-Code/branch/main/graph/badge.svg)](https://codecov.io/gh/ywatanabe1989/SciTeX-Code)
217
+ [![Documentation](https://readthedocs.org/projects/scitex/badge/?version=latest)](https://scitex.readthedocs.io/en/latest/?badge=latest)
218
+ [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
219
+ [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
220
+
221
+ ## 📦 Installation
222
+
223
+ ```bash
224
+ pip install scitex
225
+ ```
226
+
227
+ ## 📦 Module Overview
228
+
229
+ SciTeX is organized into focused modules for different aspects of scientific computing:
230
+
231
+ ### 🔧 Core Utilities
232
+ | Module | Description |
233
+ |-------------------------------------------------|---------------------------------------------------------------------|
234
+ | [`scitex.gen`](./src/scitex/gen#readme) | Project setup, session management, and experiment tracking |
235
+ | [`scitex.io`](./src/scitex/io#readme) | Universal I/O for 30+ formats (CSV, JSON, HDF5, Zarr, pickle, etc.) |
236
+ | [`scitex.path`](./src/scitex/path#readme) | Path manipulation and project structure utilities |
237
+ | [`scitex.logging`](./src/scitex/logging#readme) | Structured logging with color support and context |
238
+
239
+ ### 📊 Data Science & Statistics
240
+ | Module | Description |
241
+ |---------------------------------------------|--------------------------------------------------------------------------|
242
+ | [`scitex.stats`](./src/scitex/stats#readme) | 16 statistical tests, effect sizes, power analysis, multiple corrections |
243
+ | [`scitex.plt`](./src/scitex/plt#readme) | Enhanced matplotlib with auto-export and scientific captions |
244
+ | [`scitex.pd`](./src/scitex/pd#readme) | Pandas extensions for research workflows |
245
+
246
+ ### 🧠 AI & Machine Learning
247
+ | Module | Description |
248
+ |---------------------------------------------|---------------------------------------------------------|
249
+ | [`scitex.ai`](./src/scitex/ai#readme) | GenAI (7 providers), classification, training utilities |
250
+ | [`scitex.torch`](./src/scitex/torch#readme) | PyTorch training loops, metrics, and utilities |
251
+ | [`scitex.nn`](./src/scitex/nn#readme) | Custom neural network layers |
252
+
253
+ ### 🌊 Signal Processing
254
+ | Module | Description |
255
+ |-----------------------------------------|---------------------------------------------------------------|
256
+ | [`scitex.dsp`](./src/scitex/dsp#readme) | Filtering, spectral analysis, wavelets, PAC, ripple detection |
257
+
258
+ ### 📚 Literature Management
259
+ | Module | Description |
260
+ |-------------------------------------------------|-----------------------------------------------------------------|
261
+ | [`scitex.scholar`](./src/scitex/scholar#readme) | Paper search, PDF download, BibTeX enrichment with IF/citations |
262
+
263
+ ### 🌐 Web & Browser
264
+ | Module | Description |
265
+ |-------------------------------------------------|------------------------------------------------------------|
266
+ | [`scitex.browser`](./src/scitex/browser#readme) | Playwright automation with debugging, PDF handling, popups |
267
+
268
+ ### 🗄️ Data Management
269
+ | Module | Description |
270
+ |---------------------------------------|-------------------------------------|
271
+ | [`scitex.db`](./src/scitex/db#readme) | SQLite3 and PostgreSQL abstractions |
272
+
273
+ ### 🛠️ Utilities
274
+ | Module | Description |
275
+ |-------------------------------------------------------|-----------------------------------------------------|
276
+ | [`scitex.decorators`](./src/scitex/decorators#readme) | Function decorators for caching, timing, validation |
277
+ | [`scitex.rng`](./src/scitex/rng#readme) | Reproducible random number generation |
278
+ | [`scitex.resource`](./src/scitex/resource#readme) | System resource monitoring (CPU, memory, GPU) |
279
+ | [`scitex.dict`](./src/scitex/dict#readme) | Dictionary manipulation and nested access |
280
+ | [`scitex.str`](./src/scitex/str#readme) | String utilities for scientific text processing |
281
+
282
+ ## 🚀 Quick Start
283
+
284
+ ### Use Case 1: Data Analysis with Statistics
285
+
286
+ ```python
287
+ import scitex as stx
288
+
289
+ # Load data
290
+ data = stx.io.load("experiment_data.csv")
291
+ control = data[data['group'] == 'control']['response']
292
+ treatment = data[data['group'] == 'treatment']['response']
293
+
294
+ # Statistical comparison
295
+ from scitex.stats.tests.parametric import ttest_ind
296
+ from scitex.stats.effect_sizes import cohens_d
297
+
298
+ result = ttest_ind(control, treatment)
299
+ effect = cohens_d(treatment, control)
300
+
301
+ print(f"{result['formatted']}") # "t(58) = 2.45, p = 0.017*"
302
+ print(f"Cohen's d = {effect['d']:.2f} ({effect['interpretation']})")
303
+
304
+ # Visualization
305
+ fig, ax = stx.plt.subplots()
306
+ ax.boxplot([control, treatment], labels=['Control', 'Treatment'])
307
+ stx.io.save(fig, "comparison.png") # Saves figure + data as CSV
308
+ ```
309
+
310
+ ### Use Case 2: Signal Processing Pipeline
311
+
312
+ ```python
313
+ import scitex as stx
314
+
315
+ # Load EEG/neural data
316
+ signal = stx.io.load("neural_recording.h5") # (n_channels, n_epochs, n_timepoints)
317
+ fs = 1000 # Sampling rate
318
+
319
+ # Preprocessing
320
+ from scitex.dsp import filt, psd, wavelet
321
+
322
+ # Filter to theta band (4-8 Hz)
323
+ theta = filt.bandpass(signal, fs, bands=[[4, 8]])
324
+
325
+ # Power spectral density
326
+ freqs, power = psd(signal, fs)
327
+
328
+ # Time-frequency analysis
329
+ import numpy as np
330
+ tf_freqs = np.logspace(np.log10(1), np.log10(100), 50)
331
+ wavelet_coeffs = wavelet(signal, fs, freqs=tf_freqs)
332
+
333
+ # Save results
334
+ stx.io.save(theta, "processed/theta_filtered.npy")
335
+ stx.io.save(power, "processed/psd_results.h5")
336
+ ```
337
+
338
+ ### Use Case 3: Literature Management
339
+
340
+ ```python
341
+ import scitex as stx
342
+
343
+ # Search and download academic papers
344
+ scholar = stx.scholar.Scholar(project="my_research")
345
+
346
+ # Enrich BibTeX with citations and impact factors
347
+ papers = scholar.load_bibtex("references.bib")
348
+ enriched = scholar.enrich_papers(papers)
349
+
350
+ # Filter high-impact papers
351
+ high_impact = enriched.filter(
352
+ year_min=2020,
353
+ min_citations=50,
354
+ min_impact_factor=5.0
355
+ )
356
+
357
+ # Download PDFs (requires institutional access)
358
+ import asyncio
359
+ dois = [p.doi for p in high_impact if p.doi]
360
+ asyncio.run(scholar.download_pdfs_from_dois_async(dois))
361
+
362
+ # Export results
363
+ scholar.save_papers_as_bibtex(high_impact, "high_impact_papers.bib")
364
+ ```
365
+
366
+ ### Use Case 4: Machine Learning Workflow
367
+
368
+ ```python
369
+ import scitex as stx
370
+ import numpy as np
371
+
372
+ # Load and prepare data
373
+ X_train = stx.io.load("features_train.npy")
374
+ y_train = stx.io.load("labels_train.npy")
375
+ X_test = stx.io.load("features_test.npy")
376
+ y_test = stx.io.load("labels_test.npy")
377
+
378
+ # Train model
379
+ from scitex.ai import ClassificationReporter, EarlyStopping
380
+
381
+ model = YourModel() # Your PyTorch/sklearn model
382
+ early_stopper = EarlyStopping(patience=10)
383
+
384
+ # Training loop
385
+ for epoch in range(100):
386
+ train_loss = train_epoch(model, X_train, y_train)
387
+ val_loss = validate(model, X_val, y_val)
388
+
389
+ early_stopper(val_loss, model)
390
+ if early_stopper.early_stop:
391
+ break
392
+
393
+ # Evaluate with comprehensive metrics
394
+ reporter = ClassificationReporter(save_dir="./results")
395
+ y_pred = model.predict(X_test)
396
+ y_prob = model.predict_proba(X_test)
397
+
398
+ reporter.calc_metrics(y_test, y_pred, y_prob, labels=['class0', 'class1'])
399
+ reporter.summarize() # Prints confusion matrix, ROC, PR curves
400
+ reporter.save() # Saves all metrics and plots
401
+ ```
402
+
403
+ ### Use Case 5: Complete Research Script
404
+
405
+ ```python
406
+ #!/usr/bin/env python3
407
+ import scitex as stx
408
+ import sys
409
+ import matplotlib.pyplot as plt
410
+
411
+ def main(args):
412
+ # Load experimental data
413
+ data = stx.io.load("data.csv")
414
+
415
+ # Preprocess
416
+ processed = preprocess_data(data)
417
+
418
+ # Statistical analysis
419
+ results = perform_statistical_tests(processed)
420
+
421
+ # Generate publication-quality figures
422
+ fig, axes = stx.plt.subplots(2, 2, figsize=(12, 10))
423
+ plot_results(axes, results)
424
+ stx.io.save(fig, "results/figure1.png") # Auto-exports data as CSV
425
+
426
+ # Save results
427
+ stx.io.save(results, "results/statistical_results.json")
428
+
429
+ return 0
430
+
431
+ if __name__ == '__main__':
432
+ # Initialize SciTeX session (logging, reproducibility, etc.)
433
+ CONFIG, sys.stdout, sys.stderr, plt, CC, rng = stx.session.start(
434
+ sys, plt,
435
+ file=__file__,
436
+ verbose=True
437
+ )
438
+
439
+ # Run main analysis
440
+ exit_status = main(None)
441
+
442
+ # Cleanup and finalize
443
+ stx.session.close(CONFIG, exit_status=exit_status)
444
+ ```
445
+
446
+ ### Common Patterns
447
+
448
+ ```python
449
+ import scitex as stx
450
+
451
+ # Universal I/O - format auto-detected
452
+ data = stx.io.load("data.csv") # → pandas DataFrame
453
+ array = stx.io.load("data.npy") # → numpy array
454
+ model = stx.io.load("model.pth") # → PyTorch state dict
455
+ config = stx.io.load("config.yaml") # → dict
456
+
457
+ # Caching expensive operations
458
+ @stx.io.cache(cache_dir=".cache")
459
+ def expensive_computation(x):
460
+ return process_large_dataset(x)
461
+
462
+ # Reproducible random numbers
463
+ rng = stx.rng.get_rng(seed=42)
464
+ random_data = rng.normal(0, 1, size=1000)
465
+
466
+ # Path management
467
+ project_root = stx.path.find_git_root()
468
+ data_dir = project_root / "data"
469
+ latest_results = stx.path.find_latest("results/experiment_v*.csv")
470
+
471
+ def parse_args() -> argparse.Namespace:
472
+ """Parse command line arguments."""
473
+ import scitex as stx
474
+ parser = argparse.ArgumentParser(description='')
475
+ args = parser.parse_args()
476
+ return args
477
+
478
+ def run_main() -> None:
479
+ """Initialize scitex framework, run main function, and cleanup."""
480
+ global CONFIG, CC, sys, plt, rng
481
+
482
+ import sys
483
+ import matplotlib.pyplot as plt
484
+ import scitex as stx
485
+
486
+ args = parse_args()
487
+
488
+ # Start an session with:
489
+ # Collect configs defined in ./config/*yaml
490
+ # Prepare runtime directory as /path/to/script_out/RUNNING/YYYY_MMDD_mmss_<4-random-digit>/
491
+ # Start logging to <runtime_directory>/logs/{stdout.log,stderr.log}
492
+ # Setup matplotlib wrapper for saving plotted data as csv
493
+ # CC: Custom colors for plotting
494
+ # rng: Fix random seeds for common packages as 42
495
+ CONFIG, sys.stdout, sys.stderr, plt, CC, rng = stx.session.start(
496
+ sys,
497
+ plt,
498
+ args=args,
499
+ file=__FILE__,
500
+ sdir_suffix=None,
501
+ verbose=False,
502
+ agg=True,
503
+ )
504
+
505
+ # Check the runtime status at the end
506
+ exit_status = main(args)
507
+
508
+ # Close the session with:
509
+ # Route all logs and outputs created by the session to RUNNING
510
+ # Send notification user (needs setup)
511
+ stx.session.close(
512
+ CONFIG,
513
+ verbose=False,
514
+ notify=False,
515
+ message="",
516
+ exit_status=exit_status,
517
+ )
518
+ ```
519
+
520
+ ##
521
+ <details>
522
+
523
+ <summary>Recommended Python Script Template for SciTeX project</summary>
524
+
525
+ ``` python
526
+ #!/usr/bin/env python3
527
+ # -*- coding: utf-8 -*-
528
+ # Timestamp: "2024-11-03 10:33:13 (ywatanabe)"
529
+ # File: placeholder.py
530
+
531
+ __FILE__ = "placeholder.py"
532
+
533
+ """
534
+ Functionalities:
535
+ - Does XYZ
536
+ - Does XYZ
537
+ - Does XYZ
538
+ - Saves XYZ
539
+
540
+ Dependencies:
541
+ - scripts:
542
+ - /path/to/script1
543
+ - /path/to/script2
544
+ - packages:
545
+ - package1
546
+ - package2
547
+ IO:
548
+ - input-files:
549
+ - /path/to/input/file.xxx
550
+ - /path/to/input/file.xxx
551
+
552
+ - output-files:
553
+ - /path/to/input/file.xxx
554
+ - /path/to/input/file.xxx
555
+
556
+ (Remove me: Please fill docstrings above, while keeping the bulette point style, and remove this instruction line)
557
+ """
558
+
559
+ """Imports"""
560
+ import os
561
+ import sys
562
+ import argparse
563
+ import scitex as stx
564
+ from scitex import logging
565
+
566
+ logger = logging.getLogger(__name__)
567
+
568
+ """Warnings"""
569
+ # stx.pd.ignore_SettingWithCopyWarning()
570
+ # warnings.simplefilter("ignore", UserWarning)
571
+ # with warnings.catch_warnings():
572
+ # warnings.simplefilter("ignore", UserWarning)
573
+
574
+ """Parameters"""
575
+ # CONFIG = stx.io.load_configs()
576
+
577
+ """Functions & Classes"""
578
+ def main(args):
579
+ return 0
580
+
581
+ import argparse
582
+ def parse_args() -> argparse.Namespace:
583
+ """Parse command line arguments."""
584
+ import scitex as stx
585
+ parser = argparse.ArgumentParser(description='')
586
+ # parser.add_argument(
587
+ # "--var",
588
+ # "-v",
589
+ # type=int,
590
+ # choices=None,
591
+ # default=1,
592
+ # help="(default: %(default)s)",
593
+ # )
594
+ # parser.add_argument(
595
+ # "--flag",
596
+ # "-f",
597
+ # action="store_true",
598
+ # default=False,
599
+ # help="(default: %%(default)s)",
600
+ # )
601
+ args = parser.parse_args()
602
+ return args
603
+
604
+ def run_main() -> None:
605
+ """Initialize scitex framework, run main function, and cleanup."""
606
+ global CONFIG, CC, sys, plt, rng
607
+
608
+ import sys
609
+ import matplotlib.pyplot as plt
610
+ import scitex as stx
611
+
612
+ args = parse_args()
613
+
614
+ CONFIG, sys.stdout, sys.stderr, plt, CC, rng = stx.session.start(
615
+ sys,
616
+ plt,
617
+ args=args,
618
+ file=__FILE__,
619
+ sdir_suffix=None,
620
+ verbose=False,
621
+ agg=True,
622
+ )
623
+
624
+ exit_status = main(args)
625
+
626
+ stx.session.close(
627
+ CONFIG,
628
+ verbose=False,
629
+ notify=False,
630
+ message="",
631
+ exit_status=exit_status,
632
+ )
633
+
634
+ if __name__ == '__main__':
635
+ run_main()
636
+
637
+ # EOF
638
+ ```
639
+
640
+ </details>
641
+
642
+
643
+ ## 📖 Documentation
644
+
645
+ ### Online Documentation
646
+ - **[Read the Docs](https://scitex.readthedocs.io/)**: Complete API reference and guides
647
+ - **[Interactive Examples](https://scitex.readthedocs.io/en/latest/examples/index.html)**: Browse all tutorial notebooks
648
+ - **[Quick Start Guide](https://scitex.readthedocs.io/en/latest/getting_started.html)**: Get up and running quickly
649
+
650
+ ### Local Resources
651
+ - **[Master Tutorial Index](./examples/00_SCITEX_MASTER_INDEX.ipynb)**: Comprehensive guide to all features
652
+ - **[Examples Directory](./examples/)**: 25+ Jupyter notebooks covering all modules
653
+ - **[Module List](./docs/scitex_modules.csv)**: Complete list of all functions
654
+ - **(Experimental) [MCP Servers Documentation](./mcp_servers/README.md)**
655
+
656
+ ### Key Tutorials
657
+ 1. **[I/O Operations](./examples/01_scitex_io.ipynb)**: Essential file handling (start here!)
658
+ 2. **[Plotting](./examples/14_scitex_plt.ipynb)**: Publication-ready visualizations
659
+ 3. **[Statistics](./examples/11_scitex_stats.ipynb)**: Research-grade statistical analysis
660
+ 4. **[Scholar](./examples/16_scitex_scholar.ipynb)**: Literature management with impact factors
661
+ 5. **[AI/ML](./examples/16_scitex_ai.ipynb)**: Complete machine learning toolkit
662
+
663
+ ## 🤝 Contributing
664
+
665
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
666
+
667
+
668
+ ## 📄 License
669
+
670
+ This project is licensed under the MIT License.
671
+
672
+ ## 📧 Contact
673
+
674
+ Yusuke Watanabe (ywatanabe@scitex.ai)
675
+
676
+ <!-- EOF -->
677
+