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,72 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
import pandas as pd
|
|
15
|
+
import scitex
|
|
16
|
+
|
|
17
|
+
def _format_eventplot(id, tracked_dict, kwargs):
|
|
18
|
+
"""Format data from an eventplot call."""
|
|
19
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
20
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
21
|
+
return pd.DataFrame()
|
|
22
|
+
|
|
23
|
+
# Get the args from tracked_dict
|
|
24
|
+
args = tracked_dict.get('args', [])
|
|
25
|
+
|
|
26
|
+
# Eventplot displays multiple sets of events as parallel lines
|
|
27
|
+
if len(args) >= 1:
|
|
28
|
+
positions = args[0]
|
|
29
|
+
|
|
30
|
+
try:
|
|
31
|
+
# Try using scitex.pd.force_df if available
|
|
32
|
+
try:
|
|
33
|
+
import scitex.pd
|
|
34
|
+
|
|
35
|
+
# If positions is a single array
|
|
36
|
+
if isinstance(
|
|
37
|
+
positions, (list, np.ndarray)
|
|
38
|
+
) and not isinstance(positions[0], (list, np.ndarray)):
|
|
39
|
+
return pd.DataFrame({f"{id}_eventplot_events": positions})
|
|
40
|
+
|
|
41
|
+
# If positions is a list of arrays (multiple event sets)
|
|
42
|
+
elif isinstance(positions, (list, np.ndarray)):
|
|
43
|
+
data = {}
|
|
44
|
+
for i, events in enumerate(positions):
|
|
45
|
+
data[f"{id}_eventplot_events{i:02d}"] = events
|
|
46
|
+
|
|
47
|
+
# Use force_df to handle different length arrays
|
|
48
|
+
return scitex.pd.force_df(data)
|
|
49
|
+
|
|
50
|
+
except (ImportError, AttributeError):
|
|
51
|
+
# Fall back to pandas with manual Series creation
|
|
52
|
+
# If positions is a single array
|
|
53
|
+
if isinstance(
|
|
54
|
+
positions, (list, np.ndarray)
|
|
55
|
+
) and not isinstance(positions[0], (list, np.ndarray)):
|
|
56
|
+
return pd.DataFrame({f"{id}_eventplot_events": positions})
|
|
57
|
+
|
|
58
|
+
# If positions is a list of arrays (multiple event sets)
|
|
59
|
+
elif isinstance(positions, (list, np.ndarray)):
|
|
60
|
+
# Create a DataFrame where each column is a Series that can handle varying lengths
|
|
61
|
+
df = pd.DataFrame()
|
|
62
|
+
for i, events in enumerate(positions):
|
|
63
|
+
df[f"{id}_eventplot_events{i:02d}"] = pd.Series(events)
|
|
64
|
+
return df
|
|
65
|
+
except Exception as e:
|
|
66
|
+
# If all else fails, return an empty DataFrame
|
|
67
|
+
import warnings
|
|
68
|
+
|
|
69
|
+
warnings.warn(f"Error formatting eventplot data: {str(e)}")
|
|
70
|
+
return pd.DataFrame()
|
|
71
|
+
|
|
72
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_fill(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a fill call."""
|
|
17
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
18
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
19
|
+
return pd.DataFrame()
|
|
20
|
+
|
|
21
|
+
# Get the args from tracked_dict
|
|
22
|
+
args = tracked_dict.get('args', [])
|
|
23
|
+
|
|
24
|
+
# Fill creates a polygon based on points
|
|
25
|
+
if len(args) >= 2:
|
|
26
|
+
# First arg is x, remaining args are y values
|
|
27
|
+
x = args[0]
|
|
28
|
+
data = {f"{id}_fill_x": x}
|
|
29
|
+
|
|
30
|
+
for i, y in enumerate(args[1:]):
|
|
31
|
+
data[f"{id}_fill_y{i:02d}"] = y
|
|
32
|
+
|
|
33
|
+
return pd.DataFrame(data)
|
|
34
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_fill_between(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a fill_between call."""
|
|
17
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
18
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
19
|
+
return pd.DataFrame()
|
|
20
|
+
|
|
21
|
+
# Get the args from tracked_dict
|
|
22
|
+
args = tracked_dict.get('args', [])
|
|
23
|
+
|
|
24
|
+
# Typical args: x, y1, y2
|
|
25
|
+
if len(args) >= 3:
|
|
26
|
+
x, y1, y2 = args[:3]
|
|
27
|
+
|
|
28
|
+
df = pd.DataFrame(
|
|
29
|
+
{
|
|
30
|
+
f"{id}_fill_between_x": x,
|
|
31
|
+
f"{id}_fill_between_y1": y1,
|
|
32
|
+
f"{id}_fill_between_y2": y2,
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
return df
|
|
36
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
import pandas as pd
|
|
15
|
+
|
|
16
|
+
def _format_hist(id, tracked_dict, kwargs):
|
|
17
|
+
"""
|
|
18
|
+
Format data from a hist call as a bar plot representation.
|
|
19
|
+
|
|
20
|
+
This formatter extracts both the raw data and the binned data from histogram plots,
|
|
21
|
+
returning them in a format that can be visualized as a bar plot.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
id (str): Identifier for the plot
|
|
25
|
+
tracked_dict (dict): Dictionary containing tracked data
|
|
26
|
+
kwargs (dict): Keyword arguments passed to hist
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
pd.DataFrame: DataFrame containing both raw data and bin information
|
|
30
|
+
"""
|
|
31
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
32
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
33
|
+
return pd.DataFrame()
|
|
34
|
+
|
|
35
|
+
# Get the args from tracked_dict
|
|
36
|
+
args = tracked_dict.get('args', [])
|
|
37
|
+
|
|
38
|
+
# Check if histogram result (bin counts and edges) is available in tracked_dict
|
|
39
|
+
hist_result = tracked_dict.get('hist_result', None)
|
|
40
|
+
|
|
41
|
+
columns = {}
|
|
42
|
+
|
|
43
|
+
# Extract raw data if available
|
|
44
|
+
if len(args) >= 1:
|
|
45
|
+
x = args[0]
|
|
46
|
+
columns[f"{id}_raw_data"] = x
|
|
47
|
+
|
|
48
|
+
# If we have histogram result (counts and bin edges)
|
|
49
|
+
if hist_result is not None:
|
|
50
|
+
counts, bin_edges = hist_result
|
|
51
|
+
|
|
52
|
+
# Calculate bin centers for bar plot representation
|
|
53
|
+
bin_centers = 0.5 * (bin_edges[:-1] + bin_edges[1:])
|
|
54
|
+
bin_widths = bin_edges[1:] - bin_edges[:-1]
|
|
55
|
+
|
|
56
|
+
# Add bin information to DataFrame
|
|
57
|
+
columns[f"{id}_bin_centers"] = bin_centers
|
|
58
|
+
columns[f"{id}_bin_counts"] = counts
|
|
59
|
+
columns[f"{id}_bin_widths"] = bin_widths
|
|
60
|
+
columns[f"{id}_bin_edges_left"] = bin_edges[:-1]
|
|
61
|
+
columns[f"{id}_bin_edges_right"] = bin_edges[1:]
|
|
62
|
+
|
|
63
|
+
# Create DataFrame with aligned length
|
|
64
|
+
max_length = max(len(value) for value in columns.values())
|
|
65
|
+
for key, value in list(columns.items()):
|
|
66
|
+
if len(value) < max_length:
|
|
67
|
+
# Pad with NaN if needed
|
|
68
|
+
if isinstance(value, np.ndarray):
|
|
69
|
+
columns[key] = np.pad(value, (0, max_length - len(value)),
|
|
70
|
+
mode='constant', constant_values=np.nan)
|
|
71
|
+
else:
|
|
72
|
+
padded = list(value) + [np.nan] * (max_length - len(value))
|
|
73
|
+
columns[key] = np.array(padded)
|
|
74
|
+
|
|
75
|
+
# Return DataFrame or empty DataFrame if no data
|
|
76
|
+
if columns:
|
|
77
|
+
return pd.DataFrame(columns)
|
|
78
|
+
|
|
79
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_imshow(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from an imshow call."""
|
|
17
|
+
|
|
18
|
+
if tracked_dict.get("image_df") is not None:
|
|
19
|
+
return tracked_dict.get("image_df")
|
|
20
|
+
|
|
21
|
+
# # Placeholder implementation
|
|
22
|
+
# # Imshow displays an image (2D array)
|
|
23
|
+
# if len(args) >= 1:
|
|
24
|
+
# img = args[0]
|
|
25
|
+
|
|
26
|
+
# # Convert 2D image to long format
|
|
27
|
+
# if isinstance(img, np.ndarray) and img.ndim == 2:
|
|
28
|
+
# rows, cols = img.shape
|
|
29
|
+
# row_indices, col_indices = np.meshgrid(
|
|
30
|
+
# range(rows), range(cols), indexing="ij"
|
|
31
|
+
# )
|
|
32
|
+
|
|
33
|
+
# df = pd.DataFrame(
|
|
34
|
+
# {
|
|
35
|
+
# f"{id}_imshow_row": row_indices.flatten(),
|
|
36
|
+
# f"{id}_imshow_col": col_indices.flatten(),
|
|
37
|
+
# f"{id}_imshow_value": img.flatten(),
|
|
38
|
+
# }
|
|
39
|
+
# )
|
|
40
|
+
# return df
|
|
41
|
+
|
|
42
|
+
# # Handle RGB/RGBA images
|
|
43
|
+
# elif isinstance(img, np.ndarray) and img.ndim == 3:
|
|
44
|
+
# rows, cols, channels = img.shape
|
|
45
|
+
# row_indices, col_indices = np.meshgrid(
|
|
46
|
+
# range(rows), range(cols), indexing="ij"
|
|
47
|
+
# )
|
|
48
|
+
|
|
49
|
+
# data = {
|
|
50
|
+
# f"{id}_imshow_row": row_indices.flatten(),
|
|
51
|
+
# f"{id}_imshow_col": col_indices.flatten(),
|
|
52
|
+
# }
|
|
53
|
+
|
|
54
|
+
# # Add channel data
|
|
55
|
+
# for c in range(channels):
|
|
56
|
+
# data[f"{id}_imshow_channel{c}"] = img[:, :, c].flatten()
|
|
57
|
+
|
|
58
|
+
# return pd.DataFrame(data)
|
|
59
|
+
# return pd.DataFrame()
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_imshow2d(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from an imshow2d call."""
|
|
17
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
18
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
19
|
+
return pd.DataFrame()
|
|
20
|
+
|
|
21
|
+
# Get the args from tracked_dict
|
|
22
|
+
args = tracked_dict.get('args', [])
|
|
23
|
+
|
|
24
|
+
# Extract data if available
|
|
25
|
+
if len(args) >= 1 and isinstance(args[0], pd.DataFrame):
|
|
26
|
+
df = args[0].copy()
|
|
27
|
+
# Add prefixes to columns and index if needed
|
|
28
|
+
# df.columns = [f"{id}_imshow2d_{col}" for col in df.columns]
|
|
29
|
+
# df.index = [f"{id}_imshow2d_{idx}" for idx in df.index]
|
|
30
|
+
return df
|
|
31
|
+
|
|
32
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
from collections import OrderedDict
|
|
14
|
+
import numpy as np
|
|
15
|
+
import pandas as pd
|
|
16
|
+
import xarray as xr
|
|
17
|
+
|
|
18
|
+
def _format_plot(id, tracked_dict, kwargs):
|
|
19
|
+
"""Format data from a plot call.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
id (str): Identifier for the plot
|
|
23
|
+
tracked_dict (dict): Dictionary containing tracked data
|
|
24
|
+
kwargs (dict): Keyword arguments passed to plot
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
pd.DataFrame: Formatted data from plot
|
|
28
|
+
"""
|
|
29
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
30
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
31
|
+
return pd.DataFrame()
|
|
32
|
+
|
|
33
|
+
# For plot_line, we expect a 'plot_df' key
|
|
34
|
+
if 'plot_df' in tracked_dict:
|
|
35
|
+
plot_df = tracked_dict['plot_df']
|
|
36
|
+
if isinstance(plot_df, pd.DataFrame):
|
|
37
|
+
# Add the id prefix to all columns
|
|
38
|
+
return plot_df.add_prefix(f"{id}_")
|
|
39
|
+
|
|
40
|
+
# Legacy handling for tracked args (should be deprecated)
|
|
41
|
+
if 'args' in tracked_dict:
|
|
42
|
+
args = tracked_dict['args']
|
|
43
|
+
if isinstance(args, tuple) and len(args) > 0:
|
|
44
|
+
if len(args) == 1:
|
|
45
|
+
args_value = args[0]
|
|
46
|
+
if hasattr(args_value, 'ndim') and args_value.ndim == 2:
|
|
47
|
+
x, y = args_value[:, 0], args_value[:, 1]
|
|
48
|
+
df = pd.DataFrame({f"{id}_plot_x": x, f"{id}_plot_y": y})
|
|
49
|
+
return df
|
|
50
|
+
|
|
51
|
+
elif len(args) == 2:
|
|
52
|
+
x, y = args
|
|
53
|
+
if isinstance(y, (np.ndarray, xr.DataArray)):
|
|
54
|
+
if y.ndim == 2:
|
|
55
|
+
out = OrderedDict()
|
|
56
|
+
for ii in range(y.shape[1]):
|
|
57
|
+
out[f"{id}_plot_x{ii:02d}"] = x
|
|
58
|
+
out[f"{id}_plot_y{ii:02d}"] = y[:, ii]
|
|
59
|
+
df = pd.DataFrame(out)
|
|
60
|
+
return df
|
|
61
|
+
|
|
62
|
+
if isinstance(y, pd.DataFrame):
|
|
63
|
+
df = pd.DataFrame(
|
|
64
|
+
{
|
|
65
|
+
f"{id}_plot_x": x,
|
|
66
|
+
**{
|
|
67
|
+
f"{id}_plot_y{ii:02d}": np.array(y[col])
|
|
68
|
+
for ii, col in enumerate(y.columns)
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
return df
|
|
73
|
+
|
|
74
|
+
if isinstance(y, (np.ndarray, xr.DataArray, list)):
|
|
75
|
+
df = pd.DataFrame({f"{id}_plot_x": x, f"{id}_plot_y": y})
|
|
76
|
+
return df
|
|
77
|
+
|
|
78
|
+
# Default empty DataFrame if we can't process the input
|
|
79
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
import pandas as pd
|
|
15
|
+
|
|
16
|
+
def _format_plot_box(id, tracked_dict, kwargs):
|
|
17
|
+
"""Format data from a plot_box call."""
|
|
18
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
19
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
20
|
+
return pd.DataFrame()
|
|
21
|
+
|
|
22
|
+
# First try to get data directly from tracked_dict
|
|
23
|
+
data = tracked_dict.get('data')
|
|
24
|
+
|
|
25
|
+
# If no data key, get from args
|
|
26
|
+
if data is None:
|
|
27
|
+
args = tracked_dict.get('args', [])
|
|
28
|
+
if len(args) >= 1:
|
|
29
|
+
data = args[0]
|
|
30
|
+
else:
|
|
31
|
+
return pd.DataFrame()
|
|
32
|
+
|
|
33
|
+
# If data is a simple array or list of values
|
|
34
|
+
if isinstance(data, (np.ndarray, list)) and len(data) > 0:
|
|
35
|
+
try:
|
|
36
|
+
# Check if it's a simple list of values or a list of lists
|
|
37
|
+
if isinstance(data[0], (int, float, np.number)):
|
|
38
|
+
return pd.DataFrame({f"{id}_plot_box_values": data})
|
|
39
|
+
|
|
40
|
+
# If data is a list of arrays (multiple box plots)
|
|
41
|
+
elif isinstance(data, (list, tuple)) and all(
|
|
42
|
+
isinstance(x, (list, np.ndarray)) for x in data
|
|
43
|
+
):
|
|
44
|
+
result = pd.DataFrame()
|
|
45
|
+
for i, values in enumerate(data):
|
|
46
|
+
try:
|
|
47
|
+
result[f"{id}_plot_box_group{i:02d}"] = pd.Series(values)
|
|
48
|
+
except:
|
|
49
|
+
# Handle case where values may not be convertible to Series
|
|
50
|
+
pass
|
|
51
|
+
return result
|
|
52
|
+
except (IndexError, TypeError):
|
|
53
|
+
# Return empty DataFrame if we can't process the data
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
# If data is a dictionary
|
|
57
|
+
elif isinstance(data, dict):
|
|
58
|
+
result = pd.DataFrame()
|
|
59
|
+
for label, values in data.items():
|
|
60
|
+
try:
|
|
61
|
+
result[f"{id}_plot_box_{label}"] = pd.Series(values)
|
|
62
|
+
except:
|
|
63
|
+
# Handle case where values may not be convertible to Series
|
|
64
|
+
pass
|
|
65
|
+
return result
|
|
66
|
+
|
|
67
|
+
# If data is a DataFrame
|
|
68
|
+
elif isinstance(data, pd.DataFrame):
|
|
69
|
+
result = pd.DataFrame()
|
|
70
|
+
for col in data.columns:
|
|
71
|
+
result[f"{id}_plot_box_{col}"] = data[col]
|
|
72
|
+
return result
|
|
73
|
+
|
|
74
|
+
# Default case: return empty DataFrame if nothing could be processed
|
|
75
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
import pandas as pd
|
|
15
|
+
|
|
16
|
+
def _format_plot_conf_mat(id, tracked_dict, kwargs):
|
|
17
|
+
"""Format data from a plot_conf_mat call.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
id (str): Identifier for the plot
|
|
21
|
+
tracked_dict (dict): Dictionary containing tracked data
|
|
22
|
+
kwargs (dict): Keyword arguments passed to plot_conf_mat
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
pd.DataFrame: Formatted confusion matrix data
|
|
26
|
+
"""
|
|
27
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
28
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
29
|
+
return pd.DataFrame()
|
|
30
|
+
|
|
31
|
+
# Get the args from tracked_dict
|
|
32
|
+
args = tracked_dict.get('args', [])
|
|
33
|
+
|
|
34
|
+
# Extract confusion matrix if available in args
|
|
35
|
+
if len(args) >= 1 and isinstance(args[0], (np.ndarray, list)):
|
|
36
|
+
conf_mat = np.array(args[0])
|
|
37
|
+
|
|
38
|
+
# Convert to DataFrame
|
|
39
|
+
if conf_mat.ndim == 2:
|
|
40
|
+
# Create column and index names
|
|
41
|
+
n_classes = conf_mat.shape[0]
|
|
42
|
+
columns = [f"Predicted_{i}" for i in range(n_classes)]
|
|
43
|
+
index = [f"True_{i}" for i in range(n_classes)]
|
|
44
|
+
|
|
45
|
+
# Create DataFrame with proper labels
|
|
46
|
+
df = pd.DataFrame(conf_mat, columns=columns, index=index)
|
|
47
|
+
|
|
48
|
+
# Reset index to make it a regular column
|
|
49
|
+
df = df.reset_index().rename(columns={"index": "True_Class"})
|
|
50
|
+
|
|
51
|
+
# Add prefix to all columns
|
|
52
|
+
df.columns = [f"{id}_conf_mat_{col}" for col in df.columns]
|
|
53
|
+
|
|
54
|
+
return df
|
|
55
|
+
|
|
56
|
+
# Extract balanced accuracy if available as fallback
|
|
57
|
+
bacc = tracked_dict.get('balanced_accuracy')
|
|
58
|
+
|
|
59
|
+
# Create DataFrame with the balanced accuracy
|
|
60
|
+
if bacc is not None:
|
|
61
|
+
df = pd.DataFrame({f"{id}_conf_mat_balanced_accuracy": [bacc]})
|
|
62
|
+
return df
|
|
63
|
+
|
|
64
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
import pandas as pd
|
|
8
|
+
|
|
9
|
+
__FILE__ = (
|
|
10
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py"
|
|
11
|
+
)
|
|
12
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
13
|
+
# ----------------------------------------
|
|
14
|
+
|
|
15
|
+
def _format_plot_ecdf(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a plot_ecdf call.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
id (str): Identifier for the plot
|
|
20
|
+
tracked_dict (dict): Dictionary containing 'ecdf_df' key with ECDF data
|
|
21
|
+
kwargs (dict): Keyword arguments passed to plot_ecdf
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
pd.DataFrame: Formatted ECDF data
|
|
25
|
+
"""
|
|
26
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
27
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
28
|
+
return pd.DataFrame()
|
|
29
|
+
|
|
30
|
+
# Get the ecdf_df from tracked_dict
|
|
31
|
+
ecdf_df = tracked_dict.get('ecdf_df')
|
|
32
|
+
|
|
33
|
+
if ecdf_df is None or not isinstance(ecdf_df, pd.DataFrame):
|
|
34
|
+
return pd.DataFrame()
|
|
35
|
+
|
|
36
|
+
# Create a copy to avoid modifying the original
|
|
37
|
+
result = ecdf_df.copy()
|
|
38
|
+
|
|
39
|
+
# Add prefix to column names if ID is provided
|
|
40
|
+
if id is not None:
|
|
41
|
+
# Rename columns with ID prefix
|
|
42
|
+
result.columns = [f"{id}_ecdf_{col}" for col in result.columns]
|
|
43
|
+
|
|
44
|
+
return result
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-18 18:14:26 (ywatanabe)"
|
|
4
|
+
# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
import pandas as pd
|
|
15
|
+
|
|
16
|
+
def _format_plot_fillv(id, tracked_dict, kwargs):
|
|
17
|
+
"""Format data from a plot_fillv call.
|
|
18
|
+
|
|
19
|
+
Formats data similar to line plot format for better compatibility.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
id (str): Identifier for the plot
|
|
23
|
+
tracked_dict (dict): Dictionary containing tracked data
|
|
24
|
+
kwargs (dict): Keyword arguments passed to plot_fillv
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
pd.DataFrame: Formatted fillv data in a long-format dataframe
|
|
28
|
+
"""
|
|
29
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
30
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
31
|
+
return pd.DataFrame()
|
|
32
|
+
|
|
33
|
+
# Try to get starts/ends directly from tracked_dict first
|
|
34
|
+
starts = tracked_dict.get('starts')
|
|
35
|
+
ends = tracked_dict.get('ends')
|
|
36
|
+
|
|
37
|
+
# If not found, get from args
|
|
38
|
+
if starts is None or ends is None:
|
|
39
|
+
args = tracked_dict.get('args', [])
|
|
40
|
+
|
|
41
|
+
# Extract data if available from args
|
|
42
|
+
if len(args) >= 2:
|
|
43
|
+
starts, ends = args[0], args[1]
|
|
44
|
+
|
|
45
|
+
# If we have valid starts and ends, create a DataFrame in a format similar to line plot
|
|
46
|
+
if starts is not None and ends is not None:
|
|
47
|
+
# Convert to numpy arrays if they're lists for better handling
|
|
48
|
+
if isinstance(starts, list):
|
|
49
|
+
starts = np.array(starts)
|
|
50
|
+
if isinstance(ends, list):
|
|
51
|
+
ends = np.array(ends)
|
|
52
|
+
|
|
53
|
+
# Create a DataFrame with x, y pairs for each fill span
|
|
54
|
+
rows = []
|
|
55
|
+
for start, end in zip(starts, ends):
|
|
56
|
+
rows.append({
|
|
57
|
+
f"{id}_x": start,
|
|
58
|
+
f"{id}_y": 0,
|
|
59
|
+
f"{id}_type": "start"
|
|
60
|
+
})
|
|
61
|
+
rows.append({
|
|
62
|
+
f"{id}_x": end,
|
|
63
|
+
f"{id}_y": 0,
|
|
64
|
+
f"{id}_type": "end"
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
if rows:
|
|
68
|
+
return pd.DataFrame(rows)
|
|
69
|
+
|
|
70
|
+
return pd.DataFrame()
|