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,72 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+ import scitex
16
+
17
+ def _format_eventplot(id, tracked_dict, kwargs):
18
+ """Format data from an eventplot call."""
19
+ # Check if tracked_dict is empty or not a dictionary
20
+ if not tracked_dict or not isinstance(tracked_dict, dict):
21
+ return pd.DataFrame()
22
+
23
+ # Get the args from tracked_dict
24
+ args = tracked_dict.get('args', [])
25
+
26
+ # Eventplot displays multiple sets of events as parallel lines
27
+ if len(args) >= 1:
28
+ positions = args[0]
29
+
30
+ try:
31
+ # Try using scitex.pd.force_df if available
32
+ try:
33
+ import scitex.pd
34
+
35
+ # If positions is a single array
36
+ if isinstance(
37
+ positions, (list, np.ndarray)
38
+ ) and not isinstance(positions[0], (list, np.ndarray)):
39
+ return pd.DataFrame({f"{id}_eventplot_events": positions})
40
+
41
+ # If positions is a list of arrays (multiple event sets)
42
+ elif isinstance(positions, (list, np.ndarray)):
43
+ data = {}
44
+ for i, events in enumerate(positions):
45
+ data[f"{id}_eventplot_events{i:02d}"] = events
46
+
47
+ # Use force_df to handle different length arrays
48
+ return scitex.pd.force_df(data)
49
+
50
+ except (ImportError, AttributeError):
51
+ # Fall back to pandas with manual Series creation
52
+ # If positions is a single array
53
+ if isinstance(
54
+ positions, (list, np.ndarray)
55
+ ) and not isinstance(positions[0], (list, np.ndarray)):
56
+ return pd.DataFrame({f"{id}_eventplot_events": positions})
57
+
58
+ # If positions is a list of arrays (multiple event sets)
59
+ elif isinstance(positions, (list, np.ndarray)):
60
+ # Create a DataFrame where each column is a Series that can handle varying lengths
61
+ df = pd.DataFrame()
62
+ for i, events in enumerate(positions):
63
+ df[f"{id}_eventplot_events{i:02d}"] = pd.Series(events)
64
+ return df
65
+ except Exception as e:
66
+ # If all else fails, return an empty DataFrame
67
+ import warnings
68
+
69
+ warnings.warn(f"Error formatting eventplot data: {str(e)}")
70
+ return pd.DataFrame()
71
+
72
+ return pd.DataFrame()
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_fill(id, tracked_dict, kwargs):
16
+ """Format data from a fill call."""
17
+ # Check if tracked_dict is empty or not a dictionary
18
+ if not tracked_dict or not isinstance(tracked_dict, dict):
19
+ return pd.DataFrame()
20
+
21
+ # Get the args from tracked_dict
22
+ args = tracked_dict.get('args', [])
23
+
24
+ # Fill creates a polygon based on points
25
+ if len(args) >= 2:
26
+ # First arg is x, remaining args are y values
27
+ x = args[0]
28
+ data = {f"{id}_fill_x": x}
29
+
30
+ for i, y in enumerate(args[1:]):
31
+ data[f"{id}_fill_y{i:02d}"] = y
32
+
33
+ return pd.DataFrame(data)
34
+ return pd.DataFrame()
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_fill_between(id, tracked_dict, kwargs):
16
+ """Format data from a fill_between call."""
17
+ # Check if tracked_dict is empty or not a dictionary
18
+ if not tracked_dict or not isinstance(tracked_dict, dict):
19
+ return pd.DataFrame()
20
+
21
+ # Get the args from tracked_dict
22
+ args = tracked_dict.get('args', [])
23
+
24
+ # Typical args: x, y1, y2
25
+ if len(args) >= 3:
26
+ x, y1, y2 = args[:3]
27
+
28
+ df = pd.DataFrame(
29
+ {
30
+ f"{id}_fill_between_x": x,
31
+ f"{id}_fill_between_y1": y1,
32
+ f"{id}_fill_between_y2": y2,
33
+ }
34
+ )
35
+ return df
36
+ return pd.DataFrame()
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ def _format_hist(id, tracked_dict, kwargs):
17
+ """
18
+ Format data from a hist call as a bar plot representation.
19
+
20
+ This formatter extracts both the raw data and the binned data from histogram plots,
21
+ returning them in a format that can be visualized as a bar plot.
22
+
23
+ Args:
24
+ id (str): Identifier for the plot
25
+ tracked_dict (dict): Dictionary containing tracked data
26
+ kwargs (dict): Keyword arguments passed to hist
27
+
28
+ Returns:
29
+ pd.DataFrame: DataFrame containing both raw data and bin information
30
+ """
31
+ # Check if tracked_dict is empty or not a dictionary
32
+ if not tracked_dict or not isinstance(tracked_dict, dict):
33
+ return pd.DataFrame()
34
+
35
+ # Get the args from tracked_dict
36
+ args = tracked_dict.get('args', [])
37
+
38
+ # Check if histogram result (bin counts and edges) is available in tracked_dict
39
+ hist_result = tracked_dict.get('hist_result', None)
40
+
41
+ columns = {}
42
+
43
+ # Extract raw data if available
44
+ if len(args) >= 1:
45
+ x = args[0]
46
+ columns[f"{id}_raw_data"] = x
47
+
48
+ # If we have histogram result (counts and bin edges)
49
+ if hist_result is not None:
50
+ counts, bin_edges = hist_result
51
+
52
+ # Calculate bin centers for bar plot representation
53
+ bin_centers = 0.5 * (bin_edges[:-1] + bin_edges[1:])
54
+ bin_widths = bin_edges[1:] - bin_edges[:-1]
55
+
56
+ # Add bin information to DataFrame
57
+ columns[f"{id}_bin_centers"] = bin_centers
58
+ columns[f"{id}_bin_counts"] = counts
59
+ columns[f"{id}_bin_widths"] = bin_widths
60
+ columns[f"{id}_bin_edges_left"] = bin_edges[:-1]
61
+ columns[f"{id}_bin_edges_right"] = bin_edges[1:]
62
+
63
+ # Create DataFrame with aligned length
64
+ max_length = max(len(value) for value in columns.values())
65
+ for key, value in list(columns.items()):
66
+ if len(value) < max_length:
67
+ # Pad with NaN if needed
68
+ if isinstance(value, np.ndarray):
69
+ columns[key] = np.pad(value, (0, max_length - len(value)),
70
+ mode='constant', constant_values=np.nan)
71
+ else:
72
+ padded = list(value) + [np.nan] * (max_length - len(value))
73
+ columns[key] = np.array(padded)
74
+
75
+ # Return DataFrame or empty DataFrame if no data
76
+ if columns:
77
+ return pd.DataFrame(columns)
78
+
79
+ return pd.DataFrame()
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_imshow(id, tracked_dict, kwargs):
16
+ """Format data from an imshow call."""
17
+
18
+ if tracked_dict.get("image_df") is not None:
19
+ return tracked_dict.get("image_df")
20
+
21
+ # # Placeholder implementation
22
+ # # Imshow displays an image (2D array)
23
+ # if len(args) >= 1:
24
+ # img = args[0]
25
+
26
+ # # Convert 2D image to long format
27
+ # if isinstance(img, np.ndarray) and img.ndim == 2:
28
+ # rows, cols = img.shape
29
+ # row_indices, col_indices = np.meshgrid(
30
+ # range(rows), range(cols), indexing="ij"
31
+ # )
32
+
33
+ # df = pd.DataFrame(
34
+ # {
35
+ # f"{id}_imshow_row": row_indices.flatten(),
36
+ # f"{id}_imshow_col": col_indices.flatten(),
37
+ # f"{id}_imshow_value": img.flatten(),
38
+ # }
39
+ # )
40
+ # return df
41
+
42
+ # # Handle RGB/RGBA images
43
+ # elif isinstance(img, np.ndarray) and img.ndim == 3:
44
+ # rows, cols, channels = img.shape
45
+ # row_indices, col_indices = np.meshgrid(
46
+ # range(rows), range(cols), indexing="ij"
47
+ # )
48
+
49
+ # data = {
50
+ # f"{id}_imshow_row": row_indices.flatten(),
51
+ # f"{id}_imshow_col": col_indices.flatten(),
52
+ # }
53
+
54
+ # # Add channel data
55
+ # for c in range(channels):
56
+ # data[f"{id}_imshow_channel{c}"] = img[:, :, c].flatten()
57
+
58
+ # return pd.DataFrame(data)
59
+ # return pd.DataFrame()
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_imshow2d(id, tracked_dict, kwargs):
16
+ """Format data from an imshow2d call."""
17
+ # Check if tracked_dict is empty or not a dictionary
18
+ if not tracked_dict or not isinstance(tracked_dict, dict):
19
+ return pd.DataFrame()
20
+
21
+ # Get the args from tracked_dict
22
+ args = tracked_dict.get('args', [])
23
+
24
+ # Extract data if available
25
+ if len(args) >= 1 and isinstance(args[0], pd.DataFrame):
26
+ df = args[0].copy()
27
+ # Add prefixes to columns and index if needed
28
+ # df.columns = [f"{id}_imshow2d_{col}" for col in df.columns]
29
+ # df.index = [f"{id}_imshow2d_{idx}" for idx in df.index]
30
+ return df
31
+
32
+ return pd.DataFrame()
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ from collections import OrderedDict
14
+ import numpy as np
15
+ import pandas as pd
16
+ import xarray as xr
17
+
18
+ def _format_plot(id, tracked_dict, kwargs):
19
+ """Format data from a plot call.
20
+
21
+ Args:
22
+ id (str): Identifier for the plot
23
+ tracked_dict (dict): Dictionary containing tracked data
24
+ kwargs (dict): Keyword arguments passed to plot
25
+
26
+ Returns:
27
+ pd.DataFrame: Formatted data from plot
28
+ """
29
+ # Check if tracked_dict is empty or not a dictionary
30
+ if not tracked_dict or not isinstance(tracked_dict, dict):
31
+ return pd.DataFrame()
32
+
33
+ # For plot_line, we expect a 'plot_df' key
34
+ if 'plot_df' in tracked_dict:
35
+ plot_df = tracked_dict['plot_df']
36
+ if isinstance(plot_df, pd.DataFrame):
37
+ # Add the id prefix to all columns
38
+ return plot_df.add_prefix(f"{id}_")
39
+
40
+ # Legacy handling for tracked args (should be deprecated)
41
+ if 'args' in tracked_dict:
42
+ args = tracked_dict['args']
43
+ if isinstance(args, tuple) and len(args) > 0:
44
+ if len(args) == 1:
45
+ args_value = args[0]
46
+ if hasattr(args_value, 'ndim') and args_value.ndim == 2:
47
+ x, y = args_value[:, 0], args_value[:, 1]
48
+ df = pd.DataFrame({f"{id}_plot_x": x, f"{id}_plot_y": y})
49
+ return df
50
+
51
+ elif len(args) == 2:
52
+ x, y = args
53
+ if isinstance(y, (np.ndarray, xr.DataArray)):
54
+ if y.ndim == 2:
55
+ out = OrderedDict()
56
+ for ii in range(y.shape[1]):
57
+ out[f"{id}_plot_x{ii:02d}"] = x
58
+ out[f"{id}_plot_y{ii:02d}"] = y[:, ii]
59
+ df = pd.DataFrame(out)
60
+ return df
61
+
62
+ if isinstance(y, pd.DataFrame):
63
+ df = pd.DataFrame(
64
+ {
65
+ f"{id}_plot_x": x,
66
+ **{
67
+ f"{id}_plot_y{ii:02d}": np.array(y[col])
68
+ for ii, col in enumerate(y.columns)
69
+ },
70
+ }
71
+ )
72
+ return df
73
+
74
+ if isinstance(y, (np.ndarray, xr.DataArray, list)):
75
+ df = pd.DataFrame({f"{id}_plot_x": x, f"{id}_plot_y": y})
76
+ return df
77
+
78
+ # Default empty DataFrame if we can't process the input
79
+ return pd.DataFrame()
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ def _format_plot_box(id, tracked_dict, kwargs):
17
+ """Format data from a plot_box call."""
18
+ # Check if tracked_dict is empty or not a dictionary
19
+ if not tracked_dict or not isinstance(tracked_dict, dict):
20
+ return pd.DataFrame()
21
+
22
+ # First try to get data directly from tracked_dict
23
+ data = tracked_dict.get('data')
24
+
25
+ # If no data key, get from args
26
+ if data is None:
27
+ args = tracked_dict.get('args', [])
28
+ if len(args) >= 1:
29
+ data = args[0]
30
+ else:
31
+ return pd.DataFrame()
32
+
33
+ # If data is a simple array or list of values
34
+ if isinstance(data, (np.ndarray, list)) and len(data) > 0:
35
+ try:
36
+ # Check if it's a simple list of values or a list of lists
37
+ if isinstance(data[0], (int, float, np.number)):
38
+ return pd.DataFrame({f"{id}_plot_box_values": data})
39
+
40
+ # If data is a list of arrays (multiple box plots)
41
+ elif isinstance(data, (list, tuple)) and all(
42
+ isinstance(x, (list, np.ndarray)) for x in data
43
+ ):
44
+ result = pd.DataFrame()
45
+ for i, values in enumerate(data):
46
+ try:
47
+ result[f"{id}_plot_box_group{i:02d}"] = pd.Series(values)
48
+ except:
49
+ # Handle case where values may not be convertible to Series
50
+ pass
51
+ return result
52
+ except (IndexError, TypeError):
53
+ # Return empty DataFrame if we can't process the data
54
+ pass
55
+
56
+ # If data is a dictionary
57
+ elif isinstance(data, dict):
58
+ result = pd.DataFrame()
59
+ for label, values in data.items():
60
+ try:
61
+ result[f"{id}_plot_box_{label}"] = pd.Series(values)
62
+ except:
63
+ # Handle case where values may not be convertible to Series
64
+ pass
65
+ return result
66
+
67
+ # If data is a DataFrame
68
+ elif isinstance(data, pd.DataFrame):
69
+ result = pd.DataFrame()
70
+ for col in data.columns:
71
+ result[f"{id}_plot_box_{col}"] = data[col]
72
+ return result
73
+
74
+ # Default case: return empty DataFrame if nothing could be processed
75
+ return pd.DataFrame()
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ def _format_plot_conf_mat(id, tracked_dict, kwargs):
17
+ """Format data from a plot_conf_mat call.
18
+
19
+ Args:
20
+ id (str): Identifier for the plot
21
+ tracked_dict (dict): Dictionary containing tracked data
22
+ kwargs (dict): Keyword arguments passed to plot_conf_mat
23
+
24
+ Returns:
25
+ pd.DataFrame: Formatted confusion matrix data
26
+ """
27
+ # Check if tracked_dict is empty or not a dictionary
28
+ if not tracked_dict or not isinstance(tracked_dict, dict):
29
+ return pd.DataFrame()
30
+
31
+ # Get the args from tracked_dict
32
+ args = tracked_dict.get('args', [])
33
+
34
+ # Extract confusion matrix if available in args
35
+ if len(args) >= 1 and isinstance(args[0], (np.ndarray, list)):
36
+ conf_mat = np.array(args[0])
37
+
38
+ # Convert to DataFrame
39
+ if conf_mat.ndim == 2:
40
+ # Create column and index names
41
+ n_classes = conf_mat.shape[0]
42
+ columns = [f"Predicted_{i}" for i in range(n_classes)]
43
+ index = [f"True_{i}" for i in range(n_classes)]
44
+
45
+ # Create DataFrame with proper labels
46
+ df = pd.DataFrame(conf_mat, columns=columns, index=index)
47
+
48
+ # Reset index to make it a regular column
49
+ df = df.reset_index().rename(columns={"index": "True_Class"})
50
+
51
+ # Add prefix to all columns
52
+ df.columns = [f"{id}_conf_mat_{col}" for col in df.columns]
53
+
54
+ return df
55
+
56
+ # Extract balanced accuracy if available as fallback
57
+ bacc = tracked_dict.get('balanced_accuracy')
58
+
59
+ # Create DataFrame with the balanced accuracy
60
+ if bacc is not None:
61
+ df = pd.DataFrame({f"{id}_conf_mat_balanced_accuracy": [bacc]})
62
+ return df
63
+
64
+ return pd.DataFrame()
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py
5
+ # ----------------------------------------
6
+ import os
7
+ import pandas as pd
8
+
9
+ __FILE__ = (
10
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py"
11
+ )
12
+ __DIR__ = os.path.dirname(__FILE__)
13
+ # ----------------------------------------
14
+
15
+ def _format_plot_ecdf(id, tracked_dict, kwargs):
16
+ """Format data from a plot_ecdf call.
17
+
18
+ Args:
19
+ id (str): Identifier for the plot
20
+ tracked_dict (dict): Dictionary containing 'ecdf_df' key with ECDF data
21
+ kwargs (dict): Keyword arguments passed to plot_ecdf
22
+
23
+ Returns:
24
+ pd.DataFrame: Formatted ECDF data
25
+ """
26
+ # Check if tracked_dict is empty or not a dictionary
27
+ if not tracked_dict or not isinstance(tracked_dict, dict):
28
+ return pd.DataFrame()
29
+
30
+ # Get the ecdf_df from tracked_dict
31
+ ecdf_df = tracked_dict.get('ecdf_df')
32
+
33
+ if ecdf_df is None or not isinstance(ecdf_df, pd.DataFrame):
34
+ return pd.DataFrame()
35
+
36
+ # Create a copy to avoid modifying the original
37
+ result = ecdf_df.copy()
38
+
39
+ # Add prefix to column names if ID is provided
40
+ if id is not None:
41
+ # Rename columns with ID prefix
42
+ result.columns = [f"{id}_ecdf_{col}" for col in result.columns]
43
+
44
+ return result
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ def _format_plot_fillv(id, tracked_dict, kwargs):
17
+ """Format data from a plot_fillv call.
18
+
19
+ Formats data similar to line plot format for better compatibility.
20
+
21
+ Args:
22
+ id (str): Identifier for the plot
23
+ tracked_dict (dict): Dictionary containing tracked data
24
+ kwargs (dict): Keyword arguments passed to plot_fillv
25
+
26
+ Returns:
27
+ pd.DataFrame: Formatted fillv data in a long-format dataframe
28
+ """
29
+ # Check if tracked_dict is empty or not a dictionary
30
+ if not tracked_dict or not isinstance(tracked_dict, dict):
31
+ return pd.DataFrame()
32
+
33
+ # Try to get starts/ends directly from tracked_dict first
34
+ starts = tracked_dict.get('starts')
35
+ ends = tracked_dict.get('ends')
36
+
37
+ # If not found, get from args
38
+ if starts is None or ends is None:
39
+ args = tracked_dict.get('args', [])
40
+
41
+ # Extract data if available from args
42
+ if len(args) >= 2:
43
+ starts, ends = args[0], args[1]
44
+
45
+ # If we have valid starts and ends, create a DataFrame in a format similar to line plot
46
+ if starts is not None and ends is not None:
47
+ # Convert to numpy arrays if they're lists for better handling
48
+ if isinstance(starts, list):
49
+ starts = np.array(starts)
50
+ if isinstance(ends, list):
51
+ ends = np.array(ends)
52
+
53
+ # Create a DataFrame with x, y pairs for each fill span
54
+ rows = []
55
+ for start, end in zip(starts, ends):
56
+ rows.append({
57
+ f"{id}_x": start,
58
+ f"{id}_y": 0,
59
+ f"{id}_type": "start"
60
+ })
61
+ rows.append({
62
+ f"{id}_x": end,
63
+ f"{id}_y": 0,
64
+ f"{id}_type": "end"
65
+ })
66
+
67
+ if rows:
68
+ return pd.DataFrame(rows)
69
+
70
+ return pd.DataFrame()