scitex 2.0.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scitex/__init__.py +73 -0
- scitex/__main__.py +89 -0
- scitex/__version__.py +14 -0
- scitex/_sh.py +59 -0
- scitex/ai/_LearningCurveLogger.py +583 -0
- scitex/ai/__Classifiers.py +101 -0
- scitex/ai/__init__.py +55 -0
- scitex/ai/_gen_ai/_Anthropic.py +173 -0
- scitex/ai/_gen_ai/_BaseGenAI.py +336 -0
- scitex/ai/_gen_ai/_DeepSeek.py +175 -0
- scitex/ai/_gen_ai/_Google.py +161 -0
- scitex/ai/_gen_ai/_Groq.py +97 -0
- scitex/ai/_gen_ai/_Llama.py +142 -0
- scitex/ai/_gen_ai/_OpenAI.py +230 -0
- scitex/ai/_gen_ai/_PARAMS.py +565 -0
- scitex/ai/_gen_ai/_Perplexity.py +191 -0
- scitex/ai/_gen_ai/__init__.py +32 -0
- scitex/ai/_gen_ai/_calc_cost.py +78 -0
- scitex/ai/_gen_ai/_format_output_func.py +183 -0
- scitex/ai/_gen_ai/_genai_factory.py +71 -0
- scitex/ai/act/__init__.py +8 -0
- scitex/ai/act/_define.py +11 -0
- scitex/ai/classification/__init__.py +7 -0
- scitex/ai/classification/classification_reporter.py +1137 -0
- scitex/ai/classification/classifier_server.py +131 -0
- scitex/ai/classification/classifiers.py +101 -0
- scitex/ai/classification_reporter.py +1161 -0
- scitex/ai/classifier_server.py +131 -0
- scitex/ai/clustering/__init__.py +11 -0
- scitex/ai/clustering/_pca.py +115 -0
- scitex/ai/clustering/_umap.py +376 -0
- scitex/ai/early_stopping.py +149 -0
- scitex/ai/feature_extraction/__init__.py +56 -0
- scitex/ai/feature_extraction/vit.py +148 -0
- scitex/ai/genai/__init__.py +277 -0
- scitex/ai/genai/anthropic.py +177 -0
- scitex/ai/genai/anthropic_provider.py +320 -0
- scitex/ai/genai/anthropic_refactored.py +109 -0
- scitex/ai/genai/auth_manager.py +200 -0
- scitex/ai/genai/base_genai.py +336 -0
- scitex/ai/genai/base_provider.py +291 -0
- scitex/ai/genai/calc_cost.py +78 -0
- scitex/ai/genai/chat_history.py +307 -0
- scitex/ai/genai/cost_tracker.py +276 -0
- scitex/ai/genai/deepseek.py +188 -0
- scitex/ai/genai/deepseek_provider.py +251 -0
- scitex/ai/genai/format_output_func.py +183 -0
- scitex/ai/genai/genai_factory.py +71 -0
- scitex/ai/genai/google.py +169 -0
- scitex/ai/genai/google_provider.py +228 -0
- scitex/ai/genai/groq.py +104 -0
- scitex/ai/genai/groq_provider.py +248 -0
- scitex/ai/genai/image_processor.py +250 -0
- scitex/ai/genai/llama.py +155 -0
- scitex/ai/genai/llama_provider.py +214 -0
- scitex/ai/genai/mock_provider.py +127 -0
- scitex/ai/genai/model_registry.py +304 -0
- scitex/ai/genai/openai.py +230 -0
- scitex/ai/genai/openai_provider.py +293 -0
- scitex/ai/genai/params.py +565 -0
- scitex/ai/genai/perplexity.py +202 -0
- scitex/ai/genai/perplexity_provider.py +205 -0
- scitex/ai/genai/provider_base.py +302 -0
- scitex/ai/genai/provider_factory.py +370 -0
- scitex/ai/genai/response_handler.py +235 -0
- scitex/ai/layer/_Pass.py +21 -0
- scitex/ai/layer/__init__.py +10 -0
- scitex/ai/layer/_switch.py +8 -0
- scitex/ai/loss/_L1L2Losses.py +34 -0
- scitex/ai/loss/__init__.py +12 -0
- scitex/ai/loss/multi_task_loss.py +47 -0
- scitex/ai/metrics/__init__.py +9 -0
- scitex/ai/metrics/_bACC.py +51 -0
- scitex/ai/metrics/silhoute_score_block.py +496 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +207 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +238 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +215 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
- scitex/ai/optim/__init__.py +13 -0
- scitex/ai/optim/_get_set.py +31 -0
- scitex/ai/optim/_optimizers.py +71 -0
- scitex/ai/plt/__init__.py +21 -0
- scitex/ai/plt/_conf_mat.py +592 -0
- scitex/ai/plt/_learning_curve.py +194 -0
- scitex/ai/plt/_optuna_study.py +111 -0
- scitex/ai/plt/aucs/__init__.py +2 -0
- scitex/ai/plt/aucs/example.py +60 -0
- scitex/ai/plt/aucs/pre_rec_auc.py +223 -0
- scitex/ai/plt/aucs/roc_auc.py +246 -0
- scitex/ai/sampling/undersample.py +29 -0
- scitex/ai/sk/__init__.py +11 -0
- scitex/ai/sk/_clf.py +58 -0
- scitex/ai/sk/_to_sktime.py +100 -0
- scitex/ai/sklearn/__init__.py +26 -0
- scitex/ai/sklearn/clf.py +58 -0
- scitex/ai/sklearn/to_sktime.py +100 -0
- scitex/ai/training/__init__.py +7 -0
- scitex/ai/training/early_stopping.py +150 -0
- scitex/ai/training/learning_curve_logger.py +555 -0
- scitex/ai/utils/__init__.py +22 -0
- scitex/ai/utils/_check_params.py +50 -0
- scitex/ai/utils/_default_dataset.py +46 -0
- scitex/ai/utils/_format_samples_for_sktime.py +26 -0
- scitex/ai/utils/_label_encoder.py +134 -0
- scitex/ai/utils/_merge_labels.py +22 -0
- scitex/ai/utils/_sliding_window_data_augmentation.py +11 -0
- scitex/ai/utils/_under_sample.py +51 -0
- scitex/ai/utils/_verify_n_gpus.py +16 -0
- scitex/ai/utils/grid_search.py +148 -0
- scitex/context/__init__.py +9 -0
- scitex/context/_suppress_output.py +38 -0
- scitex/db/_BaseMixins/_BaseBackupMixin.py +30 -0
- scitex/db/_BaseMixins/_BaseBatchMixin.py +31 -0
- scitex/db/_BaseMixins/_BaseBlobMixin.py +81 -0
- scitex/db/_BaseMixins/_BaseConnectionMixin.py +43 -0
- scitex/db/_BaseMixins/_BaseImportExportMixin.py +39 -0
- scitex/db/_BaseMixins/_BaseIndexMixin.py +29 -0
- scitex/db/_BaseMixins/_BaseMaintenanceMixin.py +33 -0
- scitex/db/_BaseMixins/_BaseQueryMixin.py +52 -0
- scitex/db/_BaseMixins/_BaseRowMixin.py +32 -0
- scitex/db/_BaseMixins/_BaseSchemaMixin.py +44 -0
- scitex/db/_BaseMixins/_BaseTableMixin.py +66 -0
- scitex/db/_BaseMixins/_BaseTransactionMixin.py +52 -0
- scitex/db/_BaseMixins/__init__.py +30 -0
- scitex/db/_PostgreSQL.py +126 -0
- scitex/db/_PostgreSQLMixins/_BackupMixin.py +166 -0
- scitex/db/_PostgreSQLMixins/_BatchMixin.py +82 -0
- scitex/db/_PostgreSQLMixins/_BlobMixin.py +231 -0
- scitex/db/_PostgreSQLMixins/_ConnectionMixin.py +92 -0
- scitex/db/_PostgreSQLMixins/_ImportExportMixin.py +59 -0
- scitex/db/_PostgreSQLMixins/_IndexMixin.py +64 -0
- scitex/db/_PostgreSQLMixins/_MaintenanceMixin.py +175 -0
- scitex/db/_PostgreSQLMixins/_QueryMixin.py +108 -0
- scitex/db/_PostgreSQLMixins/_RowMixin.py +75 -0
- scitex/db/_PostgreSQLMixins/_SchemaMixin.py +126 -0
- scitex/db/_PostgreSQLMixins/_TableMixin.py +176 -0
- scitex/db/_PostgreSQLMixins/_TransactionMixin.py +57 -0
- scitex/db/_PostgreSQLMixins/__init__.py +34 -0
- scitex/db/_SQLite3.py +2136 -0
- scitex/db/_SQLite3Mixins/_BatchMixin.py +243 -0
- scitex/db/_SQLite3Mixins/_BlobMixin.py +229 -0
- scitex/db/_SQLite3Mixins/_ConnectionMixin.py +108 -0
- scitex/db/_SQLite3Mixins/_ImportExportMixin.py +80 -0
- scitex/db/_SQLite3Mixins/_IndexMixin.py +32 -0
- scitex/db/_SQLite3Mixins/_MaintenanceMixin.py +176 -0
- scitex/db/_SQLite3Mixins/_QueryMixin.py +83 -0
- scitex/db/_SQLite3Mixins/_RowMixin.py +75 -0
- scitex/db/_SQLite3Mixins/_TableMixin.py +183 -0
- scitex/db/_SQLite3Mixins/_TransactionMixin.py +71 -0
- scitex/db/_SQLite3Mixins/__init__.py +30 -0
- scitex/db/__init__.py +14 -0
- scitex/db/_delete_duplicates.py +397 -0
- scitex/db/_inspect.py +163 -0
- scitex/decorators/__init__.py +54 -0
- scitex/decorators/_auto_order.py +172 -0
- scitex/decorators/_batch_fn.py +127 -0
- scitex/decorators/_cache_disk.py +32 -0
- scitex/decorators/_cache_mem.py +12 -0
- scitex/decorators/_combined.py +98 -0
- scitex/decorators/_converters.py +282 -0
- scitex/decorators/_deprecated.py +26 -0
- scitex/decorators/_not_implemented.py +30 -0
- scitex/decorators/_numpy_fn.py +86 -0
- scitex/decorators/_pandas_fn.py +121 -0
- scitex/decorators/_preserve_doc.py +19 -0
- scitex/decorators/_signal_fn.py +95 -0
- scitex/decorators/_timeout.py +55 -0
- scitex/decorators/_torch_fn.py +136 -0
- scitex/decorators/_wrap.py +39 -0
- scitex/decorators/_xarray_fn.py +88 -0
- scitex/dev/__init__.py +15 -0
- scitex/dev/_analyze_code_flow.py +284 -0
- scitex/dev/_reload.py +59 -0
- scitex/dict/_DotDict.py +442 -0
- scitex/dict/__init__.py +18 -0
- scitex/dict/_listed_dict.py +42 -0
- scitex/dict/_pop_keys.py +36 -0
- scitex/dict/_replace.py +13 -0
- scitex/dict/_safe_merge.py +62 -0
- scitex/dict/_to_str.py +32 -0
- scitex/dsp/__init__.py +72 -0
- scitex/dsp/_crop.py +122 -0
- scitex/dsp/_demo_sig.py +331 -0
- scitex/dsp/_detect_ripples.py +212 -0
- scitex/dsp/_ensure_3d.py +18 -0
- scitex/dsp/_hilbert.py +78 -0
- scitex/dsp/_listen.py +702 -0
- scitex/dsp/_misc.py +30 -0
- scitex/dsp/_mne.py +32 -0
- scitex/dsp/_modulation_index.py +79 -0
- scitex/dsp/_pac.py +319 -0
- scitex/dsp/_psd.py +102 -0
- scitex/dsp/_resample.py +65 -0
- scitex/dsp/_time.py +36 -0
- scitex/dsp/_transform.py +68 -0
- scitex/dsp/_wavelet.py +212 -0
- scitex/dsp/add_noise.py +111 -0
- scitex/dsp/example.py +253 -0
- scitex/dsp/filt.py +155 -0
- scitex/dsp/norm.py +18 -0
- scitex/dsp/params.py +51 -0
- scitex/dsp/reference.py +43 -0
- scitex/dsp/template.py +25 -0
- scitex/dsp/utils/__init__.py +15 -0
- scitex/dsp/utils/_differential_bandpass_filters.py +120 -0
- scitex/dsp/utils/_ensure_3d.py +18 -0
- scitex/dsp/utils/_ensure_even_len.py +10 -0
- scitex/dsp/utils/_zero_pad.py +48 -0
- scitex/dsp/utils/filter.py +408 -0
- scitex/dsp/utils/pac.py +177 -0
- scitex/dt/__init__.py +8 -0
- scitex/dt/_linspace.py +130 -0
- scitex/etc/__init__.py +15 -0
- scitex/etc/wait_key.py +34 -0
- scitex/gen/_DimHandler.py +196 -0
- scitex/gen/_TimeStamper.py +244 -0
- scitex/gen/__init__.py +95 -0
- scitex/gen/_alternate_kwarg.py +13 -0
- scitex/gen/_cache.py +11 -0
- scitex/gen/_check_host.py +34 -0
- scitex/gen/_ci.py +12 -0
- scitex/gen/_close.py +222 -0
- scitex/gen/_embed.py +78 -0
- scitex/gen/_inspect_module.py +257 -0
- scitex/gen/_is_ipython.py +12 -0
- scitex/gen/_less.py +48 -0
- scitex/gen/_list_packages.py +139 -0
- scitex/gen/_mat2py.py +88 -0
- scitex/gen/_norm.py +170 -0
- scitex/gen/_paste.py +18 -0
- scitex/gen/_print_config.py +84 -0
- scitex/gen/_shell.py +48 -0
- scitex/gen/_src.py +111 -0
- scitex/gen/_start.py +451 -0
- scitex/gen/_symlink.py +55 -0
- scitex/gen/_symlog.py +27 -0
- scitex/gen/_tee.py +238 -0
- scitex/gen/_title2path.py +60 -0
- scitex/gen/_title_case.py +88 -0
- scitex/gen/_to_even.py +84 -0
- scitex/gen/_to_odd.py +34 -0
- scitex/gen/_to_rank.py +39 -0
- scitex/gen/_transpose.py +37 -0
- scitex/gen/_type.py +78 -0
- scitex/gen/_var_info.py +73 -0
- scitex/gen/_wrap.py +17 -0
- scitex/gen/_xml2dict.py +76 -0
- scitex/gen/misc.py +730 -0
- scitex/gen/path.py +0 -0
- scitex/general/__init__.py +5 -0
- scitex/gists/_SigMacro_processFigure_S.py +128 -0
- scitex/gists/_SigMacro_toBlue.py +172 -0
- scitex/gists/__init__.py +12 -0
- scitex/io/_H5Explorer.py +292 -0
- scitex/io/__init__.py +82 -0
- scitex/io/_cache.py +101 -0
- scitex/io/_flush.py +24 -0
- scitex/io/_glob.py +103 -0
- scitex/io/_json2md.py +113 -0
- scitex/io/_load.py +168 -0
- scitex/io/_load_configs.py +146 -0
- scitex/io/_load_modules/__init__.py +38 -0
- scitex/io/_load_modules/_catboost.py +66 -0
- scitex/io/_load_modules/_con.py +20 -0
- scitex/io/_load_modules/_db.py +24 -0
- scitex/io/_load_modules/_docx.py +42 -0
- scitex/io/_load_modules/_eeg.py +110 -0
- scitex/io/_load_modules/_hdf5.py +196 -0
- scitex/io/_load_modules/_image.py +19 -0
- scitex/io/_load_modules/_joblib.py +19 -0
- scitex/io/_load_modules/_json.py +18 -0
- scitex/io/_load_modules/_markdown.py +103 -0
- scitex/io/_load_modules/_matlab.py +37 -0
- scitex/io/_load_modules/_numpy.py +39 -0
- scitex/io/_load_modules/_optuna.py +155 -0
- scitex/io/_load_modules/_pandas.py +69 -0
- scitex/io/_load_modules/_pdf.py +31 -0
- scitex/io/_load_modules/_pickle.py +24 -0
- scitex/io/_load_modules/_torch.py +16 -0
- scitex/io/_load_modules/_txt.py +126 -0
- scitex/io/_load_modules/_xml.py +49 -0
- scitex/io/_load_modules/_yaml.py +23 -0
- scitex/io/_mv_to_tmp.py +19 -0
- scitex/io/_path.py +286 -0
- scitex/io/_reload.py +78 -0
- scitex/io/_save.py +539 -0
- scitex/io/_save_modules/__init__.py +66 -0
- scitex/io/_save_modules/_catboost.py +22 -0
- scitex/io/_save_modules/_csv.py +89 -0
- scitex/io/_save_modules/_excel.py +49 -0
- scitex/io/_save_modules/_hdf5.py +249 -0
- scitex/io/_save_modules/_html.py +48 -0
- scitex/io/_save_modules/_image.py +140 -0
- scitex/io/_save_modules/_joblib.py +25 -0
- scitex/io/_save_modules/_json.py +25 -0
- scitex/io/_save_modules/_listed_dfs_as_csv.py +57 -0
- scitex/io/_save_modules/_listed_scalars_as_csv.py +42 -0
- scitex/io/_save_modules/_matlab.py +24 -0
- scitex/io/_save_modules/_mp4.py +29 -0
- scitex/io/_save_modules/_numpy.py +57 -0
- scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +38 -0
- scitex/io/_save_modules/_pickle.py +45 -0
- scitex/io/_save_modules/_plotly.py +27 -0
- scitex/io/_save_modules/_text.py +23 -0
- scitex/io/_save_modules/_torch.py +26 -0
- scitex/io/_save_modules/_yaml.py +29 -0
- scitex/life/__init__.py +10 -0
- scitex/life/_monitor_rain.py +49 -0
- scitex/linalg/__init__.py +17 -0
- scitex/linalg/_distance.py +63 -0
- scitex/linalg/_geometric_median.py +64 -0
- scitex/linalg/_misc.py +73 -0
- scitex/nn/_AxiswiseDropout.py +27 -0
- scitex/nn/_BNet.py +126 -0
- scitex/nn/_BNet_Res.py +164 -0
- scitex/nn/_ChannelGainChanger.py +44 -0
- scitex/nn/_DropoutChannels.py +50 -0
- scitex/nn/_Filters.py +489 -0
- scitex/nn/_FreqGainChanger.py +110 -0
- scitex/nn/_GaussianFilter.py +48 -0
- scitex/nn/_Hilbert.py +111 -0
- scitex/nn/_MNet_1000.py +157 -0
- scitex/nn/_ModulationIndex.py +221 -0
- scitex/nn/_PAC.py +414 -0
- scitex/nn/_PSD.py +40 -0
- scitex/nn/_ResNet1D.py +120 -0
- scitex/nn/_SpatialAttention.py +25 -0
- scitex/nn/_Spectrogram.py +161 -0
- scitex/nn/_SwapChannels.py +50 -0
- scitex/nn/_TransposeLayer.py +19 -0
- scitex/nn/_Wavelet.py +183 -0
- scitex/nn/__init__.py +63 -0
- scitex/os/__init__.py +8 -0
- scitex/os/_mv.py +50 -0
- scitex/parallel/__init__.py +8 -0
- scitex/parallel/_run.py +151 -0
- scitex/path/__init__.py +33 -0
- scitex/path/_clean.py +52 -0
- scitex/path/_find.py +108 -0
- scitex/path/_get_module_path.py +51 -0
- scitex/path/_get_spath.py +35 -0
- scitex/path/_getsize.py +18 -0
- scitex/path/_increment_version.py +87 -0
- scitex/path/_mk_spath.py +51 -0
- scitex/path/_path.py +19 -0
- scitex/path/_split.py +23 -0
- scitex/path/_this_path.py +19 -0
- scitex/path/_version.py +101 -0
- scitex/pd/__init__.py +41 -0
- scitex/pd/_find_indi.py +126 -0
- scitex/pd/_find_pval.py +113 -0
- scitex/pd/_force_df.py +154 -0
- scitex/pd/_from_xyz.py +71 -0
- scitex/pd/_ignore_SettingWithCopyWarning.py +34 -0
- scitex/pd/_melt_cols.py +81 -0
- scitex/pd/_merge_columns.py +221 -0
- scitex/pd/_mv.py +63 -0
- scitex/pd/_replace.py +62 -0
- scitex/pd/_round.py +93 -0
- scitex/pd/_slice.py +63 -0
- scitex/pd/_sort.py +91 -0
- scitex/pd/_to_numeric.py +53 -0
- scitex/pd/_to_xy.py +59 -0
- scitex/pd/_to_xyz.py +110 -0
- scitex/plt/__init__.py +36 -0
- scitex/plt/_subplots/_AxesWrapper.py +182 -0
- scitex/plt/_subplots/_AxisWrapper.py +249 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +414 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +896 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +368 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_TrackingMixin.py +185 -0
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +16 -0
- scitex/plt/_subplots/_FigWrapper.py +226 -0
- scitex/plt/_subplots/_SubplotsWrapper.py +171 -0
- scitex/plt/_subplots/__init__.py +111 -0
- scitex/plt/_subplots/_export_as_csv.py +232 -0
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +61 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +90 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +49 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +39 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +125 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +72 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +34 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +36 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +79 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +59 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +32 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +79 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py +64 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py +44 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py +70 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.py +66 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py +95 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py +67 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +52 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py +44 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.py +103 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_hist.py +82 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py +58 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.py +117 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +30 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +93 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +94 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +92 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +65 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +59 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +58 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +45 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +70 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +155 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +64 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +77 -0
- scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +210 -0
- scitex/plt/_subplots/_export_as_csv_formatters/verify_formatters.py +342 -0
- scitex/plt/_subplots/_export_as_csv_formatters.py +115 -0
- scitex/plt/_tpl.py +28 -0
- scitex/plt/ax/__init__.py +114 -0
- scitex/plt/ax/_plot/__init__.py +53 -0
- scitex/plt/ax/_plot/_plot_circular_hist.py +124 -0
- scitex/plt/ax/_plot/_plot_conf_mat.py +136 -0
- scitex/plt/ax/_plot/_plot_cube.py +57 -0
- scitex/plt/ax/_plot/_plot_ecdf.py +84 -0
- scitex/plt/ax/_plot/_plot_fillv.py +55 -0
- scitex/plt/ax/_plot/_plot_heatmap.py +266 -0
- scitex/plt/ax/_plot/_plot_image.py +94 -0
- scitex/plt/ax/_plot/_plot_joyplot.py +76 -0
- scitex/plt/ax/_plot/_plot_raster.py +172 -0
- scitex/plt/ax/_plot/_plot_rectangle.py +69 -0
- scitex/plt/ax/_plot/_plot_scatter_hist.py +133 -0
- scitex/plt/ax/_plot/_plot_shaded_line.py +142 -0
- scitex/plt/ax/_plot/_plot_statistical_shaded_line.py +221 -0
- scitex/plt/ax/_plot/_plot_violin.py +343 -0
- scitex/plt/ax/_style/__init__.py +38 -0
- scitex/plt/ax/_style/_add_marginal_ax.py +44 -0
- scitex/plt/ax/_style/_add_panel.py +92 -0
- scitex/plt/ax/_style/_extend.py +64 -0
- scitex/plt/ax/_style/_force_aspect.py +37 -0
- scitex/plt/ax/_style/_format_label.py +23 -0
- scitex/plt/ax/_style/_hide_spines.py +84 -0
- scitex/plt/ax/_style/_map_ticks.py +182 -0
- scitex/plt/ax/_style/_rotate_labels.py +215 -0
- scitex/plt/ax/_style/_sci_note.py +279 -0
- scitex/plt/ax/_style/_set_log_scale.py +299 -0
- scitex/plt/ax/_style/_set_meta.py +261 -0
- scitex/plt/ax/_style/_set_n_ticks.py +37 -0
- scitex/plt/ax/_style/_set_size.py +16 -0
- scitex/plt/ax/_style/_set_supxyt.py +116 -0
- scitex/plt/ax/_style/_set_ticks.py +276 -0
- scitex/plt/ax/_style/_set_xyt.py +121 -0
- scitex/plt/ax/_style/_share_axes.py +264 -0
- scitex/plt/ax/_style/_shift.py +139 -0
- scitex/plt/ax/_style/_show_spines.py +333 -0
- scitex/plt/color/_PARAMS.py +70 -0
- scitex/plt/color/__init__.py +52 -0
- scitex/plt/color/_add_hue_col.py +41 -0
- scitex/plt/color/_colors.py +205 -0
- scitex/plt/color/_get_colors_from_cmap.py +134 -0
- scitex/plt/color/_interpolate.py +29 -0
- scitex/plt/color/_vizualize_colors.py +54 -0
- scitex/plt/utils/__init__.py +44 -0
- scitex/plt/utils/_calc_bacc_from_conf_mat.py +46 -0
- scitex/plt/utils/_calc_nice_ticks.py +101 -0
- scitex/plt/utils/_close.py +68 -0
- scitex/plt/utils/_colorbar.py +96 -0
- scitex/plt/utils/_configure_mpl.py +295 -0
- scitex/plt/utils/_histogram_utils.py +132 -0
- scitex/plt/utils/_im2grid.py +70 -0
- scitex/plt/utils/_is_valid_axis.py +78 -0
- scitex/plt/utils/_mk_colorbar.py +65 -0
- scitex/plt/utils/_mk_patches.py +26 -0
- scitex/plt/utils/_scientific_captions.py +638 -0
- scitex/plt/utils/_scitex_config.py +223 -0
- scitex/reproduce/__init__.py +14 -0
- scitex/reproduce/_fix_seeds.py +45 -0
- scitex/reproduce/_gen_ID.py +55 -0
- scitex/reproduce/_gen_timestamp.py +35 -0
- scitex/res/__init__.py +5 -0
- scitex/resource/__init__.py +13 -0
- scitex/resource/_get_processor_usages.py +281 -0
- scitex/resource/_get_specs.py +280 -0
- scitex/resource/_log_processor_usages.py +190 -0
- scitex/resource/_utils/__init__.py +31 -0
- scitex/resource/_utils/_get_env_info.py +481 -0
- scitex/resource/limit_ram.py +33 -0
- scitex/scholar/__init__.py +24 -0
- scitex/scholar/_local_search.py +454 -0
- scitex/scholar/_paper.py +244 -0
- scitex/scholar/_pdf_downloader.py +325 -0
- scitex/scholar/_search.py +393 -0
- scitex/scholar/_vector_search.py +370 -0
- scitex/scholar/_web_sources.py +457 -0
- scitex/stats/__init__.py +31 -0
- scitex/stats/_calc_partial_corr.py +17 -0
- scitex/stats/_corr_test_multi.py +94 -0
- scitex/stats/_corr_test_wrapper.py +115 -0
- scitex/stats/_describe_wrapper.py +90 -0
- scitex/stats/_multiple_corrections.py +63 -0
- scitex/stats/_nan_stats.py +93 -0
- scitex/stats/_p2stars.py +116 -0
- scitex/stats/_p2stars_wrapper.py +56 -0
- scitex/stats/_statistical_tests.py +73 -0
- scitex/stats/desc/__init__.py +40 -0
- scitex/stats/desc/_describe.py +189 -0
- scitex/stats/desc/_nan.py +289 -0
- scitex/stats/desc/_real.py +94 -0
- scitex/stats/multiple/__init__.py +14 -0
- scitex/stats/multiple/_bonferroni_correction.py +72 -0
- scitex/stats/multiple/_fdr_correction.py +400 -0
- scitex/stats/multiple/_multicompair.py +28 -0
- scitex/stats/tests/__corr_test.py +277 -0
- scitex/stats/tests/__corr_test_multi.py +343 -0
- scitex/stats/tests/__corr_test_single.py +277 -0
- scitex/stats/tests/__init__.py +22 -0
- scitex/stats/tests/_brunner_munzel_test.py +192 -0
- scitex/stats/tests/_nocorrelation_test.py +28 -0
- scitex/stats/tests/_smirnov_grubbs.py +98 -0
- scitex/str/__init__.py +113 -0
- scitex/str/_clean_path.py +75 -0
- scitex/str/_color_text.py +52 -0
- scitex/str/_decapitalize.py +58 -0
- scitex/str/_factor_out_digits.py +281 -0
- scitex/str/_format_plot_text.py +498 -0
- scitex/str/_grep.py +48 -0
- scitex/str/_latex.py +155 -0
- scitex/str/_latex_fallback.py +471 -0
- scitex/str/_mask_api.py +39 -0
- scitex/str/_mask_api_key.py +8 -0
- scitex/str/_parse.py +158 -0
- scitex/str/_print_block.py +47 -0
- scitex/str/_print_debug.py +68 -0
- scitex/str/_printc.py +62 -0
- scitex/str/_readable_bytes.py +38 -0
- scitex/str/_remove_ansi.py +23 -0
- scitex/str/_replace.py +134 -0
- scitex/str/_search.py +125 -0
- scitex/str/_squeeze_space.py +36 -0
- scitex/tex/__init__.py +10 -0
- scitex/tex/_preview.py +103 -0
- scitex/tex/_to_vec.py +116 -0
- scitex/torch/__init__.py +18 -0
- scitex/torch/_apply_to.py +34 -0
- scitex/torch/_nan_funcs.py +77 -0
- scitex/types/_ArrayLike.py +44 -0
- scitex/types/_ColorLike.py +21 -0
- scitex/types/__init__.py +14 -0
- scitex/types/_is_listed_X.py +70 -0
- scitex/utils/__init__.py +22 -0
- scitex/utils/_compress_hdf5.py +116 -0
- scitex/utils/_email.py +120 -0
- scitex/utils/_grid.py +148 -0
- scitex/utils/_notify.py +247 -0
- scitex/utils/_search.py +121 -0
- scitex/web/__init__.py +38 -0
- scitex/web/_search_pubmed.py +438 -0
- scitex/web/_summarize_url.py +158 -0
- scitex-2.0.0.dist-info/METADATA +307 -0
- scitex-2.0.0.dist-info/RECORD +572 -0
- scitex-2.0.0.dist-info/WHEEL +6 -0
- scitex-2.0.0.dist-info/licenses/LICENSE +7 -0
- scitex-2.0.0.dist-info/top_level.txt +1 -0
scitex/gen/path.py
ADDED
|
File without changes
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
def sigmacro_process_figure_s():
|
|
2
|
+
"""Print a macro for SigmaPlot (v12.0) to format a panel.
|
|
3
|
+
|
|
4
|
+
Please refer to the 'Automating Routine Tasks' section of the official documentation.
|
|
5
|
+
"""
|
|
6
|
+
print(
|
|
7
|
+
"""
|
|
8
|
+
Option Explicit
|
|
9
|
+
|
|
10
|
+
' Constants for FLAG_SET_BIT and FLAG_CLEAR_BIT should be defined
|
|
11
|
+
Const FLAG_SET_BIT As Long = 1 ' Assuming value, replace with actual value
|
|
12
|
+
Const FLAG_CLEAR_BIT As Long = 0 ' Assuming value, replace with actual value
|
|
13
|
+
|
|
14
|
+
' Function to set option flag bits on
|
|
15
|
+
Function FlagOn(flag As Long) As Long
|
|
16
|
+
FlagOn = flag Or FLAG_SET_BIT
|
|
17
|
+
End Function
|
|
18
|
+
|
|
19
|
+
' Function to set option flag bits off
|
|
20
|
+
Function FlagOff(flag As Long) As Long
|
|
21
|
+
FlagOff = flag And Not FLAG_CLEAR_BIT
|
|
22
|
+
End Function
|
|
23
|
+
|
|
24
|
+
' Procedure to set the title size to 8 points
|
|
25
|
+
Sub setTitleSize()
|
|
26
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent
|
|
27
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETOBJECTATTR, STA_SIZE, "111") ' Size set to 8 points
|
|
28
|
+
End Sub
|
|
29
|
+
|
|
30
|
+
' Procedure to set label size for a given dimension to 8 points
|
|
31
|
+
Sub setLabelSize(dimension)
|
|
32
|
+
' ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent
|
|
33
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_AXIS).NameObject.SetObjectCurrent
|
|
34
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension)
|
|
35
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETOBJECTATTR, STA_SIZE, "111") ' Size set to 8 points
|
|
36
|
+
End Sub
|
|
37
|
+
|
|
38
|
+
' Procedure to set tick label size for a given dimension to 7 points
|
|
39
|
+
Sub setTickLabelSize(dimension)
|
|
40
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent
|
|
41
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension)
|
|
42
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_AXIS).TickLabelAttributes(SAA_LINE_MAJORTIC).SetObjectCurrent
|
|
43
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETOBJECTATTR, STA_SIZE, "97") ' Size set to 7 points
|
|
44
|
+
End Sub
|
|
45
|
+
|
|
46
|
+
' Procedure to process tick settings for a given dimension
|
|
47
|
+
Sub processTicks(dimension)
|
|
48
|
+
' Ensure the object is correctly targeted before setting attributes
|
|
49
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_AXIS).NameObject.SetObjectCurrent
|
|
50
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension)
|
|
51
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_SELECTLINE, 1)
|
|
52
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SEA_THICKNESS, &H00000008)
|
|
53
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_TICSIZE, &H00000020)
|
|
54
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_SELECTLINE, 2)
|
|
55
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SEA_THICKNESS, &H00000008)
|
|
56
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_TICSIZE, &H00000020)
|
|
57
|
+
End Sub
|
|
58
|
+
|
|
59
|
+
' Procedure to remove an axis for a given dimension
|
|
60
|
+
Sub removeAxis(dimension)
|
|
61
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension)
|
|
62
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_SUB2OPTIONS, &H00000000)
|
|
63
|
+
End Sub
|
|
64
|
+
|
|
65
|
+
Sub resizeFigure
|
|
66
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent
|
|
67
|
+
With ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH)
|
|
68
|
+
'.Top = 0
|
|
69
|
+
'.Left = 0
|
|
70
|
+
.Width = &H000004F5&
|
|
71
|
+
.Height = &H00000378&
|
|
72
|
+
End With
|
|
73
|
+
End Sub
|
|
74
|
+
|
|
75
|
+
' Main procedure
|
|
76
|
+
Sub Main()
|
|
77
|
+
Dim FullPATH As String
|
|
78
|
+
Dim OrigPageName As String
|
|
79
|
+
Dim ObjectType As String
|
|
80
|
+
Dim COLOR As Long
|
|
81
|
+
|
|
82
|
+
' Saves the original page to jump back
|
|
83
|
+
FullPATH = ActiveDocument.FullName
|
|
84
|
+
OrigPageName = ActiveDocument.CurrentPageItem.Name
|
|
85
|
+
ActiveDocument.NotebookItems(OrigPageName).IsCurrentBrowserEntry = True
|
|
86
|
+
|
|
87
|
+
' Code to set the figure size should be implemented here
|
|
88
|
+
resizeFigure
|
|
89
|
+
|
|
90
|
+
' Set the title sizes
|
|
91
|
+
setTitleSize
|
|
92
|
+
|
|
93
|
+
' Set the sizes of X/Y labels
|
|
94
|
+
setLabelSize(1) ' X-axis
|
|
95
|
+
setLabelSize(2) ' Y-axis
|
|
96
|
+
|
|
97
|
+
' Set the sizes of X/Y tick labels
|
|
98
|
+
setTickLabelSize(1) ' X-axis
|
|
99
|
+
setTickLabelSize(2) ' Y-axis
|
|
100
|
+
|
|
101
|
+
' Set tick length and width
|
|
102
|
+
processTicks(1) ' X-axis
|
|
103
|
+
processTicks(2) ' Y-axis
|
|
104
|
+
|
|
105
|
+
' Remove right and top axes
|
|
106
|
+
removeAxis(1) ' Right axis
|
|
107
|
+
removeAxis(2) ' Top axis
|
|
108
|
+
|
|
109
|
+
' Go back to the original page
|
|
110
|
+
Notebooks(FullPATH).NotebookItems(OrigPageName).Open
|
|
111
|
+
|
|
112
|
+
End Sub
|
|
113
|
+
"""
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# Backward compatibility alias
|
|
118
|
+
import warnings
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def SigMacro_processFigure_S():
|
|
122
|
+
"""Deprecated: Use sigmacro_process_figure_s() instead."""
|
|
123
|
+
warnings.warn(
|
|
124
|
+
"SigMacro_processFigure_S is deprecated, use sigmacro_process_figure_s() instead",
|
|
125
|
+
DeprecationWarning,
|
|
126
|
+
stacklevel=2
|
|
127
|
+
)
|
|
128
|
+
return sigmacro_process_figure_s()
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
def sigmacro_to_blue():
|
|
2
|
+
"""Print a macro for SigmaPlot (v12.0) that changes the color and style of the selected object.
|
|
3
|
+
|
|
4
|
+
Please refer to the 'Automating Routine Tasks' section of the official documentation.
|
|
5
|
+
"""
|
|
6
|
+
print(
|
|
7
|
+
"""
|
|
8
|
+
Option Explicit
|
|
9
|
+
|
|
10
|
+
Function FlagOn(flag As Long) As Long
|
|
11
|
+
FlagOn = flag Or FLAG_SET_BIT ' Use to set option flag bits on, leaving others unchanged
|
|
12
|
+
End Function
|
|
13
|
+
|
|
14
|
+
Function FlagOff(flag As Long) As Long
|
|
15
|
+
FlagOff = flag Or FLAG_CLEAR_BIT ' Use to set option flag bits off, leaving others unchanged
|
|
16
|
+
End Function
|
|
17
|
+
|
|
18
|
+
Function getColor(colorName As String) As Long
|
|
19
|
+
Select Case colorName
|
|
20
|
+
|
|
21
|
+
Case "Black"
|
|
22
|
+
getColor = RGB(0, 0, 0)
|
|
23
|
+
Case "Gray"
|
|
24
|
+
getColor = RGB(128, 128, 128)
|
|
25
|
+
Case "White"
|
|
26
|
+
getColor = RGB(255, 255, 255)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Case "Blue"
|
|
30
|
+
getColor = RGB(0, 128, 192)
|
|
31
|
+
Case "Green"
|
|
32
|
+
getColor = RGB(20, 180, 20)
|
|
33
|
+
Case "Red"
|
|
34
|
+
getColor = RGB(255, 70, 50)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
Case "Yellow"
|
|
38
|
+
getColor = RGB(230, 160, 20)
|
|
39
|
+
Case "Purple"
|
|
40
|
+
getColor = RGB(200, 50, 255)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
Case "Pink"
|
|
44
|
+
getColor = RGB(255, 150, 200)
|
|
45
|
+
Case "LightBlue"
|
|
46
|
+
getColor = RGB(20, 200, 200)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
Case "DarkBlue"
|
|
50
|
+
getColor = RGB(0, 0, 100)
|
|
51
|
+
Case "Dan"
|
|
52
|
+
getColor = RGB(228, 94, 50)
|
|
53
|
+
Case "Brown"
|
|
54
|
+
getColor = RGB(128, 0, 0)
|
|
55
|
+
|
|
56
|
+
Case Else
|
|
57
|
+
' Default or error handling
|
|
58
|
+
getColor = RGB(0, 0, 0) ' Returning black as default or for an unrecognized color
|
|
59
|
+
End Select
|
|
60
|
+
End Function
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
Sub updatePlot(COLOR As Long)
|
|
64
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent
|
|
65
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SEA_COLOR, COLOR)
|
|
66
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SEA_COLORREPEAT, &H00000002&)
|
|
67
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SEA_THICKNESS, &H00000005&) ' .12 mm = .047 Inches
|
|
68
|
+
End Sub
|
|
69
|
+
|
|
70
|
+
Sub updateScatter(COLOR As Long)
|
|
71
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent
|
|
72
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_EDGECOLOR, COLOR)
|
|
73
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_COLOR, COLOR)
|
|
74
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_COLORREPEAT, &H00000002&)
|
|
75
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_SIZE, &H00000020&) ' .8 mm = .032 inch
|
|
76
|
+
' fixme scattersize=0.032 Innches
|
|
77
|
+
End Sub
|
|
78
|
+
Sub updateSolid(COLOR As Long)
|
|
79
|
+
ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent
|
|
80
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SDA_COLOR, COLOR)
|
|
81
|
+
ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SDA_COLORREPEAT, &H00000002&)
|
|
82
|
+
End Sub
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
Function findObjectType() As String
|
|
87
|
+
On Error GoTo ErrorHandler
|
|
88
|
+
|
|
89
|
+
Dim ObjectType As Variant
|
|
90
|
+
Dim object_type As Variant
|
|
91
|
+
object_type = ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).Plots(0).GetAttribute(SLA_TYPE, ObjectType)
|
|
92
|
+
|
|
93
|
+
If object_type = False Then
|
|
94
|
+
findObjectType = "Error: Failed to get object type."
|
|
95
|
+
Exit Function
|
|
96
|
+
End If
|
|
97
|
+
|
|
98
|
+
' Map the ObjectType to a string
|
|
99
|
+
Select Case object_type
|
|
100
|
+
Case SLA_TYPE_SCATTER
|
|
101
|
+
findObjectType = "Scatter/Line"
|
|
102
|
+
Case SLA_TYPE_BAR
|
|
103
|
+
findObjectType = "Bar"
|
|
104
|
+
Case SLA_TYPE_STACKED
|
|
105
|
+
findObjectType = "Stacked Bar"
|
|
106
|
+
Case SLA_TYPE_TUKEY
|
|
107
|
+
findObjectType = "Box"
|
|
108
|
+
Case SLA_TYPE_3DSCATTER
|
|
109
|
+
findObjectType = "3D Scatter/Line"
|
|
110
|
+
Case Else
|
|
111
|
+
findObjectType = "Unknown Object Type: " & object_type
|
|
112
|
+
End Select
|
|
113
|
+
Exit Function
|
|
114
|
+
|
|
115
|
+
ErrorHandler:
|
|
116
|
+
findObjectType = "An error has occurred: " & Err.Description
|
|
117
|
+
End Function
|
|
118
|
+
|
|
119
|
+
Sub Main()
|
|
120
|
+
On Error GoTo ErrorHandler
|
|
121
|
+
|
|
122
|
+
Dim FullPATH As String
|
|
123
|
+
Dim OrigPageName As String
|
|
124
|
+
Dim ObjectType As String
|
|
125
|
+
Dim COLOR As Long
|
|
126
|
+
|
|
127
|
+
' Remember the original page
|
|
128
|
+
FullPATH = ActiveDocument.FullName
|
|
129
|
+
OrigPageName = ActiveDocument.CurrentPageItem.Name
|
|
130
|
+
ActiveDocument.NotebookItems(OrigPageName).IsCurrentBrowserEntry = True
|
|
131
|
+
|
|
132
|
+
' Get the color value for blue
|
|
133
|
+
COLOR = getColor("Blue")
|
|
134
|
+
|
|
135
|
+
' Find the type of the object
|
|
136
|
+
ObjectType = findObjectType()
|
|
137
|
+
|
|
138
|
+
' Check the object type and call the corresponding update function
|
|
139
|
+
If ObjectType = "Scatter/Line" Or ObjectType = "3D Scatter/Line" Then
|
|
140
|
+
updatePlot COLOR
|
|
141
|
+
updateScatter COLOR
|
|
142
|
+
ElseIf ObjectType = "Bar" Or ObjectType = "Stacked Bar" Or ObjectType = "Box" Then
|
|
143
|
+
updateSolid COLOR
|
|
144
|
+
Else
|
|
145
|
+
' Raise a custom error
|
|
146
|
+
Err.Raise vbObjectError + 513, "Main", "Unknown or unsupported object type: " & ObjectType
|
|
147
|
+
End If
|
|
148
|
+
|
|
149
|
+
' Go back to the original page
|
|
150
|
+
Notebooks(FullPATH).NotebookItems(OrigPageName).Open
|
|
151
|
+
|
|
152
|
+
Exit Sub
|
|
153
|
+
|
|
154
|
+
ErrorHandler:
|
|
155
|
+
MsgBox "An error has occurred: " & Err.Description
|
|
156
|
+
End Sub
|
|
157
|
+
"""
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
# Backward compatibility alias
|
|
162
|
+
import warnings
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def SigMacro_toBlue():
|
|
166
|
+
"""Deprecated: Use sigmacro_to_blue() instead."""
|
|
167
|
+
warnings.warn(
|
|
168
|
+
"SigMacro_toBlue is deprecated, use sigmacro_to_blue() instead",
|
|
169
|
+
DeprecationWarning,
|
|
170
|
+
stacklevel=2
|
|
171
|
+
)
|
|
172
|
+
return sigmacro_to_blue()
|
scitex/gists/__init__.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Scitex gists module."""
|
|
3
|
+
|
|
4
|
+
from ._SigMacro_processFigure_S import SigMacro_processFigure_S, sigmacro_process_figure_s
|
|
5
|
+
from ._SigMacro_toBlue import SigMacro_toBlue, sigmacro_to_blue
|
|
6
|
+
|
|
7
|
+
__all__ = [
|
|
8
|
+
"SigMacro_processFigure_S",
|
|
9
|
+
"SigMacro_toBlue",
|
|
10
|
+
"sigmacro_process_figure_s",
|
|
11
|
+
"sigmacro_to_blue",
|
|
12
|
+
]
|
scitex/io/_H5Explorer.py
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-06-14 18:05:18 (ywatanabe)"
|
|
4
|
+
# File: /ssh:sp:/home/ywatanabe/proj/SciTeX-Code/src/scitex/io/_H5Explorer.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/io/_H5Explorer.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
import warnings
|
|
13
|
+
|
|
14
|
+
# Time-stamp: "2025-06-13 21:00:00 (ywatanabe)"
|
|
15
|
+
|
|
16
|
+
"""HDF5 file explorer for interactive data inspection."""
|
|
17
|
+
|
|
18
|
+
from typing import Any, Dict, List, Optional
|
|
19
|
+
|
|
20
|
+
import h5py
|
|
21
|
+
import numpy as np
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class H5Explorer:
|
|
25
|
+
"""Interactive HDF5 file explorer.
|
|
26
|
+
|
|
27
|
+
This class provides convenient methods to explore HDF5 files,
|
|
28
|
+
inspect their structure, and load data.
|
|
29
|
+
|
|
30
|
+
Example:
|
|
31
|
+
>>> explorer = H5Explorer('data.h5')
|
|
32
|
+
>>> explorer.explore() # Display file structure
|
|
33
|
+
>>> data = explorer.load('group1/dataset1') # Load specific dataset
|
|
34
|
+
>>> explorer.close()
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(self, filepath: str, mode: str = "r"):
|
|
38
|
+
"""Initialize H5Explorer.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
filepath: Path to HDF5 file
|
|
42
|
+
mode: File opening mode ('r' for read, 'r+' for read/write)
|
|
43
|
+
"""
|
|
44
|
+
self.filepath = filepath
|
|
45
|
+
self.mode = mode
|
|
46
|
+
self.file = h5py.File(filepath, mode)
|
|
47
|
+
|
|
48
|
+
def __enter__(self):
|
|
49
|
+
"""Context manager entry."""
|
|
50
|
+
return self
|
|
51
|
+
|
|
52
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
53
|
+
"""Context manager exit."""
|
|
54
|
+
self.close()
|
|
55
|
+
|
|
56
|
+
def close(self):
|
|
57
|
+
"""Close the HDF5 file."""
|
|
58
|
+
if hasattr(self, "file") and self.file:
|
|
59
|
+
self.file.close()
|
|
60
|
+
|
|
61
|
+
def explore(
|
|
62
|
+
self, path: str = "/", max_depth: Optional[int] = None
|
|
63
|
+
) -> None:
|
|
64
|
+
"""Explore HDF5 file structure interactively."""
|
|
65
|
+
self.show(path, max_depth)
|
|
66
|
+
|
|
67
|
+
def show(
|
|
68
|
+
self,
|
|
69
|
+
path: str = "/",
|
|
70
|
+
max_depth: Optional[int] = None,
|
|
71
|
+
indent: str = "",
|
|
72
|
+
_current_depth: int = 0,
|
|
73
|
+
) -> None:
|
|
74
|
+
"""Display HDF5 file structure.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
path: Starting path in HDF5 file
|
|
78
|
+
max_depth: Maximum depth to explore (None for unlimited)
|
|
79
|
+
indent: Indentation string (used internally)
|
|
80
|
+
_current_depth: Current depth (used internally)
|
|
81
|
+
"""
|
|
82
|
+
if max_depth is not None and _current_depth > max_depth:
|
|
83
|
+
return
|
|
84
|
+
|
|
85
|
+
item = self.file[path] if path != "/" else self.file
|
|
86
|
+
|
|
87
|
+
if isinstance(item, h5py.Group):
|
|
88
|
+
if path != "/":
|
|
89
|
+
print(f"{indent}[{path.split('/')[-1]}]")
|
|
90
|
+
for key in sorted(item.keys()):
|
|
91
|
+
subpath = f"{path}/{key}".replace("//", "/")
|
|
92
|
+
self.show(
|
|
93
|
+
subpath, max_depth, indent + " ", _current_depth + 1
|
|
94
|
+
)
|
|
95
|
+
elif isinstance(item, h5py.Dataset):
|
|
96
|
+
name = path.split("/")[-1]
|
|
97
|
+
shape = item.shape
|
|
98
|
+
dtype = item.dtype
|
|
99
|
+
size = item.size
|
|
100
|
+
print(f"{indent}{name}: shape={shape}, dtype={dtype}, size={size}")
|
|
101
|
+
|
|
102
|
+
def keys(self, path: str = "/") -> List[str]:
|
|
103
|
+
"""Get keys at specified path.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
path: Path in HDF5 file
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
List of keys at the specified path
|
|
110
|
+
"""
|
|
111
|
+
item = self.file[path] if path != "/" else self.file
|
|
112
|
+
if isinstance(item, h5py.Group):
|
|
113
|
+
return list(item.keys())
|
|
114
|
+
return []
|
|
115
|
+
|
|
116
|
+
def load(self, path: str) -> Any:
|
|
117
|
+
"""Load data from specified path.
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
path: Path to dataset or group in HDF5 file
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
Data from the specified path
|
|
124
|
+
"""
|
|
125
|
+
item = self.file[path]
|
|
126
|
+
|
|
127
|
+
if isinstance(item, h5py.Dataset):
|
|
128
|
+
data = item[()]
|
|
129
|
+
# Decode bytes to string if needed
|
|
130
|
+
if isinstance(data, bytes):
|
|
131
|
+
return data.decode("utf-8")
|
|
132
|
+
# Handle pickled objects (stored as np.void)
|
|
133
|
+
elif isinstance(data, np.void):
|
|
134
|
+
import pickle
|
|
135
|
+
return pickle.loads(data.tobytes())
|
|
136
|
+
return data
|
|
137
|
+
elif isinstance(item, h5py.Group):
|
|
138
|
+
# Load group as dictionary
|
|
139
|
+
result = {}
|
|
140
|
+
for key in item.keys():
|
|
141
|
+
result[key] = self.load(f"{path}/{key}".replace("//", "/"))
|
|
142
|
+
# Also load attributes
|
|
143
|
+
for key in item.attrs.keys():
|
|
144
|
+
result[f"_attr_{key}"] = item.attrs[key]
|
|
145
|
+
return result
|
|
146
|
+
else:
|
|
147
|
+
return item
|
|
148
|
+
|
|
149
|
+
def get(self, path: str) -> Any:
|
|
150
|
+
"""Alias for load() method for compatibility.
|
|
151
|
+
|
|
152
|
+
Args:
|
|
153
|
+
path: Path to dataset or group in HDF5 file
|
|
154
|
+
|
|
155
|
+
Returns:
|
|
156
|
+
Data from the specified path
|
|
157
|
+
"""
|
|
158
|
+
return self.load(path)
|
|
159
|
+
|
|
160
|
+
def get_info(self, path: str = "/") -> Dict[str, Any]:
|
|
161
|
+
"""Get information about an item.
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
path: Path to item in HDF5 file
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
Dictionary with item information
|
|
168
|
+
"""
|
|
169
|
+
item = self.file[path] if path != "/" else self.file
|
|
170
|
+
|
|
171
|
+
info = {
|
|
172
|
+
"path": path,
|
|
173
|
+
"type": type(item).__name__,
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if isinstance(item, h5py.Dataset):
|
|
177
|
+
info.update(
|
|
178
|
+
{
|
|
179
|
+
"shape": item.shape,
|
|
180
|
+
"dtype": str(item.dtype),
|
|
181
|
+
"size": item.size,
|
|
182
|
+
"compression": item.compression,
|
|
183
|
+
"chunks": item.chunks,
|
|
184
|
+
}
|
|
185
|
+
)
|
|
186
|
+
elif isinstance(item, h5py.Group):
|
|
187
|
+
info["n_items"] = len(item.keys())
|
|
188
|
+
info["keys"] = list(item.keys())
|
|
189
|
+
|
|
190
|
+
# Add attributes
|
|
191
|
+
if hasattr(item, "attrs") and len(item.attrs) > 0:
|
|
192
|
+
info["attributes"] = dict(item.attrs)
|
|
193
|
+
|
|
194
|
+
return info
|
|
195
|
+
|
|
196
|
+
def find(self, pattern: str, path: str = "/") -> List[str]:
|
|
197
|
+
"""Find items matching pattern.
|
|
198
|
+
|
|
199
|
+
Args:
|
|
200
|
+
pattern: Pattern to search for in item names
|
|
201
|
+
path: Starting path for search
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
List of paths matching the pattern
|
|
205
|
+
"""
|
|
206
|
+
matches = []
|
|
207
|
+
|
|
208
|
+
def _search(current_path):
|
|
209
|
+
item = (
|
|
210
|
+
self.file[current_path] if current_path != "/" else self.file
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
if isinstance(item, h5py.Group):
|
|
214
|
+
for key in item.keys():
|
|
215
|
+
subpath = f"{current_path}/{key}".replace("//", "/")
|
|
216
|
+
if pattern.lower() in key.lower():
|
|
217
|
+
matches.append(subpath)
|
|
218
|
+
_search(subpath)
|
|
219
|
+
elif pattern.lower() in current_path.split("/")[-1].lower():
|
|
220
|
+
matches.append(current_path)
|
|
221
|
+
|
|
222
|
+
_search(path)
|
|
223
|
+
return matches
|
|
224
|
+
|
|
225
|
+
def get_shape(self, path: str) -> Optional[tuple]:
|
|
226
|
+
"""Get shape of a dataset.
|
|
227
|
+
|
|
228
|
+
Args:
|
|
229
|
+
path: Path to dataset
|
|
230
|
+
|
|
231
|
+
Returns:
|
|
232
|
+
Shape tuple or None if not a dataset
|
|
233
|
+
"""
|
|
234
|
+
item = self.file[path]
|
|
235
|
+
if isinstance(item, h5py.Dataset):
|
|
236
|
+
return item.shape
|
|
237
|
+
return None
|
|
238
|
+
|
|
239
|
+
def get_dtype(self, path: str) -> Optional[np.dtype]:
|
|
240
|
+
"""Get dtype of a dataset.
|
|
241
|
+
|
|
242
|
+
Args:
|
|
243
|
+
path: Path to dataset
|
|
244
|
+
|
|
245
|
+
Returns:
|
|
246
|
+
Numpy dtype or None if not a dataset
|
|
247
|
+
"""
|
|
248
|
+
item = self.file[path]
|
|
249
|
+
if isinstance(item, h5py.Dataset):
|
|
250
|
+
return item.dtype
|
|
251
|
+
return None
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
# Convenience function
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def explore_h5(filepath: str) -> None:
|
|
258
|
+
"""Explore HDF5 file structure.
|
|
259
|
+
|
|
260
|
+
Args:
|
|
261
|
+
filepath: Path to HDF5 file
|
|
262
|
+
"""
|
|
263
|
+
if os.path.exists(filepath):
|
|
264
|
+
explorer = H5Explorer(filepath)
|
|
265
|
+
explorer.explore()
|
|
266
|
+
explorer.close()
|
|
267
|
+
else:
|
|
268
|
+
warnings.warn(f"Warning: File does not exist: {filepath}")
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def has_h5_key(h5_path, key):
|
|
272
|
+
"""Check if key exists in HDF5 file."""
|
|
273
|
+
h5_path = os.path.realpath(h5_path)
|
|
274
|
+
|
|
275
|
+
if not os.path.exists(h5_path):
|
|
276
|
+
return False
|
|
277
|
+
|
|
278
|
+
try:
|
|
279
|
+
with h5py.File(h5_path, "r") as h5_file:
|
|
280
|
+
parts = key.split("/")
|
|
281
|
+
current = h5_file
|
|
282
|
+
for part in parts:
|
|
283
|
+
if part in current:
|
|
284
|
+
current = current[part]
|
|
285
|
+
else:
|
|
286
|
+
return False
|
|
287
|
+
return True
|
|
288
|
+
|
|
289
|
+
except (KeyError, FileNotFoundError, OSError):
|
|
290
|
+
return False
|
|
291
|
+
|
|
292
|
+
# EOF
|
scitex/io/__init__.py
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-06-14 16:00:50 (ywatanabe)"
|
|
4
|
+
# File: /ssh:sp:/home/ywatanabe/proj/SciTeX-Code/src/scitex/io/__init__.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = (
|
|
8
|
+
"./src/scitex/io/__init__.py"
|
|
9
|
+
)
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
"""Scitex IO module with lazy imports to avoid circular dependencies."""
|
|
13
|
+
|
|
14
|
+
# Import commonly used functions directly
|
|
15
|
+
from ._save import save
|
|
16
|
+
from ._load import load
|
|
17
|
+
from ._load_configs import load_configs
|
|
18
|
+
from ._glob import glob, parse_glob
|
|
19
|
+
from ._reload import reload
|
|
20
|
+
from ._flush import flush
|
|
21
|
+
from ._cache import cache
|
|
22
|
+
from ._H5Explorer import H5Explorer, explore_h5, has_h5_key
|
|
23
|
+
|
|
24
|
+
# Import save module functions
|
|
25
|
+
try:
|
|
26
|
+
from ._save_modules import (
|
|
27
|
+
save_image,
|
|
28
|
+
save_text,
|
|
29
|
+
save_mp4,
|
|
30
|
+
save_listed_dfs_as_csv,
|
|
31
|
+
save_listed_scalars_as_csv,
|
|
32
|
+
save_optuna_study_as_csv_and_pngs,
|
|
33
|
+
)
|
|
34
|
+
except ImportError as e:
|
|
35
|
+
# Fallback for missing functions
|
|
36
|
+
save_image = None
|
|
37
|
+
save_text = None
|
|
38
|
+
save_mp4 = None
|
|
39
|
+
save_listed_dfs_as_csv = None
|
|
40
|
+
save_listed_scalars_as_csv = None
|
|
41
|
+
save_optuna_study_as_csv_and_pngs = None
|
|
42
|
+
|
|
43
|
+
# Optional imports that might fail
|
|
44
|
+
try:
|
|
45
|
+
from ._path import path
|
|
46
|
+
except ImportError:
|
|
47
|
+
path = None
|
|
48
|
+
|
|
49
|
+
try:
|
|
50
|
+
from ._mv_to_tmp import mv_to_tmp
|
|
51
|
+
except ImportError:
|
|
52
|
+
mv_to_tmp = None
|
|
53
|
+
|
|
54
|
+
try:
|
|
55
|
+
from ._json2md import json2md
|
|
56
|
+
except ImportError:
|
|
57
|
+
json2md = None
|
|
58
|
+
|
|
59
|
+
__all__ = [
|
|
60
|
+
"save",
|
|
61
|
+
"load",
|
|
62
|
+
"load_configs",
|
|
63
|
+
"glob",
|
|
64
|
+
"parse_glob",
|
|
65
|
+
"reload",
|
|
66
|
+
"flush",
|
|
67
|
+
"cache",
|
|
68
|
+
"H5Explorer",
|
|
69
|
+
"explore_h5",
|
|
70
|
+
"has_h5_key",
|
|
71
|
+
"path",
|
|
72
|
+
"mv_to_tmp",
|
|
73
|
+
"json2md",
|
|
74
|
+
"save_image",
|
|
75
|
+
"save_text",
|
|
76
|
+
"save_mp4",
|
|
77
|
+
"save_listed_dfs_as_csv",
|
|
78
|
+
"save_listed_scalars_as_csv",
|
|
79
|
+
"save_optuna_study_as_csv_and_pngs",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
# EOF
|