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,223 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # SciTeX Ecosystem Configuration Manager
4
+
5
+ """
6
+ Unified configuration system for the complete SciTeX ecosystem:
7
+ SciTeX + SciTeX-Code + SciTeX-Paper + SigMacro + Emacs-Claude-Code integration
8
+ """
9
+
10
+ import os
11
+ import yaml
12
+ from pathlib import Path
13
+ from typing import Dict, Any, Optional
14
+ import json
15
+
16
+
17
+ class SciTeXConfig:
18
+ """Central configuration manager for the SciTeX ecosystem"""
19
+
20
+ def __init__(self, config_path: Optional[str] = None):
21
+ """Initialize SciTeX configuration
22
+
23
+ Parameters
24
+ ----------
25
+ config_path : str, optional
26
+ Path to configuration file. Defaults to ~/.scitex/config.yaml
27
+ """
28
+ self.config_path = config_path or os.path.expanduser("~/.scitex/config.yaml")
29
+ self.config = self._load_config()
30
+
31
+ def _load_config(self) -> Dict[str, Any]:
32
+ """Load configuration from file or create default"""
33
+ if os.path.exists(self.config_path):
34
+ with open(self.config_path, 'r') as f:
35
+ return yaml.safe_load(f) or {}
36
+ else:
37
+ return self._create_default_config()
38
+
39
+ def _create_default_config(self) -> Dict[str, Any]:
40
+ """Create default SciTeX ecosystem configuration"""
41
+ default_config = {
42
+ 'scitex_ecosystem': {
43
+ 'version': '1.0.0',
44
+ 'core_engine': 'claude_code',
45
+ 'emacs_integration': True,
46
+ 'auto_workflow': True
47
+ },
48
+
49
+ 'paths': {
50
+ 'scitex_paper': '~/proj/SciTeX-Paper/',
51
+ 'scitex_code': '~/proj/SciTeX-Code/',
52
+ 'sigmacro': '~/proj/SigMacro/',
53
+ 'emacs_claude': '~/proj/emacs-claude-code/',
54
+ 'scitex_data': '~/data/',
55
+ 'output': '~/output/'
56
+ },
57
+
58
+ 'scitex': {
59
+ 'auto_metadata': True,
60
+ 'yaml_export': True,
61
+ 'csv_export': True,
62
+ 'tracking_enabled': True,
63
+ 'default_journal': 'nature'
64
+ },
65
+
66
+ 'ai_integration': {
67
+ 'claude_code_enabled': True,
68
+ 'auto_code_generation': True,
69
+ 'auto_manuscript_writing': True,
70
+ 'ai_assisted_analysis': True,
71
+ 'emacs_claude_integration': True
72
+ },
73
+
74
+ 'publication': {
75
+ 'default_journal': 'nature',
76
+ 'auto_formatting': True,
77
+ 'latex_compilation': True,
78
+ 'submission_package': True,
79
+ 'reproducibility_level': 'full'
80
+ },
81
+
82
+ 'workflow': {
83
+ 'auto_save_metadata': True,
84
+ 'auto_export_yaml': True,
85
+ 'auto_generate_methods': True,
86
+ 'auto_create_figures': True,
87
+ 'ai_quality_check': True
88
+ }
89
+ }
90
+
91
+ # Create config directory and save
92
+ os.makedirs(os.path.dirname(self.config_path), exist_ok=True)
93
+ self.save_config(default_config)
94
+ return default_config
95
+
96
+ def save_config(self, config: Dict[str, Any] = None):
97
+ """Save configuration to file"""
98
+ config_to_save = config or self.config
99
+ with open(self.config_path, 'w') as f:
100
+ yaml.dump(config_to_save, f, default_flow_style=False, sort_keys=False, indent=2)
101
+
102
+ def get_scitex_paths(self) -> Dict[str, str]:
103
+ """Get expanded SciTeX ecosystem paths"""
104
+ paths = {}
105
+ for key, path in self.config.get('paths', {}).items():
106
+ paths[key] = os.path.expanduser(path)
107
+ return paths
108
+
109
+ def setup_scitex_directories(self):
110
+ """Create SciTeX ecosystem directory structure"""
111
+ paths = self.get_scitex_paths()
112
+
113
+ # Create main directories
114
+ for path_name, path in paths.items():
115
+ os.makedirs(path, exist_ok=True)
116
+
117
+ # Create SciTeX-Paper subdirectories
118
+ scitex_paper = paths.get('scitex_paper')
119
+ if scitex_paper:
120
+ subdirs = ['figures', 'data', 'metadata', 'code', 'sections', 'manuscripts']
121
+ for subdir in subdirs:
122
+ os.makedirs(os.path.join(scitex_paper, subdir), exist_ok=True)
123
+
124
+ def get_ai_settings(self) -> Dict[str, Any]:
125
+ """Get AI integration settings"""
126
+ return self.config.get('ai_integration', {})
127
+
128
+ def get_publication_settings(self) -> Dict[str, Any]:
129
+ """Get publication workflow settings"""
130
+ return self.config.get('publication', {})
131
+
132
+ def is_emacs_claude_enabled(self) -> bool:
133
+ """Check if Emacs-Claude integration is enabled"""
134
+ return self.config.get('ai_integration', {}).get('emacs_claude_integration', False)
135
+
136
+ def get_default_journal(self) -> str:
137
+ """Get default target journal"""
138
+ return self.config.get('publication', {}).get('default_journal', 'nature')
139
+
140
+ def enable_ai_workflow(self):
141
+ """Enable full AI-powered workflow"""
142
+ self.config['ai_integration']['claude_code_enabled'] = True
143
+ self.config['ai_integration']['auto_code_generation'] = True
144
+ self.config['ai_integration']['auto_manuscript_writing'] = True
145
+ self.config['workflow']['ai_quality_check'] = True
146
+ self.save_config()
147
+
148
+ def create_project_config(self, project_name: str, project_path: str):
149
+ """Create project-specific configuration"""
150
+ project_config = {
151
+ 'project': {
152
+ 'name': project_name,
153
+ 'path': project_path,
154
+ 'created': str(pd.Timestamp.now()),
155
+ 'scitex_version': '1.0.0'
156
+ },
157
+ 'inherit_from': self.config_path,
158
+ 'overrides': {
159
+ 'paths': {
160
+ 'output': os.path.join(project_path, 'output'),
161
+ 'data': os.path.join(project_path, 'data'),
162
+ 'figures': os.path.join(project_path, 'figures')
163
+ }
164
+ }
165
+ }
166
+
167
+ project_config_path = os.path.join(project_path, '.scitex_project.yaml')
168
+ with open(project_config_path, 'w') as f:
169
+ yaml.dump(project_config, f, default_flow_style=False, indent=2)
170
+
171
+ return project_config_path
172
+
173
+
174
+ # Global configuration instance
175
+ _scitex_config = None
176
+
177
+ def get_scitex_config() -> SciTeXConfig:
178
+ """Get global SciTeX configuration instance"""
179
+ global _scitex_config
180
+ if _scitex_config is None:
181
+ _scitex_config = SciTeXConfig()
182
+ return _scitex_config
183
+
184
+
185
+ def configure_scitex_ecosystem():
186
+ """Configure the complete SciTeX ecosystem"""
187
+ config = get_scitex_config()
188
+
189
+ print("🚀 Configuring SciTeX Ecosystem...")
190
+ print("="*50)
191
+
192
+ # Setup directories
193
+ config.setup_scitex_directories()
194
+ paths = config.get_scitex_paths()
195
+
196
+ print("📁 Directory Structure:")
197
+ for name, path in paths.items():
198
+ status = "✅" if os.path.exists(path) else "❌"
199
+ print(f" {status} {name}: {path}")
200
+
201
+ # Check AI integration
202
+ print("\n🤖 AI Integration:")
203
+ ai_settings = config.get_ai_settings()
204
+ for setting, enabled in ai_settings.items():
205
+ status = "✅" if enabled else "❌"
206
+ print(f" {status} {setting}")
207
+
208
+ # Check Emacs-Claude integration
209
+ emacs_claude_path = paths.get('emacs_claude')
210
+ if emacs_claude_path and os.path.exists(emacs_claude_path):
211
+ print(f"\n💻 Emacs-Claude Integration: ✅ {emacs_claude_path}")
212
+ else:
213
+ print(f"\n💻 Emacs-Claude Integration: ❌ Not found")
214
+
215
+ print(f"\n📋 Configuration saved: {config.config_path}")
216
+ print("\n🎯 SciTeX Ecosystem Ready!")
217
+
218
+ return config
219
+
220
+
221
+ if __name__ == "__main__":
222
+ # Setup the complete ecosystem
223
+ configure_scitex_ecosystem()
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env python3
2
+ """Scitex reproduce module."""
3
+
4
+ from ._fix_seeds import fix_seeds
5
+ from ._gen_ID import gen_ID, gen_id
6
+ from ._gen_timestamp import gen_timestamp, timestamp
7
+
8
+ __all__ = [
9
+ "fix_seeds",
10
+ "gen_ID",
11
+ "gen_id",
12
+ "gen_timestamp",
13
+ "timestamp",
14
+ ]
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 14:28:12 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/reproduce/_fix_seeds.py
5
+
6
+
7
+ def fix_seeds(
8
+ os=None, random=None, np=None, torch=None, tf=None, seed=42, verbose=True
9
+ ):
10
+ os_str = "os" if os is not None else ""
11
+ random_str = "random" if random is not None else ""
12
+ np_str = "np" if np is not None else ""
13
+ torch_str = "torch" if torch is not None else ""
14
+ tf_str = "tf" if tf is not None else ""
15
+
16
+ # https://github.com/lucidrains/vit-pytorch/blob/main/examples/cats_and_dogs.ipynb
17
+ if os is not None:
18
+ import os
19
+
20
+ os.environ["PYTHONHASHSEED"] = str(seed)
21
+
22
+ if random is not None:
23
+ random.seed(seed)
24
+
25
+ if np is not None:
26
+ np.random.seed(seed)
27
+
28
+ if torch is not None:
29
+ torch.manual_seed(seed)
30
+ torch.cuda.manual_seed(seed)
31
+ torch.cuda.manual_seed_all(seed)
32
+ torch.backends.cudnn.deterministic = True
33
+ # torch.use_deterministic_algorithms(True)
34
+
35
+ if tf is not None:
36
+ tf.random.set_seed(seed)
37
+
38
+ if verbose:
39
+ print(f"\n{'-'*40}\n")
40
+ print(f"Random seeds of the following packages have been fixed as {seed}")
41
+ print(os_str, random_str, np_str, torch_str, tf_str)
42
+ print(f"\n{'-'*40}\n")
43
+
44
+
45
+ # EOF
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-07 17:53:38 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/reproduce/_gen_ID.py
5
+
6
+ import random as _random
7
+ import string as _string
8
+ from datetime import datetime as _datetime
9
+
10
+
11
+ def gen_id(time_format="%YY-%mM-%dD-%Hh%Mm%Ss", N=8):
12
+ """Generate a unique identifier with timestamp and random characters.
13
+
14
+ Creates a unique ID by combining a formatted timestamp with random
15
+ alphanumeric characters. Useful for creating unique experiment IDs,
16
+ run identifiers, or temporary file names.
17
+
18
+ Parameters
19
+ ----------
20
+ time_format : str, optional
21
+ Format string for timestamp portion. Default is "%YY-%mM-%dD-%Hh%Mm%Ss"
22
+ which produces "2025Y-05M-31D-12h30m45s" format.
23
+ N : int, optional
24
+ Number of random characters to append. Default is 8.
25
+
26
+ Returns
27
+ -------
28
+ str
29
+ Unique identifier in format "{timestamp}_{random_chars}"
30
+
31
+ Examples
32
+ --------
33
+ >>> id1 = gen_id()
34
+ >>> print(id1)
35
+ '2025Y-05M-31D-12h30m45s_a3Bc9xY2'
36
+
37
+ >>> id2 = gen_id(time_format="%Y%m%d", N=4)
38
+ >>> print(id2)
39
+ '20250531_xY9a'
40
+
41
+ >>> # For experiment tracking
42
+ >>> exp_id = gen_id()
43
+ >>> save_path = f"results/experiment_{exp_id}.pkl"
44
+ """
45
+ now_str = _datetime.now().strftime(time_format)
46
+ rand_str = "".join(
47
+ [_random.choice(_string.ascii_letters + _string.digits) for i in range(N)]
48
+ )
49
+ return now_str + "_" + rand_str
50
+
51
+
52
+ # Backward compatibility
53
+ gen_ID = gen_id # Deprecated: use gen_id instead
54
+
55
+ # EOF
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-07 17:44:32 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/reproduce/_gen_timestamp.py
5
+
6
+ from datetime import datetime as _datetime
7
+
8
+
9
+ def gen_timestamp():
10
+ """Generate a timestamp string for file naming.
11
+
12
+ Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for
13
+ creating unique filenames or version identifiers.
14
+
15
+ Returns
16
+ -------
17
+ str
18
+ Timestamp string in format "YYYY-MMDD-HHMM"
19
+
20
+ Examples
21
+ --------
22
+ >>> timestamp = gen_timestamp()
23
+ >>> print(timestamp)
24
+ '2025-0531-1230'
25
+
26
+ >>> filename = f"experiment_{gen_timestamp()}.csv"
27
+ >>> print(filename)
28
+ 'experiment_2025-0531-1230.csv'
29
+ """
30
+ return _datetime.now().strftime("%Y-%m%d-%H%M")
31
+
32
+
33
+ timestamp = gen_timestamp
34
+
35
+ # EOF
scitex/res/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env python3
2
+ """Scitex res - resource module (currently empty)."""
3
+
4
+ # This module is currently empty but preserved for compatibility
5
+ __all__ = []
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env python3
2
+ """Scitex resource module."""
3
+
4
+ from ._get_processor_usages import get_processor_usages
5
+ from ._get_specs import get_specs
6
+ from ._log_processor_usages import log_processor_usages, main
7
+
8
+ __all__ = [
9
+ "get_processor_usages",
10
+ "get_specs",
11
+ "log_processor_usages",
12
+ "main",
13
+ ]
@@ -0,0 +1,281 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-04 16:12:50 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/resource/_get_processor_usages.py
5
+
6
+ """
7
+ Functionality:
8
+ * Monitors and records system resource utilization (CPU, RAM, GPU, VRAM)
9
+ Input:
10
+ * None (uses system calls and psutil library)
11
+ Output:
12
+ * DataFrame containing resource usage statistics
13
+ Prerequisites:
14
+ * NVIDIA GPU with nvidia-smi installed
15
+ * psutil package
16
+ """
17
+
18
+ import os
19
+ import subprocess
20
+ import sys
21
+ from datetime import datetime
22
+ from typing import Optional, Tuple
23
+
24
+ import matplotlib.pyplot as plt
25
+ import pandas as pd
26
+ import psutil
27
+
28
+
29
+ def get_processor_usages() -> pd.DataFrame:
30
+ """Gets current system resource usage statistics.
31
+
32
+ Returns
33
+ -------
34
+ pd.DataFrame
35
+ Resource usage data with columns:
36
+ - Timestamp: Timestamp
37
+ - CPU [%]: CPU utilization
38
+ - RAM [GiB]: RAM usage
39
+ - GPU [%]: GPU utilization
40
+ - VRAM [GiB]: VRAM usage
41
+
42
+ Example
43
+ -------
44
+ >>> df = get_proccessor_usages()
45
+ >>> print(df)
46
+ Timestamp CPU [%] RAM [GiB] GPU [%] VRAM [GiB]
47
+ 0 2024-11-04 10:30:15 25.3 8.2 65.0 4.5
48
+ """
49
+ try:
50
+ cpu_perc, ram_gb = _get_cpu_usage()
51
+ gpu_perc, vram_gb = _get_gpu_usage()
52
+
53
+ sr = pd.Series(
54
+ {
55
+ "Timestamp": datetime.now(),
56
+ "CPU [%]": cpu_perc,
57
+ "RAM [GiB]": ram_gb,
58
+ "GPU [%]": gpu_perc,
59
+ "VRAM [GiB]": vram_gb,
60
+ }
61
+ )
62
+
63
+ return pd.DataFrame(sr).round(1).T
64
+ except Exception as err:
65
+ raise RuntimeError(f"Failed to get resource usage: {err}")
66
+
67
+
68
+ def _get_cpu_usage(
69
+ process: Optional[int] = os.getpid(), n_round: int = 1
70
+ ) -> Tuple[float, float]:
71
+ """Gets CPU and RAM usage statistics.
72
+
73
+ Parameters
74
+ ----------
75
+ process : int, optional
76
+ Process ID to monitor
77
+ n_round : int, optional
78
+ Number of decimal places to round to
79
+
80
+ Returns
81
+ -------
82
+ Tuple[float, float]
83
+ CPU usage percentage and RAM usage in GiB
84
+ """
85
+ try:
86
+ cpu_usage_perc = psutil.cpu_percent()
87
+ ram_usage_gb = (
88
+ psutil.virtual_memory().percent
89
+ / 100
90
+ * psutil.virtual_memory().total
91
+ / (1024**3)
92
+ )
93
+ return round(cpu_usage_perc, n_round), round(ram_usage_gb, n_round)
94
+ except Exception as err:
95
+ raise RuntimeError(f"Failed to get CPU/RAM usage: {err}")
96
+
97
+
98
+ def _get_gpu_usage(n_round: int = 1) -> Tuple[float, float]:
99
+ """Gets GPU and VRAM usage statistics.
100
+
101
+ Parameters
102
+ ----------
103
+ n_round : int, optional
104
+ Number of decimal places to round to
105
+
106
+ Returns
107
+ -------
108
+ Tuple[float, float]
109
+ GPU usage percentage and VRAM usage in GiB
110
+ """
111
+ try:
112
+ result = subprocess.run(
113
+ [
114
+ "nvidia-smi",
115
+ "--query-gpu=utilization.gpu,memory.used",
116
+ "--format=csv,nounits,noheader",
117
+ ],
118
+ capture_output=True,
119
+ text=True,
120
+ check=True,
121
+ )
122
+ gpu_usage_perc, vram_usage_mib = result.stdout.strip().split(",")
123
+ vram_usage_gb = float(vram_usage_mib) / 1024
124
+ return round(float(gpu_usage_perc), n_round), round(vram_usage_gb, n_round)
125
+ except:
126
+ return 0.0, 0.0
127
+ # except subprocess.CalledProcessError as err:
128
+ # raise RuntimeError(f"Failed to execute nvidia-smi: {err}")
129
+ # except Exception as err:
130
+ # raise RuntimeError(f"Failed to get GPU/VRAM usage: {err}")
131
+
132
+
133
+ # def _get_gpu_usage(n_round: int = 1) -> Tuple[float, float]:
134
+ # """Gets GPU and VRAM usage statistics.
135
+
136
+ # Parameters
137
+ # ----------
138
+ # n_round : int, optional
139
+ # Number of decimal places to round to
140
+
141
+ # Returns
142
+ # -------
143
+ # Tuple[float, float]
144
+ # GPU usage percentage and VRAM usage in GiB
145
+ # """
146
+ # try:
147
+ # result = subprocess.run(
148
+ # [
149
+ # "nvidia-smi",
150
+ # "--query-gpu=utilization.gpu,memory.used",
151
+ # "--format=csv,nounits,noheader",
152
+ # ],
153
+ # capture_output=True,
154
+ # text=True,
155
+ # check=True,
156
+ # )
157
+ # gpu_usage_perc, vram_usage_mib = result.stdout.strip().split(",")
158
+ # vram_usage_gb = float(vram_usage_mib) / 1024
159
+ # return round(float(gpu_usage_perc), n_round), round(vram_usage_gb, n_round)
160
+ # except Exception as e:
161
+ # print(e)
162
+ # return 0.0, 0.0 # Return zeros when nvidia-smi is not available
163
+
164
+
165
+ if __name__ == "__main__":
166
+ import scitex
167
+
168
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, verbose=False)
169
+
170
+ usage = scitex.resource.get_processor_usages()
171
+ scitex.io.save(usage, "usage.csv")
172
+
173
+ scitex.gen.close(CONFIG, verbose=False, notify=False)
174
+
175
+ # EOF
176
+
177
+ # #!/usr/bin/env python3
178
+ # # -*- coding: utf-8 -*-
179
+ # # Time-stamp: "2024-11-04 10:27:35 (ywatanabe)"
180
+ # # File: ./scitex_repo/src/scitex/resource/_get_processor_usages.py
181
+
182
+ # """
183
+ # This script does XYZ.
184
+ # """
185
+
186
+ # # Functions
187
+ # import os
188
+ # import subprocess
189
+ # import sys
190
+ # from datetime import datetime
191
+
192
+ # import matplotlib.pyplot as plt
193
+ # import scitex
194
+ # import pandas as pd
195
+ # import psutil
196
+
197
+
198
+ # # Functions
199
+ # def get_processor_usages():
200
+ # """
201
+ # Retrieves the current usage statistics for the CPU, RAM, GPU, and VRAM.
202
+
203
+ # This function fetches the current usage percentages for the CPU and GPU, as well as the current usage in GiB for RAM and VRAM.
204
+ # The data is then compiled into a pandas DataFrame with the current timestamp.
205
+
206
+ # Returns:
207
+ # pd.DataFrame: A pandas DataFrame containing the current usage statistics with the following columns:
208
+ # - Time: The timestamp when the data was retrieved.
209
+ # - CPU [%]: The CPU usage percentage.
210
+ # - RAM [GiB]: The RAM usage in GiB.
211
+ # - GPU [%]: The GPU usage percentage.
212
+ # - VRAM [GiB]: The VRAM usage in GiB.
213
+ # Each row in the DataFrame represents a single instance of data retrieval, rounded to 1 decimal place.
214
+
215
+ # Example:
216
+ # >>> usage_df = get_processor_usages()
217
+ # >>> print(usage_df)
218
+ # """
219
+ # cpu_perc, ram_gb = _get_cpu_usage()
220
+ # gpu_perc, vram_gb = _get_gpu_usage()
221
+
222
+ # sr = pd.Series(
223
+ # {
224
+ # "Time": datetime.now(),
225
+ # "CPU [%]": cpu_perc,
226
+ # "RAM [GiB]": ram_gb,
227
+ # "GPU [%]": gpu_perc,
228
+ # "VRAM [GiB]": vram_gb,
229
+ # }
230
+ # )
231
+
232
+ # df = pd.DataFrame(sr).round(1).T
233
+
234
+ # return df
235
+
236
+
237
+ # def _get_cpu_usage(process=os.getpid(), n_round=1):
238
+ # cpu_usage_perc = psutil.cpu_percent()
239
+ # ram_usage_gb = (
240
+ # psutil.virtual_memory().percent
241
+ # / 100
242
+ # * psutil.virtual_memory().total
243
+ # / (1024**3)
244
+ # )
245
+ # return round(cpu_usage_perc, n_round), round(ram_usage_gb, n_round)
246
+
247
+
248
+ # def _get_gpu_usage(n_round=1):
249
+ # result = subprocess.run(
250
+ # [
251
+ # "nvidia-smi",
252
+ # "--query-gpu=utilization.gpu,memory.used",
253
+ # "--format=csv,nounits,noheader",
254
+ # ],
255
+ # capture_output=True,
256
+ # text=True,
257
+ # )
258
+ # gpu_usage_perc, _vram_usage_mib = result.stdout.strip().split(",")
259
+ # vram_usage_gb = float(_vram_usage_mib) / 1024
260
+ # return round(float(gpu_usage_perc), n_round), round(
261
+ # float(vram_usage_gb), n_round
262
+ # )
263
+
264
+
265
+ # # (YOUR AWESOME CODE)
266
+
267
+ # if __name__ == "__main__":
268
+ # # Start
269
+ # CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(
270
+ # sys, plt, verbose=False
271
+ # )
272
+
273
+ # usage = scitex.resource.get_processor_usages()
274
+ # scitex.io.save(usage, "usage.csv")
275
+
276
+ # # Close
277
+ # scitex.gen.close(CONFIG, verbose=False, notify=False)
278
+
279
+ #
280
+
281
+ # EOF