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,33 @@
1
+ #!/usr/bin/env python3
2
+ """Scitex path module."""
3
+
4
+ from ._clean import clean
5
+ from ._find import find_dir, find_file, find_git_root
6
+ from ._get_module_path import get_data_path_from_a_package
7
+ from ._get_spath import get_spath
8
+ from ._getsize import getsize
9
+ from ._increment_version import increment_version
10
+ from ._mk_spath import mk_spath
11
+ from ._path import get_this_path, this_path
12
+ from ._split import split
13
+ from ._this_path import get_this_path, this_path
14
+ from ._version import find_latest, increment_version
15
+
16
+ __all__ = [
17
+ "clean",
18
+ "find_dir",
19
+ "find_file",
20
+ "find_git_root",
21
+ "find_latest",
22
+ "get_data_path_from_a_package",
23
+ "get_spath",
24
+ "get_this_path",
25
+ "get_this_path",
26
+ "getsize",
27
+ "increment_version",
28
+ "increment_version",
29
+ "mk_spath",
30
+ "split",
31
+ "this_path",
32
+ "this_path",
33
+ ]
scitex/path/_clean.py ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2025-05-15 00:55:30 (ywatanabe)"
4
+ # File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/path/_clean.py
5
+
6
+ import os
7
+
8
+ def clean(path_string):
9
+ """Cleans and normalizes a file system path string.
10
+
11
+ Example
12
+ -------
13
+ >>> clean('/home/user/./folder/../file.txt')
14
+ '/home/user/file.txt'
15
+ >>> clean('path/./to//file.txt')
16
+ 'path/to/file.txt'
17
+ >>> clean('path with spaces')
18
+ 'path_with_spaces'
19
+
20
+ Parameters
21
+ ----------
22
+ path_string : str
23
+ File path to clean
24
+
25
+ Returns
26
+ -------
27
+ str
28
+ Normalized path string
29
+ """
30
+ if not path_string:
31
+ return ""
32
+
33
+ # Remember if path ends with a slash (indicating a directory)
34
+ is_directory = path_string.endswith("/")
35
+
36
+ # Replace spaces with underscores
37
+ path_string = path_string.replace(" ", "_")
38
+
39
+ # Use normpath to handle ../ and ./ references
40
+ cleaned_path = os.path.normpath(path_string)
41
+
42
+ # Replace multiple slashes with single slash
43
+ while "//" in cleaned_path:
44
+ cleaned_path = cleaned_path.replace("//", "/")
45
+
46
+ # Restore trailing slash if it was a directory
47
+ if is_directory and not cleaned_path.endswith("/"):
48
+ cleaned_path += "/"
49
+
50
+ return cleaned_path
51
+
52
+ # EOF
scitex/path/_find.py ADDED
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 19:53:58 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_find.py
5
+ #!./env/bin/python3
6
+ # -*- coding: utf-8 -*-
7
+ # Time-stamp: "2024-04-17 09:34:43"
8
+ # Author: Yusuke Watanabe (ywata1989@gmail.com)
9
+
10
+ """
11
+ This script does XYZ.
12
+ """
13
+
14
+ import fnmatch
15
+ import os
16
+ import sys
17
+
18
+ import matplotlib.pyplot as plt
19
+ import scitex
20
+
21
+
22
+ # Functions
23
+ def find_git_root():
24
+ import git
25
+
26
+ repo = git.Repo(".", search_parent_directories=True)
27
+ return repo.working_tree_dir
28
+
29
+
30
+ def find_dir(root_dir, exp):
31
+ return _find(root_dir, type="d", exp=exp)
32
+
33
+
34
+ def find_file(root_dir, exp):
35
+ return _find(root_dir, type="f", exp=exp)
36
+
37
+
38
+ def _find(rootdir, type="f", exp=["*"]):
39
+ """
40
+ Mimicks the Unix find command.
41
+
42
+ Example:
43
+ # rootdir =
44
+ # type = 'f' # 'f' for files, 'd' for directories, None for both
45
+ # exp = '*.txt' # Pattern to match, or None to match all
46
+ find('/path/to/search', "f", "*.txt")
47
+ """
48
+ if isinstance(exp, str):
49
+ exp = [exp]
50
+
51
+ matches = []
52
+ for _exp in exp:
53
+ for root, dirs, files in os.walk(rootdir):
54
+ # Depending on the type, choose the list to iterate over
55
+ if type == "f": # Files only
56
+ names = files
57
+ elif type == "d": # Directories only
58
+ names = dirs
59
+ else: # All entries
60
+ names = files + dirs
61
+
62
+ for name in names:
63
+ # Construct the full path
64
+ path = os.path.join(root, name)
65
+
66
+ # If an _exp is provided, use fnmatch to filter names
67
+ if _exp and not fnmatch.fnmatch(name, _exp):
68
+ continue
69
+
70
+ # If type is set, ensure the type matches
71
+ if type == "f" and not os.path.isfile(path):
72
+ continue
73
+ if type == "d" and not os.path.isdir(path):
74
+ continue
75
+
76
+ exclude_keys = ["/lib/", "/env/", "/build/"]
77
+ if not any(ek in path for ek in exclude_keys):
78
+ matches.append(path)
79
+
80
+ # for ek in exclude_keys:
81
+ # if ek in path:
82
+ # path = None
83
+ # break
84
+
85
+ # if path is not None:
86
+ # # Add the matching path to the results
87
+ # matches.append(path)
88
+
89
+ return matches
90
+
91
+
92
+ if __name__ == "__main__":
93
+ # Start
94
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
95
+
96
+ # (YOUR AWESOME CODE)
97
+
98
+ # Close
99
+ scitex.gen.close(CONFIG)
100
+
101
+ # EOF
102
+
103
+ """
104
+ /ssh:ywatanabe@444:/home/ywatanabe/proj/entrance/scitex/path/_find.py
105
+ """
106
+
107
+
108
+ # EOF
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-14 07:39:32 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_get_module_path.py
5
+
6
+
7
+ def get_data_path_from_a_package(package_str, resource):
8
+ """
9
+ Get the path to a data file within a package.
10
+
11
+ This function finds the path to a data file within a package's data directory.
12
+
13
+ Parameters:
14
+ -----------
15
+ package_str : str
16
+ The name of the package as a string.
17
+ resource : str
18
+ The name of the resource file within the package's data directory.
19
+
20
+ Returns:
21
+ --------
22
+ str
23
+ The full path to the resource file.
24
+
25
+ Raises:
26
+ -------
27
+ ImportError
28
+ If the specified package cannot be found.
29
+ FileNotFoundError
30
+ If the resource file does not exist in the package's data directory.
31
+ """
32
+ import importlib
33
+ import os
34
+ import sys
35
+
36
+ spec = importlib.util.find_spec(package_str)
37
+ if spec is None:
38
+ raise ImportError(f"Package '{package_str}' not found")
39
+
40
+ data_dir = os.path.join(spec.origin.split("src")[0], "data")
41
+ resource_path = os.path.join(data_dir, resource)
42
+
43
+ if not os.path.exists(resource_path):
44
+ raise FileNotFoundError(
45
+ f"Resource '{resource}' not found in package '{package_str}'"
46
+ )
47
+
48
+ return resource_path
49
+
50
+
51
+ # EOF
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 20:51:29 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_get_spath.py
5
+
6
+ import inspect
7
+ import os
8
+
9
+ from ._split import split
10
+
11
+
12
+ def get_spath(sfname=".", makedirs=False):
13
+
14
+ # if __IPYTHON__:
15
+ # THIS_FILE = f'/tmp/{os.getenv("USER")}.py'
16
+ # else:
17
+ # THIS_FILE = inspect.stack()[1].filename
18
+
19
+ THIS_FILE = inspect.stack()[1].filename
20
+ if "ipython" in __file__: # for ipython
21
+ THIS_FILE = f'/tmp/{os.getenv("USER")}.py'
22
+
23
+ ## spath
24
+ fpath = __file__
25
+ fdir, fname, _ = split(fpath)
26
+ sdir = fdir + fname + "/"
27
+ spath = sdir + sfname
28
+
29
+ if makedirs:
30
+ os.makedirs(split(spath)[0], exist_ok=True)
31
+
32
+ return spath
33
+
34
+
35
+ # EOF
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 19:54:02 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_getsize.py
5
+
6
+ import os
7
+
8
+ import numpy as np
9
+
10
+
11
+ def getsize(path):
12
+ if os.path.exists(path):
13
+ return os.path.getsize(path)
14
+ else:
15
+ return np.nan
16
+
17
+
18
+ # EOF
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 19:45:32 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_increment_version.py
5
+
6
+ import os
7
+ import re
8
+ from glob import glob
9
+
10
+
11
+ def increment_version(dirname, fname, ext, version_prefix="_v"):
12
+ """
13
+ Generate the next version of a filename based on existing versioned files.
14
+
15
+ This function searches for files in the given directory that match the pattern:
16
+ {fname}{version_prefix}{number}{ext} and returns the path for the next version.
17
+
18
+ Parameters:
19
+ -----------
20
+ dirname : str
21
+ The directory to search in and where the new file will be created.
22
+ fname : str
23
+ The base filename without version number or extension.
24
+ ext : str
25
+ The file extension, including the dot (e.g., '.txt').
26
+ version_prefix : str, optional
27
+ The prefix used before the version number. Default is '_v'.
28
+
29
+ Returns:
30
+ --------
31
+ str
32
+ The full path for the next version of the file.
33
+
34
+ Example:
35
+ --------
36
+ >>> increment_version('/path/to/dir', 'myfile', '.txt')
37
+ '/path/to/dir/myfile_v004.txt'
38
+
39
+ Notes:
40
+ ------
41
+ - If no existing versioned files are found, it starts with version 001.
42
+ - The version number is always formatted with at least 3 digits.
43
+ """
44
+ # Create a regex pattern to match the version number in the filename
45
+ version_pattern = re.compile(
46
+ rf"({re.escape(fname)}{re.escape(version_prefix)})(\d+)({re.escape(ext)})$"
47
+ )
48
+
49
+ # Construct the glob pattern to find all files that match the pattern
50
+ glob_pattern = os.path.join(dirname, f"{fname}{version_prefix}*{ext}")
51
+
52
+ # Use glob to find all files that match the pattern
53
+ files = glob(glob_pattern)
54
+
55
+ # Initialize the highest version number
56
+ highest_version = 0
57
+ base, suffix = None, None
58
+
59
+ # Loop through the files to find the highest version number
60
+ for file in files:
61
+ filename = os.path.basename(file)
62
+ match = version_pattern.search(filename)
63
+ if match:
64
+ base, version_str, suffix = match.groups()
65
+ version_num = int(version_str)
66
+ if version_num > highest_version:
67
+ highest_version = version_num
68
+
69
+ # If no versioned files were found, use the provided filename and extension
70
+ if base is None or suffix is None:
71
+ base = f"{fname}{version_prefix}"
72
+ suffix = ext
73
+ highest_version = 0 # No previous versions
74
+
75
+ # Increment the highest version number
76
+ next_version_number = highest_version + 1
77
+
78
+ # Format the next version number with the same number of digits as the original
79
+ next_version_str = f"{base}{next_version_number:03d}{suffix}"
80
+
81
+ # Combine the directory and new filename to create the full path
82
+ next_filepath = os.path.join(dirname, next_version_str)
83
+
84
+ return next_filepath
85
+
86
+
87
+ # EOF
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 20:59:46 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_mk_spath.py
5
+
6
+ import inspect
7
+ import os
8
+
9
+ from ._split import split
10
+
11
+
12
+ def mk_spath(sfname, makedirs=False):
13
+ """
14
+ Create a save path based on the calling script's location.
15
+
16
+ Parameters:
17
+ -----------
18
+ sfname : str
19
+ The name of the file to be saved.
20
+ makedirs : bool, optional
21
+ If True, create the directory structure for the save path. Default is False.
22
+
23
+ Returns:
24
+ --------
25
+ str
26
+ The full save path for the file.
27
+
28
+ Example:
29
+ --------
30
+ >>> import scitex.io._path as path
31
+ >>> spath = path.mk_spath('output.txt', makedirs=True)
32
+ >>> print(spath)
33
+ '/path/to/current/script/output.txt'
34
+ """
35
+ THIS_FILE = inspect.stack()[1].filename
36
+ if "ipython" in __file__: # for ipython
37
+ THIS_FILE = f'/tmp/fake-{os.getenv("USER")}.py'
38
+
39
+ ## spath
40
+ fpath = __file__
41
+ fdir, fname, _ = split(fpath)
42
+ sdir = fdir + fname + "/"
43
+ spath = sdir + sfname
44
+
45
+ if makedirs:
46
+ os.makedirs(split(spath)[0], exist_ok=True)
47
+
48
+ return spath
49
+
50
+
51
+ # EOF
scitex/path/_path.py ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 20:46:35 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_path.py
5
+
6
+ import inspect
7
+
8
+
9
+ def this_path(when_ipython="/tmp/fake.py"):
10
+ THIS_FILE = inspect.stack()[1].filename
11
+ if "ipython" in __file__:
12
+ THIS_FILE = when_ipython
13
+ return __file__
14
+
15
+
16
+ get_this_path = this_path
17
+
18
+
19
+ # EOF
scitex/path/_split.py ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 16:18:06 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_split.py
5
+
6
+ import os
7
+
8
+
9
+ def split(fpath):
10
+ """Split a file path to (1) the directory path, (2) the file name, and (3) the file extention
11
+ Example:
12
+ dirname, fname, ext = split('../data/01/day1/split_octave/2kHz_mat/tt8-2.mat')
13
+ print(dirname) # '../data/01/day1/split_octave/2kHz_mat/'
14
+ print(fname) # 'tt8-2'
15
+ print(ext) # '.mat'
16
+ """
17
+ dirname = os.path.dirname(fpath) + "/"
18
+ base = os.path.basename(fpath)
19
+ fname, ext = os.path.splitext(base)
20
+ return dirname, fname, ext
21
+
22
+
23
+ # EOF
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 16:22:21 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_this_path.py
5
+ #!/usr/bin/env python3
6
+
7
+ import inspect
8
+
9
+
10
+ def this_path(ipython_fake_path="/tmp/fake.py"):
11
+ THIS_FILE = inspect.stack()[1].filename
12
+ if "ipython" in __file__:
13
+ THIS_FILE = ipython_fake_path
14
+ return __file__
15
+
16
+
17
+ get_this_path = this_path
18
+
19
+ # EOF
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-02 20:48:24 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/path/_version.py
5
+
6
+ import os
7
+ import re
8
+ import sys
9
+ from glob import glob
10
+
11
+ import matplotlib.pyplot as plt
12
+
13
+
14
+ # Functions
15
+ def find_latest(dirname, fname, ext, version_prefix="_v"):
16
+ version_pattern = re.compile(
17
+ rf"({re.escape(fname)}{re.escape(version_prefix)})(\d+)({re.escape(ext)})$"
18
+ )
19
+
20
+ glob_pattern = os.path.join(dirname, f"{fname}{version_prefix}*{ext}")
21
+ files = glob(glob_pattern)
22
+
23
+ highest_version = 0
24
+ latest_file = None
25
+
26
+ for file in files:
27
+ filename = os.path.basename(file)
28
+ match = version_pattern.search(filename)
29
+ if match:
30
+ version_num = int(match.group(2))
31
+ if version_num > highest_version:
32
+ highest_version = version_num
33
+ latest_file = file
34
+
35
+ return latest_file
36
+
37
+
38
+ ## Version
39
+ def increment_version(dirname, fname, ext, version_prefix="_v"):
40
+ # Create a regex pattern to match the version number in the filename
41
+ version_pattern = re.compile(
42
+ rf"({re.escape(fname)}{re.escape(version_prefix)})(\d+)({re.escape(ext)})$"
43
+ )
44
+
45
+ # Construct the glob pattern to find all files that match the pattern
46
+ glob_pattern = os.path.join(dirname, f"{fname}{version_prefix}*{ext}")
47
+
48
+ # Use glob to find all files that match the pattern
49
+ files = glob(glob_pattern)
50
+
51
+ # Initialize the highest version number
52
+ highest_version = 0
53
+ base, suffix = None, None
54
+
55
+ # Loop through the files to find the highest version number
56
+ for file in files:
57
+ filename = os.path.basename(file)
58
+ match = version_pattern.search(filename)
59
+ if match:
60
+ base, version_str, suffix = match.groups()
61
+ version_num = int(version_str)
62
+ if version_num > highest_version:
63
+ highest_version = version_num
64
+
65
+ # If no versioned files were found, use the provided filename and extension
66
+ if base is None or suffix is None:
67
+ base = f"{fname}{version_prefix}"
68
+ suffix = ext
69
+ highest_version = 0 # No previous versions
70
+
71
+ # Increment the highest version number
72
+ next_version_number = highest_version + 1
73
+
74
+ # Format the next version number with the same number of digits as the original
75
+ next_version_str = f"{base}{next_version_number:03d}{suffix}"
76
+
77
+ # Combine the directory and new filename to create the full path
78
+ next_filepath = os.path.join(dirname, next_version_str)
79
+
80
+ return next_filepath
81
+
82
+
83
+ if __name__ == "__main__":
84
+ import scitex
85
+
86
+ # Start
87
+ CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt)
88
+
89
+ # (YOUR AWESOME CODE)
90
+
91
+ # Close
92
+ scitex.gen.close(CONFIG)
93
+
94
+ # EOF
95
+
96
+ """
97
+ /ssh:ywatanabe@444:/home/ywatanabe/proj/entrance/scitex/path/_version.py
98
+ """
99
+
100
+
101
+ # EOF
scitex/pd/__init__.py ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env python3
2
+ """Scitex pd module."""
3
+
4
+ from ._find_indi import find_indi
5
+ from ._find_pval import find_pval, _find_pval_col
6
+ from ._force_df import force_df
7
+ from ._from_xyz import from_xyz
8
+ from ._ignore_SettingWithCopyWarning import ignore_SettingWithCopyWarning, ignore_setting_with_copy_warning
9
+ from ._melt_cols import melt_cols
10
+ from ._merge_columns import merge_cols, merge_columns
11
+ from ._mv import mv, mv_to_first, mv_to_last
12
+ from ._replace import replace
13
+ from ._round import round
14
+ from ._slice import slice
15
+ from ._sort import sort
16
+ from ._to_numeric import to_numeric
17
+ from ._to_xy import to_xy
18
+ from ._to_xyz import to_xyz
19
+
20
+ __all__ = [
21
+ "find_indi",
22
+ "find_pval",
23
+ "_find_pval_col",
24
+ "force_df",
25
+ "from_xyz",
26
+ "ignore_SettingWithCopyWarning",
27
+ "ignore_setting_with_copy_warning",
28
+ "melt_cols",
29
+ "merge_cols",
30
+ "merge_columns",
31
+ "mv",
32
+ "mv_to_first",
33
+ "mv_to_last",
34
+ "replace",
35
+ "round",
36
+ "slice",
37
+ "sort",
38
+ "to_numeric",
39
+ "to_xy",
40
+ "to_xyz",
41
+ ]