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,22 @@
1
+ #!/usr/bin/env python3
2
+ """Scitex utils module."""
3
+
4
+ from ._check_params import check_params
5
+ from ._default_dataset import DefaultDataset
6
+ from ._format_samples_for_sktime import format_samples_for_sktime
7
+ from ._label_encoder import LabelEncoder
8
+ from ._merge_labels import merge_labels
9
+ from ._sliding_window_data_augmentation import sliding_window_data_augmentation
10
+ from ._under_sample import under_sample
11
+ from ._verify_n_gpus import verify_n_gpus
12
+
13
+ __all__ = [
14
+ "DefaultDataset",
15
+ "LabelEncoder",
16
+ "check_params",
17
+ "format_samples_for_sktime",
18
+ "merge_labels",
19
+ "sliding_window_data_augmentation",
20
+ "under_sample",
21
+ "verify_n_gpus",
22
+ ]
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env python3
2
+ # Time-stamp: "2024-02-17 12:38:40 (ywatanabe)"
3
+
4
+ from pprint import pprint as _pprint
5
+ from time import sleep
6
+
7
+ # def get_params(model, tgt_name=None, sleep_sec=2, show=False):
8
+
9
+ # name_shape_dict = {}
10
+ # for name, param in model.named_parameters():
11
+ # learnable = "Learnable" if param.requires_grad else "Freezed"
12
+
13
+ # if (tgt_name is not None) & (name == tgt_name):
14
+ # return param
15
+ # if tgt_name is None:
16
+ # # print(f"\n{param}\n{param.shape}\nname: {name}\n")
17
+ # if show is True:
18
+ # print(
19
+ # f"\n{param}: {param.shape}\nname: {name}\nStatus: {learnable}\n"
20
+ # )
21
+ # sleep(sleep_sec)
22
+ # name_shape_dict[name] = list(param.shape)
23
+
24
+ # if tgt_name is None:
25
+ # print()
26
+ # _pprint(name_shape_dict)
27
+ # print()
28
+
29
+
30
+ def check_params(model, tgt_name=None, show=False):
31
+
32
+ out_dict = {}
33
+
34
+ for name, param in model.named_parameters():
35
+ learnable = "Learnable" if param.requires_grad else "Freezed"
36
+
37
+ if tgt_name is None:
38
+ out_dict[name] = (param.shape, learnable)
39
+
40
+ elif (tgt_name is not None) & (name == tgt_name):
41
+ out_dict[name] = (param.shape, learnable)
42
+
43
+ elif (tgt_name is not None) & (name != tgt_name):
44
+ continue
45
+
46
+ if show:
47
+ for k, v in out_dict.items():
48
+ print(f"\n{k}\n{v}")
49
+
50
+ return out_dict
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env python3
2
+
3
+ from torch.utils.data import Dataset
4
+ import numpy as np
5
+
6
+
7
+ class DefaultDataset(Dataset):
8
+ """
9
+ Apply transform for the first element of arrs_list
10
+
11
+ Example:
12
+ n = 1024
13
+ n_chs = 19
14
+ X = np.random.rand(n, n_chs, 1000)
15
+ T = np.random.randint(0, 4, size=(n, 1))
16
+ S = np.random.randint(0, 999, size=(n, 1))
17
+ Sr = np.random.randint(0, 4, size=(n, 1))
18
+
19
+ arrs_list = [X, T, S, Sr]
20
+ transform = None
21
+ ds = _DefaultDataset(arrs_list, transform=transform)
22
+ len(ds) # 1024
23
+ """
24
+
25
+ def __init__(self, arrs_list, transform=None):
26
+ self.arrs_list = arrs_list
27
+ self.arrs = arrs_list # alias
28
+
29
+ assert np.all([len(arr) for arr in arrs_list])
30
+
31
+ self.length = len(arrs_list[0])
32
+ self.transform = transform
33
+
34
+ def __len__(self):
35
+ return self.length
36
+
37
+ def __getitem__(self, idx):
38
+ arrs_list_idx = [arr[idx] for arr in self.arrs_list]
39
+
40
+ # Here, you might want to transform, or apply DA on X as a numpy array
41
+ if self.transform:
42
+ dtype_orig = arrs_list_idx[0].dtype
43
+ arrs_list_idx[0] = self.transform(
44
+ arrs_list_idx[0].astype(np.float64)
45
+ ).astype(dtype_orig)
46
+ return arrs_list_idx
@@ -0,0 +1,26 @@
1
+ import pandas as pd
2
+ import torch
3
+ import numpy as np
4
+
5
+
6
+ def _format_a_sample_for_sktime(x):
7
+ """
8
+ x.shape: (n_chs, seq_len)
9
+ """
10
+ dims = pd.Series(
11
+ [pd.Series(x[d], name=f"dim_{d}") for d in range(len(x))],
12
+ index=[f"dim_{i}" for i in np.arange(len(x))],
13
+ )
14
+ return dims
15
+
16
+
17
+ def format_samples_for_sktime(X):
18
+ """
19
+ X.shape: (n_samples, n_chs, seq_len)
20
+ """
21
+ if torch.is_tensor(X):
22
+ X = X.numpy() # (64, 160, 1024)
23
+
24
+ X = X.astype(np.float64)
25
+
26
+ return pd.DataFrame([_format_a_sample_for_sktime(X[i]) for i in range(len(X))])
@@ -0,0 +1,134 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-03-02 09:52:28 (ywatanabe)"
4
+
5
+ from warnings import warn
6
+
7
+ import numpy as np
8
+ import pandas as pd
9
+ import torch
10
+ from sklearn.preprocessing import LabelEncoder as SklearnLabelEncoder
11
+
12
+
13
+ class LabelEncoder(SklearnLabelEncoder):
14
+ """
15
+ An extension of the sklearn.preprocessing.LabelEncoder that supports incremental learning.
16
+ This means it can handle new classes without forgetting the old ones.
17
+
18
+ Attributes:
19
+ classes_ (np.ndarray): Holds the label for each class.
20
+
21
+ Example usage:
22
+ encoder = IncrementalLabelEncoder()
23
+ encoder.fit(np.array(["apple", "banana"]))
24
+ encoded_labels = encoder.transform(["apple", "banana"]) # This will give you the encoded labels
25
+
26
+ encoder.fit(["cherry"]) # Incrementally add "cherry"
27
+ encoder.transform(["apple", "banana", "cherry"]) # Now it works, including "cherry"
28
+
29
+ # Now you can use inverse_transform with the encoded labels
30
+ print(encoder.classes_)
31
+ original_labels = encoder.inverse_transform(encoded_labels)
32
+ print(original_labels) # This should print ['apple', 'banana']
33
+ """
34
+
35
+ def __init__(self):
36
+ super().__init__()
37
+ self.classes_ = np.array([])
38
+
39
+ def _check_input(self, y):
40
+ """
41
+ Check and convert the input to a NumPy array if it is a list, tuple, pandas.Series, pandas.DataFrame, or torch.Tensor.
42
+
43
+ Arguments:
44
+ y (list, tuple, pd.Series, pd.DataFrame, torch.Tensor): The input labels.
45
+
46
+ Returns:
47
+ np.ndarray: The input labels converted to a NumPy array.
48
+ """
49
+ if isinstance(y, (list, tuple)):
50
+ y = np.array(y)
51
+ elif isinstance(y, pd.Series):
52
+ y = y.values
53
+ elif isinstance(y, torch.Tensor):
54
+ y = y.numpy()
55
+ return y
56
+
57
+ def fit(self, y):
58
+ """
59
+ Fit the label encoder with an array of labels, incrementally adding new classes.
60
+
61
+ Arguments:
62
+ y (list, tuple, np.ndarray, pd.Series, pd.DataFrame, torch.Tensor): The input labels.
63
+
64
+ Returns:
65
+ IncrementalLabelEncoder: The instance itself.
66
+ """
67
+ y = self._check_input(y)
68
+ new_unique_labels = np.unique(y)
69
+ unique_labels = np.unique(np.concatenate((self.classes_, new_unique_labels)))
70
+ self.classes_ = unique_labels
71
+ return self
72
+
73
+ def transform(self, y):
74
+ """
75
+ Transform labels to normalized encoding.
76
+
77
+ Arguments:
78
+ y (list, tuple, np.ndarray, pd.Series, pd.DataFrame, torch.Tensor): The input labels.
79
+
80
+ Returns:
81
+ np.ndarray: The encoded labels as a NumPy array.
82
+
83
+ Raises:
84
+ ValueError: If the input contains new labels that haven't been seen during `fit`.
85
+ """
86
+
87
+ y = self._check_input(y)
88
+ diff = set(y) - set(self.classes_)
89
+ if diff:
90
+ raise ValueError(f"y contains new labels: {diff}")
91
+ return super().transform(y)
92
+
93
+ def inverse_transform(self, y):
94
+ """
95
+ Transform labels back to original encoding.
96
+
97
+ Arguments:
98
+ y (np.ndarray): The encoded labels as a NumPy array.
99
+
100
+ Returns:
101
+ np.ndarray: The original labels as a NumPy array.
102
+ """
103
+
104
+ return super().inverse_transform(y)
105
+
106
+
107
+ # # Obsolete warning for future compatibility
108
+ # class LabelEncoder(IncrementalLabelEncoder):
109
+ # def __init__(self, *args, **kwargs):
110
+ # """
111
+ # Initialize the LabelEncoder with a deprecation warning.
112
+ # """
113
+ # warn(
114
+ # "LabelEncoder is now obsolete; use IncrementalLabelEncoder instead.",
115
+ # category=FutureWarning,
116
+ # )
117
+ # super().__init__(*args, **kwargs)
118
+
119
+
120
+ if __name__ == "__main__":
121
+ # Example usage of IncrementalLabelEncoder
122
+ le = LabelEncoder()
123
+ le.fit(["A", "B"])
124
+ print(le.classes_)
125
+
126
+ le.fit(["C"])
127
+ print(le.classes_)
128
+
129
+ le.inverse_transform([0, 1, 2])
130
+
131
+ le.fit(["X"])
132
+ print(le.classes_)
133
+
134
+ le.inverse_transform([3])
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import scitex
4
+ import numpy as np
5
+
6
+ # y1, y2 = T_tra, M_tra
7
+ # def merge_labels(y1, y2):
8
+ # y = [str(z1) + "-" + str(z2) for z1, z2 in zip(y1, y2)]
9
+ # conv_d = {z: i for i, z in enumerate(np.unique(y))}
10
+ # y = [conv_d[z] for z in y]
11
+ # return y
12
+
13
+
14
+ def merge_labels(*ys, to_int=False):
15
+ if not len(ys) > 1: # Check if more than two arguments are passed
16
+ return ys[0]
17
+ else:
18
+ y = [scitex.gen.connect_nums(zs) for zs in zip(*ys)]
19
+ if to_int:
20
+ conv_d = {z: i for i, z in enumerate(np.unique(y))}
21
+ y = [conv_d[z] for z in y]
22
+ return np.array(y)
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-01-24 13:56:36 (ywatanabe)"
4
+
5
+ import random
6
+
7
+
8
+ def sliding_window_data_augmentation(x, window_size_pts):
9
+ start = random.randint(0, x.shape[-1] - window_size_pts)
10
+ end = start + window_size_pts
11
+ return x[..., start:end]
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env python3
2
+
3
+
4
+ from collections import Counter
5
+
6
+ import numpy as np
7
+
8
+
9
+ def under_sample(y, replace=False):
10
+ """
11
+ Input:
12
+ Labels
13
+ Return:
14
+ Indices
15
+
16
+ Example:
17
+ t = ['a', 'b', 'c', 'b', 'c', 'a', 'c']
18
+ print(under_sample(t))
19
+ # [5 0 1 3 4 6]
20
+ print(under_sample(t))
21
+ # [5 0 1 3 6 2]
22
+ """
23
+
24
+ # find the minority and majority classes
25
+ class_counts = Counter(y)
26
+ # majority_class = max(class_counts, key=class_counts.get)
27
+ minority_class = min(class_counts, key=class_counts.get)
28
+
29
+ # compute the number of sample to draw from the majority class using
30
+ # a negative binomial distribution
31
+ n_minority_class = class_counts[minority_class]
32
+ n_majority_resampled = n_minority_class
33
+
34
+ # draw randomly with or without replacement
35
+ indices = np.hstack(
36
+ [
37
+ np.random.choice(
38
+ np.flatnonzero(y == k),
39
+ size=n_majority_resampled,
40
+ replace=replace,
41
+ )
42
+ for k in class_counts.keys()
43
+ ]
44
+ )
45
+
46
+ return indices
47
+
48
+
49
+ if __name__ == "__main__":
50
+ t = np.array(["a", "b", "c", "b", "c", "a", "c"])
51
+ print(under_sample(t))
@@ -0,0 +1,16 @@
1
+ import torch
2
+ import warnings
3
+
4
+
5
+ def verify_n_gpus(n_gpus):
6
+ if torch.cuda.device_count() < n_gpus:
7
+ warnings.warn(
8
+ f"N_GPUS ({n_gpus}) is larger "
9
+ f"than n_gpus torch can acesses (= {torch.cuda.device_count()})"
10
+ f"Please check $CUDA_VISIBLE_DEVICES and your setting in this script.",
11
+ UserWarning,
12
+ )
13
+ return torch.cuda.device_count()
14
+
15
+ else:
16
+ return n_gpus
@@ -0,0 +1,148 @@
1
+ #!./env/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-04-22 23:54:02"
4
+ # Author: Yusuke Watanabe (ywatanabe@scitex.ai)
5
+
6
+ """
7
+ This script defines scitex.ml.utils.grid_search
8
+ """
9
+
10
+ # Imports
11
+ import itertools as _itertools
12
+ import random as _random
13
+ import sys as _sys
14
+
15
+ import matplotlib.pyplot as _plt
16
+ import scitex as _scitex
17
+
18
+
19
+ # Functions
20
+ def yield_grids(params_grid: dict, random=False):
21
+ """
22
+ Generator function that yields combinations of parameters from a grid.
23
+
24
+ Args:
25
+ params_grid (dict): A dictionary where keys are parameter names and values are lists of parameter values.
26
+ random (bool): If True, yields the parameter combinations in random order.
27
+
28
+ Yields:
29
+ dict: A dictionary of parameters for one set of conditions from the grid.
30
+
31
+ Example:
32
+ # Parameters
33
+ params_grid = {
34
+ "batch_size": [2**i for i in range(7)],
35
+ "n_chs": [2**i for i in range(7)],
36
+ "seq_len": [2**i for i in range(15)],
37
+ "fs": [2**i for i in range(8, 11)],
38
+ "n_segments": [2**i for i in range(6)],
39
+ "n_bands_pha": [2**i for i in range(7)],
40
+ "n_bands_amp": [2**i for i in range(7)],
41
+ "precision": ['fp16', 'fp32'],
42
+ "device": ['cpu', 'cuda'],
43
+ "package": ['tensorpac', 'scitex'],
44
+ }
45
+
46
+ # Example of using the generator
47
+ for param_dict in yield_grids(params_grid, random=True):
48
+ print(param_dict)
49
+ """
50
+ combinations = list(_itertools.product(*params_grid.values()))
51
+ if random:
52
+ _random.shuffle(combinations) # [REVISED]
53
+ for values in combinations:
54
+ yield dict(zip(params_grid.keys(), values))
55
+
56
+
57
+ # def yield_grids(params_grid: dict, random=False):
58
+ # """
59
+ # Generator function that yields combinations of parameters from a grid.
60
+
61
+ # Args:
62
+ # params_grid (dict): A dictionary where keys are parameter names and values are lists of parameter values.
63
+
64
+ # Yields:
65
+ # dict: A dictionary of parameters for one set of conditions from the grid.
66
+
67
+ # Example:
68
+ # # Parameters
69
+ # params_grid = {
70
+ # "batch_size": [2**i for i in range(7)],
71
+ # "n_chs": [2**i for i in range(7)],
72
+ # "seq_len": [2**i for i in range(15)],
73
+ # "fs": [2**i for i in range(8, 11)],
74
+ # "n_segments": [2**i for i in range(6)],
75
+ # "n_bands_pha": [2**i for i in range(7)],
76
+ # "n_bands_amp": [2**i for i in range(7)],
77
+ # "precision": ['fp16', 'fp32'],
78
+ # "device": ['cpu', 'cuda'],
79
+ # "package": ['tensorpac', 'scitex'],
80
+ # }
81
+
82
+ # # Example of using the generator
83
+ # for param_dict in yield_grids(params_grid):
84
+ # print(param_dict)
85
+ # """
86
+ # print(f"\nThe Number of Combinations: {count_grids(params_grid):,}")
87
+
88
+ # for values in _itertools.product(*params_grid.values()):
89
+ # yield dict(zip(params_grid.keys(), values))
90
+
91
+
92
+ def count_grids(params_grid):
93
+ """
94
+ Calculate the total number of combinations possible from the given parameter grid.
95
+
96
+ Args:
97
+ params_grid (dict): A dictionary where keys are parameter names and values are lists of parameter values.
98
+
99
+ Returns:
100
+ int: The total number of combinations that can be generated from the parameter grid.
101
+ """
102
+ # Get the number of values for each parameter and multiply them
103
+ num_combinations = 1
104
+ for values in params_grid.values():
105
+ num_combinations *= len(values)
106
+ return num_combinations
107
+
108
+
109
+ if __name__ == "__main__":
110
+ import pandas as pd
111
+
112
+ # Start
113
+ CONFIG, _sys.stdout, _sys.stderr, _plt, CC = _scitex.session.start(
114
+ _sys, _plt, verbose=False
115
+ )
116
+
117
+ # Parameters
118
+ N = 15
119
+ print(pd.DataFrame(pd.Series({f"2^{ii}": 2**ii for ii in range(N)})))
120
+
121
+ params_grid = {
122
+ "batch_size": [2**i for i in [3, 4, 5, 6]],
123
+ "n_chs": [2**i for i in [3, 4, 5, 6]],
124
+ "seq_len": [2**i for i in range(8, 13)],
125
+ "fs": [2**i for i in range(7, 10)],
126
+ "n_segments": [2**i for i in range(5)],
127
+ "n_bands_pha": [2**i for i in range(7)],
128
+ "n_bands_amp": [2**i for i in range(7)],
129
+ "precision": ["fp16", "fp32"],
130
+ "device": ["cpu", "cuda"],
131
+ "package": ["tensorpac", "_scitex"],
132
+ }
133
+
134
+ print(params_grid)
135
+ print(f"{count_grids(params_grid):,}")
136
+
137
+ # Example of using the generator
138
+ for param_dict in yield_grids(params_grid):
139
+ print(param_dict)
140
+
141
+ # Close
142
+ _scitex.session.close(CONFIG, verbose=False, notify=False)
143
+
144
+ # EOF
145
+
146
+ """
147
+ /home/ywatanabe/proj/entrance/_scitex/ml/utils/grid_search.py
148
+ """
scitex/nn/_BNet.py CHANGED
@@ -6,15 +6,21 @@ import torch
6
6
  import torch.nn as nn
7
7
  import torch.nn.functional as F
8
8
  from torchsummary import summary
9
- import scitex
10
9
  import numpy as np
11
- import scitex
10
+
11
+ # Import specific nn modules to avoid circular imports
12
+ from ._SpatialAttention import SpatialAttention
13
+ from ._SwapChannels import SwapChannels
14
+ from ._DropoutChannels import DropoutChannels
15
+ from ._FreqGainChanger import FreqGainChanger
16
+ from ._ChannelGainChanger import ChannelGainChanger
17
+ from ._MNet_1000 import MNet_1000
12
18
 
13
19
 
14
20
  class BHead(nn.Module):
15
21
  def __init__(self, n_chs_in, n_chs_out):
16
22
  super().__init__()
17
- self.sa = scitex.nn.SpatialAttention(n_chs_in)
23
+ self.sa = SpatialAttention(n_chs_in)
18
24
  self.conv11 = nn.Conv1d(
19
25
  in_channels=n_chs_in, out_channels=n_chs_out, kernel_size=1
20
26
  )
@@ -31,9 +37,9 @@ class BNet(nn.Module):
31
37
  self.dummy_param = nn.Parameter(torch.empty(0))
32
38
  N_VIRTUAL_CHS = 32
33
39
 
34
- self.sc = scitex.nn.SwapChannels()
35
- self.dc = scitex.nn.DropoutChannels(dropout=0.01)
36
- self.fgc = scitex.nn.FreqGainChanger(
40
+ self.sc = SwapChannels()
41
+ self.dc = DropoutChannels(dropout=0.01)
42
+ self.fgc = FreqGainChanger(
37
43
  BNet_config["n_bands"], BNet_config["SAMP_RATE"]
38
44
  )
39
45
  self.heads = nn.ModuleList(
@@ -43,11 +49,11 @@ class BNet(nn.Module):
43
49
  ]
44
50
  )
45
51
 
46
- self.cgcs = [scitex.nn.ChannelGainChanger(n_ch) for n_ch in BNet_config["n_chs"]]
47
- # self.cgc = scitex.nn.ChannelGainChanger(N_VIRTUAL_CHS)
52
+ self.cgcs = [ChannelGainChanger(n_ch) for n_ch in BNet_config["n_chs"]]
53
+ # self.cgc = ChannelGainChanger(N_VIRTUAL_CHS)
48
54
 
49
55
  MNet_config["n_chs"] = N_VIRTUAL_CHS # BNet_config["n_chs"] # override
50
- self.MNet = scitex.nn.MNet_1000(MNet_config)
56
+ self.MNet = MNet_1000(MNet_config)
51
57
 
52
58
  self.fcs = nn.ModuleList(
53
59
  [
scitex/nn/_Filters.py CHANGED
@@ -411,7 +411,7 @@ if __name__ == "__main__":
411
411
  import scitex
412
412
 
413
413
  # Start
414
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, fig_scale=5)
414
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, fig_scale=5)
415
415
 
416
416
  xx, tt, fs = scitex.dsp.demo_sig(sig_type="chirp", fs=1024)
417
417
  xx = torch.tensor(xx).cuda()
@@ -480,7 +480,7 @@ if __name__ == "__main__":
480
480
  # plt.show()
481
481
 
482
482
  # Close
483
- scitex.gen.close(CONFIG)
483
+ scitex.session.close(CONFIG)
484
484
 
485
485
  """
486
486
  /home/ywatanabe/proj/entrance/scitex/dsp/nn/_Filters.py
@@ -170,7 +170,7 @@ if __name__ == "__main__":
170
170
  import scitex
171
171
 
172
172
  # Start
173
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, fig_scale=3)
173
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, fig_scale=3)
174
174
 
175
175
  # Parameters
176
176
  FS = 512
@@ -209,7 +209,7 @@ if __name__ == "__main__":
209
209
  scitex.io.save(fig, CONFIG["SDIR"] + "modulation_index.png") # plt.show()
210
210
 
211
211
  # Close
212
- scitex.gen.close(CONFIG)
212
+ scitex.session.close(CONFIG)
213
213
 
214
214
  # EOF
215
215
 
scitex/nn/_PAC.py CHANGED
@@ -302,7 +302,7 @@ class PAC(nn.Module):
302
302
 
303
303
  if __name__ == "__main__":
304
304
  # Start
305
- CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
305
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt)
306
306
 
307
307
  ts = scitex.gen.TimeStamper()
308
308
 
scitex/nn/_Spectrogram.py CHANGED
@@ -5,6 +5,9 @@
5
5
  import torch
6
6
  import torch.nn as nn
7
7
  import torch.nn.functional as F
8
+ import numpy as np
9
+ import matplotlib.pyplot as plt
10
+ import scitex
8
11
  from ..decorators import numpy_fn, torch_fn
9
12
 
10
13
 
@@ -103,9 +106,15 @@ def normalize(x, axis=-1, amp=1.0, cuda=False):
103
106
 
104
107
  @torch_fn
105
108
  def spectrograms(x, fs, dj=0.125, cuda=False):
106
- from wavelets_pytorch.transform import (
107
- WaveletTransformTorch,
108
- ) # PyTorch version
109
+ try:
110
+ from wavelets_pytorch.transform import (
111
+ WaveletTransformTorch,
112
+ ) # PyTorch version
113
+ except ImportError:
114
+ raise ImportError(
115
+ "The spectrograms function requires the wavelets-pytorch package. "
116
+ "Install it with: pip install wavelets-pytorch"
117
+ )
109
118
 
110
119
  dt = 1 / fs
111
120
  # dj = 0.125