scitex 2.0.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 (572) hide show
  1. scitex/__init__.py +73 -0
  2. scitex/__main__.py +89 -0
  3. scitex/__version__.py +14 -0
  4. scitex/_sh.py +59 -0
  5. scitex/ai/_LearningCurveLogger.py +583 -0
  6. scitex/ai/__Classifiers.py +101 -0
  7. scitex/ai/__init__.py +55 -0
  8. scitex/ai/_gen_ai/_Anthropic.py +173 -0
  9. scitex/ai/_gen_ai/_BaseGenAI.py +336 -0
  10. scitex/ai/_gen_ai/_DeepSeek.py +175 -0
  11. scitex/ai/_gen_ai/_Google.py +161 -0
  12. scitex/ai/_gen_ai/_Groq.py +97 -0
  13. scitex/ai/_gen_ai/_Llama.py +142 -0
  14. scitex/ai/_gen_ai/_OpenAI.py +230 -0
  15. scitex/ai/_gen_ai/_PARAMS.py +565 -0
  16. scitex/ai/_gen_ai/_Perplexity.py +191 -0
  17. scitex/ai/_gen_ai/__init__.py +32 -0
  18. scitex/ai/_gen_ai/_calc_cost.py +78 -0
  19. scitex/ai/_gen_ai/_format_output_func.py +183 -0
  20. scitex/ai/_gen_ai/_genai_factory.py +71 -0
  21. scitex/ai/act/__init__.py +8 -0
  22. scitex/ai/act/_define.py +11 -0
  23. scitex/ai/classification/__init__.py +7 -0
  24. scitex/ai/classification/classification_reporter.py +1137 -0
  25. scitex/ai/classification/classifier_server.py +131 -0
  26. scitex/ai/classification/classifiers.py +101 -0
  27. scitex/ai/classification_reporter.py +1161 -0
  28. scitex/ai/classifier_server.py +131 -0
  29. scitex/ai/clustering/__init__.py +11 -0
  30. scitex/ai/clustering/_pca.py +115 -0
  31. scitex/ai/clustering/_umap.py +376 -0
  32. scitex/ai/early_stopping.py +149 -0
  33. scitex/ai/feature_extraction/__init__.py +56 -0
  34. scitex/ai/feature_extraction/vit.py +148 -0
  35. scitex/ai/genai/__init__.py +277 -0
  36. scitex/ai/genai/anthropic.py +177 -0
  37. scitex/ai/genai/anthropic_provider.py +320 -0
  38. scitex/ai/genai/anthropic_refactored.py +109 -0
  39. scitex/ai/genai/auth_manager.py +200 -0
  40. scitex/ai/genai/base_genai.py +336 -0
  41. scitex/ai/genai/base_provider.py +291 -0
  42. scitex/ai/genai/calc_cost.py +78 -0
  43. scitex/ai/genai/chat_history.py +307 -0
  44. scitex/ai/genai/cost_tracker.py +276 -0
  45. scitex/ai/genai/deepseek.py +188 -0
  46. scitex/ai/genai/deepseek_provider.py +251 -0
  47. scitex/ai/genai/format_output_func.py +183 -0
  48. scitex/ai/genai/genai_factory.py +71 -0
  49. scitex/ai/genai/google.py +169 -0
  50. scitex/ai/genai/google_provider.py +228 -0
  51. scitex/ai/genai/groq.py +104 -0
  52. scitex/ai/genai/groq_provider.py +248 -0
  53. scitex/ai/genai/image_processor.py +250 -0
  54. scitex/ai/genai/llama.py +155 -0
  55. scitex/ai/genai/llama_provider.py +214 -0
  56. scitex/ai/genai/mock_provider.py +127 -0
  57. scitex/ai/genai/model_registry.py +304 -0
  58. scitex/ai/genai/openai.py +230 -0
  59. scitex/ai/genai/openai_provider.py +293 -0
  60. scitex/ai/genai/params.py +565 -0
  61. scitex/ai/genai/perplexity.py +202 -0
  62. scitex/ai/genai/perplexity_provider.py +205 -0
  63. scitex/ai/genai/provider_base.py +302 -0
  64. scitex/ai/genai/provider_factory.py +370 -0
  65. scitex/ai/genai/response_handler.py +235 -0
  66. scitex/ai/layer/_Pass.py +21 -0
  67. scitex/ai/layer/__init__.py +10 -0
  68. scitex/ai/layer/_switch.py +8 -0
  69. scitex/ai/loss/_L1L2Losses.py +34 -0
  70. scitex/ai/loss/__init__.py +12 -0
  71. scitex/ai/loss/multi_task_loss.py +47 -0
  72. scitex/ai/metrics/__init__.py +9 -0
  73. scitex/ai/metrics/_bACC.py +51 -0
  74. scitex/ai/metrics/silhoute_score_block.py +496 -0
  75. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
  76. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
  77. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +207 -0
  78. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +238 -0
  79. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +215 -0
  80. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
  81. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
  82. scitex/ai/optim/__init__.py +13 -0
  83. scitex/ai/optim/_get_set.py +31 -0
  84. scitex/ai/optim/_optimizers.py +71 -0
  85. scitex/ai/plt/__init__.py +21 -0
  86. scitex/ai/plt/_conf_mat.py +592 -0
  87. scitex/ai/plt/_learning_curve.py +194 -0
  88. scitex/ai/plt/_optuna_study.py +111 -0
  89. scitex/ai/plt/aucs/__init__.py +2 -0
  90. scitex/ai/plt/aucs/example.py +60 -0
  91. scitex/ai/plt/aucs/pre_rec_auc.py +223 -0
  92. scitex/ai/plt/aucs/roc_auc.py +246 -0
  93. scitex/ai/sampling/undersample.py +29 -0
  94. scitex/ai/sk/__init__.py +11 -0
  95. scitex/ai/sk/_clf.py +58 -0
  96. scitex/ai/sk/_to_sktime.py +100 -0
  97. scitex/ai/sklearn/__init__.py +26 -0
  98. scitex/ai/sklearn/clf.py +58 -0
  99. scitex/ai/sklearn/to_sktime.py +100 -0
  100. scitex/ai/training/__init__.py +7 -0
  101. scitex/ai/training/early_stopping.py +150 -0
  102. scitex/ai/training/learning_curve_logger.py +555 -0
  103. scitex/ai/utils/__init__.py +22 -0
  104. scitex/ai/utils/_check_params.py +50 -0
  105. scitex/ai/utils/_default_dataset.py +46 -0
  106. scitex/ai/utils/_format_samples_for_sktime.py +26 -0
  107. scitex/ai/utils/_label_encoder.py +134 -0
  108. scitex/ai/utils/_merge_labels.py +22 -0
  109. scitex/ai/utils/_sliding_window_data_augmentation.py +11 -0
  110. scitex/ai/utils/_under_sample.py +51 -0
  111. scitex/ai/utils/_verify_n_gpus.py +16 -0
  112. scitex/ai/utils/grid_search.py +148 -0
  113. scitex/context/__init__.py +9 -0
  114. scitex/context/_suppress_output.py +38 -0
  115. scitex/db/_BaseMixins/_BaseBackupMixin.py +30 -0
  116. scitex/db/_BaseMixins/_BaseBatchMixin.py +31 -0
  117. scitex/db/_BaseMixins/_BaseBlobMixin.py +81 -0
  118. scitex/db/_BaseMixins/_BaseConnectionMixin.py +43 -0
  119. scitex/db/_BaseMixins/_BaseImportExportMixin.py +39 -0
  120. scitex/db/_BaseMixins/_BaseIndexMixin.py +29 -0
  121. scitex/db/_BaseMixins/_BaseMaintenanceMixin.py +33 -0
  122. scitex/db/_BaseMixins/_BaseQueryMixin.py +52 -0
  123. scitex/db/_BaseMixins/_BaseRowMixin.py +32 -0
  124. scitex/db/_BaseMixins/_BaseSchemaMixin.py +44 -0
  125. scitex/db/_BaseMixins/_BaseTableMixin.py +66 -0
  126. scitex/db/_BaseMixins/_BaseTransactionMixin.py +52 -0
  127. scitex/db/_BaseMixins/__init__.py +30 -0
  128. scitex/db/_PostgreSQL.py +126 -0
  129. scitex/db/_PostgreSQLMixins/_BackupMixin.py +166 -0
  130. scitex/db/_PostgreSQLMixins/_BatchMixin.py +82 -0
  131. scitex/db/_PostgreSQLMixins/_BlobMixin.py +231 -0
  132. scitex/db/_PostgreSQLMixins/_ConnectionMixin.py +92 -0
  133. scitex/db/_PostgreSQLMixins/_ImportExportMixin.py +59 -0
  134. scitex/db/_PostgreSQLMixins/_IndexMixin.py +64 -0
  135. scitex/db/_PostgreSQLMixins/_MaintenanceMixin.py +175 -0
  136. scitex/db/_PostgreSQLMixins/_QueryMixin.py +108 -0
  137. scitex/db/_PostgreSQLMixins/_RowMixin.py +75 -0
  138. scitex/db/_PostgreSQLMixins/_SchemaMixin.py +126 -0
  139. scitex/db/_PostgreSQLMixins/_TableMixin.py +176 -0
  140. scitex/db/_PostgreSQLMixins/_TransactionMixin.py +57 -0
  141. scitex/db/_PostgreSQLMixins/__init__.py +34 -0
  142. scitex/db/_SQLite3.py +2136 -0
  143. scitex/db/_SQLite3Mixins/_BatchMixin.py +243 -0
  144. scitex/db/_SQLite3Mixins/_BlobMixin.py +229 -0
  145. scitex/db/_SQLite3Mixins/_ConnectionMixin.py +108 -0
  146. scitex/db/_SQLite3Mixins/_ImportExportMixin.py +80 -0
  147. scitex/db/_SQLite3Mixins/_IndexMixin.py +32 -0
  148. scitex/db/_SQLite3Mixins/_MaintenanceMixin.py +176 -0
  149. scitex/db/_SQLite3Mixins/_QueryMixin.py +83 -0
  150. scitex/db/_SQLite3Mixins/_RowMixin.py +75 -0
  151. scitex/db/_SQLite3Mixins/_TableMixin.py +183 -0
  152. scitex/db/_SQLite3Mixins/_TransactionMixin.py +71 -0
  153. scitex/db/_SQLite3Mixins/__init__.py +30 -0
  154. scitex/db/__init__.py +14 -0
  155. scitex/db/_delete_duplicates.py +397 -0
  156. scitex/db/_inspect.py +163 -0
  157. scitex/decorators/__init__.py +54 -0
  158. scitex/decorators/_auto_order.py +172 -0
  159. scitex/decorators/_batch_fn.py +127 -0
  160. scitex/decorators/_cache_disk.py +32 -0
  161. scitex/decorators/_cache_mem.py +12 -0
  162. scitex/decorators/_combined.py +98 -0
  163. scitex/decorators/_converters.py +282 -0
  164. scitex/decorators/_deprecated.py +26 -0
  165. scitex/decorators/_not_implemented.py +30 -0
  166. scitex/decorators/_numpy_fn.py +86 -0
  167. scitex/decorators/_pandas_fn.py +121 -0
  168. scitex/decorators/_preserve_doc.py +19 -0
  169. scitex/decorators/_signal_fn.py +95 -0
  170. scitex/decorators/_timeout.py +55 -0
  171. scitex/decorators/_torch_fn.py +136 -0
  172. scitex/decorators/_wrap.py +39 -0
  173. scitex/decorators/_xarray_fn.py +88 -0
  174. scitex/dev/__init__.py +15 -0
  175. scitex/dev/_analyze_code_flow.py +284 -0
  176. scitex/dev/_reload.py +59 -0
  177. scitex/dict/_DotDict.py +442 -0
  178. scitex/dict/__init__.py +18 -0
  179. scitex/dict/_listed_dict.py +42 -0
  180. scitex/dict/_pop_keys.py +36 -0
  181. scitex/dict/_replace.py +13 -0
  182. scitex/dict/_safe_merge.py +62 -0
  183. scitex/dict/_to_str.py +32 -0
  184. scitex/dsp/__init__.py +72 -0
  185. scitex/dsp/_crop.py +122 -0
  186. scitex/dsp/_demo_sig.py +331 -0
  187. scitex/dsp/_detect_ripples.py +212 -0
  188. scitex/dsp/_ensure_3d.py +18 -0
  189. scitex/dsp/_hilbert.py +78 -0
  190. scitex/dsp/_listen.py +702 -0
  191. scitex/dsp/_misc.py +30 -0
  192. scitex/dsp/_mne.py +32 -0
  193. scitex/dsp/_modulation_index.py +79 -0
  194. scitex/dsp/_pac.py +319 -0
  195. scitex/dsp/_psd.py +102 -0
  196. scitex/dsp/_resample.py +65 -0
  197. scitex/dsp/_time.py +36 -0
  198. scitex/dsp/_transform.py +68 -0
  199. scitex/dsp/_wavelet.py +212 -0
  200. scitex/dsp/add_noise.py +111 -0
  201. scitex/dsp/example.py +253 -0
  202. scitex/dsp/filt.py +155 -0
  203. scitex/dsp/norm.py +18 -0
  204. scitex/dsp/params.py +51 -0
  205. scitex/dsp/reference.py +43 -0
  206. scitex/dsp/template.py +25 -0
  207. scitex/dsp/utils/__init__.py +15 -0
  208. scitex/dsp/utils/_differential_bandpass_filters.py +120 -0
  209. scitex/dsp/utils/_ensure_3d.py +18 -0
  210. scitex/dsp/utils/_ensure_even_len.py +10 -0
  211. scitex/dsp/utils/_zero_pad.py +48 -0
  212. scitex/dsp/utils/filter.py +408 -0
  213. scitex/dsp/utils/pac.py +177 -0
  214. scitex/dt/__init__.py +8 -0
  215. scitex/dt/_linspace.py +130 -0
  216. scitex/etc/__init__.py +15 -0
  217. scitex/etc/wait_key.py +34 -0
  218. scitex/gen/_DimHandler.py +196 -0
  219. scitex/gen/_TimeStamper.py +244 -0
  220. scitex/gen/__init__.py +95 -0
  221. scitex/gen/_alternate_kwarg.py +13 -0
  222. scitex/gen/_cache.py +11 -0
  223. scitex/gen/_check_host.py +34 -0
  224. scitex/gen/_ci.py +12 -0
  225. scitex/gen/_close.py +222 -0
  226. scitex/gen/_embed.py +78 -0
  227. scitex/gen/_inspect_module.py +257 -0
  228. scitex/gen/_is_ipython.py +12 -0
  229. scitex/gen/_less.py +48 -0
  230. scitex/gen/_list_packages.py +139 -0
  231. scitex/gen/_mat2py.py +88 -0
  232. scitex/gen/_norm.py +170 -0
  233. scitex/gen/_paste.py +18 -0
  234. scitex/gen/_print_config.py +84 -0
  235. scitex/gen/_shell.py +48 -0
  236. scitex/gen/_src.py +111 -0
  237. scitex/gen/_start.py +451 -0
  238. scitex/gen/_symlink.py +55 -0
  239. scitex/gen/_symlog.py +27 -0
  240. scitex/gen/_tee.py +238 -0
  241. scitex/gen/_title2path.py +60 -0
  242. scitex/gen/_title_case.py +88 -0
  243. scitex/gen/_to_even.py +84 -0
  244. scitex/gen/_to_odd.py +34 -0
  245. scitex/gen/_to_rank.py +39 -0
  246. scitex/gen/_transpose.py +37 -0
  247. scitex/gen/_type.py +78 -0
  248. scitex/gen/_var_info.py +73 -0
  249. scitex/gen/_wrap.py +17 -0
  250. scitex/gen/_xml2dict.py +76 -0
  251. scitex/gen/misc.py +730 -0
  252. scitex/gen/path.py +0 -0
  253. scitex/general/__init__.py +5 -0
  254. scitex/gists/_SigMacro_processFigure_S.py +128 -0
  255. scitex/gists/_SigMacro_toBlue.py +172 -0
  256. scitex/gists/__init__.py +12 -0
  257. scitex/io/_H5Explorer.py +292 -0
  258. scitex/io/__init__.py +82 -0
  259. scitex/io/_cache.py +101 -0
  260. scitex/io/_flush.py +24 -0
  261. scitex/io/_glob.py +103 -0
  262. scitex/io/_json2md.py +113 -0
  263. scitex/io/_load.py +168 -0
  264. scitex/io/_load_configs.py +146 -0
  265. scitex/io/_load_modules/__init__.py +38 -0
  266. scitex/io/_load_modules/_catboost.py +66 -0
  267. scitex/io/_load_modules/_con.py +20 -0
  268. scitex/io/_load_modules/_db.py +24 -0
  269. scitex/io/_load_modules/_docx.py +42 -0
  270. scitex/io/_load_modules/_eeg.py +110 -0
  271. scitex/io/_load_modules/_hdf5.py +196 -0
  272. scitex/io/_load_modules/_image.py +19 -0
  273. scitex/io/_load_modules/_joblib.py +19 -0
  274. scitex/io/_load_modules/_json.py +18 -0
  275. scitex/io/_load_modules/_markdown.py +103 -0
  276. scitex/io/_load_modules/_matlab.py +37 -0
  277. scitex/io/_load_modules/_numpy.py +39 -0
  278. scitex/io/_load_modules/_optuna.py +155 -0
  279. scitex/io/_load_modules/_pandas.py +69 -0
  280. scitex/io/_load_modules/_pdf.py +31 -0
  281. scitex/io/_load_modules/_pickle.py +24 -0
  282. scitex/io/_load_modules/_torch.py +16 -0
  283. scitex/io/_load_modules/_txt.py +126 -0
  284. scitex/io/_load_modules/_xml.py +49 -0
  285. scitex/io/_load_modules/_yaml.py +23 -0
  286. scitex/io/_mv_to_tmp.py +19 -0
  287. scitex/io/_path.py +286 -0
  288. scitex/io/_reload.py +78 -0
  289. scitex/io/_save.py +539 -0
  290. scitex/io/_save_modules/__init__.py +66 -0
  291. scitex/io/_save_modules/_catboost.py +22 -0
  292. scitex/io/_save_modules/_csv.py +89 -0
  293. scitex/io/_save_modules/_excel.py +49 -0
  294. scitex/io/_save_modules/_hdf5.py +249 -0
  295. scitex/io/_save_modules/_html.py +48 -0
  296. scitex/io/_save_modules/_image.py +140 -0
  297. scitex/io/_save_modules/_joblib.py +25 -0
  298. scitex/io/_save_modules/_json.py +25 -0
  299. scitex/io/_save_modules/_listed_dfs_as_csv.py +57 -0
  300. scitex/io/_save_modules/_listed_scalars_as_csv.py +42 -0
  301. scitex/io/_save_modules/_matlab.py +24 -0
  302. scitex/io/_save_modules/_mp4.py +29 -0
  303. scitex/io/_save_modules/_numpy.py +57 -0
  304. scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +38 -0
  305. scitex/io/_save_modules/_pickle.py +45 -0
  306. scitex/io/_save_modules/_plotly.py +27 -0
  307. scitex/io/_save_modules/_text.py +23 -0
  308. scitex/io/_save_modules/_torch.py +26 -0
  309. scitex/io/_save_modules/_yaml.py +29 -0
  310. scitex/life/__init__.py +10 -0
  311. scitex/life/_monitor_rain.py +49 -0
  312. scitex/linalg/__init__.py +17 -0
  313. scitex/linalg/_distance.py +63 -0
  314. scitex/linalg/_geometric_median.py +64 -0
  315. scitex/linalg/_misc.py +73 -0
  316. scitex/nn/_AxiswiseDropout.py +27 -0
  317. scitex/nn/_BNet.py +126 -0
  318. scitex/nn/_BNet_Res.py +164 -0
  319. scitex/nn/_ChannelGainChanger.py +44 -0
  320. scitex/nn/_DropoutChannels.py +50 -0
  321. scitex/nn/_Filters.py +489 -0
  322. scitex/nn/_FreqGainChanger.py +110 -0
  323. scitex/nn/_GaussianFilter.py +48 -0
  324. scitex/nn/_Hilbert.py +111 -0
  325. scitex/nn/_MNet_1000.py +157 -0
  326. scitex/nn/_ModulationIndex.py +221 -0
  327. scitex/nn/_PAC.py +414 -0
  328. scitex/nn/_PSD.py +40 -0
  329. scitex/nn/_ResNet1D.py +120 -0
  330. scitex/nn/_SpatialAttention.py +25 -0
  331. scitex/nn/_Spectrogram.py +161 -0
  332. scitex/nn/_SwapChannels.py +50 -0
  333. scitex/nn/_TransposeLayer.py +19 -0
  334. scitex/nn/_Wavelet.py +183 -0
  335. scitex/nn/__init__.py +63 -0
  336. scitex/os/__init__.py +8 -0
  337. scitex/os/_mv.py +50 -0
  338. scitex/parallel/__init__.py +8 -0
  339. scitex/parallel/_run.py +151 -0
  340. scitex/path/__init__.py +33 -0
  341. scitex/path/_clean.py +52 -0
  342. scitex/path/_find.py +108 -0
  343. scitex/path/_get_module_path.py +51 -0
  344. scitex/path/_get_spath.py +35 -0
  345. scitex/path/_getsize.py +18 -0
  346. scitex/path/_increment_version.py +87 -0
  347. scitex/path/_mk_spath.py +51 -0
  348. scitex/path/_path.py +19 -0
  349. scitex/path/_split.py +23 -0
  350. scitex/path/_this_path.py +19 -0
  351. scitex/path/_version.py +101 -0
  352. scitex/pd/__init__.py +41 -0
  353. scitex/pd/_find_indi.py +126 -0
  354. scitex/pd/_find_pval.py +113 -0
  355. scitex/pd/_force_df.py +154 -0
  356. scitex/pd/_from_xyz.py +71 -0
  357. scitex/pd/_ignore_SettingWithCopyWarning.py +34 -0
  358. scitex/pd/_melt_cols.py +81 -0
  359. scitex/pd/_merge_columns.py +221 -0
  360. scitex/pd/_mv.py +63 -0
  361. scitex/pd/_replace.py +62 -0
  362. scitex/pd/_round.py +93 -0
  363. scitex/pd/_slice.py +63 -0
  364. scitex/pd/_sort.py +91 -0
  365. scitex/pd/_to_numeric.py +53 -0
  366. scitex/pd/_to_xy.py +59 -0
  367. scitex/pd/_to_xyz.py +110 -0
  368. scitex/plt/__init__.py +36 -0
  369. scitex/plt/_subplots/_AxesWrapper.py +182 -0
  370. scitex/plt/_subplots/_AxisWrapper.py +249 -0
  371. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +414 -0
  372. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +896 -0
  373. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +368 -0
  374. scitex/plt/_subplots/_AxisWrapperMixins/_TrackingMixin.py +185 -0
  375. scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +16 -0
  376. scitex/plt/_subplots/_FigWrapper.py +226 -0
  377. scitex/plt/_subplots/_SubplotsWrapper.py +171 -0
  378. scitex/plt/_subplots/__init__.py +111 -0
  379. scitex/plt/_subplots/_export_as_csv.py +232 -0
  380. scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +61 -0
  381. scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +90 -0
  382. scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +49 -0
  383. scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +46 -0
  384. scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +39 -0
  385. scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +125 -0
  386. scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +72 -0
  387. scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +34 -0
  388. scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +36 -0
  389. scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +79 -0
  390. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +59 -0
  391. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +32 -0
  392. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +79 -0
  393. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +75 -0
  394. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py +64 -0
  395. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py +44 -0
  396. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py +70 -0
  397. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.py +66 -0
  398. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py +95 -0
  399. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py +67 -0
  400. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +52 -0
  401. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py +46 -0
  402. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py +46 -0
  403. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py +46 -0
  404. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py +46 -0
  405. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py +44 -0
  406. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.py +103 -0
  407. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_hist.py +82 -0
  408. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py +58 -0
  409. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.py +117 -0
  410. scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +30 -0
  411. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +51 -0
  412. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +93 -0
  413. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +94 -0
  414. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +92 -0
  415. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +65 -0
  416. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +59 -0
  417. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +58 -0
  418. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +45 -0
  419. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +70 -0
  420. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +75 -0
  421. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +75 -0
  422. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +155 -0
  423. scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +64 -0
  424. scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +77 -0
  425. scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +210 -0
  426. scitex/plt/_subplots/_export_as_csv_formatters/verify_formatters.py +342 -0
  427. scitex/plt/_subplots/_export_as_csv_formatters.py +115 -0
  428. scitex/plt/_tpl.py +28 -0
  429. scitex/plt/ax/__init__.py +114 -0
  430. scitex/plt/ax/_plot/__init__.py +53 -0
  431. scitex/plt/ax/_plot/_plot_circular_hist.py +124 -0
  432. scitex/plt/ax/_plot/_plot_conf_mat.py +136 -0
  433. scitex/plt/ax/_plot/_plot_cube.py +57 -0
  434. scitex/plt/ax/_plot/_plot_ecdf.py +84 -0
  435. scitex/plt/ax/_plot/_plot_fillv.py +55 -0
  436. scitex/plt/ax/_plot/_plot_heatmap.py +266 -0
  437. scitex/plt/ax/_plot/_plot_image.py +94 -0
  438. scitex/plt/ax/_plot/_plot_joyplot.py +76 -0
  439. scitex/plt/ax/_plot/_plot_raster.py +172 -0
  440. scitex/plt/ax/_plot/_plot_rectangle.py +69 -0
  441. scitex/plt/ax/_plot/_plot_scatter_hist.py +133 -0
  442. scitex/plt/ax/_plot/_plot_shaded_line.py +142 -0
  443. scitex/plt/ax/_plot/_plot_statistical_shaded_line.py +221 -0
  444. scitex/plt/ax/_plot/_plot_violin.py +343 -0
  445. scitex/plt/ax/_style/__init__.py +38 -0
  446. scitex/plt/ax/_style/_add_marginal_ax.py +44 -0
  447. scitex/plt/ax/_style/_add_panel.py +92 -0
  448. scitex/plt/ax/_style/_extend.py +64 -0
  449. scitex/plt/ax/_style/_force_aspect.py +37 -0
  450. scitex/plt/ax/_style/_format_label.py +23 -0
  451. scitex/plt/ax/_style/_hide_spines.py +84 -0
  452. scitex/plt/ax/_style/_map_ticks.py +182 -0
  453. scitex/plt/ax/_style/_rotate_labels.py +215 -0
  454. scitex/plt/ax/_style/_sci_note.py +279 -0
  455. scitex/plt/ax/_style/_set_log_scale.py +299 -0
  456. scitex/plt/ax/_style/_set_meta.py +261 -0
  457. scitex/plt/ax/_style/_set_n_ticks.py +37 -0
  458. scitex/plt/ax/_style/_set_size.py +16 -0
  459. scitex/plt/ax/_style/_set_supxyt.py +116 -0
  460. scitex/plt/ax/_style/_set_ticks.py +276 -0
  461. scitex/plt/ax/_style/_set_xyt.py +121 -0
  462. scitex/plt/ax/_style/_share_axes.py +264 -0
  463. scitex/plt/ax/_style/_shift.py +139 -0
  464. scitex/plt/ax/_style/_show_spines.py +333 -0
  465. scitex/plt/color/_PARAMS.py +70 -0
  466. scitex/plt/color/__init__.py +52 -0
  467. scitex/plt/color/_add_hue_col.py +41 -0
  468. scitex/plt/color/_colors.py +205 -0
  469. scitex/plt/color/_get_colors_from_cmap.py +134 -0
  470. scitex/plt/color/_interpolate.py +29 -0
  471. scitex/plt/color/_vizualize_colors.py +54 -0
  472. scitex/plt/utils/__init__.py +44 -0
  473. scitex/plt/utils/_calc_bacc_from_conf_mat.py +46 -0
  474. scitex/plt/utils/_calc_nice_ticks.py +101 -0
  475. scitex/plt/utils/_close.py +68 -0
  476. scitex/plt/utils/_colorbar.py +96 -0
  477. scitex/plt/utils/_configure_mpl.py +295 -0
  478. scitex/plt/utils/_histogram_utils.py +132 -0
  479. scitex/plt/utils/_im2grid.py +70 -0
  480. scitex/plt/utils/_is_valid_axis.py +78 -0
  481. scitex/plt/utils/_mk_colorbar.py +65 -0
  482. scitex/plt/utils/_mk_patches.py +26 -0
  483. scitex/plt/utils/_scientific_captions.py +638 -0
  484. scitex/plt/utils/_scitex_config.py +223 -0
  485. scitex/reproduce/__init__.py +14 -0
  486. scitex/reproduce/_fix_seeds.py +45 -0
  487. scitex/reproduce/_gen_ID.py +55 -0
  488. scitex/reproduce/_gen_timestamp.py +35 -0
  489. scitex/res/__init__.py +5 -0
  490. scitex/resource/__init__.py +13 -0
  491. scitex/resource/_get_processor_usages.py +281 -0
  492. scitex/resource/_get_specs.py +280 -0
  493. scitex/resource/_log_processor_usages.py +190 -0
  494. scitex/resource/_utils/__init__.py +31 -0
  495. scitex/resource/_utils/_get_env_info.py +481 -0
  496. scitex/resource/limit_ram.py +33 -0
  497. scitex/scholar/__init__.py +24 -0
  498. scitex/scholar/_local_search.py +454 -0
  499. scitex/scholar/_paper.py +244 -0
  500. scitex/scholar/_pdf_downloader.py +325 -0
  501. scitex/scholar/_search.py +393 -0
  502. scitex/scholar/_vector_search.py +370 -0
  503. scitex/scholar/_web_sources.py +457 -0
  504. scitex/stats/__init__.py +31 -0
  505. scitex/stats/_calc_partial_corr.py +17 -0
  506. scitex/stats/_corr_test_multi.py +94 -0
  507. scitex/stats/_corr_test_wrapper.py +115 -0
  508. scitex/stats/_describe_wrapper.py +90 -0
  509. scitex/stats/_multiple_corrections.py +63 -0
  510. scitex/stats/_nan_stats.py +93 -0
  511. scitex/stats/_p2stars.py +116 -0
  512. scitex/stats/_p2stars_wrapper.py +56 -0
  513. scitex/stats/_statistical_tests.py +73 -0
  514. scitex/stats/desc/__init__.py +40 -0
  515. scitex/stats/desc/_describe.py +189 -0
  516. scitex/stats/desc/_nan.py +289 -0
  517. scitex/stats/desc/_real.py +94 -0
  518. scitex/stats/multiple/__init__.py +14 -0
  519. scitex/stats/multiple/_bonferroni_correction.py +72 -0
  520. scitex/stats/multiple/_fdr_correction.py +400 -0
  521. scitex/stats/multiple/_multicompair.py +28 -0
  522. scitex/stats/tests/__corr_test.py +277 -0
  523. scitex/stats/tests/__corr_test_multi.py +343 -0
  524. scitex/stats/tests/__corr_test_single.py +277 -0
  525. scitex/stats/tests/__init__.py +22 -0
  526. scitex/stats/tests/_brunner_munzel_test.py +192 -0
  527. scitex/stats/tests/_nocorrelation_test.py +28 -0
  528. scitex/stats/tests/_smirnov_grubbs.py +98 -0
  529. scitex/str/__init__.py +113 -0
  530. scitex/str/_clean_path.py +75 -0
  531. scitex/str/_color_text.py +52 -0
  532. scitex/str/_decapitalize.py +58 -0
  533. scitex/str/_factor_out_digits.py +281 -0
  534. scitex/str/_format_plot_text.py +498 -0
  535. scitex/str/_grep.py +48 -0
  536. scitex/str/_latex.py +155 -0
  537. scitex/str/_latex_fallback.py +471 -0
  538. scitex/str/_mask_api.py +39 -0
  539. scitex/str/_mask_api_key.py +8 -0
  540. scitex/str/_parse.py +158 -0
  541. scitex/str/_print_block.py +47 -0
  542. scitex/str/_print_debug.py +68 -0
  543. scitex/str/_printc.py +62 -0
  544. scitex/str/_readable_bytes.py +38 -0
  545. scitex/str/_remove_ansi.py +23 -0
  546. scitex/str/_replace.py +134 -0
  547. scitex/str/_search.py +125 -0
  548. scitex/str/_squeeze_space.py +36 -0
  549. scitex/tex/__init__.py +10 -0
  550. scitex/tex/_preview.py +103 -0
  551. scitex/tex/_to_vec.py +116 -0
  552. scitex/torch/__init__.py +18 -0
  553. scitex/torch/_apply_to.py +34 -0
  554. scitex/torch/_nan_funcs.py +77 -0
  555. scitex/types/_ArrayLike.py +44 -0
  556. scitex/types/_ColorLike.py +21 -0
  557. scitex/types/__init__.py +14 -0
  558. scitex/types/_is_listed_X.py +70 -0
  559. scitex/utils/__init__.py +22 -0
  560. scitex/utils/_compress_hdf5.py +116 -0
  561. scitex/utils/_email.py +120 -0
  562. scitex/utils/_grid.py +148 -0
  563. scitex/utils/_notify.py +247 -0
  564. scitex/utils/_search.py +121 -0
  565. scitex/web/__init__.py +38 -0
  566. scitex/web/_search_pubmed.py +438 -0
  567. scitex/web/_summarize_url.py +158 -0
  568. scitex-2.0.0.dist-info/METADATA +307 -0
  569. scitex-2.0.0.dist-info/RECORD +572 -0
  570. scitex-2.0.0.dist-info/WHEEL +6 -0
  571. scitex-2.0.0.dist-info/licenses/LICENSE +7 -0
  572. scitex-2.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 14:53:11 (ywatanabe)"
4
+ # File: /ssh:sp:/home/ywatanabe/proj/scitex_repo/src/scitex/io/_save_modules/_save_listed_scalars_as_csv.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/io/_save_modules/_save_listed_scalars_as_csv.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+ # Time-stamp: "2024-11-02 21:26:48 (ywatanabe)"
13
+
14
+ import numpy as np
15
+ import pandas as pd
16
+
17
+ from .._mv_to_tmp import _mv_to_tmp
18
+
19
+
20
+
21
+ def _save_listed_scalars_as_csv(
22
+ listed_scalars,
23
+ spath_csv,
24
+ column_name="_",
25
+ indi_suffix=None,
26
+ round=3,
27
+ overwrite=False,
28
+ verbose=False,
29
+ ):
30
+ """Puts to df and save it as csv"""
31
+
32
+ if overwrite == True:
33
+ _mv_to_tmp(spath_csv, L=2)
34
+ indi_suffix = np.arange(len(listed_scalars)) if indi_suffix is None else indi_suffix
35
+ df = pd.DataFrame(
36
+ {"{}".format(column_name): listed_scalars}, index=indi_suffix
37
+ ).round(round)
38
+ df.to_csv(spath_csv)
39
+ if verbose:
40
+ print("\nSaved to: {}\n".format(spath_csv))
41
+
42
+ # EOF
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-16 12:28:15 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/io/_save_modules/_matlab.py
5
+
6
+ import scipy.io
7
+
8
+
9
+ def _save_matlab(obj, spath):
10
+ """
11
+ Save a Python dictionary to a MATLAB .mat file.
12
+
13
+ Parameters
14
+ ----------
15
+ obj : dict
16
+ Dictionary of arrays to save in MATLAB format.
17
+ spath : str
18
+ Path where the MATLAB file will be saved.
19
+
20
+ Returns
21
+ -------
22
+ None
23
+ """
24
+ scipy.io.savemat(spath, obj)
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 16:57:29 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/io/_save_mp4.py
5
+
6
+ from matplotlib import animation
7
+
8
+
9
+ def _mk_mp4(fig, spath_mp4):
10
+ axes = fig.get_axes()
11
+
12
+ def init():
13
+ return (fig,)
14
+
15
+ def animate(i):
16
+ for ax in axes:
17
+ ax.view_init(elev=10.0, azim=i)
18
+ return (fig,)
19
+
20
+ anim = animation.FuncAnimation(
21
+ fig, animate, init_func=init, frames=360, interval=20, blit=True
22
+ )
23
+
24
+ writermp4 = animation.FFMpegWriter(fps=60, extra_args=["-vcodec", "libx264"])
25
+ anim.save(spath_mp4, writer=writermp4)
26
+ print("\nSaving to: {}\n".format(spath_mp4))
27
+
28
+
29
+ # EOF
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-16 12:19:07 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/io/_save_modules/_numpy.py
5
+
6
+ import numpy as np
7
+
8
+
9
+ def _save_npy(obj, spath):
10
+ """
11
+ Save a numpy array to .npy format.
12
+
13
+ Parameters
14
+ ----------
15
+ obj : numpy.ndarray
16
+ The numpy array to save.
17
+ spath : str
18
+ Path where the .npy file will be saved.
19
+
20
+ Returns
21
+ -------
22
+ None
23
+ """
24
+ np.save(spath, obj)
25
+
26
+
27
+ def _save_npz(obj, spath):
28
+ """
29
+ Save numpy arrays to .npz format.
30
+
31
+ Parameters
32
+ ----------
33
+ obj : dict or list/tuple of numpy.ndarray
34
+ Either a dictionary of arrays or a list/tuple of arrays.
35
+ spath : str
36
+ Path where the .npz file will be saved.
37
+
38
+ Returns
39
+ -------
40
+ None
41
+
42
+ Raises
43
+ ------
44
+ ValueError
45
+ If obj is not a dict of arrays or a list/tuple of arrays.
46
+ """
47
+ if isinstance(obj, dict):
48
+ np.savez_compressed(spath, **obj)
49
+ elif isinstance(obj, (list, tuple)) and all(
50
+ isinstance(x, np.ndarray) for x in obj
51
+ ):
52
+ obj = {str(ii): obj[ii] for ii in range(len(obj))}
53
+ np.savez_compressed(spath, **obj)
54
+ else:
55
+ raise ValueError(
56
+ "For .npz files, obj must be a dict of arrays or a list/tuple of arrays."
57
+ )
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 17:01:15 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/io/_save_optuna_study_as_csv_and_pngs.py
5
+
6
+
7
+ def save_optuna_study_as_csv_and_pngs(study, sdir):
8
+ import optuna
9
+ from .._save import save
10
+
11
+ ## Trials DataFrame
12
+ trials_df = study.trials_dataframe()
13
+
14
+ ## Figures
15
+ hparams_keys = list(study.best_params.keys())
16
+ slice_plot = optuna.visualization.plot_slice(study, params=hparams_keys)
17
+ contour_plot = optuna.visualization.plot_contour(study, params=hparams_keys)
18
+ optim_hist_plot = optuna.visualization.plot_optimization_history(study)
19
+ parallel_coord_plot = optuna.visualization.plot_parallel_coordinate(
20
+ study, params=hparams_keys
21
+ )
22
+ hparam_importances_plot = optuna.visualization.plot_param_importances(study)
23
+ figs_dict = dict(
24
+ slice_plot=slice_plot,
25
+ contour_plot=contour_plot,
26
+ optim_hist_plot=optim_hist_plot,
27
+ parallel_coord_plot=parallel_coord_plot,
28
+ hparam_importances_plot=hparam_importances_plot,
29
+ )
30
+
31
+ ## Saves
32
+ save(trials_df, sdir + "trials_df.csv")
33
+
34
+ for figname, fig in figs_dict.items():
35
+ save(fig, sdir + f"{figname}.png")
36
+
37
+
38
+ # EOF
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-16 12:21:07 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/io/_save_modules/_pickle.py
5
+
6
+ import pickle
7
+ import gzip
8
+
9
+
10
+ def _save_pickle(obj, spath):
11
+ """
12
+ Save an object using Python's pickle serialization.
13
+
14
+ Parameters
15
+ ----------
16
+ obj : Any
17
+ Object to serialize.
18
+ spath : str
19
+ Path where the pickle file will be saved.
20
+
21
+ Returns
22
+ -------
23
+ None
24
+ """
25
+ with open(spath, "wb") as s:
26
+ pickle.dump(obj, s)
27
+
28
+
29
+ def _save_pickle_gz(obj, spath):
30
+ """
31
+ Save an object using Python's pickle serialization with gzip compression.
32
+
33
+ Parameters
34
+ ----------
35
+ obj : Any
36
+ Object to serialize.
37
+ spath : str
38
+ Path where the compressed pickle file will be saved.
39
+
40
+ Returns
41
+ -------
42
+ None
43
+ """
44
+ with gzip.open(spath, "wb") as f:
45
+ pickle.dump(obj, f)
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-16 12:30:15 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/io/_save_modules/_plotly.py
5
+
6
+ import plotly
7
+
8
+
9
+ def _save_plotly_html(obj, spath):
10
+ """
11
+ Save a Plotly figure as an HTML file.
12
+
13
+ Parameters
14
+ ----------
15
+ obj : plotly.graph_objs.Figure
16
+ The Plotly figure to save.
17
+ spath : str
18
+ Path where the HTML file will be saved.
19
+
20
+ Returns
21
+ -------
22
+ None
23
+ """
24
+ if isinstance(obj, plotly.graph_objs.Figure):
25
+ obj.write_html(file=spath)
26
+ else:
27
+ raise TypeError("Object must be a plotly.graph_objs.Figure")
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-16 12:17:12 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/io/_save_modules/_text.py
5
+
6
+
7
+ def _save_text(obj, spath):
8
+ """
9
+ Save text content to a file.
10
+
11
+ Parameters
12
+ ----------
13
+ obj : str
14
+ The text content to save.
15
+ spath : str
16
+ Path where the text file will be saved.
17
+
18
+ Returns
19
+ -------
20
+ None
21
+ """
22
+ with open(spath, "w") as file:
23
+ file.write(obj)
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-16 12:25:14 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/io/_save_modules/_torch.py
5
+
6
+ import torch
7
+
8
+
9
+ def _save_torch(obj, spath, **kwargs):
10
+ """
11
+ Save a PyTorch model or tensor.
12
+
13
+ Parameters
14
+ ----------
15
+ obj : torch.nn.Module or torch.Tensor
16
+ The PyTorch model or tensor to save.
17
+ spath : str
18
+ Path where the PyTorch file will be saved.
19
+ **kwargs : dict
20
+ Additional keyword arguments to pass to torch.save.
21
+
22
+ Returns
23
+ -------
24
+ None
25
+ """
26
+ torch.save(obj, spath, **kwargs)
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-16 12:26:16 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/io/_save_modules/_yaml.py
5
+
6
+ from ruamel.yaml import YAML
7
+
8
+
9
+ def _save_yaml(obj, spath):
10
+ """
11
+ Save a Python object as a YAML file.
12
+
13
+ Parameters
14
+ ----------
15
+ obj : dict
16
+ The object to serialize to YAML.
17
+ spath : str
18
+ Path where the YAML file will be saved.
19
+
20
+ Returns
21
+ -------
22
+ None
23
+ """
24
+ yaml = YAML()
25
+ yaml.preserve_quotes = True
26
+ yaml.indent(mapping=4, sequence=4, offset=4)
27
+
28
+ with open(spath, "w") as f:
29
+ yaml.dump(obj, f)
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env python3
2
+ """Scitex life module."""
3
+
4
+ from ._monitor_rain import check_rain, monitor_rain, notify_rain
5
+
6
+ __all__ = [
7
+ "check_rain",
8
+ "monitor_rain",
9
+ "notify_rain",
10
+ ]
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 14:20:28 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/life/_monitor_rain.py
5
+
6
+ """Imports"""
7
+ import time
8
+
9
+ import requests
10
+ import warnings
11
+
12
+ try:
13
+ with warnings.catch_warnings():
14
+ warnings.simplefilter("ignore", UserWarning)
15
+ from plyer import notification
16
+ except:
17
+ pass
18
+
19
+ """Functions & Classes"""
20
+ API_KEY = "your_api_key"
21
+ CITY = "your_city"
22
+ API_URL = f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}"
23
+
24
+
25
+ def check_rain():
26
+ response = requests.get(API_URL)
27
+ data = response.json()
28
+ if "rain" in data:
29
+ notify_rain()
30
+
31
+
32
+ def notify_rain():
33
+ notification.notify(
34
+ title="Rain Alert",
35
+ message="It's starting to rain in your area!",
36
+ timeout=10,
37
+ )
38
+
39
+
40
+ def monitor_rain():
41
+ while True:
42
+ check_rain()
43
+ time.sleep(300) # Check every 5 minutes
44
+
45
+
46
+ if __name__ == "__main__":
47
+ monitor_rain()
48
+
49
+ # EOF
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env python3
2
+ """Linear algebra utilities module for scitex."""
3
+
4
+ from ._distance import euclidean_distance, cdist, edist
5
+ from ._geometric_median import geometric_median
6
+ from ._misc import cosine, nannorm, rebase_a_vec, three_line_lengths_to_coords
7
+
8
+ __all__ = [
9
+ "euclidean_distance",
10
+ "cdist",
11
+ "edist",
12
+ "geometric_median",
13
+ "cosine",
14
+ "nannorm",
15
+ "rebase_a_vec",
16
+ "three_line_lengths_to_coords",
17
+ ]
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-04 02:58:04 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/linalg/_distance.py
5
+
6
+ import numpy as np
7
+ import scipy.spatial.distance as _distance
8
+
9
+ from ..decorators._numpy_fn import numpy_fn
10
+ from ..decorators._wrap import wrap
11
+
12
+
13
+ @numpy_fn
14
+ def euclidean_distance(uu, vv, axis=0):
15
+ """
16
+ Compute the Euclidean distance between two arrays along the specified axis.
17
+
18
+ Parameters
19
+ ----------
20
+ uu : array_like
21
+ First input array.
22
+ vv : array_like
23
+ Second input array.
24
+ axis : int, optional
25
+ Axis along which to compute the distance. Default is 0.
26
+
27
+ Returns
28
+ -------
29
+ array_like
30
+ Euclidean distance array along the specified axis.
31
+ """
32
+ uu, vv = np.atleast_1d(uu), np.atleast_1d(vv)
33
+
34
+ if uu.shape[axis] != vv.shape[axis]:
35
+ raise ValueError(f"Shape along axis {axis} must match")
36
+
37
+ uu = np.moveaxis(uu, axis, 0)
38
+ vv = np.moveaxis(vv, axis, 0)
39
+
40
+ uu_tgt_shape = [uu.shape[0]] + list(uu.shape[1:]) + [1] * (vv.ndim - 1)
41
+ vv_tgt_shape = [vv.shape[0]] + [1] * (uu.ndim - 1) + list(vv.shape[1:])
42
+
43
+ uu_reshaped = uu.reshape(uu_tgt_shape)
44
+ vv_reshaped = vv.reshape(vv_tgt_shape)
45
+
46
+ diff = uu_reshaped - vv_reshaped
47
+ euclidean_dist = np.sqrt(np.sum(diff**2, axis=axis))
48
+ return euclidean_dist
49
+
50
+
51
+ @wrap
52
+ def cdist(*args, **kwargs):
53
+ return _distance.cdist(*args, **kwargs)
54
+
55
+
56
+ edist = euclidean_distance
57
+
58
+ # Optionally, manually copy the original docstring
59
+ # euclidean_distance.__doc__ = _distance.euclidean.__doc__
60
+ cdist.__doc__ = _distance.cdist.__doc__
61
+
62
+
63
+ # EOF
@@ -0,0 +1,64 @@
1
+ #!./env/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-09-26 19:41:01 (ywatanabe)"
4
+ # /home/ywatanabe/proj/scitex/src/scitex/linalg/_geometric_median.py
5
+
6
+
7
+ """
8
+ This script does XYZ.
9
+ """
10
+
11
+ import torch
12
+ from geom_median.torch import compute_geometric_median
13
+ from ..decorators import torch_fn
14
+
15
+ # @torch_fn
16
+ # def geometric_median(xx, dim=-1):
17
+ # indi = [slice(None) for _ in range(xx.ndim)]
18
+ # indi[dim] = slice(None)
19
+ # xx[indi] # how can I loop over the designated dim??
20
+
21
+ # return compute_geometric_median(xx).median
22
+
23
+
24
+ @torch_fn
25
+ def geometric_median(xx, dim=-1):
26
+
27
+ # Ensure dim is a positive index
28
+ if dim < 0:
29
+ dim = xx.ndim + dim
30
+ dim = torch.tensor(dim).to(xx.device)
31
+
32
+ # Create a list of slices to access all elements along each dimension
33
+ indi = [slice(None)] * xx.ndim
34
+
35
+ # Get the size of the dimension we want to loop over
36
+ dim_size = xx.shape[dim]
37
+
38
+ points = []
39
+ # Loop over each index in the specified dimension
40
+ for i in range(dim_size):
41
+ indi[dim] = i
42
+ # Set the slice for the current index in the target dimension
43
+ slice_data = xx[tuple(indi)] # Extract the data for the current index
44
+ points.append(slice_data)
45
+
46
+ out = compute_geometric_median(points).median
47
+
48
+ return out
49
+
50
+
51
+ if __name__ == "__main__":
52
+ # # Argument Parser
53
+ # import argparse
54
+ # parser = argparse.ArgumentParser(description='')
55
+ # parser.add_argument('--var', '-v', type=int, default=1, help='')
56
+ # parser.add_argument('--flag', '-f', action='store_true', default=False, help='')
57
+ # args = parser.parse_args()
58
+
59
+ # Main
60
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, verbose=False)
61
+ main()
62
+ scitex.gen.close(CONFIG, verbose=False, notify=False)
63
+
64
+ # EOF
scitex/linalg/_misc.py ADDED
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2023-03-17 21:30:11 (ywatanabe)"
4
+
5
+ import numpy as np
6
+ import sympy
7
+ from scipy.linalg import norm
8
+
9
+
10
+ def cosine(v1, v2):
11
+ if np.isnan(v1).any():
12
+ return np.nan
13
+ if np.isnan(v2).any():
14
+ return np.nan
15
+ return np.dot(v1, v2) / (norm(v1) * norm(v2))
16
+
17
+
18
+ def nannorm(v, axis=-1):
19
+ if np.isnan(v).any():
20
+ return np.nan
21
+ else:
22
+ return norm(v, axis=axis)
23
+
24
+
25
+ def rebase_a_vec(v, v_base):
26
+ def production_vector(v1, v0):
27
+ """
28
+ production_vector(np.array([3,4]), np.array([10,0])) # np.array([3, 0])
29
+ """
30
+ return norm(v1) * cosine(v1, v0) * v0 / norm(v0)
31
+
32
+ if np.isnan(v).any():
33
+ return np.nan
34
+ if np.isnan(v_base).any():
35
+ return np.nan
36
+ v_prod = production_vector(v, v_base)
37
+ sign = np.sign(cosine(v, v_base))
38
+ return sign * norm(v_prod)
39
+
40
+
41
+ def three_line_lengths_to_coords(aa, bb, cc):
42
+ """
43
+ O, A, B = three_line_lengths_to_coords(2, np.sqrt(3), 1)
44
+ print(O, A, B)
45
+ """
46
+
47
+ # Definition
48
+ a1 = sympy.Symbol("a1")
49
+ b1 = sympy.Symbol("b1")
50
+ b2 = sympy.Symbol("b2")
51
+
52
+ a1 = aa
53
+ # b1 = bb
54
+
55
+ # Calculates
56
+ cos = (aa**2 + bb**2 - cc**2) / (2 * aa * bb)
57
+ sin = np.sqrt(1 - cos**2)
58
+ S1 = 1 / 2 * aa * bb * sin
59
+ S2 = 1 / 2 * aa * b2
60
+
61
+ # Solves
62
+ b2 = sympy.solve(S1 - S2)[0]
63
+ b1 = bb * cos
64
+
65
+ # tan1 = b2 / b1
66
+ # tan2 = sin/cos
67
+
68
+ # b1 = sympy.solve(tan1-tan2)[0]
69
+ O = (0, 0, 0)
70
+ A = (a1, 0, 0)
71
+ B = (b1, b2, 0)
72
+
73
+ return O, A, B
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-03-30 07:27:27 (ywatanabe)"
4
+
5
+ import torch
6
+ import torch.nn as nn
7
+ import torch.nn.functional as F
8
+
9
+
10
+ class AxiswiseDropout(nn.Module):
11
+ def __init__(self, dropout_prob=0.5, dim=1):
12
+ super(AxiswiseDropout, self).__init__()
13
+ self.dropout_prob = dropout_prob
14
+ self.dim = dim
15
+
16
+ def forward(self, x):
17
+ if self.training:
18
+ sizes = [s if i == self.dim else 1 for i, s in enumerate(x.size())]
19
+ dropout_mask = F.dropout(
20
+ torch.ones(*sizes, device=x.device, dtype=x.dtype),
21
+ self.dropout_prob,
22
+ True,
23
+ )
24
+
25
+ # Expand the mask to the size of the input tensor and apply it
26
+ return x * dropout_mask.expand_as(x)
27
+ return x