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,66 @@
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_heatmap.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.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_heatmap(id, tracked_dict, kwargs):
17
+ """Format data from a plot_heatmap call.
18
+
19
+ Exports heatmap data in xyz format (x, y, value) 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_heatmap
25
+
26
+ Returns:
27
+ pd.DataFrame: Formatted heatmap data in xyz 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
+ x_labels = tracked_dict.get('x_labels')
36
+ y_labels = tracked_dict.get('y_labels')
37
+
38
+ if data is not None and hasattr(data, "shape") and len(data.shape) == 2:
39
+ rows, cols = data.shape
40
+ row_indices, col_indices = np.meshgrid(
41
+ range(rows), range(cols), indexing="ij"
42
+ )
43
+
44
+ # Format data in xyz format (x, y, value)
45
+ df = pd.DataFrame(
46
+ {
47
+ f"{id}_x": col_indices.flatten(), # x is column
48
+ f"{id}_y": row_indices.flatten(), # y is row
49
+ f"{id}_value": data.flatten(), # z is intensity/value
50
+ }
51
+ )
52
+
53
+ # Add label information if available
54
+ if x_labels is not None and len(x_labels) == cols:
55
+ # Map column indices to x labels (columns are x)
56
+ x_label_map = {i: label for i, label in enumerate(x_labels)}
57
+ df[f"{id}_x_label"] = df[f"{id}_x"].map(x_label_map)
58
+
59
+ if y_labels is not None and len(y_labels) == rows:
60
+ # Map row indices to y labels (rows are y)
61
+ y_label_map = {i: label for i, label in enumerate(y_labels)}
62
+ df[f"{id}_y_label"] = df[f"{id}_y"].map(y_label_map)
63
+
64
+ return df
65
+
66
+ return pd.DataFrame()
@@ -0,0 +1,95 @@
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_image.py
5
+ # ----------------------------------------
6
+ import os
7
+ import numpy as np
8
+ import pandas as pd
9
+
10
+ __FILE__ = (
11
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py"
12
+ )
13
+ __DIR__ = os.path.dirname(__FILE__)
14
+ # ----------------------------------------
15
+
16
+ def _format_plot_image(id, tracked_dict, kwargs):
17
+ """Format data from a plot_image call.
18
+
19
+ Exports image data in long-format xyz format for better compatibility.
20
+ Also saves channel data for RGB/RGBA images.
21
+
22
+ Args:
23
+ id (str or int): Identifier for the plot
24
+ tracked_dict (dict): Dictionary containing tracked data
25
+ kwargs (dict): Keyword arguments passed to plot_image
26
+
27
+ Returns:
28
+ pd.DataFrame: Formatted image data in xyz format
29
+ """
30
+ # Check if tracked_dict is not a dictionary or is empty
31
+ if not tracked_dict or not isinstance(tracked_dict, dict):
32
+ return pd.DataFrame()
33
+
34
+ # Check if image_df is available and use it if present
35
+ if "image_df" in tracked_dict:
36
+ image_df = tracked_dict.get("image_df")
37
+ if isinstance(image_df, pd.DataFrame):
38
+ # Add prefix if ID is provided
39
+ if id is not None:
40
+ image_df = image_df.copy()
41
+ id_str = str(id)
42
+ # Convert columns to strings first to handle integer column names
43
+ image_df.columns = [str(col) for col in image_df.columns]
44
+ image_df.columns = [f"{id_str}_{col}" if not col.startswith(f"{id_str}_") else col for col in image_df.columns]
45
+ return image_df
46
+
47
+ # If we have image data
48
+ if "image" in tracked_dict:
49
+ img = tracked_dict["image"]
50
+ id_str = str(id) if id is not None else "image"
51
+
52
+ # Handle 2D grayscale images - create xyz format (x, y, value)
53
+ if isinstance(img, np.ndarray) and img.ndim == 2:
54
+ rows, cols = img.shape
55
+ row_indices, col_indices = np.meshgrid(
56
+ range(rows), range(cols), indexing="ij"
57
+ )
58
+
59
+ # Create xyz format
60
+ df = pd.DataFrame(
61
+ {
62
+ f"{id_str}_x": col_indices.flatten(), # x is column
63
+ f"{id_str}_y": row_indices.flatten(), # y is row
64
+ f"{id_str}_value": img.flatten(), # z is intensity
65
+ }
66
+ )
67
+ return df
68
+
69
+ # Handle RGB/RGBA images - create xyz format with additional channel information
70
+ elif isinstance(img, np.ndarray) and img.ndim == 3:
71
+ rows, cols, channels = img.shape
72
+ row_indices, col_indices = np.meshgrid(
73
+ range(rows), range(cols), indexing="ij"
74
+ )
75
+
76
+ # Create a list to hold rows for a long-format DataFrame
77
+ data_rows = []
78
+ channel_names = ["r", "g", "b", "a"]
79
+
80
+ # Create long-format data (x, y, channel, value)
81
+ for r in range(rows):
82
+ for c in range(cols):
83
+ for ch in range(min(channels, len(channel_names))):
84
+ data_rows.append({
85
+ f"{id_str}_x": c, # x is column
86
+ f"{id_str}_y": r, # y is row
87
+ f"{id_str}_channel": channel_names[ch], # channel name
88
+ f"{id_str}_value": img[r, c, ch] # channel value
89
+ })
90
+
91
+ # Return long-format DataFrame
92
+ return pd.DataFrame(data_rows)
93
+
94
+ # Skip CSV export if no suitable data format found
95
+ return pd.DataFrame()
@@ -0,0 +1,67 @@
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_joyplot.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import numpy as np
14
+ import pandas as pd
15
+ from scitex.pd import force_df
16
+
17
+ def _format_plot_joyplot(id, tracked_dict, kwargs):
18
+ """Format data from a plot_joyplot call.
19
+
20
+ Args:
21
+ id (str): Identifier for the plot
22
+ tracked_dict (dict): Dictionary containing 'joyplot_data' key with joyplot data
23
+ kwargs (dict): Keyword arguments passed to plot_joyplot
24
+
25
+ Returns:
26
+ pd.DataFrame: Formatted joyplot data
27
+ """
28
+ # Check if tracked_dict is empty or not a dictionary
29
+ if not tracked_dict or not isinstance(tracked_dict, dict):
30
+ return pd.DataFrame()
31
+
32
+ # Get joyplot_data from tracked_dict
33
+ data = tracked_dict.get('joyplot_data')
34
+
35
+ if data is None:
36
+ return pd.DataFrame()
37
+
38
+ # Handle different data types
39
+ if isinstance(data, pd.DataFrame):
40
+ # Make a copy to avoid modifying original
41
+ result = data.copy()
42
+ # Add prefix to column names if ID is provided
43
+ if id is not None:
44
+ result.columns = [f"{id}_joyplot_{col}" for col in result.columns]
45
+ return result
46
+
47
+ elif isinstance(data, dict):
48
+ # Convert dictionary to DataFrame
49
+ result = pd.DataFrame()
50
+ for group, values in data.items():
51
+ result[f"{id}_joyplot_{group}"] = pd.Series(values)
52
+ return result
53
+
54
+ elif isinstance(data, (list, tuple)) and all(
55
+ isinstance(x, (np.ndarray, list)) for x in data
56
+ ):
57
+ # Convert list of arrays to DataFrame
58
+ result = pd.DataFrame()
59
+ for i, values in enumerate(data):
60
+ result[f"{id}_joyplot_group{i:02d}"] = pd.Series(values)
61
+ return result
62
+
63
+ # Try to force to DataFrame as a last resort
64
+ try:
65
+ return force_df({f"{id}_joyplot_data": data})
66
+ except:
67
+ return pd.DataFrame()
@@ -0,0 +1,52 @@
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_kde.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+ from scitex.pd import force_df
15
+
16
+ def _format_plot_kde(id, tracked_dict, kwargs):
17
+ """Format data from a plot_kde call.
18
+
19
+ Processes kernel density estimation plot data.
20
+
21
+ Args:
22
+ id (str): Identifier for the plot
23
+ tracked_dict (dict): Dictionary containing 'x', 'kde', and 'n' keys
24
+ kwargs (dict): Keyword arguments passed to plot_kde
25
+
26
+ Returns:
27
+ pd.DataFrame: Formatted KDE data
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
+ x = tracked_dict.get('x')
34
+ kde = tracked_dict.get('kde')
35
+ n = tracked_dict.get('n')
36
+
37
+ if x is None or kde is None:
38
+ return pd.DataFrame()
39
+
40
+ df = pd.DataFrame({
41
+ f"{id}_kde_x": x,
42
+ f"{id}_kde_density": kde
43
+ })
44
+
45
+ # Add sample count if available
46
+ if n is not None:
47
+ # If n is a scalar, create a list with the same length as x
48
+ if not hasattr(n, '__len__'):
49
+ n = [n] * len(x)
50
+ df[f"{id}_kde_n"] = n
51
+
52
+ return df
@@ -0,0 +1,46 @@
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_line.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_plot_line(id, tracked_dict, kwargs):
16
+ """Format data from a plot_line call.
17
+
18
+ Processes plot_line data for CSV export.
19
+
20
+ Args:
21
+ id (str): Identifier for the plot
22
+ tracked_dict (dict): Dictionary containing 'plot_df' key with plot data
23
+ kwargs (dict): Keyword arguments passed to plot_line
24
+
25
+ Returns:
26
+ pd.DataFrame: Formatted line plot data
27
+ """
28
+ # Check if tracked_dict is empty or not a dictionary
29
+ if not tracked_dict or not isinstance(tracked_dict, dict):
30
+ return pd.DataFrame()
31
+
32
+ # Get the plot_df from tracked_dict
33
+ plot_df = tracked_dict.get('plot_df')
34
+
35
+ if plot_df is None or not isinstance(plot_df, pd.DataFrame):
36
+ return pd.DataFrame()
37
+
38
+ # Create a copy to avoid modifying the original
39
+ result = plot_df.copy()
40
+
41
+ # Add prefix to column names if ID is provided
42
+ if id is not None:
43
+ # Rename columns with ID prefix
44
+ result.columns = [f"{id}_line_{col}" for col in result.columns]
45
+
46
+ return result
@@ -0,0 +1,46 @@
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_mean_ci.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_plot_mean_ci(id, tracked_dict, kwargs):
16
+ """Format data from a plot_mean_ci call.
17
+
18
+ Processes mean with confidence interval band plot data for CSV export.
19
+
20
+ Args:
21
+ id (str): Identifier for the plot
22
+ tracked_dict (dict): Contains 'plot_df' (pandas DataFrame with mean and CI data)
23
+ kwargs (dict): Keyword arguments passed to plot_mean_ci
24
+
25
+ Returns:
26
+ pd.DataFrame: Formatted mean and CI data
27
+ """
28
+ # Mean-CI plot data is typically passed in the plot_df in the args dictionary
29
+ if not args:
30
+ return pd.DataFrame()
31
+
32
+ # Get the plot_df from args
33
+ plot_df = tracked_dict.get('plot_df')
34
+
35
+ if plot_df is None or not isinstance(plot_df, pd.DataFrame):
36
+ return pd.DataFrame()
37
+
38
+ # Create a copy to avoid modifying the original
39
+ result = plot_df.copy()
40
+
41
+ # Add prefix to column names if ID is provided
42
+ if id is not None:
43
+ # Rename columns with ID prefix
44
+ result.columns = [f"{id}_mean_ci_{col}" for col in result.columns]
45
+
46
+ return result
@@ -0,0 +1,46 @@
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_mean_std.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_plot_mean_std(id, tracked_dict, kwargs):
16
+ """Format data from a plot_mean_std call.
17
+
18
+ Processes mean with standard deviation band plot data for CSV export.
19
+
20
+ Args:
21
+ id (str): Identifier for the plot
22
+ tracked_dict (dict): Dictionary containing 'plot_df' key with mean and std data
23
+ kwargs (dict): Keyword arguments passed to plot_mean_std
24
+
25
+ Returns:
26
+ pd.DataFrame: Formatted mean and std data
27
+ """
28
+ # Check if tracked_dict is empty or not a dictionary
29
+ if not tracked_dict or not isinstance(tracked_dict, dict):
30
+ return pd.DataFrame()
31
+
32
+ # Get the plot_df from tracked_dict
33
+ plot_df = tracked_dict.get('plot_df')
34
+
35
+ if plot_df is None or not isinstance(plot_df, pd.DataFrame):
36
+ return pd.DataFrame()
37
+
38
+ # Create a copy to avoid modifying the original
39
+ result = plot_df.copy()
40
+
41
+ # Add prefix to column names if ID is provided
42
+ if id is not None:
43
+ # Rename columns with ID prefix
44
+ result.columns = [f"{id}_mean_std_{col}" for col in result.columns]
45
+
46
+ return result
@@ -0,0 +1,46 @@
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_median_iqr.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_plot_median_iqr(id, tracked_dict, kwargs):
16
+ """Format data from a plot_median_iqr call.
17
+
18
+ Processes median with interquartile range band plot data for CSV export.
19
+
20
+ Args:
21
+ id (str): Identifier for the plot
22
+ tracked_dict (dict): Contains 'plot_df' (pandas DataFrame with median and IQR data)
23
+ kwargs (dict): Keyword arguments passed to plot_median_iqr
24
+
25
+ Returns:
26
+ pd.DataFrame: Formatted median and IQR data
27
+ """
28
+ # Median-IQR plot data is typically passed in the plot_df in the args dictionary
29
+ if not args:
30
+ return pd.DataFrame()
31
+
32
+ # Get the plot_df from args
33
+ plot_df = tracked_dict.get('plot_df')
34
+
35
+ if plot_df is None or not isinstance(plot_df, pd.DataFrame):
36
+ return pd.DataFrame()
37
+
38
+ # Create a copy to avoid modifying the original
39
+ result = plot_df.copy()
40
+
41
+ # Add prefix to column names if ID is provided
42
+ if id is not None:
43
+ # Rename columns with ID prefix
44
+ result.columns = [f"{id}_median_iqr_{col}" for col in result.columns]
45
+
46
+ return result
@@ -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_raster.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py"
9
+ )
10
+ __DIR__ = os.path.dirname(__FILE__)
11
+ # ----------------------------------------
12
+
13
+ import pandas as pd
14
+
15
+ def _format_plot_raster(id, tracked_dict, kwargs):
16
+ """Format data from a plot_raster call.
17
+
18
+ Args:
19
+ id (str): Identifier for the plot
20
+ tracked_dict (dict): Dictionary containing 'raster_digit_df' key with raster plot data
21
+ kwargs (dict): Keyword arguments passed to plot_raster
22
+
23
+ Returns:
24
+ pd.DataFrame: Formatted raster plot data
25
+ """
26
+ # Check if args 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 raster_digit_df from args
31
+ raster_df = tracked_dict.get('raster_digit_df')
32
+
33
+ if raster_df is None or not isinstance(raster_df, pd.DataFrame):
34
+ return pd.DataFrame()
35
+
36
+ # Create a copy to avoid modifying the original
37
+ result = raster_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}_raster_{col}" for col in result.columns]
43
+
44
+ return result
@@ -0,0 +1,103 @@
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_rectangle.py
5
+ # ----------------------------------------
6
+ import os
7
+ __FILE__ = (
8
+ "./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.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_rectangle(id, tracked_dict, kwargs):
17
+ """Format data from a plot_rectangle 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
+ # Try to get rectangle parameters directly from tracked_dict
23
+ x = tracked_dict.get('x')
24
+ y = tracked_dict.get('y')
25
+ width = tracked_dict.get('width')
26
+ height = tracked_dict.get('height')
27
+
28
+ # If direct parameters aren't available, try the args
29
+ if any(param is None for param in [x, y, width, height]):
30
+ args = tracked_dict.get('args', [])
31
+
32
+ # Rectangles defined by [x, y, width, height]
33
+ if len(args) >= 4:
34
+ x, y, width, height = args[0], args[1], args[2], args[3]
35
+
36
+ # If we have all required parameters, create the DataFrame
37
+ if all(param is not None for param in [x, y, width, height]):
38
+ try:
39
+ # Handle single rectangle
40
+ if all(isinstance(val, (int, float, np.number)) for val in [x, y, width, height]):
41
+ return pd.DataFrame(
42
+ {
43
+ f"{id}_rectangle_x": [x],
44
+ f"{id}_rectangle_y": [y],
45
+ f"{id}_rectangle_width": [width],
46
+ f"{id}_rectangle_height": [height],
47
+ }
48
+ )
49
+
50
+ # Handle multiple rectangles (arrays)
51
+ elif all(
52
+ isinstance(val, (np.ndarray, list))
53
+ for val in [x, y, width, height]
54
+ ):
55
+ try:
56
+ result_df = pd.DataFrame(
57
+ {
58
+ f"{id}_rectangle_x": x,
59
+ f"{id}_rectangle_y": y,
60
+ f"{id}_rectangle_width": width,
61
+ f"{id}_rectangle_height": height,
62
+ }
63
+ )
64
+ return result_df
65
+ except ValueError:
66
+ # Handle case where arrays might be different lengths
67
+ result = pd.DataFrame()
68
+ result[f"{id}_rectangle_x"] = pd.Series(x)
69
+ result[f"{id}_rectangle_y"] = pd.Series(y)
70
+ result[f"{id}_rectangle_width"] = pd.Series(width)
71
+ result[f"{id}_rectangle_height"] = pd.Series(height)
72
+ return result
73
+ except Exception:
74
+ # Fallback for rectangle in case of any errors
75
+ try:
76
+ return pd.DataFrame({
77
+ f"{id}_rectangle_x": [float(x) if x is not None else 0],
78
+ f"{id}_rectangle_y": [float(y) if y is not None else 0],
79
+ f"{id}_rectangle_width": [float(width) if width is not None else 0],
80
+ f"{id}_rectangle_height": [float(height) if height is not None else 0],
81
+ })
82
+ except (TypeError, ValueError):
83
+ pass
84
+
85
+ # Check directly in the kwtracked_dict for the parameters
86
+ rect_x = kwargs.get('x')
87
+ rect_y = kwargs.get('y')
88
+ rect_w = kwargs.get('width')
89
+ rect_h = kwargs.get('height')
90
+
91
+ if all(param is not None for param in [rect_x, rect_y, rect_w, rect_h]):
92
+ try:
93
+ return pd.DataFrame({
94
+ f"{id}_rectangle_x": [float(rect_x)],
95
+ f"{id}_rectangle_y": [float(rect_y)],
96
+ f"{id}_rectangle_width": [float(rect_w)],
97
+ f"{id}_rectangle_height": [float(rect_h)],
98
+ })
99
+ except (TypeError, ValueError):
100
+ pass
101
+
102
+ # Default empty DataFrame if nothing could be processed
103
+ return pd.DataFrame()