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,257 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-07 18:58:55 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/gen/_inspect_module.py
|
|
5
|
+
|
|
6
|
+
import inspect
|
|
7
|
+
import sys
|
|
8
|
+
import warnings
|
|
9
|
+
from typing import Any, List, Optional, Set, Union
|
|
10
|
+
|
|
11
|
+
import scitex
|
|
12
|
+
import pandas as pd
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def inspect_module(
|
|
16
|
+
module: Union[str, Any],
|
|
17
|
+
columns: List[str] = ["Type", "Name", "Docstring", "Depth"],
|
|
18
|
+
prefix: str = "",
|
|
19
|
+
max_depth: int = 5,
|
|
20
|
+
visited: Optional[Set[str]] = None,
|
|
21
|
+
docstring: bool = False,
|
|
22
|
+
tree: bool = True,
|
|
23
|
+
current_depth: int = 0,
|
|
24
|
+
print_output: bool = False,
|
|
25
|
+
skip_depwarnings: bool = True,
|
|
26
|
+
drop_duplicates: bool = True,
|
|
27
|
+
root_only: bool = False,
|
|
28
|
+
) -> pd.DataFrame:
|
|
29
|
+
return _inspect_module(
|
|
30
|
+
module=module,
|
|
31
|
+
prefix=prefix,
|
|
32
|
+
max_depth=max_depth,
|
|
33
|
+
visited=visited,
|
|
34
|
+
docstring=docstring,
|
|
35
|
+
tree=tree,
|
|
36
|
+
current_depth=current_depth,
|
|
37
|
+
print_output=print_output,
|
|
38
|
+
skip_depwarnings=skip_depwarnings,
|
|
39
|
+
drop_duplicates=drop_duplicates,
|
|
40
|
+
root_only=root_only,
|
|
41
|
+
)[columns]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _inspect_module(
|
|
45
|
+
module: Union[str, Any],
|
|
46
|
+
columns: List[str] = ["Type", "Name", "Docstring", "Depth"],
|
|
47
|
+
prefix: str = "",
|
|
48
|
+
max_depth: int = 5,
|
|
49
|
+
visited: Optional[Set[str]] = None,
|
|
50
|
+
docstring: bool = False,
|
|
51
|
+
tree: bool = True,
|
|
52
|
+
current_depth: int = 0,
|
|
53
|
+
print_output: bool = False,
|
|
54
|
+
skip_depwarnings: bool = True,
|
|
55
|
+
drop_duplicates: bool = True,
|
|
56
|
+
root_only: bool = False,
|
|
57
|
+
) -> pd.DataFrame:
|
|
58
|
+
"""List the contents of a module recursively and return as a DataFrame.
|
|
59
|
+
|
|
60
|
+
Example
|
|
61
|
+
-------
|
|
62
|
+
>>>
|
|
63
|
+
>>> df = inspect_module(scitex)
|
|
64
|
+
>>> print(df)
|
|
65
|
+
Type Name Docstring Depth
|
|
66
|
+
0 M scitex Module description 0
|
|
67
|
+
1 F scitex.some_function Function description 1
|
|
68
|
+
2 C scitex.SomeClass Class description 1
|
|
69
|
+
...
|
|
70
|
+
|
|
71
|
+
Parameters
|
|
72
|
+
----------
|
|
73
|
+
module : Union[str, Any]
|
|
74
|
+
Module to inspect (string name or actual module)
|
|
75
|
+
columns : List[str]
|
|
76
|
+
Columns to include in output DataFrame
|
|
77
|
+
prefix : str
|
|
78
|
+
Prefix for nested modules
|
|
79
|
+
max_depth : int
|
|
80
|
+
Maximum recursion depth
|
|
81
|
+
visited : Optional[Set[str]]
|
|
82
|
+
Set of visited modules to prevent cycles
|
|
83
|
+
docstring : bool
|
|
84
|
+
Whether to include docstrings
|
|
85
|
+
tree : bool
|
|
86
|
+
Whether to display tree structure
|
|
87
|
+
current_depth : int
|
|
88
|
+
Current recursion depth
|
|
89
|
+
print_output : bool
|
|
90
|
+
Whether to print results
|
|
91
|
+
skip_depwarnings : bool
|
|
92
|
+
Whether to skip DeprecationWarnings
|
|
93
|
+
drop_duplicates : bool
|
|
94
|
+
Whether to remove duplicate module entries
|
|
95
|
+
root_only : bool
|
|
96
|
+
Whether to show only root-level modules
|
|
97
|
+
|
|
98
|
+
Returns
|
|
99
|
+
-------
|
|
100
|
+
pd.DataFrame
|
|
101
|
+
Module structure with specified columns
|
|
102
|
+
"""
|
|
103
|
+
if skip_depwarnings:
|
|
104
|
+
warnings.filterwarnings("ignore", category=DeprecationWarning)
|
|
105
|
+
warnings.filterwarnings("ignore", category=UserWarning)
|
|
106
|
+
|
|
107
|
+
if isinstance(module, str):
|
|
108
|
+
try:
|
|
109
|
+
module = __import__(module)
|
|
110
|
+
except ImportError as err:
|
|
111
|
+
print(f"Error importing module {module}: {err}")
|
|
112
|
+
return pd.DataFrame(columns=columns)
|
|
113
|
+
|
|
114
|
+
if visited is None:
|
|
115
|
+
visited = set()
|
|
116
|
+
|
|
117
|
+
content_list = []
|
|
118
|
+
|
|
119
|
+
try:
|
|
120
|
+
module_name = getattr(module, "__name__", "")
|
|
121
|
+
if max_depth < 0 or module_name in visited:
|
|
122
|
+
return pd.DataFrame(content_list, columns=columns)
|
|
123
|
+
|
|
124
|
+
visited.add(module_name)
|
|
125
|
+
base_name = module_name.split(".")[-1]
|
|
126
|
+
full_path = f"{prefix}.{base_name}" if prefix else base_name
|
|
127
|
+
|
|
128
|
+
try:
|
|
129
|
+
module_version = (
|
|
130
|
+
f" (v{module.__version__})" if hasattr(module, "__version__") else ""
|
|
131
|
+
)
|
|
132
|
+
content_list.append(("M", full_path, module_version, current_depth))
|
|
133
|
+
except Exception:
|
|
134
|
+
pass
|
|
135
|
+
|
|
136
|
+
for name, obj in inspect.getmembers(module):
|
|
137
|
+
if name.startswith("_"):
|
|
138
|
+
continue
|
|
139
|
+
|
|
140
|
+
obj_name = f"{full_path}.{name}"
|
|
141
|
+
|
|
142
|
+
if inspect.ismodule(obj):
|
|
143
|
+
if obj.__name__ not in visited:
|
|
144
|
+
content_list.append(
|
|
145
|
+
(
|
|
146
|
+
"M",
|
|
147
|
+
obj_name,
|
|
148
|
+
obj.__doc__ if docstring and obj.__doc__ else "",
|
|
149
|
+
current_depth,
|
|
150
|
+
)
|
|
151
|
+
)
|
|
152
|
+
try:
|
|
153
|
+
sub_df = _inspect_module(
|
|
154
|
+
obj,
|
|
155
|
+
columns=columns,
|
|
156
|
+
prefix=full_path,
|
|
157
|
+
max_depth=max_depth - 1,
|
|
158
|
+
visited=visited,
|
|
159
|
+
docstring=docstring,
|
|
160
|
+
tree=tree,
|
|
161
|
+
current_depth=current_depth + 1,
|
|
162
|
+
print_output=print_output,
|
|
163
|
+
skip_depwarnings=skip_depwarnings,
|
|
164
|
+
drop_duplicates=drop_duplicates,
|
|
165
|
+
root_only=root_only,
|
|
166
|
+
)
|
|
167
|
+
if sub_df is not None and not sub_df.empty:
|
|
168
|
+
content_list.extend(sub_df.values.tolist())
|
|
169
|
+
except Exception as err:
|
|
170
|
+
print(f"Error processing module {obj_name}: {err}")
|
|
171
|
+
elif inspect.isfunction(obj):
|
|
172
|
+
content_list.append(
|
|
173
|
+
(
|
|
174
|
+
"F",
|
|
175
|
+
obj_name,
|
|
176
|
+
obj.__doc__ if docstring and obj.__doc__ else "",
|
|
177
|
+
current_depth,
|
|
178
|
+
)
|
|
179
|
+
)
|
|
180
|
+
elif inspect.isclass(obj):
|
|
181
|
+
content_list.append(
|
|
182
|
+
(
|
|
183
|
+
"C",
|
|
184
|
+
obj_name,
|
|
185
|
+
obj.__doc__ if docstring and obj.__doc__ else "",
|
|
186
|
+
current_depth,
|
|
187
|
+
)
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
except Exception as err:
|
|
191
|
+
print(f"Error processing module structure: {err}")
|
|
192
|
+
return pd.DataFrame(columns=columns)
|
|
193
|
+
|
|
194
|
+
df = pd.DataFrame(content_list, columns=columns)
|
|
195
|
+
|
|
196
|
+
if drop_duplicates:
|
|
197
|
+
df = df.drop_duplicates(subset="Name", keep="first")
|
|
198
|
+
|
|
199
|
+
if root_only:
|
|
200
|
+
mask = df["Name"].str.count(r"\.") <= 1
|
|
201
|
+
df = df[mask]
|
|
202
|
+
|
|
203
|
+
if tree and current_depth == 0 and print_output:
|
|
204
|
+
_print_module_contents(df)
|
|
205
|
+
|
|
206
|
+
return df[columns]
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def _print_module_contents(df: pd.DataFrame) -> None:
|
|
210
|
+
"""Prints module contents in tree structure.
|
|
211
|
+
|
|
212
|
+
Parameters
|
|
213
|
+
----------
|
|
214
|
+
df : pd.DataFrame
|
|
215
|
+
DataFrame containing module structure
|
|
216
|
+
"""
|
|
217
|
+
df_sorted = df.sort_values(["Depth", "Name"])
|
|
218
|
+
depth_last = {}
|
|
219
|
+
|
|
220
|
+
for index, row in df_sorted.iterrows():
|
|
221
|
+
depth = row["Depth"]
|
|
222
|
+
is_last = (
|
|
223
|
+
index == len(df_sorted) - 1 or df_sorted.iloc[index + 1]["Depth"] <= depth
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
prefix = ""
|
|
227
|
+
for d in range(depth):
|
|
228
|
+
if d == depth - 1:
|
|
229
|
+
prefix += "└── " if is_last else "├── "
|
|
230
|
+
else:
|
|
231
|
+
prefix += " " if depth_last.get(d, False) else "│ "
|
|
232
|
+
|
|
233
|
+
print(f"{prefix}({row['Type']}) {row['Name']}{row['Docstring']}")
|
|
234
|
+
depth_last[depth] = is_last
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
if __name__ == "__main__":
|
|
238
|
+
|
|
239
|
+
sys.setrecursionlimit(10_000)
|
|
240
|
+
df = inspect_module(scitex, docstring=True, print_output=False, columns=["Name"])
|
|
241
|
+
print(scitex.pd.round(df))
|
|
242
|
+
# Name
|
|
243
|
+
# 0 scitex
|
|
244
|
+
# 1 scitex.ai
|
|
245
|
+
# 3 scitex.ai.ClassificationReporter
|
|
246
|
+
# 4 scitex.ai.ClassifierServer
|
|
247
|
+
# 5 scitex.ai.EarlyStopping
|
|
248
|
+
# ... ...
|
|
249
|
+
# 5373 scitex.typing
|
|
250
|
+
# 5375 scitex.typing.Any
|
|
251
|
+
# 5376 scitex.typing.Iterable
|
|
252
|
+
# 5377 scitex.web
|
|
253
|
+
# 5379 scitex.web.summarize_url
|
|
254
|
+
|
|
255
|
+
# [5361 rows x 1 columns]
|
|
256
|
+
|
|
257
|
+
# EOF
|
scitex/gen/_less.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-03 02:11:18 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/gen/_less.py
|
|
5
|
+
#!./env/bin/python3
|
|
6
|
+
# -*- coding: utf-8 -*-
|
|
7
|
+
# Time-stamp: "2024-04-21 12:05:35"
|
|
8
|
+
# Author: Yusuke Watanabe (ywata1989@gmail.com)
|
|
9
|
+
|
|
10
|
+
"""
|
|
11
|
+
This script does XYZ.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import sys
|
|
15
|
+
|
|
16
|
+
import matplotlib.pyplot as plt
|
|
17
|
+
import scitex
|
|
18
|
+
|
|
19
|
+
# Imports
|
|
20
|
+
|
|
21
|
+
# # Config
|
|
22
|
+
# CONFIG = scitex.gen.load_configs()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# Functions
|
|
26
|
+
def less(output):
|
|
27
|
+
"""
|
|
28
|
+
Print the given output using `less` in an IPython or IPdb session.
|
|
29
|
+
"""
|
|
30
|
+
import os
|
|
31
|
+
import tempfile
|
|
32
|
+
|
|
33
|
+
from IPython import get_ipython
|
|
34
|
+
|
|
35
|
+
# Create a temporary file to hold the output
|
|
36
|
+
with tempfile.NamedTemporaryFile(delete=False, mode="w+t") as tmpfile:
|
|
37
|
+
# Write the output to the temporary file
|
|
38
|
+
tmpfile.write(output)
|
|
39
|
+
tmpfile_name = tmpfile.name
|
|
40
|
+
|
|
41
|
+
# Use IPython's system command access to pipe the content of the temporary file to `less`
|
|
42
|
+
get_ipython().system(f"less {tmpfile_name}")
|
|
43
|
+
|
|
44
|
+
# Clean up the temporary file
|
|
45
|
+
os.remove(tmpfile_name)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# EOF
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-03 02:11:54 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/gen/_list_packages.py
|
|
5
|
+
"""
|
|
6
|
+
Functionality:
|
|
7
|
+
* Lists and analyzes installed Python packages and their modules
|
|
8
|
+
Input:
|
|
9
|
+
* None (uses importlib.metadata to get installed packages)
|
|
10
|
+
Output:
|
|
11
|
+
* DataFrame containing package module information
|
|
12
|
+
Prerequisites:
|
|
13
|
+
* importlib.metadata (Python 3.8+) or importlib_metadata, pandas
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
import sys
|
|
17
|
+
from typing import Optional
|
|
18
|
+
|
|
19
|
+
import pandas as pd
|
|
20
|
+
|
|
21
|
+
try:
|
|
22
|
+
# Python 3.8+ standard library
|
|
23
|
+
from importlib.metadata import distributions
|
|
24
|
+
except ImportError:
|
|
25
|
+
# Fallback for older Python versions
|
|
26
|
+
from importlib_metadata import distributions
|
|
27
|
+
|
|
28
|
+
from ._inspect_module import inspect_module
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def list_packages(
|
|
32
|
+
max_depth: int = 1,
|
|
33
|
+
root_only: bool = True,
|
|
34
|
+
skip_errors: bool = True,
|
|
35
|
+
verbose: bool = False,
|
|
36
|
+
) -> pd.DataFrame:
|
|
37
|
+
"""Lists all installed packages and their modules."""
|
|
38
|
+
sys.setrecursionlimit(10_000)
|
|
39
|
+
|
|
40
|
+
# Skip known problematic packages
|
|
41
|
+
skip_patterns = [
|
|
42
|
+
"nvidia",
|
|
43
|
+
"cuda",
|
|
44
|
+
"pillow",
|
|
45
|
+
"fonttools",
|
|
46
|
+
"ipython",
|
|
47
|
+
"jsonschema",
|
|
48
|
+
"readme",
|
|
49
|
+
"importlib-metadata",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
# Get installed packages, excluding problematic ones
|
|
53
|
+
installed_packages = [
|
|
54
|
+
dist.name.replace("-", "_")
|
|
55
|
+
for dist in distributions()
|
|
56
|
+
if not any(pat in dist.name.lower() for pat in skip_patterns)
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
# Focus on commonly used packages first
|
|
60
|
+
safelist = [
|
|
61
|
+
"numpy",
|
|
62
|
+
"pandas",
|
|
63
|
+
"scipy",
|
|
64
|
+
"matplotlib",
|
|
65
|
+
"sklearn",
|
|
66
|
+
"torch",
|
|
67
|
+
"tensorflow",
|
|
68
|
+
"keras",
|
|
69
|
+
"xarray",
|
|
70
|
+
"dask",
|
|
71
|
+
"pytest",
|
|
72
|
+
"requests",
|
|
73
|
+
"flask",
|
|
74
|
+
"django",
|
|
75
|
+
"seaborn",
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
# Prioritize safelist packages
|
|
79
|
+
installed_packages = [pkg for pkg in installed_packages if pkg in safelist] + [
|
|
80
|
+
pkg for pkg in installed_packages if pkg not in safelist
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
all_dfs = []
|
|
84
|
+
for package_name in installed_packages:
|
|
85
|
+
try:
|
|
86
|
+
df = inspect_module(
|
|
87
|
+
package_name,
|
|
88
|
+
docstring=False, # Speed up by skipping docstrings
|
|
89
|
+
print_output=False,
|
|
90
|
+
columns=["Name"],
|
|
91
|
+
root_only=root_only,
|
|
92
|
+
max_depth=max_depth,
|
|
93
|
+
skip_depwarnings=True,
|
|
94
|
+
)
|
|
95
|
+
if not df.empty:
|
|
96
|
+
all_dfs.append(df)
|
|
97
|
+
except Exception as err:
|
|
98
|
+
if verbose:
|
|
99
|
+
print(f"Error processing {package_name}: {err}")
|
|
100
|
+
if not skip_errors:
|
|
101
|
+
raise
|
|
102
|
+
|
|
103
|
+
if not all_dfs:
|
|
104
|
+
return pd.DataFrame(columns=["Name"])
|
|
105
|
+
|
|
106
|
+
combined_df = pd.concat(all_dfs, ignore_index=True)
|
|
107
|
+
return combined_df.drop_duplicates().sort_values("Name")
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def main() -> Optional[int]:
|
|
111
|
+
"""Main function for testing package listing functionality."""
|
|
112
|
+
df = list_packages(verbose=True)
|
|
113
|
+
__import__("ipdb").set_trace()
|
|
114
|
+
return 0
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
if __name__ == "__main__":
|
|
118
|
+
import matplotlib.pyplot as plt
|
|
119
|
+
import scitex
|
|
120
|
+
|
|
121
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(
|
|
122
|
+
sys,
|
|
123
|
+
plt,
|
|
124
|
+
verbose=False,
|
|
125
|
+
agg=True,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
exit_status = main()
|
|
129
|
+
|
|
130
|
+
scitex.gen.close(
|
|
131
|
+
CONFIG,
|
|
132
|
+
verbose=False,
|
|
133
|
+
sys=sys,
|
|
134
|
+
notify=False,
|
|
135
|
+
message="",
|
|
136
|
+
exit_status=exit_status,
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# EOF
|
scitex/gen/_mat2py.py
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-03 18:57:14 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/gen/_mat2py.py
|
|
5
|
+
|
|
6
|
+
"""Helper script for loading .mat files into python.
|
|
7
|
+
For .mat with multiple variables use mat2dict to get return dictionary with .mat variables.
|
|
8
|
+
For .mat with 1 matrix use mat2npa to return np.array
|
|
9
|
+
For .mat with 1 matrix use mat2npy to save np.array to .npy
|
|
10
|
+
For multiple .mat files with 1 matrix use dir2npy to save 1 np.array of each .mat to .npy
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
Examples:
|
|
14
|
+
mat2py.mat2npa(fname = '/vol/ccnlab-scratch1/julber/chill_nn_regression/data/chill_wav_time_16kHz.mat', typ = np.float32)
|
|
15
|
+
mat2py.dir2npa(dir = '/vol/ccnlab-scratch1/julber/phoneme_decoding/data/', typ = np.float32, regex = '*xdata')
|
|
16
|
+
mat2py.dir2npa(dir = '/vol/ccnlab-scratch1/julber/phoneme_decoding/data/', typ = np.int32, regex = '*ylabels')
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
September 07, 2017
|
|
20
|
+
JB"""
|
|
21
|
+
|
|
22
|
+
import numpy as np
|
|
23
|
+
import h5py
|
|
24
|
+
from glob import glob as _glob
|
|
25
|
+
import os
|
|
26
|
+
from scipy.io import loadmat
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def mat2dict(fname):
|
|
30
|
+
"""Function returns a dictionary with .mat variables"""
|
|
31
|
+
try:
|
|
32
|
+
D = h5py.File(fname)
|
|
33
|
+
d = {}
|
|
34
|
+
for key, value in D.items():
|
|
35
|
+
d[key] = value
|
|
36
|
+
d["__hdf__"] = True
|
|
37
|
+
except:
|
|
38
|
+
d = loadmat(fname)
|
|
39
|
+
d["__hdf__"] = False
|
|
40
|
+
return d
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def keys2npa(d, typ):
|
|
44
|
+
import pdb
|
|
45
|
+
|
|
46
|
+
pdb.set_trace()
|
|
47
|
+
d2 = {}
|
|
48
|
+
for key in public_keys(d):
|
|
49
|
+
x = np.array(d[key], dtype=typ)
|
|
50
|
+
if d["__hdf__"]:
|
|
51
|
+
x = np.squeeze(np.swapaxes(x, 0, -1))
|
|
52
|
+
assert type(x.flatten()[0]) == typ
|
|
53
|
+
d2[key] = x.copy()
|
|
54
|
+
return d2
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def public_keys(d):
|
|
58
|
+
return [k for k in d.keys() if not k.startswith("_")]
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def mat2npa(fname, typ):
|
|
62
|
+
"""Function returns np array from 1st entry in .mat file"""
|
|
63
|
+
import pdb
|
|
64
|
+
|
|
65
|
+
pdb.set_trace()
|
|
66
|
+
d = keys2npa(mat2dict(fname), typ)
|
|
67
|
+
return d[d.keys()[0]]
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def save_npa(fname, x):
|
|
71
|
+
np.save(fname, x)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def mat2npy(fname, typ):
|
|
75
|
+
"""Function save np array from 1st entry in .mat file to .npy file"""
|
|
76
|
+
x = mat2npa(fname, typ)
|
|
77
|
+
save_npa(fname=fname.replace(".mat", ""), x=x)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def dir2npy(dir, typ, regex="*"):
|
|
81
|
+
"""Function saves np array from 1st entry in each regex + .mat file in dir"""
|
|
82
|
+
os.chdir(dir)
|
|
83
|
+
for fname in _glob(regex + ".mat"):
|
|
84
|
+
print("File " + fname + " to" + " .npa")
|
|
85
|
+
mat2npy(dir + fname, typ)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# EOF
|
scitex/gen/_norm.py
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-19 01:09:55 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/gen/_norm.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/gen/_norm.py"
|
|
7
|
+
|
|
8
|
+
import torch
|
|
9
|
+
|
|
10
|
+
from ..decorators import torch_fn
|
|
11
|
+
from ..torch import nanstd
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@torch_fn
|
|
15
|
+
def to_z(x, axis=-1, dim=None, device="cuda"):
|
|
16
|
+
"""Standardizes tensor to zero mean and unit variance along specified dimension.
|
|
17
|
+
|
|
18
|
+
Parameters
|
|
19
|
+
----------
|
|
20
|
+
xx : torch.Tensor
|
|
21
|
+
Input tensor
|
|
22
|
+
dim : int, optional
|
|
23
|
+
Dimension along which to standardize (preferred)
|
|
24
|
+
axis : int, optional
|
|
25
|
+
Alternative to dim for numpy compatibility
|
|
26
|
+
device : str
|
|
27
|
+
Device to use for computation
|
|
28
|
+
|
|
29
|
+
Returns
|
|
30
|
+
-------
|
|
31
|
+
torch.Tensor
|
|
32
|
+
Z-scored tensor
|
|
33
|
+
"""
|
|
34
|
+
return (x - x.mean(dim=dim, keepdim=True)) / x.std(dim=dim, keepdim=True)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@torch_fn
|
|
38
|
+
def to_nanz(x, axis=-1, dim=None, device="cuda"):
|
|
39
|
+
"""Standardizes tensor handling NaN values along specified dimension.
|
|
40
|
+
|
|
41
|
+
Parameters
|
|
42
|
+
----------
|
|
43
|
+
xx : torch.Tensor
|
|
44
|
+
Input tensor
|
|
45
|
+
dim : int, optional
|
|
46
|
+
Dimension along which to standardize (preferred)
|
|
47
|
+
axis : int, optional
|
|
48
|
+
Alternative to dim for numpy compatibility
|
|
49
|
+
device : str
|
|
50
|
+
Device to use for computation
|
|
51
|
+
|
|
52
|
+
Returns
|
|
53
|
+
-------
|
|
54
|
+
torch.Tensor
|
|
55
|
+
Z-scored tensor with NaN handling
|
|
56
|
+
"""
|
|
57
|
+
nan_mean = torch.nanmean(x, dim=dim, keepdim=True)
|
|
58
|
+
nan_std = nanstd(x, dim=dim, keepdim=True)
|
|
59
|
+
return (x - nan_mean) / nan_std
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@torch_fn
|
|
63
|
+
def to_01(x, axis=-1, dim=None, device="cuda"):
|
|
64
|
+
"""Min-max scales tensor to [0, 1] range along specified dimension.
|
|
65
|
+
|
|
66
|
+
Parameters
|
|
67
|
+
----------
|
|
68
|
+
xx : torch.Tensor
|
|
69
|
+
Input tensor
|
|
70
|
+
dim : int, optional
|
|
71
|
+
Dimension along which to scale (preferred)
|
|
72
|
+
axis : int, optional
|
|
73
|
+
Alternative to dim for numpy compatibility
|
|
74
|
+
device : str
|
|
75
|
+
Device to use for computation
|
|
76
|
+
|
|
77
|
+
Returns
|
|
78
|
+
-------
|
|
79
|
+
torch.Tensor
|
|
80
|
+
Min-max scaled tensor
|
|
81
|
+
"""
|
|
82
|
+
x_min = x.min(dim=dim, keepdim=True)[0]
|
|
83
|
+
x_max = x.max(dim=dim, keepdim=True)[0]
|
|
84
|
+
return (x - x_min) / (x_max - x_min)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@torch_fn
|
|
88
|
+
def to_nan01(x, axis=-1, dim=None, device="cuda"):
|
|
89
|
+
"""Min-max scales tensor handling NaN values along specified dimension.
|
|
90
|
+
|
|
91
|
+
Parameters
|
|
92
|
+
----------
|
|
93
|
+
xx : torch.Tensor
|
|
94
|
+
Input tensor
|
|
95
|
+
dim : int, optional
|
|
96
|
+
Dimension along which to scale (preferred)
|
|
97
|
+
axis : int, optional
|
|
98
|
+
Alternative to dim for numpy compatibility
|
|
99
|
+
device : str
|
|
100
|
+
Device to use for computation
|
|
101
|
+
|
|
102
|
+
Returns
|
|
103
|
+
-------
|
|
104
|
+
torch.Tensor
|
|
105
|
+
Min-max scaled tensor with NaN handling
|
|
106
|
+
"""
|
|
107
|
+
x_min = torch.nanmin(x, dim=dim, keepdim=True)[0]
|
|
108
|
+
x_max = torch.nanmax(x, dim=dim, keepdim=True)[0]
|
|
109
|
+
return (x - x_min) / (x_max - x_min)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@torch_fn
|
|
113
|
+
def unbias(x, axis=-1, dim=None, fn="mean", device="cuda"):
|
|
114
|
+
"""Removes bias from tensor using specified method along dimension.
|
|
115
|
+
|
|
116
|
+
Parameters
|
|
117
|
+
----------
|
|
118
|
+
xx : torch.Tensor
|
|
119
|
+
Input tensor
|
|
120
|
+
dim : int, optional
|
|
121
|
+
Dimension along which to unbias (preferred)
|
|
122
|
+
axis : int, optional
|
|
123
|
+
Alternative to dim for numpy compatibility
|
|
124
|
+
fn : str
|
|
125
|
+
Method to use for unbiasing ('mean' or 'min')
|
|
126
|
+
device : str
|
|
127
|
+
Device to use for computation
|
|
128
|
+
|
|
129
|
+
Returns
|
|
130
|
+
-------
|
|
131
|
+
torch.Tensor
|
|
132
|
+
Unbiased tensor
|
|
133
|
+
"""
|
|
134
|
+
if fn == "mean":
|
|
135
|
+
return x - x.mean(dim=dim, keepdims=True)
|
|
136
|
+
if fn == "min":
|
|
137
|
+
return x - x.min(dim=dim, keepdims=True)[0]
|
|
138
|
+
raise ValueError(f"Unsupported unbiasing method: {fn}")
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
@torch_fn
|
|
142
|
+
def clip_perc(x, lower_perc=2.5, upper_perc=97.5, axis=-1, dim=None, device="cuda"):
|
|
143
|
+
"""Clips tensor values between specified percentiles along dimension.
|
|
144
|
+
|
|
145
|
+
Parameters
|
|
146
|
+
----------
|
|
147
|
+
x : torch.Tensor
|
|
148
|
+
Input tensor
|
|
149
|
+
lower_perc : float
|
|
150
|
+
Lower percentile (0-100)
|
|
151
|
+
upper_perc : float
|
|
152
|
+
Upper percentile (0-100)
|
|
153
|
+
dim : int
|
|
154
|
+
Dimension along which to compute percentiles (preferred)
|
|
155
|
+
axis : int
|
|
156
|
+
Alternative to dim for numpy compatibility
|
|
157
|
+
device : str
|
|
158
|
+
Device to use for computation
|
|
159
|
+
|
|
160
|
+
Returns
|
|
161
|
+
-------
|
|
162
|
+
torch.Tensor
|
|
163
|
+
Clipped tensor
|
|
164
|
+
"""
|
|
165
|
+
lower = torch.quantile(x, lower_perc / 100, dim=dim, keepdim=True)
|
|
166
|
+
upper = torch.quantile(x, upper_perc / 100, dim=dim, keepdim=True)
|
|
167
|
+
return torch.clamp(x, min=lower, max=upper)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
# EOF
|