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,257 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-07 18:58:55 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/gen/_inspect_module.py
5
+
6
+ import inspect
7
+ import sys
8
+ import warnings
9
+ from typing import Any, List, Optional, Set, Union
10
+
11
+ import scitex
12
+ import pandas as pd
13
+
14
+
15
+ def inspect_module(
16
+ module: Union[str, Any],
17
+ columns: List[str] = ["Type", "Name", "Docstring", "Depth"],
18
+ prefix: str = "",
19
+ max_depth: int = 5,
20
+ visited: Optional[Set[str]] = None,
21
+ docstring: bool = False,
22
+ tree: bool = True,
23
+ current_depth: int = 0,
24
+ print_output: bool = False,
25
+ skip_depwarnings: bool = True,
26
+ drop_duplicates: bool = True,
27
+ root_only: bool = False,
28
+ ) -> pd.DataFrame:
29
+ return _inspect_module(
30
+ module=module,
31
+ prefix=prefix,
32
+ max_depth=max_depth,
33
+ visited=visited,
34
+ docstring=docstring,
35
+ tree=tree,
36
+ current_depth=current_depth,
37
+ print_output=print_output,
38
+ skip_depwarnings=skip_depwarnings,
39
+ drop_duplicates=drop_duplicates,
40
+ root_only=root_only,
41
+ )[columns]
42
+
43
+
44
+ def _inspect_module(
45
+ module: Union[str, Any],
46
+ columns: List[str] = ["Type", "Name", "Docstring", "Depth"],
47
+ prefix: str = "",
48
+ max_depth: int = 5,
49
+ visited: Optional[Set[str]] = None,
50
+ docstring: bool = False,
51
+ tree: bool = True,
52
+ current_depth: int = 0,
53
+ print_output: bool = False,
54
+ skip_depwarnings: bool = True,
55
+ drop_duplicates: bool = True,
56
+ root_only: bool = False,
57
+ ) -> pd.DataFrame:
58
+ """List the contents of a module recursively and return as a DataFrame.
59
+
60
+ Example
61
+ -------
62
+ >>>
63
+ >>> df = inspect_module(scitex)
64
+ >>> print(df)
65
+ Type Name Docstring Depth
66
+ 0 M scitex Module description 0
67
+ 1 F scitex.some_function Function description 1
68
+ 2 C scitex.SomeClass Class description 1
69
+ ...
70
+
71
+ Parameters
72
+ ----------
73
+ module : Union[str, Any]
74
+ Module to inspect (string name or actual module)
75
+ columns : List[str]
76
+ Columns to include in output DataFrame
77
+ prefix : str
78
+ Prefix for nested modules
79
+ max_depth : int
80
+ Maximum recursion depth
81
+ visited : Optional[Set[str]]
82
+ Set of visited modules to prevent cycles
83
+ docstring : bool
84
+ Whether to include docstrings
85
+ tree : bool
86
+ Whether to display tree structure
87
+ current_depth : int
88
+ Current recursion depth
89
+ print_output : bool
90
+ Whether to print results
91
+ skip_depwarnings : bool
92
+ Whether to skip DeprecationWarnings
93
+ drop_duplicates : bool
94
+ Whether to remove duplicate module entries
95
+ root_only : bool
96
+ Whether to show only root-level modules
97
+
98
+ Returns
99
+ -------
100
+ pd.DataFrame
101
+ Module structure with specified columns
102
+ """
103
+ if skip_depwarnings:
104
+ warnings.filterwarnings("ignore", category=DeprecationWarning)
105
+ warnings.filterwarnings("ignore", category=UserWarning)
106
+
107
+ if isinstance(module, str):
108
+ try:
109
+ module = __import__(module)
110
+ except ImportError as err:
111
+ print(f"Error importing module {module}: {err}")
112
+ return pd.DataFrame(columns=columns)
113
+
114
+ if visited is None:
115
+ visited = set()
116
+
117
+ content_list = []
118
+
119
+ try:
120
+ module_name = getattr(module, "__name__", "")
121
+ if max_depth < 0 or module_name in visited:
122
+ return pd.DataFrame(content_list, columns=columns)
123
+
124
+ visited.add(module_name)
125
+ base_name = module_name.split(".")[-1]
126
+ full_path = f"{prefix}.{base_name}" if prefix else base_name
127
+
128
+ try:
129
+ module_version = (
130
+ f" (v{module.__version__})" if hasattr(module, "__version__") else ""
131
+ )
132
+ content_list.append(("M", full_path, module_version, current_depth))
133
+ except Exception:
134
+ pass
135
+
136
+ for name, obj in inspect.getmembers(module):
137
+ if name.startswith("_"):
138
+ continue
139
+
140
+ obj_name = f"{full_path}.{name}"
141
+
142
+ if inspect.ismodule(obj):
143
+ if obj.__name__ not in visited:
144
+ content_list.append(
145
+ (
146
+ "M",
147
+ obj_name,
148
+ obj.__doc__ if docstring and obj.__doc__ else "",
149
+ current_depth,
150
+ )
151
+ )
152
+ try:
153
+ sub_df = _inspect_module(
154
+ obj,
155
+ columns=columns,
156
+ prefix=full_path,
157
+ max_depth=max_depth - 1,
158
+ visited=visited,
159
+ docstring=docstring,
160
+ tree=tree,
161
+ current_depth=current_depth + 1,
162
+ print_output=print_output,
163
+ skip_depwarnings=skip_depwarnings,
164
+ drop_duplicates=drop_duplicates,
165
+ root_only=root_only,
166
+ )
167
+ if sub_df is not None and not sub_df.empty:
168
+ content_list.extend(sub_df.values.tolist())
169
+ except Exception as err:
170
+ print(f"Error processing module {obj_name}: {err}")
171
+ elif inspect.isfunction(obj):
172
+ content_list.append(
173
+ (
174
+ "F",
175
+ obj_name,
176
+ obj.__doc__ if docstring and obj.__doc__ else "",
177
+ current_depth,
178
+ )
179
+ )
180
+ elif inspect.isclass(obj):
181
+ content_list.append(
182
+ (
183
+ "C",
184
+ obj_name,
185
+ obj.__doc__ if docstring and obj.__doc__ else "",
186
+ current_depth,
187
+ )
188
+ )
189
+
190
+ except Exception as err:
191
+ print(f"Error processing module structure: {err}")
192
+ return pd.DataFrame(columns=columns)
193
+
194
+ df = pd.DataFrame(content_list, columns=columns)
195
+
196
+ if drop_duplicates:
197
+ df = df.drop_duplicates(subset="Name", keep="first")
198
+
199
+ if root_only:
200
+ mask = df["Name"].str.count(r"\.") <= 1
201
+ df = df[mask]
202
+
203
+ if tree and current_depth == 0 and print_output:
204
+ _print_module_contents(df)
205
+
206
+ return df[columns]
207
+
208
+
209
+ def _print_module_contents(df: pd.DataFrame) -> None:
210
+ """Prints module contents in tree structure.
211
+
212
+ Parameters
213
+ ----------
214
+ df : pd.DataFrame
215
+ DataFrame containing module structure
216
+ """
217
+ df_sorted = df.sort_values(["Depth", "Name"])
218
+ depth_last = {}
219
+
220
+ for index, row in df_sorted.iterrows():
221
+ depth = row["Depth"]
222
+ is_last = (
223
+ index == len(df_sorted) - 1 or df_sorted.iloc[index + 1]["Depth"] <= depth
224
+ )
225
+
226
+ prefix = ""
227
+ for d in range(depth):
228
+ if d == depth - 1:
229
+ prefix += "└── " if is_last else "├── "
230
+ else:
231
+ prefix += " " if depth_last.get(d, False) else "│ "
232
+
233
+ print(f"{prefix}({row['Type']}) {row['Name']}{row['Docstring']}")
234
+ depth_last[depth] = is_last
235
+
236
+
237
+ if __name__ == "__main__":
238
+
239
+ sys.setrecursionlimit(10_000)
240
+ df = inspect_module(scitex, docstring=True, print_output=False, columns=["Name"])
241
+ print(scitex.pd.round(df))
242
+ # Name
243
+ # 0 scitex
244
+ # 1 scitex.ai
245
+ # 3 scitex.ai.ClassificationReporter
246
+ # 4 scitex.ai.ClassifierServer
247
+ # 5 scitex.ai.EarlyStopping
248
+ # ... ...
249
+ # 5373 scitex.typing
250
+ # 5375 scitex.typing.Any
251
+ # 5376 scitex.typing.Iterable
252
+ # 5377 scitex.web
253
+ # 5379 scitex.web.summarize_url
254
+
255
+ # [5361 rows x 1 columns]
256
+
257
+ # EOF
@@ -0,0 +1,12 @@
1
+ def is_ipython():
2
+ try:
3
+ __IPYTHON__
4
+ ipython_mode = True
5
+ except NameError:
6
+ ipython_mode = False
7
+
8
+ return ipython_mode
9
+
10
+
11
+ def is_script():
12
+ return not is_ipython()
scitex/gen/_less.py ADDED
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-03 02:11:18 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/gen/_less.py
5
+ #!./env/bin/python3
6
+ # -*- coding: utf-8 -*-
7
+ # Time-stamp: "2024-04-21 12:05:35"
8
+ # Author: Yusuke Watanabe (ywata1989@gmail.com)
9
+
10
+ """
11
+ This script does XYZ.
12
+ """
13
+
14
+ import sys
15
+
16
+ import matplotlib.pyplot as plt
17
+ import scitex
18
+
19
+ # Imports
20
+
21
+ # # Config
22
+ # CONFIG = scitex.gen.load_configs()
23
+
24
+
25
+ # Functions
26
+ def less(output):
27
+ """
28
+ Print the given output using `less` in an IPython or IPdb session.
29
+ """
30
+ import os
31
+ import tempfile
32
+
33
+ from IPython import get_ipython
34
+
35
+ # Create a temporary file to hold the output
36
+ with tempfile.NamedTemporaryFile(delete=False, mode="w+t") as tmpfile:
37
+ # Write the output to the temporary file
38
+ tmpfile.write(output)
39
+ tmpfile_name = tmpfile.name
40
+
41
+ # Use IPython's system command access to pipe the content of the temporary file to `less`
42
+ get_ipython().system(f"less {tmpfile_name}")
43
+
44
+ # Clean up the temporary file
45
+ os.remove(tmpfile_name)
46
+
47
+
48
+ # EOF
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-03 02:11:54 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/gen/_list_packages.py
5
+ """
6
+ Functionality:
7
+ * Lists and analyzes installed Python packages and their modules
8
+ Input:
9
+ * None (uses importlib.metadata to get installed packages)
10
+ Output:
11
+ * DataFrame containing package module information
12
+ Prerequisites:
13
+ * importlib.metadata (Python 3.8+) or importlib_metadata, pandas
14
+ """
15
+
16
+ import sys
17
+ from typing import Optional
18
+
19
+ import pandas as pd
20
+
21
+ try:
22
+ # Python 3.8+ standard library
23
+ from importlib.metadata import distributions
24
+ except ImportError:
25
+ # Fallback for older Python versions
26
+ from importlib_metadata import distributions
27
+
28
+ from ._inspect_module import inspect_module
29
+
30
+
31
+ def list_packages(
32
+ max_depth: int = 1,
33
+ root_only: bool = True,
34
+ skip_errors: bool = True,
35
+ verbose: bool = False,
36
+ ) -> pd.DataFrame:
37
+ """Lists all installed packages and their modules."""
38
+ sys.setrecursionlimit(10_000)
39
+
40
+ # Skip known problematic packages
41
+ skip_patterns = [
42
+ "nvidia",
43
+ "cuda",
44
+ "pillow",
45
+ "fonttools",
46
+ "ipython",
47
+ "jsonschema",
48
+ "readme",
49
+ "importlib-metadata",
50
+ ]
51
+
52
+ # Get installed packages, excluding problematic ones
53
+ installed_packages = [
54
+ dist.name.replace("-", "_")
55
+ for dist in distributions()
56
+ if not any(pat in dist.name.lower() for pat in skip_patterns)
57
+ ]
58
+
59
+ # Focus on commonly used packages first
60
+ safelist = [
61
+ "numpy",
62
+ "pandas",
63
+ "scipy",
64
+ "matplotlib",
65
+ "sklearn",
66
+ "torch",
67
+ "tensorflow",
68
+ "keras",
69
+ "xarray",
70
+ "dask",
71
+ "pytest",
72
+ "requests",
73
+ "flask",
74
+ "django",
75
+ "seaborn",
76
+ ]
77
+
78
+ # Prioritize safelist packages
79
+ installed_packages = [pkg for pkg in installed_packages if pkg in safelist] + [
80
+ pkg for pkg in installed_packages if pkg not in safelist
81
+ ]
82
+
83
+ all_dfs = []
84
+ for package_name in installed_packages:
85
+ try:
86
+ df = inspect_module(
87
+ package_name,
88
+ docstring=False, # Speed up by skipping docstrings
89
+ print_output=False,
90
+ columns=["Name"],
91
+ root_only=root_only,
92
+ max_depth=max_depth,
93
+ skip_depwarnings=True,
94
+ )
95
+ if not df.empty:
96
+ all_dfs.append(df)
97
+ except Exception as err:
98
+ if verbose:
99
+ print(f"Error processing {package_name}: {err}")
100
+ if not skip_errors:
101
+ raise
102
+
103
+ if not all_dfs:
104
+ return pd.DataFrame(columns=["Name"])
105
+
106
+ combined_df = pd.concat(all_dfs, ignore_index=True)
107
+ return combined_df.drop_duplicates().sort_values("Name")
108
+
109
+
110
+ def main() -> Optional[int]:
111
+ """Main function for testing package listing functionality."""
112
+ df = list_packages(verbose=True)
113
+ __import__("ipdb").set_trace()
114
+ return 0
115
+
116
+
117
+ if __name__ == "__main__":
118
+ import matplotlib.pyplot as plt
119
+ import scitex
120
+
121
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(
122
+ sys,
123
+ plt,
124
+ verbose=False,
125
+ agg=True,
126
+ )
127
+
128
+ exit_status = main()
129
+
130
+ scitex.gen.close(
131
+ CONFIG,
132
+ verbose=False,
133
+ sys=sys,
134
+ notify=False,
135
+ message="",
136
+ exit_status=exit_status,
137
+ )
138
+
139
+ # EOF
scitex/gen/_mat2py.py ADDED
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-03 18:57:14 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/gen/_mat2py.py
5
+
6
+ """Helper script for loading .mat files into python.
7
+ For .mat with multiple variables use mat2dict to get return dictionary with .mat variables.
8
+ For .mat with 1 matrix use mat2npa to return np.array
9
+ For .mat with 1 matrix use mat2npy to save np.array to .npy
10
+ For multiple .mat files with 1 matrix use dir2npy to save 1 np.array of each .mat to .npy
11
+
12
+
13
+ Examples:
14
+ mat2py.mat2npa(fname = '/vol/ccnlab-scratch1/julber/chill_nn_regression/data/chill_wav_time_16kHz.mat', typ = np.float32)
15
+ mat2py.dir2npa(dir = '/vol/ccnlab-scratch1/julber/phoneme_decoding/data/', typ = np.float32, regex = '*xdata')
16
+ mat2py.dir2npa(dir = '/vol/ccnlab-scratch1/julber/phoneme_decoding/data/', typ = np.int32, regex = '*ylabels')
17
+
18
+
19
+ September 07, 2017
20
+ JB"""
21
+
22
+ import numpy as np
23
+ import h5py
24
+ from glob import glob as _glob
25
+ import os
26
+ from scipy.io import loadmat
27
+
28
+
29
+ def mat2dict(fname):
30
+ """Function returns a dictionary with .mat variables"""
31
+ try:
32
+ D = h5py.File(fname)
33
+ d = {}
34
+ for key, value in D.items():
35
+ d[key] = value
36
+ d["__hdf__"] = True
37
+ except:
38
+ d = loadmat(fname)
39
+ d["__hdf__"] = False
40
+ return d
41
+
42
+
43
+ def keys2npa(d, typ):
44
+ import pdb
45
+
46
+ pdb.set_trace()
47
+ d2 = {}
48
+ for key in public_keys(d):
49
+ x = np.array(d[key], dtype=typ)
50
+ if d["__hdf__"]:
51
+ x = np.squeeze(np.swapaxes(x, 0, -1))
52
+ assert type(x.flatten()[0]) == typ
53
+ d2[key] = x.copy()
54
+ return d2
55
+
56
+
57
+ def public_keys(d):
58
+ return [k for k in d.keys() if not k.startswith("_")]
59
+
60
+
61
+ def mat2npa(fname, typ):
62
+ """Function returns np array from 1st entry in .mat file"""
63
+ import pdb
64
+
65
+ pdb.set_trace()
66
+ d = keys2npa(mat2dict(fname), typ)
67
+ return d[d.keys()[0]]
68
+
69
+
70
+ def save_npa(fname, x):
71
+ np.save(fname, x)
72
+
73
+
74
+ def mat2npy(fname, typ):
75
+ """Function save np array from 1st entry in .mat file to .npy file"""
76
+ x = mat2npa(fname, typ)
77
+ save_npa(fname=fname.replace(".mat", ""), x=x)
78
+
79
+
80
+ def dir2npy(dir, typ, regex="*"):
81
+ """Function saves np array from 1st entry in each regex + .mat file in dir"""
82
+ os.chdir(dir)
83
+ for fname in _glob(regex + ".mat"):
84
+ print("File " + fname + " to" + " .npa")
85
+ mat2npy(dir + fname, typ)
86
+
87
+
88
+ # EOF
scitex/gen/_norm.py ADDED
@@ -0,0 +1,170 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-19 01:09:55 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/gen/_norm.py
5
+
6
+ THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/gen/_norm.py"
7
+
8
+ import torch
9
+
10
+ from ..decorators import torch_fn
11
+ from ..torch import nanstd
12
+
13
+
14
+ @torch_fn
15
+ def to_z(x, axis=-1, dim=None, device="cuda"):
16
+ """Standardizes tensor to zero mean and unit variance along specified dimension.
17
+
18
+ Parameters
19
+ ----------
20
+ xx : torch.Tensor
21
+ Input tensor
22
+ dim : int, optional
23
+ Dimension along which to standardize (preferred)
24
+ axis : int, optional
25
+ Alternative to dim for numpy compatibility
26
+ device : str
27
+ Device to use for computation
28
+
29
+ Returns
30
+ -------
31
+ torch.Tensor
32
+ Z-scored tensor
33
+ """
34
+ return (x - x.mean(dim=dim, keepdim=True)) / x.std(dim=dim, keepdim=True)
35
+
36
+
37
+ @torch_fn
38
+ def to_nanz(x, axis=-1, dim=None, device="cuda"):
39
+ """Standardizes tensor handling NaN values along specified dimension.
40
+
41
+ Parameters
42
+ ----------
43
+ xx : torch.Tensor
44
+ Input tensor
45
+ dim : int, optional
46
+ Dimension along which to standardize (preferred)
47
+ axis : int, optional
48
+ Alternative to dim for numpy compatibility
49
+ device : str
50
+ Device to use for computation
51
+
52
+ Returns
53
+ -------
54
+ torch.Tensor
55
+ Z-scored tensor with NaN handling
56
+ """
57
+ nan_mean = torch.nanmean(x, dim=dim, keepdim=True)
58
+ nan_std = nanstd(x, dim=dim, keepdim=True)
59
+ return (x - nan_mean) / nan_std
60
+
61
+
62
+ @torch_fn
63
+ def to_01(x, axis=-1, dim=None, device="cuda"):
64
+ """Min-max scales tensor to [0, 1] range along specified dimension.
65
+
66
+ Parameters
67
+ ----------
68
+ xx : torch.Tensor
69
+ Input tensor
70
+ dim : int, optional
71
+ Dimension along which to scale (preferred)
72
+ axis : int, optional
73
+ Alternative to dim for numpy compatibility
74
+ device : str
75
+ Device to use for computation
76
+
77
+ Returns
78
+ -------
79
+ torch.Tensor
80
+ Min-max scaled tensor
81
+ """
82
+ x_min = x.min(dim=dim, keepdim=True)[0]
83
+ x_max = x.max(dim=dim, keepdim=True)[0]
84
+ return (x - x_min) / (x_max - x_min)
85
+
86
+
87
+ @torch_fn
88
+ def to_nan01(x, axis=-1, dim=None, device="cuda"):
89
+ """Min-max scales tensor handling NaN values along specified dimension.
90
+
91
+ Parameters
92
+ ----------
93
+ xx : torch.Tensor
94
+ Input tensor
95
+ dim : int, optional
96
+ Dimension along which to scale (preferred)
97
+ axis : int, optional
98
+ Alternative to dim for numpy compatibility
99
+ device : str
100
+ Device to use for computation
101
+
102
+ Returns
103
+ -------
104
+ torch.Tensor
105
+ Min-max scaled tensor with NaN handling
106
+ """
107
+ x_min = torch.nanmin(x, dim=dim, keepdim=True)[0]
108
+ x_max = torch.nanmax(x, dim=dim, keepdim=True)[0]
109
+ return (x - x_min) / (x_max - x_min)
110
+
111
+
112
+ @torch_fn
113
+ def unbias(x, axis=-1, dim=None, fn="mean", device="cuda"):
114
+ """Removes bias from tensor using specified method along dimension.
115
+
116
+ Parameters
117
+ ----------
118
+ xx : torch.Tensor
119
+ Input tensor
120
+ dim : int, optional
121
+ Dimension along which to unbias (preferred)
122
+ axis : int, optional
123
+ Alternative to dim for numpy compatibility
124
+ fn : str
125
+ Method to use for unbiasing ('mean' or 'min')
126
+ device : str
127
+ Device to use for computation
128
+
129
+ Returns
130
+ -------
131
+ torch.Tensor
132
+ Unbiased tensor
133
+ """
134
+ if fn == "mean":
135
+ return x - x.mean(dim=dim, keepdims=True)
136
+ if fn == "min":
137
+ return x - x.min(dim=dim, keepdims=True)[0]
138
+ raise ValueError(f"Unsupported unbiasing method: {fn}")
139
+
140
+
141
+ @torch_fn
142
+ def clip_perc(x, lower_perc=2.5, upper_perc=97.5, axis=-1, dim=None, device="cuda"):
143
+ """Clips tensor values between specified percentiles along dimension.
144
+
145
+ Parameters
146
+ ----------
147
+ x : torch.Tensor
148
+ Input tensor
149
+ lower_perc : float
150
+ Lower percentile (0-100)
151
+ upper_perc : float
152
+ Upper percentile (0-100)
153
+ dim : int
154
+ Dimension along which to compute percentiles (preferred)
155
+ axis : int
156
+ Alternative to dim for numpy compatibility
157
+ device : str
158
+ Device to use for computation
159
+
160
+ Returns
161
+ -------
162
+ torch.Tensor
163
+ Clipped tensor
164
+ """
165
+ lower = torch.quantile(x, lower_perc / 100, dim=dim, keepdim=True)
166
+ upper = torch.quantile(x, upper_perc / 100, dim=dim, keepdim=True)
167
+ return torch.clamp(x, min=lower, max=upper)
168
+
169
+
170
+ # EOF