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
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Scitex utils module."""
|
|
3
|
+
|
|
4
|
+
from ._check_params import check_params
|
|
5
|
+
from ._default_dataset import DefaultDataset
|
|
6
|
+
from ._format_samples_for_sktime import format_samples_for_sktime
|
|
7
|
+
from ._label_encoder import LabelEncoder
|
|
8
|
+
from ._merge_labels import merge_labels
|
|
9
|
+
from ._sliding_window_data_augmentation import sliding_window_data_augmentation
|
|
10
|
+
from ._under_sample import under_sample
|
|
11
|
+
from ._verify_n_gpus import verify_n_gpus
|
|
12
|
+
|
|
13
|
+
__all__ = [
|
|
14
|
+
"DefaultDataset",
|
|
15
|
+
"LabelEncoder",
|
|
16
|
+
"check_params",
|
|
17
|
+
"format_samples_for_sktime",
|
|
18
|
+
"merge_labels",
|
|
19
|
+
"sliding_window_data_augmentation",
|
|
20
|
+
"under_sample",
|
|
21
|
+
"verify_n_gpus",
|
|
22
|
+
]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Time-stamp: "2024-02-17 12:38:40 (ywatanabe)"
|
|
3
|
+
|
|
4
|
+
from pprint import pprint as _pprint
|
|
5
|
+
from time import sleep
|
|
6
|
+
|
|
7
|
+
# def get_params(model, tgt_name=None, sleep_sec=2, show=False):
|
|
8
|
+
|
|
9
|
+
# name_shape_dict = {}
|
|
10
|
+
# for name, param in model.named_parameters():
|
|
11
|
+
# learnable = "Learnable" if param.requires_grad else "Freezed"
|
|
12
|
+
|
|
13
|
+
# if (tgt_name is not None) & (name == tgt_name):
|
|
14
|
+
# return param
|
|
15
|
+
# if tgt_name is None:
|
|
16
|
+
# # print(f"\n{param}\n{param.shape}\nname: {name}\n")
|
|
17
|
+
# if show is True:
|
|
18
|
+
# print(
|
|
19
|
+
# f"\n{param}: {param.shape}\nname: {name}\nStatus: {learnable}\n"
|
|
20
|
+
# )
|
|
21
|
+
# sleep(sleep_sec)
|
|
22
|
+
# name_shape_dict[name] = list(param.shape)
|
|
23
|
+
|
|
24
|
+
# if tgt_name is None:
|
|
25
|
+
# print()
|
|
26
|
+
# _pprint(name_shape_dict)
|
|
27
|
+
# print()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def check_params(model, tgt_name=None, show=False):
|
|
31
|
+
|
|
32
|
+
out_dict = {}
|
|
33
|
+
|
|
34
|
+
for name, param in model.named_parameters():
|
|
35
|
+
learnable = "Learnable" if param.requires_grad else "Freezed"
|
|
36
|
+
|
|
37
|
+
if tgt_name is None:
|
|
38
|
+
out_dict[name] = (param.shape, learnable)
|
|
39
|
+
|
|
40
|
+
elif (tgt_name is not None) & (name == tgt_name):
|
|
41
|
+
out_dict[name] = (param.shape, learnable)
|
|
42
|
+
|
|
43
|
+
elif (tgt_name is not None) & (name != tgt_name):
|
|
44
|
+
continue
|
|
45
|
+
|
|
46
|
+
if show:
|
|
47
|
+
for k, v in out_dict.items():
|
|
48
|
+
print(f"\n{k}\n{v}")
|
|
49
|
+
|
|
50
|
+
return out_dict
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
from torch.utils.data import Dataset
|
|
4
|
+
import numpy as np
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class DefaultDataset(Dataset):
|
|
8
|
+
"""
|
|
9
|
+
Apply transform for the first element of arrs_list
|
|
10
|
+
|
|
11
|
+
Example:
|
|
12
|
+
n = 1024
|
|
13
|
+
n_chs = 19
|
|
14
|
+
X = np.random.rand(n, n_chs, 1000)
|
|
15
|
+
T = np.random.randint(0, 4, size=(n, 1))
|
|
16
|
+
S = np.random.randint(0, 999, size=(n, 1))
|
|
17
|
+
Sr = np.random.randint(0, 4, size=(n, 1))
|
|
18
|
+
|
|
19
|
+
arrs_list = [X, T, S, Sr]
|
|
20
|
+
transform = None
|
|
21
|
+
ds = _DefaultDataset(arrs_list, transform=transform)
|
|
22
|
+
len(ds) # 1024
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self, arrs_list, transform=None):
|
|
26
|
+
self.arrs_list = arrs_list
|
|
27
|
+
self.arrs = arrs_list # alias
|
|
28
|
+
|
|
29
|
+
assert np.all([len(arr) for arr in arrs_list])
|
|
30
|
+
|
|
31
|
+
self.length = len(arrs_list[0])
|
|
32
|
+
self.transform = transform
|
|
33
|
+
|
|
34
|
+
def __len__(self):
|
|
35
|
+
return self.length
|
|
36
|
+
|
|
37
|
+
def __getitem__(self, idx):
|
|
38
|
+
arrs_list_idx = [arr[idx] for arr in self.arrs_list]
|
|
39
|
+
|
|
40
|
+
# Here, you might want to transform, or apply DA on X as a numpy array
|
|
41
|
+
if self.transform:
|
|
42
|
+
dtype_orig = arrs_list_idx[0].dtype
|
|
43
|
+
arrs_list_idx[0] = self.transform(
|
|
44
|
+
arrs_list_idx[0].astype(np.float64)
|
|
45
|
+
).astype(dtype_orig)
|
|
46
|
+
return arrs_list_idx
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
import torch
|
|
3
|
+
import numpy as np
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def _format_a_sample_for_sktime(x):
|
|
7
|
+
"""
|
|
8
|
+
x.shape: (n_chs, seq_len)
|
|
9
|
+
"""
|
|
10
|
+
dims = pd.Series(
|
|
11
|
+
[pd.Series(x[d], name=f"dim_{d}") for d in range(len(x))],
|
|
12
|
+
index=[f"dim_{i}" for i in np.arange(len(x))],
|
|
13
|
+
)
|
|
14
|
+
return dims
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def format_samples_for_sktime(X):
|
|
18
|
+
"""
|
|
19
|
+
X.shape: (n_samples, n_chs, seq_len)
|
|
20
|
+
"""
|
|
21
|
+
if torch.is_tensor(X):
|
|
22
|
+
X = X.numpy() # (64, 160, 1024)
|
|
23
|
+
|
|
24
|
+
X = X.astype(np.float64)
|
|
25
|
+
|
|
26
|
+
return pd.DataFrame([_format_a_sample_for_sktime(X[i]) for i in range(len(X))])
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-03-02 09:52:28 (ywatanabe)"
|
|
4
|
+
|
|
5
|
+
from warnings import warn
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
import pandas as pd
|
|
9
|
+
import torch
|
|
10
|
+
from sklearn.preprocessing import LabelEncoder as SklearnLabelEncoder
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class LabelEncoder(SklearnLabelEncoder):
|
|
14
|
+
"""
|
|
15
|
+
An extension of the sklearn.preprocessing.LabelEncoder that supports incremental learning.
|
|
16
|
+
This means it can handle new classes without forgetting the old ones.
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
classes_ (np.ndarray): Holds the label for each class.
|
|
20
|
+
|
|
21
|
+
Example usage:
|
|
22
|
+
encoder = IncrementalLabelEncoder()
|
|
23
|
+
encoder.fit(np.array(["apple", "banana"]))
|
|
24
|
+
encoded_labels = encoder.transform(["apple", "banana"]) # This will give you the encoded labels
|
|
25
|
+
|
|
26
|
+
encoder.fit(["cherry"]) # Incrementally add "cherry"
|
|
27
|
+
encoder.transform(["apple", "banana", "cherry"]) # Now it works, including "cherry"
|
|
28
|
+
|
|
29
|
+
# Now you can use inverse_transform with the encoded labels
|
|
30
|
+
print(encoder.classes_)
|
|
31
|
+
original_labels = encoder.inverse_transform(encoded_labels)
|
|
32
|
+
print(original_labels) # This should print ['apple', 'banana']
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(self):
|
|
36
|
+
super().__init__()
|
|
37
|
+
self.classes_ = np.array([])
|
|
38
|
+
|
|
39
|
+
def _check_input(self, y):
|
|
40
|
+
"""
|
|
41
|
+
Check and convert the input to a NumPy array if it is a list, tuple, pandas.Series, pandas.DataFrame, or torch.Tensor.
|
|
42
|
+
|
|
43
|
+
Arguments:
|
|
44
|
+
y (list, tuple, pd.Series, pd.DataFrame, torch.Tensor): The input labels.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
np.ndarray: The input labels converted to a NumPy array.
|
|
48
|
+
"""
|
|
49
|
+
if isinstance(y, (list, tuple)):
|
|
50
|
+
y = np.array(y)
|
|
51
|
+
elif isinstance(y, pd.Series):
|
|
52
|
+
y = y.values
|
|
53
|
+
elif isinstance(y, torch.Tensor):
|
|
54
|
+
y = y.numpy()
|
|
55
|
+
return y
|
|
56
|
+
|
|
57
|
+
def fit(self, y):
|
|
58
|
+
"""
|
|
59
|
+
Fit the label encoder with an array of labels, incrementally adding new classes.
|
|
60
|
+
|
|
61
|
+
Arguments:
|
|
62
|
+
y (list, tuple, np.ndarray, pd.Series, pd.DataFrame, torch.Tensor): The input labels.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
IncrementalLabelEncoder: The instance itself.
|
|
66
|
+
"""
|
|
67
|
+
y = self._check_input(y)
|
|
68
|
+
new_unique_labels = np.unique(y)
|
|
69
|
+
unique_labels = np.unique(np.concatenate((self.classes_, new_unique_labels)))
|
|
70
|
+
self.classes_ = unique_labels
|
|
71
|
+
return self
|
|
72
|
+
|
|
73
|
+
def transform(self, y):
|
|
74
|
+
"""
|
|
75
|
+
Transform labels to normalized encoding.
|
|
76
|
+
|
|
77
|
+
Arguments:
|
|
78
|
+
y (list, tuple, np.ndarray, pd.Series, pd.DataFrame, torch.Tensor): The input labels.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
np.ndarray: The encoded labels as a NumPy array.
|
|
82
|
+
|
|
83
|
+
Raises:
|
|
84
|
+
ValueError: If the input contains new labels that haven't been seen during `fit`.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
y = self._check_input(y)
|
|
88
|
+
diff = set(y) - set(self.classes_)
|
|
89
|
+
if diff:
|
|
90
|
+
raise ValueError(f"y contains new labels: {diff}")
|
|
91
|
+
return super().transform(y)
|
|
92
|
+
|
|
93
|
+
def inverse_transform(self, y):
|
|
94
|
+
"""
|
|
95
|
+
Transform labels back to original encoding.
|
|
96
|
+
|
|
97
|
+
Arguments:
|
|
98
|
+
y (np.ndarray): The encoded labels as a NumPy array.
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
np.ndarray: The original labels as a NumPy array.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
return super().inverse_transform(y)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
# # Obsolete warning for future compatibility
|
|
108
|
+
# class LabelEncoder(IncrementalLabelEncoder):
|
|
109
|
+
# def __init__(self, *args, **kwargs):
|
|
110
|
+
# """
|
|
111
|
+
# Initialize the LabelEncoder with a deprecation warning.
|
|
112
|
+
# """
|
|
113
|
+
# warn(
|
|
114
|
+
# "LabelEncoder is now obsolete; use IncrementalLabelEncoder instead.",
|
|
115
|
+
# category=FutureWarning,
|
|
116
|
+
# )
|
|
117
|
+
# super().__init__(*args, **kwargs)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
if __name__ == "__main__":
|
|
121
|
+
# Example usage of IncrementalLabelEncoder
|
|
122
|
+
le = LabelEncoder()
|
|
123
|
+
le.fit(["A", "B"])
|
|
124
|
+
print(le.classes_)
|
|
125
|
+
|
|
126
|
+
le.fit(["C"])
|
|
127
|
+
print(le.classes_)
|
|
128
|
+
|
|
129
|
+
le.inverse_transform([0, 1, 2])
|
|
130
|
+
|
|
131
|
+
le.fit(["X"])
|
|
132
|
+
print(le.classes_)
|
|
133
|
+
|
|
134
|
+
le.inverse_transform([3])
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import scitex
|
|
4
|
+
import numpy as np
|
|
5
|
+
|
|
6
|
+
# y1, y2 = T_tra, M_tra
|
|
7
|
+
# def merge_labels(y1, y2):
|
|
8
|
+
# y = [str(z1) + "-" + str(z2) for z1, z2 in zip(y1, y2)]
|
|
9
|
+
# conv_d = {z: i for i, z in enumerate(np.unique(y))}
|
|
10
|
+
# y = [conv_d[z] for z in y]
|
|
11
|
+
# return y
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def merge_labels(*ys, to_int=False):
|
|
15
|
+
if not len(ys) > 1: # Check if more than two arguments are passed
|
|
16
|
+
return ys[0]
|
|
17
|
+
else:
|
|
18
|
+
y = [scitex.gen.connect_nums(zs) for zs in zip(*ys)]
|
|
19
|
+
if to_int:
|
|
20
|
+
conv_d = {z: i for i, z in enumerate(np.unique(y))}
|
|
21
|
+
y = [conv_d[z] for z in y]
|
|
22
|
+
return np.array(y)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-01-24 13:56:36 (ywatanabe)"
|
|
4
|
+
|
|
5
|
+
import random
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def sliding_window_data_augmentation(x, window_size_pts):
|
|
9
|
+
start = random.randint(0, x.shape[-1] - window_size_pts)
|
|
10
|
+
end = start + window_size_pts
|
|
11
|
+
return x[..., start:end]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
from collections import Counter
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def under_sample(y, replace=False):
|
|
10
|
+
"""
|
|
11
|
+
Input:
|
|
12
|
+
Labels
|
|
13
|
+
Return:
|
|
14
|
+
Indices
|
|
15
|
+
|
|
16
|
+
Example:
|
|
17
|
+
t = ['a', 'b', 'c', 'b', 'c', 'a', 'c']
|
|
18
|
+
print(under_sample(t))
|
|
19
|
+
# [5 0 1 3 4 6]
|
|
20
|
+
print(under_sample(t))
|
|
21
|
+
# [5 0 1 3 6 2]
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# find the minority and majority classes
|
|
25
|
+
class_counts = Counter(y)
|
|
26
|
+
# majority_class = max(class_counts, key=class_counts.get)
|
|
27
|
+
minority_class = min(class_counts, key=class_counts.get)
|
|
28
|
+
|
|
29
|
+
# compute the number of sample to draw from the majority class using
|
|
30
|
+
# a negative binomial distribution
|
|
31
|
+
n_minority_class = class_counts[minority_class]
|
|
32
|
+
n_majority_resampled = n_minority_class
|
|
33
|
+
|
|
34
|
+
# draw randomly with or without replacement
|
|
35
|
+
indices = np.hstack(
|
|
36
|
+
[
|
|
37
|
+
np.random.choice(
|
|
38
|
+
np.flatnonzero(y == k),
|
|
39
|
+
size=n_majority_resampled,
|
|
40
|
+
replace=replace,
|
|
41
|
+
)
|
|
42
|
+
for k in class_counts.keys()
|
|
43
|
+
]
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
return indices
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
t = np.array(["a", "b", "c", "b", "c", "a", "c"])
|
|
51
|
+
print(under_sample(t))
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import torch
|
|
2
|
+
import warnings
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def verify_n_gpus(n_gpus):
|
|
6
|
+
if torch.cuda.device_count() < n_gpus:
|
|
7
|
+
warnings.warn(
|
|
8
|
+
f"N_GPUS ({n_gpus}) is larger "
|
|
9
|
+
f"than n_gpus torch can acesses (= {torch.cuda.device_count()})"
|
|
10
|
+
f"Please check $CUDA_VISIBLE_DEVICES and your setting in this script.",
|
|
11
|
+
UserWarning,
|
|
12
|
+
)
|
|
13
|
+
return torch.cuda.device_count()
|
|
14
|
+
|
|
15
|
+
else:
|
|
16
|
+
return n_gpus
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!./env/bin/python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-04-22 23:54:02"
|
|
4
|
+
# Author: Yusuke Watanabe (ywata1989@gmail.com)
|
|
5
|
+
|
|
6
|
+
"""
|
|
7
|
+
This script defines scitex.ml.utils.grid_search
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
# Imports
|
|
11
|
+
import itertools as _itertools
|
|
12
|
+
import random as _random
|
|
13
|
+
import sys as _sys
|
|
14
|
+
|
|
15
|
+
import matplotlib.pyplot as _plt
|
|
16
|
+
import scitex as _scitex
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# Functions
|
|
20
|
+
def yield_grids(params_grid: dict, random=False):
|
|
21
|
+
"""
|
|
22
|
+
Generator function that yields combinations of parameters from a grid.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
params_grid (dict): A dictionary where keys are parameter names and values are lists of parameter values.
|
|
26
|
+
random (bool): If True, yields the parameter combinations in random order.
|
|
27
|
+
|
|
28
|
+
Yields:
|
|
29
|
+
dict: A dictionary of parameters for one set of conditions from the grid.
|
|
30
|
+
|
|
31
|
+
Example:
|
|
32
|
+
# Parameters
|
|
33
|
+
params_grid = {
|
|
34
|
+
"batch_size": [2**i for i in range(7)],
|
|
35
|
+
"n_chs": [2**i for i in range(7)],
|
|
36
|
+
"seq_len": [2**i for i in range(15)],
|
|
37
|
+
"fs": [2**i for i in range(8, 11)],
|
|
38
|
+
"n_segments": [2**i for i in range(6)],
|
|
39
|
+
"n_bands_pha": [2**i for i in range(7)],
|
|
40
|
+
"n_bands_amp": [2**i for i in range(7)],
|
|
41
|
+
"precision": ['fp16', 'fp32'],
|
|
42
|
+
"device": ['cpu', 'cuda'],
|
|
43
|
+
"package": ['tensorpac', 'scitex'],
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# Example of using the generator
|
|
47
|
+
for param_dict in yield_grids(params_grid, random=True):
|
|
48
|
+
print(param_dict)
|
|
49
|
+
"""
|
|
50
|
+
combinations = list(_itertools.product(*params_grid.values()))
|
|
51
|
+
if random:
|
|
52
|
+
_random.shuffle(combinations) # [REVISED]
|
|
53
|
+
for values in combinations:
|
|
54
|
+
yield dict(zip(params_grid.keys(), values))
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# def yield_grids(params_grid: dict, random=False):
|
|
58
|
+
# """
|
|
59
|
+
# Generator function that yields combinations of parameters from a grid.
|
|
60
|
+
|
|
61
|
+
# Args:
|
|
62
|
+
# params_grid (dict): A dictionary where keys are parameter names and values are lists of parameter values.
|
|
63
|
+
|
|
64
|
+
# Yields:
|
|
65
|
+
# dict: A dictionary of parameters for one set of conditions from the grid.
|
|
66
|
+
|
|
67
|
+
# Example:
|
|
68
|
+
# # Parameters
|
|
69
|
+
# params_grid = {
|
|
70
|
+
# "batch_size": [2**i for i in range(7)],
|
|
71
|
+
# "n_chs": [2**i for i in range(7)],
|
|
72
|
+
# "seq_len": [2**i for i in range(15)],
|
|
73
|
+
# "fs": [2**i for i in range(8, 11)],
|
|
74
|
+
# "n_segments": [2**i for i in range(6)],
|
|
75
|
+
# "n_bands_pha": [2**i for i in range(7)],
|
|
76
|
+
# "n_bands_amp": [2**i for i in range(7)],
|
|
77
|
+
# "precision": ['fp16', 'fp32'],
|
|
78
|
+
# "device": ['cpu', 'cuda'],
|
|
79
|
+
# "package": ['tensorpac', 'scitex'],
|
|
80
|
+
# }
|
|
81
|
+
|
|
82
|
+
# # Example of using the generator
|
|
83
|
+
# for param_dict in yield_grids(params_grid):
|
|
84
|
+
# print(param_dict)
|
|
85
|
+
# """
|
|
86
|
+
# print(f"\nThe Number of Combinations: {count_grids(params_grid):,}")
|
|
87
|
+
|
|
88
|
+
# for values in _itertools.product(*params_grid.values()):
|
|
89
|
+
# yield dict(zip(params_grid.keys(), values))
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def count_grids(params_grid):
|
|
93
|
+
"""
|
|
94
|
+
Calculate the total number of combinations possible from the given parameter grid.
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
params_grid (dict): A dictionary where keys are parameter names and values are lists of parameter values.
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
int: The total number of combinations that can be generated from the parameter grid.
|
|
101
|
+
"""
|
|
102
|
+
# Get the number of values for each parameter and multiply them
|
|
103
|
+
num_combinations = 1
|
|
104
|
+
for values in params_grid.values():
|
|
105
|
+
num_combinations *= len(values)
|
|
106
|
+
return num_combinations
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
if __name__ == "__main__":
|
|
110
|
+
import pandas as pd
|
|
111
|
+
|
|
112
|
+
# Start
|
|
113
|
+
CONFIG, _sys.stdout, _sys.stderr, _plt, CC = _scitex.gen.start(
|
|
114
|
+
_sys, _plt, verbose=False
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
# Parameters
|
|
118
|
+
N = 15
|
|
119
|
+
print(pd.DataFrame(pd.Series({f"2^{ii}": 2**ii for ii in range(N)})))
|
|
120
|
+
|
|
121
|
+
params_grid = {
|
|
122
|
+
"batch_size": [2**i for i in [3, 4, 5, 6]],
|
|
123
|
+
"n_chs": [2**i for i in [3, 4, 5, 6]],
|
|
124
|
+
"seq_len": [2**i for i in range(8, 13)],
|
|
125
|
+
"fs": [2**i for i in range(7, 10)],
|
|
126
|
+
"n_segments": [2**i for i in range(5)],
|
|
127
|
+
"n_bands_pha": [2**i for i in range(7)],
|
|
128
|
+
"n_bands_amp": [2**i for i in range(7)],
|
|
129
|
+
"precision": ["fp16", "fp32"],
|
|
130
|
+
"device": ["cpu", "cuda"],
|
|
131
|
+
"package": ["tensorpac", "_scitex"],
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
print(params_grid)
|
|
135
|
+
print(f"{count_grids(params_grid):,}")
|
|
136
|
+
|
|
137
|
+
# Example of using the generator
|
|
138
|
+
for param_dict in yield_grids(params_grid):
|
|
139
|
+
print(param_dict)
|
|
140
|
+
|
|
141
|
+
# Close
|
|
142
|
+
_scitex.gen.close(CONFIG, verbose=False, notify=False)
|
|
143
|
+
|
|
144
|
+
# EOF
|
|
145
|
+
|
|
146
|
+
"""
|
|
147
|
+
/home/ywatanabe/proj/entrance/_scitex/ml/utils/grid_search.py
|
|
148
|
+
"""
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-01 09:11:04 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex_repo/src/scitex/context/_suppress_output.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
__FILE__ = "./src/scitex/context/_suppress_output.py"
|
|
9
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
10
|
+
# ----------------------------------------
|
|
11
|
+
|
|
12
|
+
from contextlib import contextmanager, redirect_stderr, redirect_stdout
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@contextmanager
|
|
16
|
+
def suppress_output(suppress=True):
|
|
17
|
+
"""
|
|
18
|
+
A context manager that suppresses stdout and stderr.
|
|
19
|
+
|
|
20
|
+
Example:
|
|
21
|
+
with suppress_output():
|
|
22
|
+
print("This will not be printed to the console.")
|
|
23
|
+
"""
|
|
24
|
+
if suppress:
|
|
25
|
+
# Open a file descriptor that points to os.devnull (a black hole for data)
|
|
26
|
+
with open(os.devnull, "w") as fnull:
|
|
27
|
+
# Temporarily redirect stdout and stderr to the file descriptor fnull
|
|
28
|
+
with redirect_stdout(fnull), redirect_stderr(fnull):
|
|
29
|
+
# Yield control back to the context block
|
|
30
|
+
yield
|
|
31
|
+
else:
|
|
32
|
+
# If suppress is False, just yield without redirecting output
|
|
33
|
+
yield
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
quiet = suppress_output
|
|
37
|
+
|
|
38
|
+
# EOF
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-02-27 22:16:38 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex_dev/src/scitex/db/_BaseMixins/_BaseBackupMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_BaseMixins/_BaseBackupMixin.py"
|
|
7
|
+
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class _BaseBackupMixin:
|
|
12
|
+
def backup_table(self, table: str, file_path: str):
|
|
13
|
+
raise NotImplementedError
|
|
14
|
+
|
|
15
|
+
def restore_table(self, table: str, file_path: str):
|
|
16
|
+
raise NotImplementedError
|
|
17
|
+
|
|
18
|
+
def backup_database(self, file_path: str):
|
|
19
|
+
raise NotImplementedError
|
|
20
|
+
|
|
21
|
+
def restore_database(self, file_path: str):
|
|
22
|
+
raise NotImplementedError
|
|
23
|
+
|
|
24
|
+
def copy_table(
|
|
25
|
+
self, source_table: str, target_table: str, where: Optional[str] = None
|
|
26
|
+
):
|
|
27
|
+
raise NotImplementedError
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# EOF
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-25 01:43:41 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_BaseMixins/_BaseBatchMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_BaseMixins/_BaseBatchMixin.py"
|
|
7
|
+
|
|
8
|
+
from typing import List, Any, Optional, Dict, Union
|
|
9
|
+
import pandas as pd
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class _BaseBatchMixin:
|
|
13
|
+
def insert_many(
|
|
14
|
+
self,
|
|
15
|
+
table: str,
|
|
16
|
+
records: List[Dict[str, Any]],
|
|
17
|
+
batch_size: Optional[int] = None,
|
|
18
|
+
):
|
|
19
|
+
raise NotImplementedError
|
|
20
|
+
|
|
21
|
+
def _prepare_insert_query(self, table: str, record: Dict[str, Any]) -> str:
|
|
22
|
+
raise NotImplementedError
|
|
23
|
+
|
|
24
|
+
def _prepare_batch_parameters(self, records: List[Dict[str, Any]]) -> tuple:
|
|
25
|
+
raise NotImplementedError
|
|
26
|
+
|
|
27
|
+
def dataframe_to_sql(self, df: pd.DataFrame, table: str, if_exists: str = "fail"):
|
|
28
|
+
raise NotImplementedError
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# EOF
|