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,82 @@
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_scatter_hist.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_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_plot_scatter_hist(id, tracked_dict, kwargs):
17
+ """Format data from a plot_scatter_hist 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_scatter_hist
23
+
24
+ Returns:
25
+ pd.DataFrame: Formatted scatter histogram 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
+ # Extract data from tracked_dict
32
+ x = tracked_dict.get('x')
33
+ y = tracked_dict.get('y')
34
+
35
+ if x is not None and y is not None:
36
+ # Create base DataFrame with x and y values
37
+ df = pd.DataFrame({
38
+ f"{id}_scatter_hist_x": x,
39
+ f"{id}_scatter_hist_y": y
40
+ })
41
+
42
+ # Add histogram data if available
43
+ hist_x = tracked_dict.get('hist_x')
44
+ hist_y = tracked_dict.get('hist_y')
45
+ bin_edges_x = tracked_dict.get('bin_edges_x')
46
+ bin_edges_y = tracked_dict.get('bin_edges_y')
47
+
48
+ # If we have histogram data
49
+ if hist_x is not None and bin_edges_x is not None:
50
+ # Calculate bin centers for x-axis histogram
51
+ bin_centers_x = 0.5 * (bin_edges_x[1:] + bin_edges_x[:-1])
52
+
53
+ # Create a DataFrame for x histogram data
54
+ hist_x_df = pd.DataFrame({
55
+ f"{id}_hist_x_bin_centers": bin_centers_x,
56
+ f"{id}_hist_x_counts": hist_x
57
+ })
58
+
59
+ # Add it to the main DataFrame using a MultiIndex
60
+ for i, (center, count) in enumerate(zip(bin_centers_x, hist_x)):
61
+ df.loc[f"hist_x_{i}", f"{id}_hist_x_bin"] = center
62
+ df.loc[f"hist_x_{i}", f"{id}_hist_x_count"] = count
63
+
64
+ # If we have y histogram data
65
+ if hist_y is not None and bin_edges_y is not None:
66
+ # Calculate bin centers for y-axis histogram
67
+ bin_centers_y = 0.5 * (bin_edges_y[1:] + bin_edges_y[:-1])
68
+
69
+ # Create a DataFrame for y histogram data
70
+ hist_y_df = pd.DataFrame({
71
+ f"{id}_hist_y_bin_centers": bin_centers_y,
72
+ f"{id}_hist_y_counts": hist_y
73
+ })
74
+
75
+ # Add it to the main DataFrame using a MultiIndex
76
+ for i, (center, count) in enumerate(zip(bin_centers_y, hist_y)):
77
+ df.loc[f"hist_y_{i}", f"{id}_hist_y_bin"] = center
78
+ df.loc[f"hist_y_{i}", f"{id}_hist_y_count"] = count
79
+
80
+ return df
81
+
82
+ return pd.DataFrame()
@@ -0,0 +1,58 @@
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_shaded_line.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_plot_shaded_line(id, tracked_dict, kwargs):
16
+ """Format data from a plot_shaded_line call.
17
+
18
+ Args:
19
+ id (str): Identifier for the plot
20
+ tracked_dict (dict): Dictionary containing tracked data
21
+ kwargs (dict): Keyword arguments passed to plot_shaded_line
22
+
23
+ Returns:
24
+ pd.DataFrame: Formatted shaded line 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
+ # If we have a plot_df from plotting methods, use that directly
31
+ if 'plot_df' in tracked_dict and isinstance(tracked_dict['plot_df'], pd.DataFrame):
32
+ plot_df = tracked_dict['plot_df']
33
+ # Add the id prefix to all columns
34
+ return plot_df.add_prefix(f"{id}_")
35
+
36
+ # Try getting the individual components
37
+ x = tracked_dict.get('x')
38
+ y_middle = tracked_dict.get('y_middle')
39
+ y_lower = tracked_dict.get('y_lower')
40
+ y_upper = tracked_dict.get('y_upper')
41
+
42
+ # If we have all necessary components
43
+ if x is not None and y_middle is not None and y_lower is not None:
44
+ data = {
45
+ f"{id}_shaded_line_x": x,
46
+ f"{id}_shaded_line_y": y_middle,
47
+ f"{id}_shaded_line_lower": y_lower,
48
+ }
49
+
50
+ if y_upper is not None:
51
+ data[f"{id}_shaded_line_upper"] = y_upper
52
+ else:
53
+ # If only y_lower is provided, assume it's symmetric around y_middle
54
+ data[f"{id}_shaded_line_upper"] = y_middle + (y_middle - y_lower)
55
+
56
+ return pd.DataFrame(data)
57
+
58
+ return pd.DataFrame()
@@ -0,0 +1,117 @@
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_violin.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.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_violin(id, tracked_dict, kwargs):
17
+ """Format data from a plot_violin call.
18
+
19
+ Formats data in a long-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_violin
25
+
26
+ Returns:
27
+ pd.DataFrame: Formatted violin plot data in long format
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
+ # Extract data from tracked_dict
34
+ data = tracked_dict.get('data')
35
+
36
+ if data is not None:
37
+ # If data is a simple array or list
38
+ if isinstance(data, (np.ndarray, list)) and not isinstance(
39
+ data[0], (list, np.ndarray, dict)
40
+ ):
41
+ # Convert to long format with group and value columns
42
+ rows = [{'group': '0', 'value': val} for val in data]
43
+ df = pd.DataFrame(rows)
44
+ # Prefix columns with id
45
+ df.columns = [f"{id}_plot_violin_{col}" for col in df.columns]
46
+ return df
47
+
48
+ # If data is a list of arrays (multiple violin plots)
49
+ elif isinstance(data, (list, tuple)) and all(
50
+ isinstance(x, (list, np.ndarray)) for x in data
51
+ ):
52
+ # Get labels if available
53
+ labels = tracked_dict.get('labels')
54
+
55
+ # Convert to long format
56
+ rows = []
57
+ for i, values in enumerate(data):
58
+ # Use label if available, otherwise use index
59
+ group = labels[i] if labels and i < len(labels) else f"group{i:02d}"
60
+ for val in values:
61
+ rows.append({'group': str(group), 'value': val})
62
+
63
+ if rows:
64
+ df = pd.DataFrame(rows)
65
+ # Prefix columns with id
66
+ df.columns = [f"{id}_plot_violin_{col}" for col in df.columns]
67
+ return df
68
+
69
+ # If data is a dictionary
70
+ elif isinstance(data, dict):
71
+ # Convert to long format
72
+ rows = []
73
+ for group, values in data.items():
74
+ for val in values:
75
+ rows.append({'group': str(group), 'value': val})
76
+
77
+ if rows:
78
+ df = pd.DataFrame(rows)
79
+ # Prefix columns with id
80
+ df.columns = [f"{id}_plot_violin_{col}" for col in df.columns]
81
+ return df
82
+
83
+ # If data is a DataFrame
84
+ elif isinstance(data, pd.DataFrame):
85
+ # For DataFrame data with x and y columns
86
+ x = tracked_dict.get('x')
87
+ y = tracked_dict.get('y')
88
+
89
+ if x is not None and y is not None and x in data.columns and y in data.columns:
90
+ # Convert to long format
91
+ rows = []
92
+ for group_name, group_data in data.groupby(x):
93
+ for val in group_data[y]:
94
+ rows.append({'group': str(group_name), 'value': val})
95
+
96
+ if rows:
97
+ df = pd.DataFrame(rows)
98
+ # Prefix columns with id
99
+ df.columns = [f"{id}_plot_violin_{col}" for col in df.columns]
100
+ return df
101
+ else:
102
+ # For other dataframes, melt to long format
103
+ try:
104
+ # Try to melt to long format
105
+ result = pd.melt(data)
106
+ # Use variable column as group, value column as values
107
+ result.columns = ['group', 'value']
108
+ # Prefix columns with id
109
+ result.columns = [f"{id}_plot_violin_{col}" for col in result.columns]
110
+ return result
111
+ except Exception:
112
+ # If melt fails, just return the original with prefixed columns
113
+ result = data.copy()
114
+ result.columns = [f"{id}_plot_violin_{col}" for col in result.columns]
115
+ return result
116
+
117
+ return pd.DataFrame()
@@ -0,0 +1,30 @@
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_scatter.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_scatter(id, tracked_dict, kwargs):
16
+ """Format data from a scatter 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 x and y data if available
25
+ if len(args) >= 2:
26
+ x, y = args[0], args[1]
27
+ df = pd.DataFrame({f"{id}_scatter_x": x, f"{id}_scatter_y": y})
28
+ return df
29
+
30
+ return pd.DataFrame()
@@ -0,0 +1,51 @@
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_sns_barplot.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ def _format_sns_barplot(id, tracked_dict, kwargs):
17
+ """Format data from a sns_barplot 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 sns_barplot
23
+
24
+ Returns:
25
+ pd.DataFrame: Formatted data for the plot
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
+ # If 'data' key is in tracked_dict, use it
32
+ if 'data' in tracked_dict:
33
+ df = tracked_dict['data']
34
+ if isinstance(df, pd.DataFrame):
35
+ # Add the id prefix to all columns
36
+ return df.add_prefix(f"{id}_")
37
+
38
+ # Legacy handling for args
39
+ if 'args' in tracked_dict:
40
+ df = tracked_dict['args']
41
+ if isinstance(df, pd.DataFrame):
42
+ # When xyhue, without errorbar
43
+ try:
44
+ processed_df = pd.DataFrame(pd.Series(np.array(df).diagonal(), index=df.columns)).T
45
+ return processed_df.add_prefix(f"{id}_")
46
+ except (ValueError, TypeError, IndexError):
47
+ # If processing fails, return the original dataframe
48
+ return df.add_prefix(f"{id}_")
49
+
50
+ # Default empty DataFrame if we can't process the input
51
+ return pd.DataFrame()
@@ -0,0 +1,93 @@
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_sns_boxplot.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+ import numpy as np
15
+
16
+ def _format_sns_boxplot(id, tracked_dict, kwargs):
17
+ """Format data from a sns_boxplot 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 sns_boxplot
23
+
24
+ Returns:
25
+ pd.DataFrame: Formatted boxplot data
26
+ """
27
+ # Check if tracked_dict is empty or not a dictionary
28
+ if not tracked_dict:
29
+ return pd.DataFrame()
30
+
31
+ # If tracked_dict is a dictionary, try to extract the data from it
32
+ if isinstance(tracked_dict, dict):
33
+ # First try to get 'data' key which is used in seaborn functions
34
+ if 'data' in tracked_dict:
35
+ data = tracked_dict['data']
36
+ if isinstance(data, pd.DataFrame):
37
+ result = data.copy()
38
+ # Add prefix to column names
39
+ result.columns = [f"{id}_sns_boxplot_{col}" for col in result.columns]
40
+ return result
41
+
42
+ # If no 'data' key, try to get data from args
43
+ args = tracked_dict.get('args', [])
44
+ if len(args) > 0:
45
+ # First arg is often the data for seaborn plots
46
+ data = args[0]
47
+ if isinstance(data, pd.DataFrame):
48
+ result = data.copy()
49
+ # Add prefix to column names
50
+ result.columns = [f"{id}_sns_boxplot_{col}" for col in result.columns]
51
+ return result
52
+
53
+ # Handle list or array data
54
+ elif isinstance(data, (list, np.ndarray)):
55
+ # Try to convert to DataFrame
56
+ try:
57
+ if all(isinstance(item, (list, np.ndarray)) for item in data):
58
+ # For list of lists/arrays (multiple groups)
59
+ data_dict = {}
60
+ for i, group_data in enumerate(data):
61
+ data_dict[f"{id}_sns_boxplot_group{i:02d}"] = group_data
62
+ return pd.DataFrame(data_dict)
63
+ else:
64
+ # For a single list/array
65
+ return pd.DataFrame({f"{id}_sns_boxplot_values": data})
66
+ except:
67
+ pass
68
+
69
+ # If tracked_dict is a DataFrame already, use it directly
70
+ elif isinstance(tracked_dict, pd.DataFrame):
71
+ result = tracked_dict.copy()
72
+ # Add prefix to column names
73
+ result.columns = [f"{id}_sns_boxplot_{col}" for col in result.columns]
74
+ return result
75
+
76
+ # If tracked_dict is list-like, try to convert it to a DataFrame
77
+ elif hasattr(tracked_dict, "__iter__") and not isinstance(tracked_dict, str):
78
+ try:
79
+ # For list-like data
80
+ if all(isinstance(item, (list, np.ndarray)) for item in tracked_dict):
81
+ # For list of lists/arrays (multiple groups)
82
+ data_dict = {}
83
+ for i, group_data in enumerate(tracked_dict):
84
+ data_dict[f"{id}_sns_boxplot_group{i:02d}"] = group_data
85
+ return pd.DataFrame(data_dict)
86
+ else:
87
+ # For a single list/array
88
+ return pd.DataFrame({f"{id}_sns_boxplot_values": tracked_dict})
89
+ except:
90
+ pass
91
+
92
+ # Return empty DataFrame if we couldn't extract useful data
93
+ return pd.DataFrame()
@@ -0,0 +1,94 @@
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_sns_heatmap.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+ import numpy as np
15
+
16
+ def _format_sns_heatmap(id, tracked_dict, kwargs):
17
+ """Format data from a sns_heatmap 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 sns_heatmap
23
+
24
+ Returns:
25
+ pd.DataFrame: Formatted data for the plot
26
+ """
27
+ # Check if tracked_dict is empty
28
+ if not tracked_dict:
29
+ return pd.DataFrame()
30
+
31
+ # If tracked_dict is a dictionary
32
+ if isinstance(tracked_dict, dict):
33
+ # If 'data' key is in tracked_dict, use it
34
+ if 'data' in tracked_dict:
35
+ data = tracked_dict['data']
36
+
37
+ # Handle pandas DataFrame
38
+ if isinstance(data, pd.DataFrame):
39
+ df = data.copy()
40
+ # Add the id prefix to all columns
41
+ return df.add_prefix(f"{id}_sns_heatmap_")
42
+
43
+ # Handle numpy array
44
+ elif isinstance(data, np.ndarray):
45
+ # Create DataFrame from array with simple column names
46
+ rows, cols = data.shape if len(data.shape) >= 2 else (data.shape[0], 1)
47
+ df = pd.DataFrame(
48
+ data,
49
+ columns=[f"col_{i}" for i in range(cols)]
50
+ )
51
+ # Add the id prefix to all columns
52
+ return df.add_prefix(f"{id}_sns_heatmap_")
53
+
54
+ # Legacy handling for args
55
+ args = tracked_dict.get('args', [])
56
+ if len(args) > 0:
57
+ data = args[0] # First arg to sns_heatmap is typically the data matrix
58
+
59
+ # Handle pandas DataFrame
60
+ if isinstance(data, pd.DataFrame):
61
+ df = data.copy()
62
+ # Add the id prefix to all columns
63
+ return df.add_prefix(f"{id}_sns_heatmap_")
64
+
65
+ # Handle numpy array
66
+ elif isinstance(data, np.ndarray):
67
+ # Create DataFrame from array with simple column names
68
+ rows, cols = data.shape if len(data.shape) >= 2 else (data.shape[0], 1)
69
+ df = pd.DataFrame(
70
+ data,
71
+ columns=[f"col_{i}" for i in range(cols)]
72
+ )
73
+ # Add the id prefix to all columns
74
+ return df.add_prefix(f"{id}_sns_heatmap_")
75
+
76
+ # If tracked_dict is a DataFrame directly
77
+ elif isinstance(tracked_dict, pd.DataFrame):
78
+ df = tracked_dict.copy()
79
+ # Add the id prefix to all columns
80
+ return df.add_prefix(f"{id}_sns_heatmap_")
81
+
82
+ # If tracked_dict is a numpy array directly
83
+ elif isinstance(tracked_dict, np.ndarray):
84
+ # Create DataFrame from array with simple column names
85
+ rows, cols = tracked_dict.shape if len(tracked_dict.shape) >= 2 else (tracked_dict.shape[0], 1)
86
+ df = pd.DataFrame(
87
+ tracked_dict,
88
+ columns=[f"col_{i}" for i in range(cols)]
89
+ )
90
+ # Add the id prefix to all columns
91
+ return df.add_prefix(f"{id}_sns_heatmap_")
92
+
93
+ # Default empty DataFrame if we can't process the input
94
+ return pd.DataFrame()
@@ -0,0 +1,92 @@
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_sns_histplot.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ def _format_sns_histplot(id, tracked_dict, kwargs):
17
+ """
18
+ Format data from a sns_histplot call as a bar plot representation.
19
+
20
+ This formatter extracts both the raw data and the binned data from seaborn 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 sns_histplot
27
+
28
+ Returns:
29
+ pd.DataFrame: Formatted data for the plot including 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
+ columns = {}
36
+
37
+ # Check if histogram result is available in tracked_dict
38
+ hist_result = tracked_dict.get('hist_result', None)
39
+
40
+ # If we have histogram result (counts and bin edges)
41
+ if hist_result is not None:
42
+ counts, bin_edges = hist_result
43
+
44
+ # Calculate bin centers for bar plot representation
45
+ bin_centers = 0.5 * (bin_edges[:-1] + bin_edges[1:])
46
+ bin_widths = bin_edges[1:] - bin_edges[:-1]
47
+
48
+ # Add bin information to DataFrame
49
+ columns[f"{id}_bin_centers"] = bin_centers
50
+ columns[f"{id}_bin_counts"] = counts
51
+ columns[f"{id}_bin_widths"] = bin_widths
52
+ columns[f"{id}_bin_edges_left"] = bin_edges[:-1]
53
+ columns[f"{id}_bin_edges_right"] = bin_edges[1:]
54
+
55
+ # Get raw data if available
56
+ if 'data' in tracked_dict:
57
+ df = tracked_dict['data']
58
+ if isinstance(df, pd.DataFrame):
59
+ # Extract column data from kwargs if available
60
+ x_col = kwargs.get('x')
61
+ if x_col and x_col in df.columns:
62
+ columns[f"{id}_raw_data"] = df[x_col].values
63
+
64
+ # Legacy handling for args
65
+ elif 'args' in tracked_dict:
66
+ args = tracked_dict['args']
67
+ if len(args) >= 1:
68
+ # First argument is typically the data
69
+ x = args[0]
70
+ if hasattr(x, 'values'): # pandas Series or DataFrame
71
+ columns[f"{id}_raw_data"] = x.values
72
+ else:
73
+ columns[f"{id}_raw_data"] = x
74
+
75
+ # If we have data to return
76
+ if columns:
77
+ # Ensure all arrays are the same length by padding with NaN
78
+ max_length = max(len(value) for value in columns.values() if hasattr(value, '__len__'))
79
+ for key, value in list(columns.items()):
80
+ if hasattr(value, '__len__') and len(value) < max_length:
81
+ # Pad with NaN if needed
82
+ if isinstance(value, np.ndarray):
83
+ columns[key] = np.pad(value, (0, max_length - len(value)),
84
+ mode='constant', constant_values=np.nan)
85
+ else:
86
+ padded = list(value) + [np.nan] * (max_length - len(value))
87
+ columns[key] = np.array(padded)
88
+
89
+ return pd.DataFrame(columns)
90
+
91
+ # Default empty DataFrame if we can't process the input
92
+ return pd.DataFrame()
@@ -0,0 +1,65 @@
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_sns_jointplot.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+
16
+ def _format_sns_jointplot(id, tracked_dict, kwargs):
17
+ """Format data from a sns_jointplot 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
+ # Get the args from tracked_dict
23
+ args = tracked_dict.get('args', [])
24
+
25
+ # Joint distribution plot in seaborn
26
+ if len(args) >= 1:
27
+ data = args[0]
28
+
29
+ # Get x and y variables from kwargs
30
+ x_var = kwargs.get("x")
31
+ y_var = kwargs.get("y")
32
+
33
+ # Handle DataFrame input
34
+ if isinstance(data, pd.DataFrame) and x_var and y_var:
35
+ # Extract the relevant columns
36
+ x_data = data[x_var]
37
+ y_data = data[y_var]
38
+
39
+ result = pd.DataFrame(
40
+ {f"{id}_joint_{x_var}": x_data, f"{id}_joint_{y_var}": y_data}
41
+ )
42
+ return result
43
+
44
+ # Handle direct x, y data arrays
45
+ elif isinstance(data, pd.DataFrame):
46
+ # If no x, y specified, return the whole dataframe
47
+ result = data.copy()
48
+ if id is not None:
49
+ result.columns = [
50
+ f"{id}_joint_{col}" for col in result.columns
51
+ ]
52
+ return result
53
+
54
+ # Handle numpy arrays directly
55
+ elif (
56
+ all(arg in args for arg in range(2))
57
+ and isinstance(args[0], (np.ndarray, list))
58
+ and isinstance(args[1], (np.ndarray, list))
59
+ ):
60
+ x_data, y_data = args[0], args[1]
61
+ return pd.DataFrame(
62
+ {f"{id}_joint_x": x_data, f"{id}_joint_y": y_data}
63
+ )
64
+
65
+ return pd.DataFrame()