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.
- scitex/__init__.py +73 -0
- scitex/__main__.py +89 -0
- scitex/__version__.py +14 -0
- scitex/_sh.py +59 -0
- scitex/ai/_LearningCurveLogger.py +583 -0
- scitex/ai/__Classifiers.py +101 -0
- scitex/ai/__init__.py +55 -0
- scitex/ai/_gen_ai/_Anthropic.py +173 -0
- scitex/ai/_gen_ai/_BaseGenAI.py +336 -0
- scitex/ai/_gen_ai/_DeepSeek.py +175 -0
- scitex/ai/_gen_ai/_Google.py +161 -0
- scitex/ai/_gen_ai/_Groq.py +97 -0
- scitex/ai/_gen_ai/_Llama.py +142 -0
- scitex/ai/_gen_ai/_OpenAI.py +230 -0
- scitex/ai/_gen_ai/_PARAMS.py +565 -0
- scitex/ai/_gen_ai/_Perplexity.py +191 -0
- scitex/ai/_gen_ai/__init__.py +32 -0
- scitex/ai/_gen_ai/_calc_cost.py +78 -0
- scitex/ai/_gen_ai/_format_output_func.py +183 -0
- scitex/ai/_gen_ai/_genai_factory.py +71 -0
- scitex/ai/act/__init__.py +8 -0
- scitex/ai/act/_define.py +11 -0
- scitex/ai/classification/__init__.py +7 -0
- scitex/ai/classification/classification_reporter.py +1137 -0
- scitex/ai/classification/classifier_server.py +131 -0
- scitex/ai/classification/classifiers.py +101 -0
- scitex/ai/classification_reporter.py +1161 -0
- scitex/ai/classifier_server.py +131 -0
- scitex/ai/clustering/__init__.py +11 -0
- scitex/ai/clustering/_pca.py +115 -0
- scitex/ai/clustering/_umap.py +376 -0
- scitex/ai/early_stopping.py +149 -0
- scitex/ai/feature_extraction/__init__.py +56 -0
- scitex/ai/feature_extraction/vit.py +148 -0
- scitex/ai/genai/__init__.py +277 -0
- scitex/ai/genai/anthropic.py +177 -0
- scitex/ai/genai/anthropic_provider.py +320 -0
- scitex/ai/genai/anthropic_refactored.py +109 -0
- scitex/ai/genai/auth_manager.py +200 -0
- scitex/ai/genai/base_genai.py +336 -0
- scitex/ai/genai/base_provider.py +291 -0
- scitex/ai/genai/calc_cost.py +78 -0
- scitex/ai/genai/chat_history.py +307 -0
- scitex/ai/genai/cost_tracker.py +276 -0
- scitex/ai/genai/deepseek.py +188 -0
- scitex/ai/genai/deepseek_provider.py +251 -0
- scitex/ai/genai/format_output_func.py +183 -0
- scitex/ai/genai/genai_factory.py +71 -0
- scitex/ai/genai/google.py +169 -0
- scitex/ai/genai/google_provider.py +228 -0
- scitex/ai/genai/groq.py +104 -0
- scitex/ai/genai/groq_provider.py +248 -0
- scitex/ai/genai/image_processor.py +250 -0
- scitex/ai/genai/llama.py +155 -0
- scitex/ai/genai/llama_provider.py +214 -0
- scitex/ai/genai/mock_provider.py +127 -0
- scitex/ai/genai/model_registry.py +304 -0
- scitex/ai/genai/openai.py +230 -0
- scitex/ai/genai/openai_provider.py +293 -0
- scitex/ai/genai/params.py +565 -0
- scitex/ai/genai/perplexity.py +202 -0
- scitex/ai/genai/perplexity_provider.py +205 -0
- scitex/ai/genai/provider_base.py +302 -0
- scitex/ai/genai/provider_factory.py +370 -0
- scitex/ai/genai/response_handler.py +235 -0
- scitex/ai/layer/_Pass.py +21 -0
- scitex/ai/layer/__init__.py +10 -0
- scitex/ai/layer/_switch.py +8 -0
- scitex/ai/loss/_L1L2Losses.py +34 -0
- scitex/ai/loss/__init__.py +12 -0
- scitex/ai/loss/multi_task_loss.py +47 -0
- scitex/ai/metrics/__init__.py +9 -0
- scitex/ai/metrics/_bACC.py +51 -0
- scitex/ai/metrics/silhoute_score_block.py +496 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +207 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +238 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +215 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
- scitex/ai/optim/__init__.py +13 -0
- scitex/ai/optim/_get_set.py +31 -0
- scitex/ai/optim/_optimizers.py +71 -0
- scitex/ai/plt/__init__.py +21 -0
- scitex/ai/plt/_conf_mat.py +592 -0
- scitex/ai/plt/_learning_curve.py +194 -0
- scitex/ai/plt/_optuna_study.py +111 -0
- scitex/ai/plt/aucs/__init__.py +2 -0
- scitex/ai/plt/aucs/example.py +60 -0
- scitex/ai/plt/aucs/pre_rec_auc.py +223 -0
- scitex/ai/plt/aucs/roc_auc.py +246 -0
- scitex/ai/sampling/undersample.py +29 -0
- scitex/ai/sk/__init__.py +11 -0
- scitex/ai/sk/_clf.py +58 -0
- scitex/ai/sk/_to_sktime.py +100 -0
- scitex/ai/sklearn/__init__.py +26 -0
- scitex/ai/sklearn/clf.py +58 -0
- scitex/ai/sklearn/to_sktime.py +100 -0
- scitex/ai/training/__init__.py +7 -0
- scitex/ai/training/early_stopping.py +150 -0
- scitex/ai/training/learning_curve_logger.py +555 -0
- scitex/ai/utils/__init__.py +22 -0
- scitex/ai/utils/_check_params.py +50 -0
- scitex/ai/utils/_default_dataset.py +46 -0
- scitex/ai/utils/_format_samples_for_sktime.py +26 -0
- scitex/ai/utils/_label_encoder.py +134 -0
- scitex/ai/utils/_merge_labels.py +22 -0
- scitex/ai/utils/_sliding_window_data_augmentation.py +11 -0
- scitex/ai/utils/_under_sample.py +51 -0
- scitex/ai/utils/_verify_n_gpus.py +16 -0
- scitex/ai/utils/grid_search.py +148 -0
- scitex/context/__init__.py +9 -0
- scitex/context/_suppress_output.py +38 -0
- scitex/db/_BaseMixins/_BaseBackupMixin.py +30 -0
- scitex/db/_BaseMixins/_BaseBatchMixin.py +31 -0
- scitex/db/_BaseMixins/_BaseBlobMixin.py +81 -0
- scitex/db/_BaseMixins/_BaseConnectionMixin.py +43 -0
- scitex/db/_BaseMixins/_BaseImportExportMixin.py +39 -0
- scitex/db/_BaseMixins/_BaseIndexMixin.py +29 -0
- scitex/db/_BaseMixins/_BaseMaintenanceMixin.py +33 -0
- scitex/db/_BaseMixins/_BaseQueryMixin.py +52 -0
- scitex/db/_BaseMixins/_BaseRowMixin.py +32 -0
- scitex/db/_BaseMixins/_BaseSchemaMixin.py +44 -0
- scitex/db/_BaseMixins/_BaseTableMixin.py +66 -0
- scitex/db/_BaseMixins/_BaseTransactionMixin.py +52 -0
- scitex/db/_BaseMixins/__init__.py +30 -0
- scitex/db/_PostgreSQL.py +126 -0
- scitex/db/_PostgreSQLMixins/_BackupMixin.py +166 -0
- scitex/db/_PostgreSQLMixins/_BatchMixin.py +82 -0
- scitex/db/_PostgreSQLMixins/_BlobMixin.py +231 -0
- scitex/db/_PostgreSQLMixins/_ConnectionMixin.py +92 -0
- scitex/db/_PostgreSQLMixins/_ImportExportMixin.py +59 -0
- scitex/db/_PostgreSQLMixins/_IndexMixin.py +64 -0
- scitex/db/_PostgreSQLMixins/_MaintenanceMixin.py +175 -0
- scitex/db/_PostgreSQLMixins/_QueryMixin.py +108 -0
- scitex/db/_PostgreSQLMixins/_RowMixin.py +75 -0
- scitex/db/_PostgreSQLMixins/_SchemaMixin.py +126 -0
- scitex/db/_PostgreSQLMixins/_TableMixin.py +176 -0
- scitex/db/_PostgreSQLMixins/_TransactionMixin.py +57 -0
- scitex/db/_PostgreSQLMixins/__init__.py +34 -0
- scitex/db/_SQLite3.py +2136 -0
- scitex/db/_SQLite3Mixins/_BatchMixin.py +243 -0
- scitex/db/_SQLite3Mixins/_BlobMixin.py +229 -0
- scitex/db/_SQLite3Mixins/_ConnectionMixin.py +108 -0
- scitex/db/_SQLite3Mixins/_ImportExportMixin.py +80 -0
- scitex/db/_SQLite3Mixins/_IndexMixin.py +32 -0
- scitex/db/_SQLite3Mixins/_MaintenanceMixin.py +176 -0
- scitex/db/_SQLite3Mixins/_QueryMixin.py +83 -0
- scitex/db/_SQLite3Mixins/_RowMixin.py +75 -0
- scitex/db/_SQLite3Mixins/_TableMixin.py +183 -0
- scitex/db/_SQLite3Mixins/_TransactionMixin.py +71 -0
- scitex/db/_SQLite3Mixins/__init__.py +30 -0
- scitex/db/__init__.py +14 -0
- scitex/db/_delete_duplicates.py +397 -0
- scitex/db/_inspect.py +163 -0
- scitex/decorators/__init__.py +54 -0
- scitex/decorators/_auto_order.py +172 -0
- scitex/decorators/_batch_fn.py +127 -0
- scitex/decorators/_cache_disk.py +32 -0
- scitex/decorators/_cache_mem.py +12 -0
- scitex/decorators/_combined.py +98 -0
- scitex/decorators/_converters.py +282 -0
- scitex/decorators/_deprecated.py +26 -0
- scitex/decorators/_not_implemented.py +30 -0
- scitex/decorators/_numpy_fn.py +86 -0
- scitex/decorators/_pandas_fn.py +121 -0
- scitex/decorators/_preserve_doc.py +19 -0
- scitex/decorators/_signal_fn.py +95 -0
- scitex/decorators/_timeout.py +55 -0
- scitex/decorators/_torch_fn.py +136 -0
- scitex/decorators/_wrap.py +39 -0
- scitex/decorators/_xarray_fn.py +88 -0
- scitex/dev/__init__.py +15 -0
- scitex/dev/_analyze_code_flow.py +284 -0
- scitex/dev/_reload.py +59 -0
- scitex/dict/_DotDict.py +442 -0
- scitex/dict/__init__.py +18 -0
- scitex/dict/_listed_dict.py +42 -0
- scitex/dict/_pop_keys.py +36 -0
- scitex/dict/_replace.py +13 -0
- scitex/dict/_safe_merge.py +62 -0
- scitex/dict/_to_str.py +32 -0
- scitex/dsp/__init__.py +72 -0
- scitex/dsp/_crop.py +122 -0
- scitex/dsp/_demo_sig.py +331 -0
- scitex/dsp/_detect_ripples.py +212 -0
- scitex/dsp/_ensure_3d.py +18 -0
- scitex/dsp/_hilbert.py +78 -0
- scitex/dsp/_listen.py +702 -0
- scitex/dsp/_misc.py +30 -0
- scitex/dsp/_mne.py +32 -0
- scitex/dsp/_modulation_index.py +79 -0
- scitex/dsp/_pac.py +319 -0
- scitex/dsp/_psd.py +102 -0
- scitex/dsp/_resample.py +65 -0
- scitex/dsp/_time.py +36 -0
- scitex/dsp/_transform.py +68 -0
- scitex/dsp/_wavelet.py +212 -0
- scitex/dsp/add_noise.py +111 -0
- scitex/dsp/example.py +253 -0
- scitex/dsp/filt.py +155 -0
- scitex/dsp/norm.py +18 -0
- scitex/dsp/params.py +51 -0
- scitex/dsp/reference.py +43 -0
- scitex/dsp/template.py +25 -0
- scitex/dsp/utils/__init__.py +15 -0
- scitex/dsp/utils/_differential_bandpass_filters.py +120 -0
- scitex/dsp/utils/_ensure_3d.py +18 -0
- scitex/dsp/utils/_ensure_even_len.py +10 -0
- scitex/dsp/utils/_zero_pad.py +48 -0
- scitex/dsp/utils/filter.py +408 -0
- scitex/dsp/utils/pac.py +177 -0
- scitex/dt/__init__.py +8 -0
- scitex/dt/_linspace.py +130 -0
- scitex/etc/__init__.py +15 -0
- scitex/etc/wait_key.py +34 -0
- scitex/gen/_DimHandler.py +196 -0
- scitex/gen/_TimeStamper.py +244 -0
- scitex/gen/__init__.py +95 -0
- scitex/gen/_alternate_kwarg.py +13 -0
- scitex/gen/_cache.py +11 -0
- scitex/gen/_check_host.py +34 -0
- scitex/gen/_ci.py +12 -0
- scitex/gen/_close.py +222 -0
- scitex/gen/_embed.py +78 -0
- scitex/gen/_inspect_module.py +257 -0
- scitex/gen/_is_ipython.py +12 -0
- scitex/gen/_less.py +48 -0
- scitex/gen/_list_packages.py +139 -0
- scitex/gen/_mat2py.py +88 -0
- scitex/gen/_norm.py +170 -0
- scitex/gen/_paste.py +18 -0
- scitex/gen/_print_config.py +84 -0
- scitex/gen/_shell.py +48 -0
- scitex/gen/_src.py +111 -0
- scitex/gen/_start.py +451 -0
- scitex/gen/_symlink.py +55 -0
- scitex/gen/_symlog.py +27 -0
- scitex/gen/_tee.py +238 -0
- scitex/gen/_title2path.py +60 -0
- scitex/gen/_title_case.py +88 -0
- scitex/gen/_to_even.py +84 -0
- scitex/gen/_to_odd.py +34 -0
- scitex/gen/_to_rank.py +39 -0
- scitex/gen/_transpose.py +37 -0
- scitex/gen/_type.py +78 -0
- scitex/gen/_var_info.py +73 -0
- scitex/gen/_wrap.py +17 -0
- scitex/gen/_xml2dict.py +76 -0
- scitex/gen/misc.py +730 -0
- scitex/gen/path.py +0 -0
- scitex/general/__init__.py +5 -0
- scitex/gists/_SigMacro_processFigure_S.py +128 -0
- scitex/gists/_SigMacro_toBlue.py +172 -0
- scitex/gists/__init__.py +12 -0
- scitex/io/_H5Explorer.py +292 -0
- scitex/io/__init__.py +82 -0
- scitex/io/_cache.py +101 -0
- scitex/io/_flush.py +24 -0
- scitex/io/_glob.py +103 -0
- scitex/io/_json2md.py +113 -0
- scitex/io/_load.py +168 -0
- scitex/io/_load_configs.py +146 -0
- scitex/io/_load_modules/__init__.py +38 -0
- scitex/io/_load_modules/_catboost.py +66 -0
- scitex/io/_load_modules/_con.py +20 -0
- scitex/io/_load_modules/_db.py +24 -0
- scitex/io/_load_modules/_docx.py +42 -0
- scitex/io/_load_modules/_eeg.py +110 -0
- scitex/io/_load_modules/_hdf5.py +196 -0
- scitex/io/_load_modules/_image.py +19 -0
- scitex/io/_load_modules/_joblib.py +19 -0
- scitex/io/_load_modules/_json.py +18 -0
- scitex/io/_load_modules/_markdown.py +103 -0
- scitex/io/_load_modules/_matlab.py +37 -0
- scitex/io/_load_modules/_numpy.py +39 -0
- scitex/io/_load_modules/_optuna.py +155 -0
- scitex/io/_load_modules/_pandas.py +69 -0
- scitex/io/_load_modules/_pdf.py +31 -0
- scitex/io/_load_modules/_pickle.py +24 -0
- scitex/io/_load_modules/_torch.py +16 -0
- scitex/io/_load_modules/_txt.py +126 -0
- scitex/io/_load_modules/_xml.py +49 -0
- scitex/io/_load_modules/_yaml.py +23 -0
- scitex/io/_mv_to_tmp.py +19 -0
- scitex/io/_path.py +286 -0
- scitex/io/_reload.py +78 -0
- scitex/io/_save.py +539 -0
- scitex/io/_save_modules/__init__.py +66 -0
- scitex/io/_save_modules/_catboost.py +22 -0
- scitex/io/_save_modules/_csv.py +89 -0
- scitex/io/_save_modules/_excel.py +49 -0
- scitex/io/_save_modules/_hdf5.py +249 -0
- scitex/io/_save_modules/_html.py +48 -0
- scitex/io/_save_modules/_image.py +140 -0
- scitex/io/_save_modules/_joblib.py +25 -0
- scitex/io/_save_modules/_json.py +25 -0
- scitex/io/_save_modules/_listed_dfs_as_csv.py +57 -0
- scitex/io/_save_modules/_listed_scalars_as_csv.py +42 -0
- scitex/io/_save_modules/_matlab.py +24 -0
- scitex/io/_save_modules/_mp4.py +29 -0
- scitex/io/_save_modules/_numpy.py +57 -0
- scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +38 -0
- scitex/io/_save_modules/_pickle.py +45 -0
- scitex/io/_save_modules/_plotly.py +27 -0
- scitex/io/_save_modules/_text.py +23 -0
- scitex/io/_save_modules/_torch.py +26 -0
- scitex/io/_save_modules/_yaml.py +29 -0
- scitex/life/__init__.py +10 -0
- scitex/life/_monitor_rain.py +49 -0
- scitex/linalg/__init__.py +17 -0
- scitex/linalg/_distance.py +63 -0
- scitex/linalg/_geometric_median.py +64 -0
- scitex/linalg/_misc.py +73 -0
- scitex/nn/_AxiswiseDropout.py +27 -0
- scitex/nn/_BNet.py +126 -0
- scitex/nn/_BNet_Res.py +164 -0
- scitex/nn/_ChannelGainChanger.py +44 -0
- scitex/nn/_DropoutChannels.py +50 -0
- scitex/nn/_Filters.py +489 -0
- scitex/nn/_FreqGainChanger.py +110 -0
- scitex/nn/_GaussianFilter.py +48 -0
- scitex/nn/_Hilbert.py +111 -0
- scitex/nn/_MNet_1000.py +157 -0
- scitex/nn/_ModulationIndex.py +221 -0
- scitex/nn/_PAC.py +414 -0
- scitex/nn/_PSD.py +40 -0
- scitex/nn/_ResNet1D.py +120 -0
- scitex/nn/_SpatialAttention.py +25 -0
- scitex/nn/_Spectrogram.py +161 -0
- scitex/nn/_SwapChannels.py +50 -0
- scitex/nn/_TransposeLayer.py +19 -0
- scitex/nn/_Wavelet.py +183 -0
- scitex/nn/__init__.py +63 -0
- scitex/os/__init__.py +8 -0
- scitex/os/_mv.py +50 -0
- scitex/parallel/__init__.py +8 -0
- scitex/parallel/_run.py +151 -0
- scitex/path/__init__.py +33 -0
- scitex/path/_clean.py +52 -0
- scitex/path/_find.py +108 -0
- scitex/path/_get_module_path.py +51 -0
- scitex/path/_get_spath.py +35 -0
- scitex/path/_getsize.py +18 -0
- scitex/path/_increment_version.py +87 -0
- scitex/path/_mk_spath.py +51 -0
- scitex/path/_path.py +19 -0
- scitex/path/_split.py +23 -0
- scitex/path/_this_path.py +19 -0
- scitex/path/_version.py +101 -0
- scitex/pd/__init__.py +41 -0
- scitex/pd/_find_indi.py +126 -0
- scitex/pd/_find_pval.py +113 -0
- scitex/pd/_force_df.py +154 -0
- scitex/pd/_from_xyz.py +71 -0
- scitex/pd/_ignore_SettingWithCopyWarning.py +34 -0
- scitex/pd/_melt_cols.py +81 -0
- scitex/pd/_merge_columns.py +221 -0
- scitex/pd/_mv.py +63 -0
- scitex/pd/_replace.py +62 -0
- scitex/pd/_round.py +93 -0
- scitex/pd/_slice.py +63 -0
- scitex/pd/_sort.py +91 -0
- scitex/pd/_to_numeric.py +53 -0
- scitex/pd/_to_xy.py +59 -0
- scitex/pd/_to_xyz.py +110 -0
- scitex/plt/__init__.py +36 -0
- scitex/plt/_subplots/_AxesWrapper.py +182 -0
- scitex/plt/_subplots/_AxisWrapper.py +249 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +414 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +896 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +368 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_TrackingMixin.py +185 -0
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +16 -0
- scitex/plt/_subplots/_FigWrapper.py +226 -0
- scitex/plt/_subplots/_SubplotsWrapper.py +171 -0
- scitex/plt/_subplots/__init__.py +111 -0
- scitex/plt/_subplots/_export_as_csv.py +232 -0
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +61 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +90 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +49 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +39 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +125 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +72 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +34 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +36 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +79 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +59 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +32 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +79 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py +64 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py +44 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py +70 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.py +66 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py +95 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py +67 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +52 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py +44 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.py +103 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_hist.py +82 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py +58 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.py +117 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +30 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +93 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +94 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +92 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +65 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +59 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +58 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +45 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +70 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +155 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +64 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +77 -0
- scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +210 -0
- scitex/plt/_subplots/_export_as_csv_formatters/verify_formatters.py +342 -0
- scitex/plt/_subplots/_export_as_csv_formatters.py +115 -0
- scitex/plt/_tpl.py +28 -0
- scitex/plt/ax/__init__.py +114 -0
- scitex/plt/ax/_plot/__init__.py +53 -0
- scitex/plt/ax/_plot/_plot_circular_hist.py +124 -0
- scitex/plt/ax/_plot/_plot_conf_mat.py +136 -0
- scitex/plt/ax/_plot/_plot_cube.py +57 -0
- scitex/plt/ax/_plot/_plot_ecdf.py +84 -0
- scitex/plt/ax/_plot/_plot_fillv.py +55 -0
- scitex/plt/ax/_plot/_plot_heatmap.py +266 -0
- scitex/plt/ax/_plot/_plot_image.py +94 -0
- scitex/plt/ax/_plot/_plot_joyplot.py +76 -0
- scitex/plt/ax/_plot/_plot_raster.py +172 -0
- scitex/plt/ax/_plot/_plot_rectangle.py +69 -0
- scitex/plt/ax/_plot/_plot_scatter_hist.py +133 -0
- scitex/plt/ax/_plot/_plot_shaded_line.py +142 -0
- scitex/plt/ax/_plot/_plot_statistical_shaded_line.py +221 -0
- scitex/plt/ax/_plot/_plot_violin.py +343 -0
- scitex/plt/ax/_style/__init__.py +38 -0
- scitex/plt/ax/_style/_add_marginal_ax.py +44 -0
- scitex/plt/ax/_style/_add_panel.py +92 -0
- scitex/plt/ax/_style/_extend.py +64 -0
- scitex/plt/ax/_style/_force_aspect.py +37 -0
- scitex/plt/ax/_style/_format_label.py +23 -0
- scitex/plt/ax/_style/_hide_spines.py +84 -0
- scitex/plt/ax/_style/_map_ticks.py +182 -0
- scitex/plt/ax/_style/_rotate_labels.py +215 -0
- scitex/plt/ax/_style/_sci_note.py +279 -0
- scitex/plt/ax/_style/_set_log_scale.py +299 -0
- scitex/plt/ax/_style/_set_meta.py +261 -0
- scitex/plt/ax/_style/_set_n_ticks.py +37 -0
- scitex/plt/ax/_style/_set_size.py +16 -0
- scitex/plt/ax/_style/_set_supxyt.py +116 -0
- scitex/plt/ax/_style/_set_ticks.py +276 -0
- scitex/plt/ax/_style/_set_xyt.py +121 -0
- scitex/plt/ax/_style/_share_axes.py +264 -0
- scitex/plt/ax/_style/_shift.py +139 -0
- scitex/plt/ax/_style/_show_spines.py +333 -0
- scitex/plt/color/_PARAMS.py +70 -0
- scitex/plt/color/__init__.py +52 -0
- scitex/plt/color/_add_hue_col.py +41 -0
- scitex/plt/color/_colors.py +205 -0
- scitex/plt/color/_get_colors_from_cmap.py +134 -0
- scitex/plt/color/_interpolate.py +29 -0
- scitex/plt/color/_vizualize_colors.py +54 -0
- scitex/plt/utils/__init__.py +44 -0
- scitex/plt/utils/_calc_bacc_from_conf_mat.py +46 -0
- scitex/plt/utils/_calc_nice_ticks.py +101 -0
- scitex/plt/utils/_close.py +68 -0
- scitex/plt/utils/_colorbar.py +96 -0
- scitex/plt/utils/_configure_mpl.py +295 -0
- scitex/plt/utils/_histogram_utils.py +132 -0
- scitex/plt/utils/_im2grid.py +70 -0
- scitex/plt/utils/_is_valid_axis.py +78 -0
- scitex/plt/utils/_mk_colorbar.py +65 -0
- scitex/plt/utils/_mk_patches.py +26 -0
- scitex/plt/utils/_scientific_captions.py +638 -0
- scitex/plt/utils/_scitex_config.py +223 -0
- scitex/reproduce/__init__.py +14 -0
- scitex/reproduce/_fix_seeds.py +45 -0
- scitex/reproduce/_gen_ID.py +55 -0
- scitex/reproduce/_gen_timestamp.py +35 -0
- scitex/res/__init__.py +5 -0
- scitex/resource/__init__.py +13 -0
- scitex/resource/_get_processor_usages.py +281 -0
- scitex/resource/_get_specs.py +280 -0
- scitex/resource/_log_processor_usages.py +190 -0
- scitex/resource/_utils/__init__.py +31 -0
- scitex/resource/_utils/_get_env_info.py +481 -0
- scitex/resource/limit_ram.py +33 -0
- scitex/scholar/__init__.py +24 -0
- scitex/scholar/_local_search.py +454 -0
- scitex/scholar/_paper.py +244 -0
- scitex/scholar/_pdf_downloader.py +325 -0
- scitex/scholar/_search.py +393 -0
- scitex/scholar/_vector_search.py +370 -0
- scitex/scholar/_web_sources.py +457 -0
- scitex/stats/__init__.py +31 -0
- scitex/stats/_calc_partial_corr.py +17 -0
- scitex/stats/_corr_test_multi.py +94 -0
- scitex/stats/_corr_test_wrapper.py +115 -0
- scitex/stats/_describe_wrapper.py +90 -0
- scitex/stats/_multiple_corrections.py +63 -0
- scitex/stats/_nan_stats.py +93 -0
- scitex/stats/_p2stars.py +116 -0
- scitex/stats/_p2stars_wrapper.py +56 -0
- scitex/stats/_statistical_tests.py +73 -0
- scitex/stats/desc/__init__.py +40 -0
- scitex/stats/desc/_describe.py +189 -0
- scitex/stats/desc/_nan.py +289 -0
- scitex/stats/desc/_real.py +94 -0
- scitex/stats/multiple/__init__.py +14 -0
- scitex/stats/multiple/_bonferroni_correction.py +72 -0
- scitex/stats/multiple/_fdr_correction.py +400 -0
- scitex/stats/multiple/_multicompair.py +28 -0
- scitex/stats/tests/__corr_test.py +277 -0
- scitex/stats/tests/__corr_test_multi.py +343 -0
- scitex/stats/tests/__corr_test_single.py +277 -0
- scitex/stats/tests/__init__.py +22 -0
- scitex/stats/tests/_brunner_munzel_test.py +192 -0
- scitex/stats/tests/_nocorrelation_test.py +28 -0
- scitex/stats/tests/_smirnov_grubbs.py +98 -0
- scitex/str/__init__.py +113 -0
- scitex/str/_clean_path.py +75 -0
- scitex/str/_color_text.py +52 -0
- scitex/str/_decapitalize.py +58 -0
- scitex/str/_factor_out_digits.py +281 -0
- scitex/str/_format_plot_text.py +498 -0
- scitex/str/_grep.py +48 -0
- scitex/str/_latex.py +155 -0
- scitex/str/_latex_fallback.py +471 -0
- scitex/str/_mask_api.py +39 -0
- scitex/str/_mask_api_key.py +8 -0
- scitex/str/_parse.py +158 -0
- scitex/str/_print_block.py +47 -0
- scitex/str/_print_debug.py +68 -0
- scitex/str/_printc.py +62 -0
- scitex/str/_readable_bytes.py +38 -0
- scitex/str/_remove_ansi.py +23 -0
- scitex/str/_replace.py +134 -0
- scitex/str/_search.py +125 -0
- scitex/str/_squeeze_space.py +36 -0
- scitex/tex/__init__.py +10 -0
- scitex/tex/_preview.py +103 -0
- scitex/tex/_to_vec.py +116 -0
- scitex/torch/__init__.py +18 -0
- scitex/torch/_apply_to.py +34 -0
- scitex/torch/_nan_funcs.py +77 -0
- scitex/types/_ArrayLike.py +44 -0
- scitex/types/_ColorLike.py +21 -0
- scitex/types/__init__.py +14 -0
- scitex/types/_is_listed_X.py +70 -0
- scitex/utils/__init__.py +22 -0
- scitex/utils/_compress_hdf5.py +116 -0
- scitex/utils/_email.py +120 -0
- scitex/utils/_grid.py +148 -0
- scitex/utils/_notify.py +247 -0
- scitex/utils/_search.py +121 -0
- scitex/web/__init__.py +38 -0
- scitex/web/_search_pubmed.py +438 -0
- scitex/web/_summarize_url.py +158 -0
- scitex-2.0.0.dist-info/METADATA +307 -0
- scitex-2.0.0.dist-info/RECORD +572 -0
- scitex-2.0.0.dist-info/WHEEL +6 -0
- scitex-2.0.0.dist-info/licenses/LICENSE +7 -0
- scitex-2.0.0.dist-info/top_level.txt +1 -0
scitex/path/__init__.py
ADDED
|
@@ -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
|
scitex/path/_getsize.py
ADDED
|
@@ -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
|
scitex/path/_mk_spath.py
ADDED
|
@@ -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
|
scitex/path/_version.py
ADDED
|
@@ -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
|
+
]
|