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,66 @@
|
|
|
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_heatmap.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.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_heatmap(id, tracked_dict, kwargs):
|
|
17
|
+
"""Format data from a plot_heatmap call.
|
|
18
|
+
|
|
19
|
+
Exports heatmap data in xyz format (x, y, value) 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_heatmap
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
pd.DataFrame: Formatted heatmap data in xyz format
|
|
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
|
+
# Extract data from tracked_dict
|
|
34
|
+
data = tracked_dict.get('data')
|
|
35
|
+
x_labels = tracked_dict.get('x_labels')
|
|
36
|
+
y_labels = tracked_dict.get('y_labels')
|
|
37
|
+
|
|
38
|
+
if data is not None and hasattr(data, "shape") and len(data.shape) == 2:
|
|
39
|
+
rows, cols = data.shape
|
|
40
|
+
row_indices, col_indices = np.meshgrid(
|
|
41
|
+
range(rows), range(cols), indexing="ij"
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# Format data in xyz format (x, y, value)
|
|
45
|
+
df = pd.DataFrame(
|
|
46
|
+
{
|
|
47
|
+
f"{id}_x": col_indices.flatten(), # x is column
|
|
48
|
+
f"{id}_y": row_indices.flatten(), # y is row
|
|
49
|
+
f"{id}_value": data.flatten(), # z is intensity/value
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Add label information if available
|
|
54
|
+
if x_labels is not None and len(x_labels) == cols:
|
|
55
|
+
# Map column indices to x labels (columns are x)
|
|
56
|
+
x_label_map = {i: label for i, label in enumerate(x_labels)}
|
|
57
|
+
df[f"{id}_x_label"] = df[f"{id}_x"].map(x_label_map)
|
|
58
|
+
|
|
59
|
+
if y_labels is not None and len(y_labels) == rows:
|
|
60
|
+
# Map row indices to y labels (rows are y)
|
|
61
|
+
y_label_map = {i: label for i, label in enumerate(y_labels)}
|
|
62
|
+
df[f"{id}_y_label"] = df[f"{id}_y"].map(y_label_map)
|
|
63
|
+
|
|
64
|
+
return df
|
|
65
|
+
|
|
66
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,95 @@
|
|
|
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_image.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
import numpy as np
|
|
8
|
+
import pandas as pd
|
|
9
|
+
|
|
10
|
+
__FILE__ = (
|
|
11
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py"
|
|
12
|
+
)
|
|
13
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
14
|
+
# ----------------------------------------
|
|
15
|
+
|
|
16
|
+
def _format_plot_image(id, tracked_dict, kwargs):
|
|
17
|
+
"""Format data from a plot_image call.
|
|
18
|
+
|
|
19
|
+
Exports image data in long-format xyz format for better compatibility.
|
|
20
|
+
Also saves channel data for RGB/RGBA images.
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
id (str or int): Identifier for the plot
|
|
24
|
+
tracked_dict (dict): Dictionary containing tracked data
|
|
25
|
+
kwargs (dict): Keyword arguments passed to plot_image
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
pd.DataFrame: Formatted image data in xyz format
|
|
29
|
+
"""
|
|
30
|
+
# Check if tracked_dict is not a dictionary or is empty
|
|
31
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
32
|
+
return pd.DataFrame()
|
|
33
|
+
|
|
34
|
+
# Check if image_df is available and use it if present
|
|
35
|
+
if "image_df" in tracked_dict:
|
|
36
|
+
image_df = tracked_dict.get("image_df")
|
|
37
|
+
if isinstance(image_df, pd.DataFrame):
|
|
38
|
+
# Add prefix if ID is provided
|
|
39
|
+
if id is not None:
|
|
40
|
+
image_df = image_df.copy()
|
|
41
|
+
id_str = str(id)
|
|
42
|
+
# Convert columns to strings first to handle integer column names
|
|
43
|
+
image_df.columns = [str(col) for col in image_df.columns]
|
|
44
|
+
image_df.columns = [f"{id_str}_{col}" if not col.startswith(f"{id_str}_") else col for col in image_df.columns]
|
|
45
|
+
return image_df
|
|
46
|
+
|
|
47
|
+
# If we have image data
|
|
48
|
+
if "image" in tracked_dict:
|
|
49
|
+
img = tracked_dict["image"]
|
|
50
|
+
id_str = str(id) if id is not None else "image"
|
|
51
|
+
|
|
52
|
+
# Handle 2D grayscale images - create xyz format (x, y, value)
|
|
53
|
+
if isinstance(img, np.ndarray) and img.ndim == 2:
|
|
54
|
+
rows, cols = img.shape
|
|
55
|
+
row_indices, col_indices = np.meshgrid(
|
|
56
|
+
range(rows), range(cols), indexing="ij"
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# Create xyz format
|
|
60
|
+
df = pd.DataFrame(
|
|
61
|
+
{
|
|
62
|
+
f"{id_str}_x": col_indices.flatten(), # x is column
|
|
63
|
+
f"{id_str}_y": row_indices.flatten(), # y is row
|
|
64
|
+
f"{id_str}_value": img.flatten(), # z is intensity
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
return df
|
|
68
|
+
|
|
69
|
+
# Handle RGB/RGBA images - create xyz format with additional channel information
|
|
70
|
+
elif isinstance(img, np.ndarray) and img.ndim == 3:
|
|
71
|
+
rows, cols, channels = img.shape
|
|
72
|
+
row_indices, col_indices = np.meshgrid(
|
|
73
|
+
range(rows), range(cols), indexing="ij"
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# Create a list to hold rows for a long-format DataFrame
|
|
77
|
+
data_rows = []
|
|
78
|
+
channel_names = ["r", "g", "b", "a"]
|
|
79
|
+
|
|
80
|
+
# Create long-format data (x, y, channel, value)
|
|
81
|
+
for r in range(rows):
|
|
82
|
+
for c in range(cols):
|
|
83
|
+
for ch in range(min(channels, len(channel_names))):
|
|
84
|
+
data_rows.append({
|
|
85
|
+
f"{id_str}_x": c, # x is column
|
|
86
|
+
f"{id_str}_y": r, # y is row
|
|
87
|
+
f"{id_str}_channel": channel_names[ch], # channel name
|
|
88
|
+
f"{id_str}_value": img[r, c, ch] # channel value
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
# Return long-format DataFrame
|
|
92
|
+
return pd.DataFrame(data_rows)
|
|
93
|
+
|
|
94
|
+
# Skip CSV export if no suitable data format found
|
|
95
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,67 @@
|
|
|
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_joyplot.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
import pandas as pd
|
|
15
|
+
from scitex.pd import force_df
|
|
16
|
+
|
|
17
|
+
def _format_plot_joyplot(id, tracked_dict, kwargs):
|
|
18
|
+
"""Format data from a plot_joyplot call.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
id (str): Identifier for the plot
|
|
22
|
+
tracked_dict (dict): Dictionary containing 'joyplot_data' key with joyplot data
|
|
23
|
+
kwargs (dict): Keyword arguments passed to plot_joyplot
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
pd.DataFrame: Formatted joyplot data
|
|
27
|
+
"""
|
|
28
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
29
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
30
|
+
return pd.DataFrame()
|
|
31
|
+
|
|
32
|
+
# Get joyplot_data from tracked_dict
|
|
33
|
+
data = tracked_dict.get('joyplot_data')
|
|
34
|
+
|
|
35
|
+
if data is None:
|
|
36
|
+
return pd.DataFrame()
|
|
37
|
+
|
|
38
|
+
# Handle different data types
|
|
39
|
+
if isinstance(data, pd.DataFrame):
|
|
40
|
+
# Make a copy to avoid modifying original
|
|
41
|
+
result = data.copy()
|
|
42
|
+
# Add prefix to column names if ID is provided
|
|
43
|
+
if id is not None:
|
|
44
|
+
result.columns = [f"{id}_joyplot_{col}" for col in result.columns]
|
|
45
|
+
return result
|
|
46
|
+
|
|
47
|
+
elif isinstance(data, dict):
|
|
48
|
+
# Convert dictionary to DataFrame
|
|
49
|
+
result = pd.DataFrame()
|
|
50
|
+
for group, values in data.items():
|
|
51
|
+
result[f"{id}_joyplot_{group}"] = pd.Series(values)
|
|
52
|
+
return result
|
|
53
|
+
|
|
54
|
+
elif isinstance(data, (list, tuple)) and all(
|
|
55
|
+
isinstance(x, (np.ndarray, list)) for x in data
|
|
56
|
+
):
|
|
57
|
+
# Convert list of arrays to DataFrame
|
|
58
|
+
result = pd.DataFrame()
|
|
59
|
+
for i, values in enumerate(data):
|
|
60
|
+
result[f"{id}_joyplot_group{i:02d}"] = pd.Series(values)
|
|
61
|
+
return result
|
|
62
|
+
|
|
63
|
+
# Try to force to DataFrame as a last resort
|
|
64
|
+
try:
|
|
65
|
+
return force_df({f"{id}_joyplot_data": data})
|
|
66
|
+
except:
|
|
67
|
+
return pd.DataFrame()
|
|
@@ -0,0 +1,52 @@
|
|
|
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_kde.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
from scitex.pd import force_df
|
|
15
|
+
|
|
16
|
+
def _format_plot_kde(id, tracked_dict, kwargs):
|
|
17
|
+
"""Format data from a plot_kde call.
|
|
18
|
+
|
|
19
|
+
Processes kernel density estimation plot data.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
id (str): Identifier for the plot
|
|
23
|
+
tracked_dict (dict): Dictionary containing 'x', 'kde', and 'n' keys
|
|
24
|
+
kwargs (dict): Keyword arguments passed to plot_kde
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
pd.DataFrame: Formatted KDE data
|
|
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
|
+
x = tracked_dict.get('x')
|
|
34
|
+
kde = tracked_dict.get('kde')
|
|
35
|
+
n = tracked_dict.get('n')
|
|
36
|
+
|
|
37
|
+
if x is None or kde is None:
|
|
38
|
+
return pd.DataFrame()
|
|
39
|
+
|
|
40
|
+
df = pd.DataFrame({
|
|
41
|
+
f"{id}_kde_x": x,
|
|
42
|
+
f"{id}_kde_density": kde
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
# Add sample count if available
|
|
46
|
+
if n is not None:
|
|
47
|
+
# If n is a scalar, create a list with the same length as x
|
|
48
|
+
if not hasattr(n, '__len__'):
|
|
49
|
+
n = [n] * len(x)
|
|
50
|
+
df[f"{id}_kde_n"] = n
|
|
51
|
+
|
|
52
|
+
return df
|
|
@@ -0,0 +1,46 @@
|
|
|
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_line.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_plot_line(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a plot_line call.
|
|
17
|
+
|
|
18
|
+
Processes plot_line data for CSV export.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
id (str): Identifier for the plot
|
|
22
|
+
tracked_dict (dict): Dictionary containing 'plot_df' key with plot data
|
|
23
|
+
kwargs (dict): Keyword arguments passed to plot_line
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
pd.DataFrame: Formatted line plot data
|
|
27
|
+
"""
|
|
28
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
29
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
30
|
+
return pd.DataFrame()
|
|
31
|
+
|
|
32
|
+
# Get the plot_df from tracked_dict
|
|
33
|
+
plot_df = tracked_dict.get('plot_df')
|
|
34
|
+
|
|
35
|
+
if plot_df is None or not isinstance(plot_df, pd.DataFrame):
|
|
36
|
+
return pd.DataFrame()
|
|
37
|
+
|
|
38
|
+
# Create a copy to avoid modifying the original
|
|
39
|
+
result = plot_df.copy()
|
|
40
|
+
|
|
41
|
+
# Add prefix to column names if ID is provided
|
|
42
|
+
if id is not None:
|
|
43
|
+
# Rename columns with ID prefix
|
|
44
|
+
result.columns = [f"{id}_line_{col}" for col in result.columns]
|
|
45
|
+
|
|
46
|
+
return result
|
|
@@ -0,0 +1,46 @@
|
|
|
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_mean_ci.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_plot_mean_ci(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a plot_mean_ci call.
|
|
17
|
+
|
|
18
|
+
Processes mean with confidence interval band plot data for CSV export.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
id (str): Identifier for the plot
|
|
22
|
+
tracked_dict (dict): Contains 'plot_df' (pandas DataFrame with mean and CI data)
|
|
23
|
+
kwargs (dict): Keyword arguments passed to plot_mean_ci
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
pd.DataFrame: Formatted mean and CI data
|
|
27
|
+
"""
|
|
28
|
+
# Mean-CI plot data is typically passed in the plot_df in the args dictionary
|
|
29
|
+
if not args:
|
|
30
|
+
return pd.DataFrame()
|
|
31
|
+
|
|
32
|
+
# Get the plot_df from args
|
|
33
|
+
plot_df = tracked_dict.get('plot_df')
|
|
34
|
+
|
|
35
|
+
if plot_df is None or not isinstance(plot_df, pd.DataFrame):
|
|
36
|
+
return pd.DataFrame()
|
|
37
|
+
|
|
38
|
+
# Create a copy to avoid modifying the original
|
|
39
|
+
result = plot_df.copy()
|
|
40
|
+
|
|
41
|
+
# Add prefix to column names if ID is provided
|
|
42
|
+
if id is not None:
|
|
43
|
+
# Rename columns with ID prefix
|
|
44
|
+
result.columns = [f"{id}_mean_ci_{col}" for col in result.columns]
|
|
45
|
+
|
|
46
|
+
return result
|
|
@@ -0,0 +1,46 @@
|
|
|
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_mean_std.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_plot_mean_std(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a plot_mean_std call.
|
|
17
|
+
|
|
18
|
+
Processes mean with standard deviation band plot data for CSV export.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
id (str): Identifier for the plot
|
|
22
|
+
tracked_dict (dict): Dictionary containing 'plot_df' key with mean and std data
|
|
23
|
+
kwargs (dict): Keyword arguments passed to plot_mean_std
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
pd.DataFrame: Formatted mean and std data
|
|
27
|
+
"""
|
|
28
|
+
# Check if tracked_dict is empty or not a dictionary
|
|
29
|
+
if not tracked_dict or not isinstance(tracked_dict, dict):
|
|
30
|
+
return pd.DataFrame()
|
|
31
|
+
|
|
32
|
+
# Get the plot_df from tracked_dict
|
|
33
|
+
plot_df = tracked_dict.get('plot_df')
|
|
34
|
+
|
|
35
|
+
if plot_df is None or not isinstance(plot_df, pd.DataFrame):
|
|
36
|
+
return pd.DataFrame()
|
|
37
|
+
|
|
38
|
+
# Create a copy to avoid modifying the original
|
|
39
|
+
result = plot_df.copy()
|
|
40
|
+
|
|
41
|
+
# Add prefix to column names if ID is provided
|
|
42
|
+
if id is not None:
|
|
43
|
+
# Rename columns with ID prefix
|
|
44
|
+
result.columns = [f"{id}_mean_std_{col}" for col in result.columns]
|
|
45
|
+
|
|
46
|
+
return result
|
|
@@ -0,0 +1,46 @@
|
|
|
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_median_iqr.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_plot_median_iqr(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a plot_median_iqr call.
|
|
17
|
+
|
|
18
|
+
Processes median with interquartile range band plot data for CSV export.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
id (str): Identifier for the plot
|
|
22
|
+
tracked_dict (dict): Contains 'plot_df' (pandas DataFrame with median and IQR data)
|
|
23
|
+
kwargs (dict): Keyword arguments passed to plot_median_iqr
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
pd.DataFrame: Formatted median and IQR data
|
|
27
|
+
"""
|
|
28
|
+
# Median-IQR plot data is typically passed in the plot_df in the args dictionary
|
|
29
|
+
if not args:
|
|
30
|
+
return pd.DataFrame()
|
|
31
|
+
|
|
32
|
+
# Get the plot_df from args
|
|
33
|
+
plot_df = tracked_dict.get('plot_df')
|
|
34
|
+
|
|
35
|
+
if plot_df is None or not isinstance(plot_df, pd.DataFrame):
|
|
36
|
+
return pd.DataFrame()
|
|
37
|
+
|
|
38
|
+
# Create a copy to avoid modifying the original
|
|
39
|
+
result = plot_df.copy()
|
|
40
|
+
|
|
41
|
+
# Add prefix to column names if ID is provided
|
|
42
|
+
if id is not None:
|
|
43
|
+
# Rename columns with ID prefix
|
|
44
|
+
result.columns = [f"{id}_median_iqr_{col}" for col in result.columns]
|
|
45
|
+
|
|
46
|
+
return result
|
|
@@ -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_raster.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
def _format_plot_raster(id, tracked_dict, kwargs):
|
|
16
|
+
"""Format data from a plot_raster call.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
id (str): Identifier for the plot
|
|
20
|
+
tracked_dict (dict): Dictionary containing 'raster_digit_df' key with raster plot data
|
|
21
|
+
kwargs (dict): Keyword arguments passed to plot_raster
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
pd.DataFrame: Formatted raster plot data
|
|
25
|
+
"""
|
|
26
|
+
# Check if args 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 raster_digit_df from args
|
|
31
|
+
raster_df = tracked_dict.get('raster_digit_df')
|
|
32
|
+
|
|
33
|
+
if raster_df is None or not isinstance(raster_df, pd.DataFrame):
|
|
34
|
+
return pd.DataFrame()
|
|
35
|
+
|
|
36
|
+
# Create a copy to avoid modifying the original
|
|
37
|
+
result = raster_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}_raster_{col}" for col in result.columns]
|
|
43
|
+
|
|
44
|
+
return result
|
|
@@ -0,0 +1,103 @@
|
|
|
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_rectangle.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.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_rectangle(id, tracked_dict, kwargs):
|
|
17
|
+
"""Format data from a plot_rectangle 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
|
+
# Try to get rectangle parameters directly from tracked_dict
|
|
23
|
+
x = tracked_dict.get('x')
|
|
24
|
+
y = tracked_dict.get('y')
|
|
25
|
+
width = tracked_dict.get('width')
|
|
26
|
+
height = tracked_dict.get('height')
|
|
27
|
+
|
|
28
|
+
# If direct parameters aren't available, try the args
|
|
29
|
+
if any(param is None for param in [x, y, width, height]):
|
|
30
|
+
args = tracked_dict.get('args', [])
|
|
31
|
+
|
|
32
|
+
# Rectangles defined by [x, y, width, height]
|
|
33
|
+
if len(args) >= 4:
|
|
34
|
+
x, y, width, height = args[0], args[1], args[2], args[3]
|
|
35
|
+
|
|
36
|
+
# If we have all required parameters, create the DataFrame
|
|
37
|
+
if all(param is not None for param in [x, y, width, height]):
|
|
38
|
+
try:
|
|
39
|
+
# Handle single rectangle
|
|
40
|
+
if all(isinstance(val, (int, float, np.number)) for val in [x, y, width, height]):
|
|
41
|
+
return pd.DataFrame(
|
|
42
|
+
{
|
|
43
|
+
f"{id}_rectangle_x": [x],
|
|
44
|
+
f"{id}_rectangle_y": [y],
|
|
45
|
+
f"{id}_rectangle_width": [width],
|
|
46
|
+
f"{id}_rectangle_height": [height],
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
# Handle multiple rectangles (arrays)
|
|
51
|
+
elif all(
|
|
52
|
+
isinstance(val, (np.ndarray, list))
|
|
53
|
+
for val in [x, y, width, height]
|
|
54
|
+
):
|
|
55
|
+
try:
|
|
56
|
+
result_df = pd.DataFrame(
|
|
57
|
+
{
|
|
58
|
+
f"{id}_rectangle_x": x,
|
|
59
|
+
f"{id}_rectangle_y": y,
|
|
60
|
+
f"{id}_rectangle_width": width,
|
|
61
|
+
f"{id}_rectangle_height": height,
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
return result_df
|
|
65
|
+
except ValueError:
|
|
66
|
+
# Handle case where arrays might be different lengths
|
|
67
|
+
result = pd.DataFrame()
|
|
68
|
+
result[f"{id}_rectangle_x"] = pd.Series(x)
|
|
69
|
+
result[f"{id}_rectangle_y"] = pd.Series(y)
|
|
70
|
+
result[f"{id}_rectangle_width"] = pd.Series(width)
|
|
71
|
+
result[f"{id}_rectangle_height"] = pd.Series(height)
|
|
72
|
+
return result
|
|
73
|
+
except Exception:
|
|
74
|
+
# Fallback for rectangle in case of any errors
|
|
75
|
+
try:
|
|
76
|
+
return pd.DataFrame({
|
|
77
|
+
f"{id}_rectangle_x": [float(x) if x is not None else 0],
|
|
78
|
+
f"{id}_rectangle_y": [float(y) if y is not None else 0],
|
|
79
|
+
f"{id}_rectangle_width": [float(width) if width is not None else 0],
|
|
80
|
+
f"{id}_rectangle_height": [float(height) if height is not None else 0],
|
|
81
|
+
})
|
|
82
|
+
except (TypeError, ValueError):
|
|
83
|
+
pass
|
|
84
|
+
|
|
85
|
+
# Check directly in the kwtracked_dict for the parameters
|
|
86
|
+
rect_x = kwargs.get('x')
|
|
87
|
+
rect_y = kwargs.get('y')
|
|
88
|
+
rect_w = kwargs.get('width')
|
|
89
|
+
rect_h = kwargs.get('height')
|
|
90
|
+
|
|
91
|
+
if all(param is not None for param in [rect_x, rect_y, rect_w, rect_h]):
|
|
92
|
+
try:
|
|
93
|
+
return pd.DataFrame({
|
|
94
|
+
f"{id}_rectangle_x": [float(rect_x)],
|
|
95
|
+
f"{id}_rectangle_y": [float(rect_y)],
|
|
96
|
+
f"{id}_rectangle_width": [float(rect_w)],
|
|
97
|
+
f"{id}_rectangle_height": [float(rect_h)],
|
|
98
|
+
})
|
|
99
|
+
except (TypeError, ValueError):
|
|
100
|
+
pass
|
|
101
|
+
|
|
102
|
+
# Default empty DataFrame if nothing could be processed
|
|
103
|
+
return pd.DataFrame()
|