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,446 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-08-22 22:03:48 (ywatanabe)"
4
+ # File: /home/ywatanabe/proj/SciTeX-Code/src/scitex/dict/_DotDict.py
5
+ # ----------------------------------------
6
+ from __future__ import annotations
7
+ import os
8
+ __FILE__ = __file__
9
+ __DIR__ = os.path.dirname(__FILE__)
10
+ # ----------------------------------------
11
+
12
+ import json
13
+
14
+
15
+ class DotDict:
16
+ """
17
+ A dictionary-like object that allows attribute-like access (for valid identifier keys)
18
+ and standard item access for all keys (including integers, etc.).
19
+ """
20
+
21
+ def __init__(self, dictionary=None):
22
+ # Use a private attribute to store the actual data
23
+ # Avoids conflicts with keys named like standard methods ('keys', 'items', etc.)
24
+ super().__setattr__("_data", {})
25
+ if dictionary is not None:
26
+ if isinstance(dictionary, DotDict):
27
+ dictionary = dictionary._data
28
+ elif not isinstance(dictionary, dict):
29
+ raise TypeError("Input must be a dictionary.")
30
+
31
+ for key, value in dictionary.items():
32
+ if isinstance(value, dict) and not isinstance(value, DotDict):
33
+ value = DotDict(value)
34
+ self[key] = value
35
+
36
+ # --- Attribute Access (for valid identifiers) ---
37
+
38
+ def __getattr__(self, key):
39
+ # Called for obj.key when key is not found by normal attribute lookup
40
+ # Allow access to internal methods/attributes starting with '_'
41
+ if key.startswith("_"):
42
+ return super().__getattribute__(
43
+ key
44
+ ) # Use superclass method for internal attrs
45
+ try:
46
+ return self._data[key]
47
+ except KeyError:
48
+ # Mimic standard attribute access behavior
49
+ raise AttributeError(
50
+ f"'{type(self).__name__}' object has no attribute '{key}'"
51
+ )
52
+
53
+ def __setattr__(self, key, value):
54
+ # Called for obj.key = value
55
+ # Protect internal attributes
56
+ if key == "_data" or key.startswith("_"):
57
+ super().__setattr__(key, value)
58
+ else:
59
+ if isinstance(value, dict) and not isinstance(value, DotDict):
60
+ value = DotDict(value)
61
+ self._data[key] = value
62
+
63
+ def __delattr__(self, key):
64
+ # Called for del obj.key
65
+ if key.startswith("_"):
66
+ super().__delattr__(key)
67
+ else:
68
+ try:
69
+ del self._data[key]
70
+ except KeyError:
71
+ raise AttributeError(
72
+ f"'{type(self).__name__}' object has no attribute '{key}'"
73
+ )
74
+
75
+ # --- Item Access (for any key type) ---
76
+
77
+ def __getitem__(self, key):
78
+ # Called for obj[key]
79
+ return self._data[key] # Raises KeyError if not found
80
+
81
+ def __setitem__(self, key, value):
82
+ # Called for obj[key] = value
83
+ if isinstance(value, dict) and not isinstance(value, DotDict):
84
+ value = DotDict(value)
85
+ self._data[key] = value
86
+
87
+ def __delitem__(self, key):
88
+ # Called for del obj[key]
89
+ del self._data[key] # Raises KeyError if not found
90
+
91
+ # --- Standard Dictionary Methods (operating on _data) ---
92
+
93
+ def get(self, key, default=None):
94
+ # Use _data's get method
95
+ return self._data.get(key, default)
96
+
97
+ def to_dict(self):
98
+ """
99
+ Recursively converts DotDict and nested DotDict objects back to ordinary dictionaries.
100
+ """
101
+ result = {}
102
+ for key, value in self._data.items():
103
+ if isinstance(value, DotDict):
104
+ value = value.to_dict()
105
+ result[key] = value
106
+ return result
107
+
108
+ def __str__(self):
109
+ """
110
+ Returns a string representation, handling non-JSON-serializable objects.
111
+ """
112
+
113
+ def default_handler(obj):
114
+ # Handle DotDict specifically during serialization if needed,
115
+ # otherwise represent non-serializable items as strings.
116
+ if isinstance(obj, DotDict):
117
+ return obj.to_dict()
118
+ try:
119
+ # Attempt standard JSON serialization first
120
+ json.dumps(obj)
121
+ return obj # Let json.dumps handle it if possible
122
+ except (TypeError, OverflowError):
123
+ return str(obj) # Fallback for non-serializable types
124
+
125
+ try:
126
+ # Use the internal _data for representation
127
+ return json.dumps(
128
+ self.to_dict(), indent=4, default=default_handler
129
+ )
130
+ except TypeError as e:
131
+ # Fallback if default_handler still fails (e.g., complex recursion)
132
+ return f"<DotDict object at {hex(id(self))}, contains: {list(self._data.keys())}> Error: {e}"
133
+
134
+ def __repr__(self):
135
+ """
136
+ Returns a string representation suitable for debugging.
137
+ Shows the class name and the internal data representation.
138
+ """
139
+ # Use repr of the internal data for clarity
140
+ return f"{type(self).__name__}({repr(self._data)})"
141
+
142
+ def __len__(self):
143
+ """
144
+ Returns the number of key-value pairs in the dictionary.
145
+ """
146
+ return len(self._data)
147
+
148
+ def keys(self):
149
+ """
150
+ Returns a view object displaying a list of all the keys.
151
+ """
152
+ return self._data.keys()
153
+
154
+ def values(self):
155
+ """
156
+ Returns a view object displaying a list of all the values.
157
+ """
158
+ return self._data.values()
159
+
160
+ def items(self):
161
+ """
162
+ Returns a view object displaying a list of all the items (key, value pairs).
163
+ """
164
+ return self._data.items()
165
+
166
+ def update(self, dictionary):
167
+ """
168
+ Updates the dictionary with the key-value pairs from another dictionary or iterable.
169
+ """
170
+ if isinstance(dictionary, dict):
171
+ iterator = dictionary.items()
172
+ # Allow updating from iterables of key-value pairs
173
+ elif hasattr(dictionary, "__iter__"):
174
+ iterator = dictionary
175
+ else:
176
+ raise TypeError(
177
+ "Input must be a dictionary or an iterable of key-value pairs."
178
+ )
179
+
180
+ for key, value in iterator:
181
+ # Use __setitem__ to handle potential DotDict conversion
182
+ self[key] = value
183
+
184
+ def setdefault(self, key, default=None):
185
+ """
186
+ Returns the value of the given key. If the key does not exist, insert the key
187
+ with the specified default value and return the default value.
188
+ """
189
+ if key not in self._data:
190
+ # Use __setitem__ for potential DotDict conversion of default
191
+ self[key] = default
192
+ return default
193
+ else:
194
+ return self._data[key]
195
+
196
+ def pop(self, key, *args):
197
+ """
198
+ Removes the specified key and returns the corresponding value.
199
+ If key is not found, default is returned if given, otherwise KeyError is raised.
200
+ Accepts optional default value like dict.pop.
201
+ """
202
+ # Mimic dict.pop behavior with optional default
203
+ if len(args) > 1:
204
+ raise TypeError(
205
+ f"pop expected at most 2 arguments, got {1 + len(args)}"
206
+ )
207
+ if key not in self._data:
208
+ if args:
209
+ return args[0] # Return default if provided
210
+ else:
211
+ raise KeyError(key)
212
+ return self._data.pop(key) # Use internal dict's pop
213
+
214
+ def __contains__(self, key):
215
+ """
216
+ Checks if the dotdict contains the specified key.
217
+ """
218
+ return key in self._data
219
+
220
+ def __iter__(self):
221
+ """
222
+ Returns an iterator over the keys of the dictionary.
223
+ """
224
+ return iter(self._data)
225
+
226
+ def copy(self):
227
+ """
228
+ Creates a shallow copy of the DotDict object.
229
+ Nested DotDicts/dicts/lists will be references, not copies.
230
+ Use deepcopy for a fully independent copy.
231
+ """
232
+ # Create a new instance using a copy of the internal data
233
+ return DotDict(self._data.copy()) # Shallow copy of internal dict
234
+
235
+ def __dir__(self):
236
+ """
237
+ Provides attribute suggestions for dir() and tab completion.
238
+ Includes both standard methods/attributes and the keys stored in _data.
239
+ """
240
+ # Get standard attributes/methods from the object's structure
241
+ standard_attrs = set(super().__dir__())
242
+
243
+ # Get the keys from the internal data dictionary
244
+ # Filter for keys that are valid identifiers for attribute access
245
+ data_keys = set(
246
+ key
247
+ for key in self._data.keys()
248
+ if isinstance(key, str) and key.isidentifier()
249
+ )
250
+
251
+ # Return a sorted list of the combined unique names
252
+ return sorted(list(standard_attrs.union(data_keys)))
253
+
254
+
255
+ # Example Usage:
256
+ if __name__ == "__main__":
257
+ data = {
258
+ "name": "example",
259
+ "version": 1,
260
+ 100: "integer key",
261
+ "nested": {"value1": True, 200: False},
262
+ "list_val": [1, {"a": 2}],
263
+ "invalid-key": "hyphenated",
264
+ }
265
+
266
+ dd = DotDict(data)
267
+
268
+ # Access via attribute (for valid identifiers)
269
+ print(f"dd.name: {dd.name}")
270
+ print(f"dd.version: {dd.version}")
271
+ print(f"dd.nested.value1: {dd.nested.value1}")
272
+ # print(dd.100) # This would be a SyntaxError, as expected
273
+
274
+ # Access via item (for any key)
275
+ print(f"dd[100]: {dd[100]}")
276
+ print(f"dd['nested'][200]: {dd['nested'][200]}")
277
+ print(f"dd['invalid-key']: {dd['invalid-key']}")
278
+
279
+ # Modify values
280
+ dd.name = "updated example"
281
+ dd[100] = "new integer value"
282
+ dd.nested[200] = "updated nested int key"
283
+ dd[300] = "new top-level int key" # Add new int key
284
+ dd["new-key"] = "another invalid id key"
285
+
286
+ print("\n--- After Modifications ---")
287
+ print(f"dd.name: {dd.name}")
288
+ print(f"dd[100]: {dd[100]}")
289
+ print(f"dd.nested[200]: {dd.nested[200]}")
290
+ print(f"dd[300]: {dd[300]}")
291
+ print(f"dd['new-key']: {dd['new-key']}")
292
+
293
+ print("\n--- Representation ---")
294
+ print(f"repr(dd): {repr(dd)}")
295
+
296
+ print("\n--- String (JSON) Representation ---")
297
+ print(f"str(dd):\n{str(dd)}")
298
+
299
+ print("\n--- Convert back to dict ---")
300
+ plain_dict = dd.to_dict()
301
+ print(f"plain_dict: {plain_dict}")
302
+ print(f"plain_dict[100]: {plain_dict[100]}")
303
+ print(f"plain_dict['nested'][200]: {plain_dict['nested'][200]}")
304
+
305
+ print("\n--- Iteration ---")
306
+ for k in dd:
307
+ print(f"Key: {k}, Value: {dd[k]}")
308
+
309
+ print("\n--- Contains ---")
310
+ print(f"100 in dd: {100 in dd}")
311
+ print(f"'name' in dd: {'name' in dd}")
312
+ print(f"999 in dd: {999 in dd}")
313
+
314
+ print("\n--- Copy ---")
315
+ dd_copy = dd.copy()
316
+ dd_copy[100] = "value in copy"
317
+ dd_copy.name = "name in copy"
318
+ print(f"Original dd[100]: {dd[100]}")
319
+ print(f"Copy dd_copy[100]: {dd_copy[100]}")
320
+ print(f"Original dd.name: {dd.name}")
321
+ print(f"Copy dd_copy.name: {dd_copy.name}")
322
+
323
+ # class DotDict:
324
+ # """
325
+ # A dictionary subclass that allows attribute-like access to keys.
326
+ # """
327
+
328
+ # def __init__(self, dictionary):
329
+ # for key, value in dictionary.items():
330
+ # if isinstance(value, dict):
331
+ # value = DotDict(value)
332
+ # setattr(self, key, value)
333
+
334
+ # def __getitem__(self, key):
335
+ # return getattr(self, key)
336
+
337
+ # def __setitem__(self, key, value):
338
+ # setattr(self, key, value)
339
+
340
+ # def get(self, key, default=None):
341
+ # return getattr(self, key, default)
342
+
343
+ # def to_dict(self):
344
+ # """
345
+ # Recursively converts DotDict and nested DotDict objects back to ordinary dictionaries.
346
+ # """
347
+ # result = {}
348
+ # for key, value in self.__dict__.items():
349
+ # if isinstance(value, DotDict):
350
+ # value = value.to_dict()
351
+ # result[key] = value
352
+ # return result
353
+
354
+ # # def __str__(self):
355
+ # # """
356
+ # # Returns a string representation of the dotdict by converting it to a dictionary and pretty-printing it.
357
+ # # """
358
+ # # return json.dumps(self.to_dict(), indent=4)
359
+
360
+ # def __str__(self):
361
+ # """
362
+ # Returns a string representation, handling non-JSON-serializable objects.
363
+ # """
364
+ # def default_handler(obj):
365
+ # return str(obj)
366
+
367
+ # return json.dumps(self.to_dict(), indent=4, default=default_handler)
368
+
369
+ # def __repr__(self):
370
+ # """
371
+ # Returns a string representation of the dotdict for debugging and development.
372
+ # """
373
+ # return self.__str__()
374
+
375
+ # def __len__(self):
376
+ # """
377
+ # Returns the number of key-value pairs in the dictionary.
378
+ # """
379
+ # return len(self.__dict__)
380
+
381
+ # def keys(self):
382
+ # """
383
+ # Returns a view object displaying a list of all the keys in the dictionary.
384
+ # """
385
+ # return self.__dict__.keys()
386
+
387
+ # def values(self):
388
+ # """
389
+ # Returns a view object displaying a list of all the values in the dictionary.
390
+ # """
391
+ # return self.__dict__.values()
392
+
393
+ # def items(self):
394
+ # """
395
+ # Returns a view object displaying a list of all the items (key, value pairs) in the dictionary.
396
+ # """
397
+ # return self.__dict__.items()
398
+
399
+ # def update(self, dictionary):
400
+ # """
401
+ # Updates the dictionary with the key-value pairs from another dictionary.
402
+ # """
403
+ # for key, value in dictionary.items():
404
+ # if isinstance(value, dict):
405
+ # value = DotDict(value)
406
+ # setattr(self, key, value)
407
+
408
+ # def setdefault(self, key, default=None):
409
+ # """
410
+ # Returns the value of the given key. If the key does not exist, insert the key with the specified default value.
411
+ # """
412
+ # if key not in self.__dict__:
413
+ # self[key] = default
414
+ # return self[key]
415
+
416
+ # def pop(self, key, default=None):
417
+ # """
418
+ # Removes the specified key and returns the corresponding value.
419
+ # """
420
+ # return self.__dict__.pop(key, default)
421
+
422
+ # def __contains__(self, key):
423
+ # """
424
+ # Checks if the dotdict contains the specified key.
425
+ # """
426
+ # return key in self.__dict__
427
+
428
+ # def __iter__(self):
429
+ # """
430
+ # Returns an iterator over the keys of the dictionary.
431
+ # """
432
+ # return iter(self.__dict__)
433
+
434
+ # def copy(self):
435
+ # """
436
+ # Creates a deep copy of the DotDict object.
437
+ # """
438
+ # return DotDict(self.to_dict().copy())
439
+
440
+ # def __delitem__(self, key):
441
+ # """
442
+ # Deletes the specified key from the dictionary.
443
+ # """
444
+ # delattr(self, key)
445
+
446
+ # EOF
scitex/dict/__init__.py CHANGED
@@ -7,6 +7,7 @@ from ._pop_keys import pop_keys
7
7
  from ._replace import replace
8
8
  from ._safe_merge import safe_merge
9
9
  from ._to_str import to_str
10
+ from ._flatten import flatten
10
11
 
11
12
  __all__ = [
12
13
  "DotDict",
@@ -15,4 +16,5 @@ __all__ = [
15
16
  "replace",
16
17
  "safe_merge",
17
18
  "to_str",
19
+ "flatten",
18
20
  ]
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-10-07 21:42:24 (ywatanabe)"
4
+ # File: /home/ywatanabe/proj/scitex_repo/src/scitex/dict/_flatten.py
5
+ # ----------------------------------------
6
+ from __future__ import annotations
7
+ import os
8
+ __FILE__ = (
9
+ "./src/scitex/dict/_flatten.py"
10
+ )
11
+ __DIR__ = os.path.dirname(__FILE__)
12
+ # ----------------------------------------
13
+
14
+ def flatten(nested_dict, parent_key="", sep="_"):
15
+ items = []
16
+ for key, value in nested_dict.items():
17
+ new_key = f"{parent_key}{sep}{key}" if parent_key else key
18
+ if isinstance(value, dict):
19
+ items.extend(flatten(value, new_key, sep=sep).items())
20
+ elif isinstance(value, (list, tuple)):
21
+ for idx, item in enumerate(value):
22
+ items.append((f"{new_key}_{idx}", item))
23
+ else:
24
+ items.append((new_key, value))
25
+ return dict(items)
26
+
27
+ # EOF
scitex/dsp/_crop.py CHANGED
@@ -115,8 +115,8 @@ if __name__ == "__main__":
115
115
  # parser.add_argument('--flag', '-f', action='store_true', default=False, help='')
116
116
  # args = parser.parse_args()
117
117
  # Main
118
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, verbose=False)
118
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, verbose=False)
119
119
  main()
120
- scitex.gen.close(CONFIG, verbose=False, notify=False)
120
+ scitex.session.close(CONFIG, verbose=False, notify=False)
121
121
 
122
122
  # EOF
scitex/dsp/_demo_sig.py CHANGED
@@ -291,7 +291,7 @@ if __name__ == "__main__":
291
291
  import scitex
292
292
 
293
293
  # Start
294
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
294
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
295
295
  import scitex
296
296
 
297
297
  SIG_TYPES = [
@@ -320,7 +320,7 @@ if __name__ == "__main__":
320
320
  scitex.io.save(fig, "traces.png")
321
321
 
322
322
  # Close
323
- scitex.gen.close(CONFIG)
323
+ scitex.session.close(CONFIG)
324
324
 
325
325
  # EOF
326
326
 
@@ -205,8 +205,8 @@ if __name__ == "__main__":
205
205
  # parser.add_argument('--flag', '-f', action='store_true', default=False, help='')
206
206
  # args = parser.parse_args()
207
207
  # Main
208
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, verbose=False)
208
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, verbose=False)
209
209
  main()
210
- scitex.gen.close(CONFIG, verbose=False, notify=False)
210
+ scitex.session.close(CONFIG, verbose=False, notify=False)
211
211
 
212
212
  # EOF
scitex/dsp/_hilbert.py CHANGED
@@ -29,7 +29,7 @@ if __name__ == "__main__":
29
29
  import scitex
30
30
 
31
31
  # Start
32
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
32
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
33
33
 
34
34
  # Parameters
35
35
  T_SEC = 1.0
@@ -66,7 +66,7 @@ if __name__ == "__main__":
66
66
  scitex.io.save(fig, "traces.png")
67
67
 
68
68
  # Close
69
- scitex.gen.close(CONFIG)
69
+ scitex.session.close(CONFIG)
70
70
 
71
71
  # EOF
72
72
 
scitex/dsp/_listen.py CHANGED
@@ -47,7 +47,7 @@ def list_and_select_device() -> int:
47
47
  if __name__ == "__main__":
48
48
  import scitex
49
49
 
50
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
50
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
51
51
 
52
52
  signal, time_points, sampling_freq = scitex.dsp.demo_sig("chirp")
53
53
 
@@ -56,7 +56,7 @@ if __name__ == "__main__":
56
56
 
57
57
  listen(signal, sampling_freq)
58
58
 
59
- scitex.gen.close(CONFIG)
59
+ scitex.session.close(CONFIG)
60
60
 
61
61
  # def play_audio(
62
62
  # samples: np.ndarray, fs: int = 44100, channels: int = 1
@@ -471,7 +471,7 @@ if __name__ == "__main__":
471
471
  # # # if __name__ == "__main__":
472
472
  # # # import scitex
473
473
 
474
- # # # CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
474
+ # # # CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
475
475
 
476
476
  # # # # Generate a test signal if demo_sig fails
477
477
  # # # try:
@@ -503,7 +503,7 @@ if __name__ == "__main__":
503
503
  # # # except Exception as err:
504
504
  # # # print(f"Failed to play {method} sonification: {err}")
505
505
 
506
- # # # scitex.gen.close(CONFIG)
506
+ # # # scitex.session.close(CONFIG)
507
507
 
508
508
  # # # # EOF
509
509
 
@@ -680,7 +680,7 @@ if __name__ == "__main__":
680
680
  # # # # if __name__ == "__main__":
681
681
  # # # # import scitex
682
682
 
683
- # # # # CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
683
+ # # # # CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
684
684
 
685
685
  # # # # signal, time_points, sampling_freq = scitex.dsp.demo_sig("chirp")
686
686
 
@@ -689,7 +689,7 @@ if __name__ == "__main__":
689
689
 
690
690
  # # # # listen(signal, sampling_freq)
691
691
 
692
- # # # # scitex.gen.close(CONFIG)
692
+ # # # # scitex.session.close(CONFIG)
693
693
 
694
694
  # # # #
695
695
 
@@ -35,7 +35,7 @@ if __name__ == "__main__":
35
35
  import scitex
36
36
 
37
37
  # Start
38
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, fig_scale=3)
38
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, fig_scale=3)
39
39
 
40
40
  # Parameters
41
41
  FS = 512
@@ -68,7 +68,7 @@ if __name__ == "__main__":
68
68
  scitex.io.save(fig, "modulation_index.png")
69
69
 
70
70
  # Close
71
- scitex.gen.close(CONFIG)
71
+ scitex.session.close(CONFIG)
72
72
 
73
73
  # EOF
74
74
 
scitex/dsp/_pac.py CHANGED
@@ -110,7 +110,7 @@ if __name__ == "__main__":
110
110
  import scitex
111
111
 
112
112
  # Start
113
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
113
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
114
114
 
115
115
  pac, freqs_pha, freqs_amp = scitex.dsp.pac(
116
116
  np.random.rand(1, 16, 24000),
scitex/dsp/_psd.py CHANGED
@@ -64,7 +64,7 @@ if __name__ == "__main__":
64
64
  import matplotlib.pyplot as plt
65
65
 
66
66
  # Start
67
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
67
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
68
68
 
69
69
  # Parameters
70
70
  SIG_TYPE = "chirp"
@@ -91,7 +91,7 @@ if __name__ == "__main__":
91
91
  scitex.io.save(fig, "psd.png")
92
92
 
93
93
  # Close
94
- scitex.gen.close(CONFIG)
94
+ scitex.session.close(CONFIG)
95
95
 
96
96
  # EOF
97
97
 
scitex/dsp/_resample.py CHANGED
@@ -6,6 +6,7 @@
6
6
  import torch
7
7
  import torchaudio.transforms as T
8
8
  from ..decorators import signal_fn
9
+ import scitex
9
10
 
10
11
 
11
12
  @signal_fn
@@ -24,7 +25,7 @@ if __name__ == "__main__":
24
25
  import matplotlib.pyplot as plt
25
26
 
26
27
  # Start
27
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
28
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
28
29
 
29
30
  # Parameters
30
31
  T_SEC = 1
scitex/dsp/_time.py CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
 
7
7
  import numpy as np
8
+ import scitex
8
9
 
9
10
 
10
11
  def time(start_sec, end_sec, fs):
@@ -29,8 +30,8 @@ if __name__ == "__main__":
29
30
  # parser.add_argument('--flag', '-f', action='store_true', default=False, help='')
30
31
  # args = parser.parse_args()
31
32
  # Main
32
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, verbose=False)
33
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, verbose=False)
33
34
  main()
34
- scitex.gen.close(CONFIG, verbose=False, notify=False)
35
+ scitex.session.close(CONFIG, verbose=False, notify=False)
35
36
 
36
37
  # EOF