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,223 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# SciTeX Ecosystem Configuration Manager
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
Unified configuration system for the complete SciTeX ecosystem:
|
|
7
|
+
SciTeX + SciTeX-Code + SciTeX-Paper + SigMacro + Emacs-Claude-Code integration
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
import yaml
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from typing import Dict, Any, Optional
|
|
14
|
+
import json
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class SciTeXConfig:
|
|
18
|
+
"""Central configuration manager for the SciTeX ecosystem"""
|
|
19
|
+
|
|
20
|
+
def __init__(self, config_path: Optional[str] = None):
|
|
21
|
+
"""Initialize SciTeX configuration
|
|
22
|
+
|
|
23
|
+
Parameters
|
|
24
|
+
----------
|
|
25
|
+
config_path : str, optional
|
|
26
|
+
Path to configuration file. Defaults to ~/.scitex/config.yaml
|
|
27
|
+
"""
|
|
28
|
+
self.config_path = config_path or os.path.expanduser("~/.scitex/config.yaml")
|
|
29
|
+
self.config = self._load_config()
|
|
30
|
+
|
|
31
|
+
def _load_config(self) -> Dict[str, Any]:
|
|
32
|
+
"""Load configuration from file or create default"""
|
|
33
|
+
if os.path.exists(self.config_path):
|
|
34
|
+
with open(self.config_path, 'r') as f:
|
|
35
|
+
return yaml.safe_load(f) or {}
|
|
36
|
+
else:
|
|
37
|
+
return self._create_default_config()
|
|
38
|
+
|
|
39
|
+
def _create_default_config(self) -> Dict[str, Any]:
|
|
40
|
+
"""Create default SciTeX ecosystem configuration"""
|
|
41
|
+
default_config = {
|
|
42
|
+
'scitex_ecosystem': {
|
|
43
|
+
'version': '1.0.0',
|
|
44
|
+
'core_engine': 'claude_code',
|
|
45
|
+
'emacs_integration': True,
|
|
46
|
+
'auto_workflow': True
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
'paths': {
|
|
50
|
+
'scitex_paper': '~/proj/SciTeX-Paper/',
|
|
51
|
+
'scitex_code': '~/proj/SciTeX-Code/',
|
|
52
|
+
'sigmacro': '~/proj/SigMacro/',
|
|
53
|
+
'emacs_claude': '~/proj/emacs-claude-code/',
|
|
54
|
+
'scitex_data': '~/data/',
|
|
55
|
+
'output': '~/output/'
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
'scitex': {
|
|
59
|
+
'auto_metadata': True,
|
|
60
|
+
'yaml_export': True,
|
|
61
|
+
'csv_export': True,
|
|
62
|
+
'tracking_enabled': True,
|
|
63
|
+
'default_journal': 'nature'
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
'ai_integration': {
|
|
67
|
+
'claude_code_enabled': True,
|
|
68
|
+
'auto_code_generation': True,
|
|
69
|
+
'auto_manuscript_writing': True,
|
|
70
|
+
'ai_assisted_analysis': True,
|
|
71
|
+
'emacs_claude_integration': True
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
'publication': {
|
|
75
|
+
'default_journal': 'nature',
|
|
76
|
+
'auto_formatting': True,
|
|
77
|
+
'latex_compilation': True,
|
|
78
|
+
'submission_package': True,
|
|
79
|
+
'reproducibility_level': 'full'
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
'workflow': {
|
|
83
|
+
'auto_save_metadata': True,
|
|
84
|
+
'auto_export_yaml': True,
|
|
85
|
+
'auto_generate_methods': True,
|
|
86
|
+
'auto_create_figures': True,
|
|
87
|
+
'ai_quality_check': True
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
# Create config directory and save
|
|
92
|
+
os.makedirs(os.path.dirname(self.config_path), exist_ok=True)
|
|
93
|
+
self.save_config(default_config)
|
|
94
|
+
return default_config
|
|
95
|
+
|
|
96
|
+
def save_config(self, config: Dict[str, Any] = None):
|
|
97
|
+
"""Save configuration to file"""
|
|
98
|
+
config_to_save = config or self.config
|
|
99
|
+
with open(self.config_path, 'w') as f:
|
|
100
|
+
yaml.dump(config_to_save, f, default_flow_style=False, sort_keys=False, indent=2)
|
|
101
|
+
|
|
102
|
+
def get_scitex_paths(self) -> Dict[str, str]:
|
|
103
|
+
"""Get expanded SciTeX ecosystem paths"""
|
|
104
|
+
paths = {}
|
|
105
|
+
for key, path in self.config.get('paths', {}).items():
|
|
106
|
+
paths[key] = os.path.expanduser(path)
|
|
107
|
+
return paths
|
|
108
|
+
|
|
109
|
+
def setup_scitex_directories(self):
|
|
110
|
+
"""Create SciTeX ecosystem directory structure"""
|
|
111
|
+
paths = self.get_scitex_paths()
|
|
112
|
+
|
|
113
|
+
# Create main directories
|
|
114
|
+
for path_name, path in paths.items():
|
|
115
|
+
os.makedirs(path, exist_ok=True)
|
|
116
|
+
|
|
117
|
+
# Create SciTeX-Paper subdirectories
|
|
118
|
+
scitex_paper = paths.get('scitex_paper')
|
|
119
|
+
if scitex_paper:
|
|
120
|
+
subdirs = ['figures', 'data', 'metadata', 'code', 'sections', 'manuscripts']
|
|
121
|
+
for subdir in subdirs:
|
|
122
|
+
os.makedirs(os.path.join(scitex_paper, subdir), exist_ok=True)
|
|
123
|
+
|
|
124
|
+
def get_ai_settings(self) -> Dict[str, Any]:
|
|
125
|
+
"""Get AI integration settings"""
|
|
126
|
+
return self.config.get('ai_integration', {})
|
|
127
|
+
|
|
128
|
+
def get_publication_settings(self) -> Dict[str, Any]:
|
|
129
|
+
"""Get publication workflow settings"""
|
|
130
|
+
return self.config.get('publication', {})
|
|
131
|
+
|
|
132
|
+
def is_emacs_claude_enabled(self) -> bool:
|
|
133
|
+
"""Check if Emacs-Claude integration is enabled"""
|
|
134
|
+
return self.config.get('ai_integration', {}).get('emacs_claude_integration', False)
|
|
135
|
+
|
|
136
|
+
def get_default_journal(self) -> str:
|
|
137
|
+
"""Get default target journal"""
|
|
138
|
+
return self.config.get('publication', {}).get('default_journal', 'nature')
|
|
139
|
+
|
|
140
|
+
def enable_ai_workflow(self):
|
|
141
|
+
"""Enable full AI-powered workflow"""
|
|
142
|
+
self.config['ai_integration']['claude_code_enabled'] = True
|
|
143
|
+
self.config['ai_integration']['auto_code_generation'] = True
|
|
144
|
+
self.config['ai_integration']['auto_manuscript_writing'] = True
|
|
145
|
+
self.config['workflow']['ai_quality_check'] = True
|
|
146
|
+
self.save_config()
|
|
147
|
+
|
|
148
|
+
def create_project_config(self, project_name: str, project_path: str):
|
|
149
|
+
"""Create project-specific configuration"""
|
|
150
|
+
project_config = {
|
|
151
|
+
'project': {
|
|
152
|
+
'name': project_name,
|
|
153
|
+
'path': project_path,
|
|
154
|
+
'created': str(pd.Timestamp.now()),
|
|
155
|
+
'scitex_version': '1.0.0'
|
|
156
|
+
},
|
|
157
|
+
'inherit_from': self.config_path,
|
|
158
|
+
'overrides': {
|
|
159
|
+
'paths': {
|
|
160
|
+
'output': os.path.join(project_path, 'output'),
|
|
161
|
+
'data': os.path.join(project_path, 'data'),
|
|
162
|
+
'figures': os.path.join(project_path, 'figures')
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
project_config_path = os.path.join(project_path, '.scitex_project.yaml')
|
|
168
|
+
with open(project_config_path, 'w') as f:
|
|
169
|
+
yaml.dump(project_config, f, default_flow_style=False, indent=2)
|
|
170
|
+
|
|
171
|
+
return project_config_path
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
# Global configuration instance
|
|
175
|
+
_scitex_config = None
|
|
176
|
+
|
|
177
|
+
def get_scitex_config() -> SciTeXConfig:
|
|
178
|
+
"""Get global SciTeX configuration instance"""
|
|
179
|
+
global _scitex_config
|
|
180
|
+
if _scitex_config is None:
|
|
181
|
+
_scitex_config = SciTeXConfig()
|
|
182
|
+
return _scitex_config
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def configure_scitex_ecosystem():
|
|
186
|
+
"""Configure the complete SciTeX ecosystem"""
|
|
187
|
+
config = get_scitex_config()
|
|
188
|
+
|
|
189
|
+
print("🚀 Configuring SciTeX Ecosystem...")
|
|
190
|
+
print("="*50)
|
|
191
|
+
|
|
192
|
+
# Setup directories
|
|
193
|
+
config.setup_scitex_directories()
|
|
194
|
+
paths = config.get_scitex_paths()
|
|
195
|
+
|
|
196
|
+
print("📁 Directory Structure:")
|
|
197
|
+
for name, path in paths.items():
|
|
198
|
+
status = "✅" if os.path.exists(path) else "❌"
|
|
199
|
+
print(f" {status} {name}: {path}")
|
|
200
|
+
|
|
201
|
+
# Check AI integration
|
|
202
|
+
print("\n🤖 AI Integration:")
|
|
203
|
+
ai_settings = config.get_ai_settings()
|
|
204
|
+
for setting, enabled in ai_settings.items():
|
|
205
|
+
status = "✅" if enabled else "❌"
|
|
206
|
+
print(f" {status} {setting}")
|
|
207
|
+
|
|
208
|
+
# Check Emacs-Claude integration
|
|
209
|
+
emacs_claude_path = paths.get('emacs_claude')
|
|
210
|
+
if emacs_claude_path and os.path.exists(emacs_claude_path):
|
|
211
|
+
print(f"\n💻 Emacs-Claude Integration: ✅ {emacs_claude_path}")
|
|
212
|
+
else:
|
|
213
|
+
print(f"\n💻 Emacs-Claude Integration: ❌ Not found")
|
|
214
|
+
|
|
215
|
+
print(f"\n📋 Configuration saved: {config.config_path}")
|
|
216
|
+
print("\n🎯 SciTeX Ecosystem Ready!")
|
|
217
|
+
|
|
218
|
+
return config
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
if __name__ == "__main__":
|
|
222
|
+
# Setup the complete ecosystem
|
|
223
|
+
configure_scitex_ecosystem()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Scitex reproduce module."""
|
|
3
|
+
|
|
4
|
+
from ._fix_seeds import fix_seeds
|
|
5
|
+
from ._gen_ID import gen_ID, gen_id
|
|
6
|
+
from ._gen_timestamp import gen_timestamp, timestamp
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"fix_seeds",
|
|
10
|
+
"gen_ID",
|
|
11
|
+
"gen_id",
|
|
12
|
+
"gen_timestamp",
|
|
13
|
+
"timestamp",
|
|
14
|
+
]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-02 14:28:12 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/reproduce/_fix_seeds.py
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def fix_seeds(
|
|
8
|
+
os=None, random=None, np=None, torch=None, tf=None, seed=42, verbose=True
|
|
9
|
+
):
|
|
10
|
+
os_str = "os" if os is not None else ""
|
|
11
|
+
random_str = "random" if random is not None else ""
|
|
12
|
+
np_str = "np" if np is not None else ""
|
|
13
|
+
torch_str = "torch" if torch is not None else ""
|
|
14
|
+
tf_str = "tf" if tf is not None else ""
|
|
15
|
+
|
|
16
|
+
# https://github.com/lucidrains/vit-pytorch/blob/main/examples/cats_and_dogs.ipynb
|
|
17
|
+
if os is not None:
|
|
18
|
+
import os
|
|
19
|
+
|
|
20
|
+
os.environ["PYTHONHASHSEED"] = str(seed)
|
|
21
|
+
|
|
22
|
+
if random is not None:
|
|
23
|
+
random.seed(seed)
|
|
24
|
+
|
|
25
|
+
if np is not None:
|
|
26
|
+
np.random.seed(seed)
|
|
27
|
+
|
|
28
|
+
if torch is not None:
|
|
29
|
+
torch.manual_seed(seed)
|
|
30
|
+
torch.cuda.manual_seed(seed)
|
|
31
|
+
torch.cuda.manual_seed_all(seed)
|
|
32
|
+
torch.backends.cudnn.deterministic = True
|
|
33
|
+
# torch.use_deterministic_algorithms(True)
|
|
34
|
+
|
|
35
|
+
if tf is not None:
|
|
36
|
+
tf.random.set_seed(seed)
|
|
37
|
+
|
|
38
|
+
if verbose:
|
|
39
|
+
print(f"\n{'-'*40}\n")
|
|
40
|
+
print(f"Random seeds of the following packages have been fixed as {seed}")
|
|
41
|
+
print(os_str, random_str, np_str, torch_str, tf_str)
|
|
42
|
+
print(f"\n{'-'*40}\n")
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# EOF
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-07 17:53:38 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/reproduce/_gen_ID.py
|
|
5
|
+
|
|
6
|
+
import random as _random
|
|
7
|
+
import string as _string
|
|
8
|
+
from datetime import datetime as _datetime
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def gen_id(time_format="%YY-%mM-%dD-%Hh%Mm%Ss", N=8):
|
|
12
|
+
"""Generate a unique identifier with timestamp and random characters.
|
|
13
|
+
|
|
14
|
+
Creates a unique ID by combining a formatted timestamp with random
|
|
15
|
+
alphanumeric characters. Useful for creating unique experiment IDs,
|
|
16
|
+
run identifiers, or temporary file names.
|
|
17
|
+
|
|
18
|
+
Parameters
|
|
19
|
+
----------
|
|
20
|
+
time_format : str, optional
|
|
21
|
+
Format string for timestamp portion. Default is "%YY-%mM-%dD-%Hh%Mm%Ss"
|
|
22
|
+
which produces "2025Y-05M-31D-12h30m45s" format.
|
|
23
|
+
N : int, optional
|
|
24
|
+
Number of random characters to append. Default is 8.
|
|
25
|
+
|
|
26
|
+
Returns
|
|
27
|
+
-------
|
|
28
|
+
str
|
|
29
|
+
Unique identifier in format "{timestamp}_{random_chars}"
|
|
30
|
+
|
|
31
|
+
Examples
|
|
32
|
+
--------
|
|
33
|
+
>>> id1 = gen_id()
|
|
34
|
+
>>> print(id1)
|
|
35
|
+
'2025Y-05M-31D-12h30m45s_a3Bc9xY2'
|
|
36
|
+
|
|
37
|
+
>>> id2 = gen_id(time_format="%Y%m%d", N=4)
|
|
38
|
+
>>> print(id2)
|
|
39
|
+
'20250531_xY9a'
|
|
40
|
+
|
|
41
|
+
>>> # For experiment tracking
|
|
42
|
+
>>> exp_id = gen_id()
|
|
43
|
+
>>> save_path = f"results/experiment_{exp_id}.pkl"
|
|
44
|
+
"""
|
|
45
|
+
now_str = _datetime.now().strftime(time_format)
|
|
46
|
+
rand_str = "".join(
|
|
47
|
+
[_random.choice(_string.ascii_letters + _string.digits) for i in range(N)]
|
|
48
|
+
)
|
|
49
|
+
return now_str + "_" + rand_str
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# Backward compatibility
|
|
53
|
+
gen_ID = gen_id # Deprecated: use gen_id instead
|
|
54
|
+
|
|
55
|
+
# EOF
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-07 17:44:32 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/reproduce/_gen_timestamp.py
|
|
5
|
+
|
|
6
|
+
from datetime import datetime as _datetime
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def gen_timestamp():
|
|
10
|
+
"""Generate a timestamp string for file naming.
|
|
11
|
+
|
|
12
|
+
Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for
|
|
13
|
+
creating unique filenames or version identifiers.
|
|
14
|
+
|
|
15
|
+
Returns
|
|
16
|
+
-------
|
|
17
|
+
str
|
|
18
|
+
Timestamp string in format "YYYY-MMDD-HHMM"
|
|
19
|
+
|
|
20
|
+
Examples
|
|
21
|
+
--------
|
|
22
|
+
>>> timestamp = gen_timestamp()
|
|
23
|
+
>>> print(timestamp)
|
|
24
|
+
'2025-0531-1230'
|
|
25
|
+
|
|
26
|
+
>>> filename = f"experiment_{gen_timestamp()}.csv"
|
|
27
|
+
>>> print(filename)
|
|
28
|
+
'experiment_2025-0531-1230.csv'
|
|
29
|
+
"""
|
|
30
|
+
return _datetime.now().strftime("%Y-%m%d-%H%M")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
timestamp = gen_timestamp
|
|
34
|
+
|
|
35
|
+
# EOF
|
scitex/res/__init__.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Scitex resource module."""
|
|
3
|
+
|
|
4
|
+
from ._get_processor_usages import get_processor_usages
|
|
5
|
+
from ._get_specs import get_specs
|
|
6
|
+
from ._log_processor_usages import log_processor_usages, main
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"get_processor_usages",
|
|
10
|
+
"get_specs",
|
|
11
|
+
"log_processor_usages",
|
|
12
|
+
"main",
|
|
13
|
+
]
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-04 16:12:50 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/resource/_get_processor_usages.py
|
|
5
|
+
|
|
6
|
+
"""
|
|
7
|
+
Functionality:
|
|
8
|
+
* Monitors and records system resource utilization (CPU, RAM, GPU, VRAM)
|
|
9
|
+
Input:
|
|
10
|
+
* None (uses system calls and psutil library)
|
|
11
|
+
Output:
|
|
12
|
+
* DataFrame containing resource usage statistics
|
|
13
|
+
Prerequisites:
|
|
14
|
+
* NVIDIA GPU with nvidia-smi installed
|
|
15
|
+
* psutil package
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
import os
|
|
19
|
+
import subprocess
|
|
20
|
+
import sys
|
|
21
|
+
from datetime import datetime
|
|
22
|
+
from typing import Optional, Tuple
|
|
23
|
+
|
|
24
|
+
import matplotlib.pyplot as plt
|
|
25
|
+
import pandas as pd
|
|
26
|
+
import psutil
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_processor_usages() -> pd.DataFrame:
|
|
30
|
+
"""Gets current system resource usage statistics.
|
|
31
|
+
|
|
32
|
+
Returns
|
|
33
|
+
-------
|
|
34
|
+
pd.DataFrame
|
|
35
|
+
Resource usage data with columns:
|
|
36
|
+
- Timestamp: Timestamp
|
|
37
|
+
- CPU [%]: CPU utilization
|
|
38
|
+
- RAM [GiB]: RAM usage
|
|
39
|
+
- GPU [%]: GPU utilization
|
|
40
|
+
- VRAM [GiB]: VRAM usage
|
|
41
|
+
|
|
42
|
+
Example
|
|
43
|
+
-------
|
|
44
|
+
>>> df = get_proccessor_usages()
|
|
45
|
+
>>> print(df)
|
|
46
|
+
Timestamp CPU [%] RAM [GiB] GPU [%] VRAM [GiB]
|
|
47
|
+
0 2024-11-04 10:30:15 25.3 8.2 65.0 4.5
|
|
48
|
+
"""
|
|
49
|
+
try:
|
|
50
|
+
cpu_perc, ram_gb = _get_cpu_usage()
|
|
51
|
+
gpu_perc, vram_gb = _get_gpu_usage()
|
|
52
|
+
|
|
53
|
+
sr = pd.Series(
|
|
54
|
+
{
|
|
55
|
+
"Timestamp": datetime.now(),
|
|
56
|
+
"CPU [%]": cpu_perc,
|
|
57
|
+
"RAM [GiB]": ram_gb,
|
|
58
|
+
"GPU [%]": gpu_perc,
|
|
59
|
+
"VRAM [GiB]": vram_gb,
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
return pd.DataFrame(sr).round(1).T
|
|
64
|
+
except Exception as err:
|
|
65
|
+
raise RuntimeError(f"Failed to get resource usage: {err}")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _get_cpu_usage(
|
|
69
|
+
process: Optional[int] = os.getpid(), n_round: int = 1
|
|
70
|
+
) -> Tuple[float, float]:
|
|
71
|
+
"""Gets CPU and RAM usage statistics.
|
|
72
|
+
|
|
73
|
+
Parameters
|
|
74
|
+
----------
|
|
75
|
+
process : int, optional
|
|
76
|
+
Process ID to monitor
|
|
77
|
+
n_round : int, optional
|
|
78
|
+
Number of decimal places to round to
|
|
79
|
+
|
|
80
|
+
Returns
|
|
81
|
+
-------
|
|
82
|
+
Tuple[float, float]
|
|
83
|
+
CPU usage percentage and RAM usage in GiB
|
|
84
|
+
"""
|
|
85
|
+
try:
|
|
86
|
+
cpu_usage_perc = psutil.cpu_percent()
|
|
87
|
+
ram_usage_gb = (
|
|
88
|
+
psutil.virtual_memory().percent
|
|
89
|
+
/ 100
|
|
90
|
+
* psutil.virtual_memory().total
|
|
91
|
+
/ (1024**3)
|
|
92
|
+
)
|
|
93
|
+
return round(cpu_usage_perc, n_round), round(ram_usage_gb, n_round)
|
|
94
|
+
except Exception as err:
|
|
95
|
+
raise RuntimeError(f"Failed to get CPU/RAM usage: {err}")
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def _get_gpu_usage(n_round: int = 1) -> Tuple[float, float]:
|
|
99
|
+
"""Gets GPU and VRAM usage statistics.
|
|
100
|
+
|
|
101
|
+
Parameters
|
|
102
|
+
----------
|
|
103
|
+
n_round : int, optional
|
|
104
|
+
Number of decimal places to round to
|
|
105
|
+
|
|
106
|
+
Returns
|
|
107
|
+
-------
|
|
108
|
+
Tuple[float, float]
|
|
109
|
+
GPU usage percentage and VRAM usage in GiB
|
|
110
|
+
"""
|
|
111
|
+
try:
|
|
112
|
+
result = subprocess.run(
|
|
113
|
+
[
|
|
114
|
+
"nvidia-smi",
|
|
115
|
+
"--query-gpu=utilization.gpu,memory.used",
|
|
116
|
+
"--format=csv,nounits,noheader",
|
|
117
|
+
],
|
|
118
|
+
capture_output=True,
|
|
119
|
+
text=True,
|
|
120
|
+
check=True,
|
|
121
|
+
)
|
|
122
|
+
gpu_usage_perc, vram_usage_mib = result.stdout.strip().split(",")
|
|
123
|
+
vram_usage_gb = float(vram_usage_mib) / 1024
|
|
124
|
+
return round(float(gpu_usage_perc), n_round), round(vram_usage_gb, n_round)
|
|
125
|
+
except:
|
|
126
|
+
return 0.0, 0.0
|
|
127
|
+
# except subprocess.CalledProcessError as err:
|
|
128
|
+
# raise RuntimeError(f"Failed to execute nvidia-smi: {err}")
|
|
129
|
+
# except Exception as err:
|
|
130
|
+
# raise RuntimeError(f"Failed to get GPU/VRAM usage: {err}")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
# def _get_gpu_usage(n_round: int = 1) -> Tuple[float, float]:
|
|
134
|
+
# """Gets GPU and VRAM usage statistics.
|
|
135
|
+
|
|
136
|
+
# Parameters
|
|
137
|
+
# ----------
|
|
138
|
+
# n_round : int, optional
|
|
139
|
+
# Number of decimal places to round to
|
|
140
|
+
|
|
141
|
+
# Returns
|
|
142
|
+
# -------
|
|
143
|
+
# Tuple[float, float]
|
|
144
|
+
# GPU usage percentage and VRAM usage in GiB
|
|
145
|
+
# """
|
|
146
|
+
# try:
|
|
147
|
+
# result = subprocess.run(
|
|
148
|
+
# [
|
|
149
|
+
# "nvidia-smi",
|
|
150
|
+
# "--query-gpu=utilization.gpu,memory.used",
|
|
151
|
+
# "--format=csv,nounits,noheader",
|
|
152
|
+
# ],
|
|
153
|
+
# capture_output=True,
|
|
154
|
+
# text=True,
|
|
155
|
+
# check=True,
|
|
156
|
+
# )
|
|
157
|
+
# gpu_usage_perc, vram_usage_mib = result.stdout.strip().split(",")
|
|
158
|
+
# vram_usage_gb = float(vram_usage_mib) / 1024
|
|
159
|
+
# return round(float(gpu_usage_perc), n_round), round(vram_usage_gb, n_round)
|
|
160
|
+
# except Exception as e:
|
|
161
|
+
# print(e)
|
|
162
|
+
# return 0.0, 0.0 # Return zeros when nvidia-smi is not available
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
if __name__ == "__main__":
|
|
166
|
+
import scitex
|
|
167
|
+
|
|
168
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(sys, plt, verbose=False)
|
|
169
|
+
|
|
170
|
+
usage = scitex.resource.get_processor_usages()
|
|
171
|
+
scitex.io.save(usage, "usage.csv")
|
|
172
|
+
|
|
173
|
+
scitex.gen.close(CONFIG, verbose=False, notify=False)
|
|
174
|
+
|
|
175
|
+
# EOF
|
|
176
|
+
|
|
177
|
+
# #!/usr/bin/env python3
|
|
178
|
+
# # -*- coding: utf-8 -*-
|
|
179
|
+
# # Time-stamp: "2024-11-04 10:27:35 (ywatanabe)"
|
|
180
|
+
# # File: ./scitex_repo/src/scitex/resource/_get_processor_usages.py
|
|
181
|
+
|
|
182
|
+
# """
|
|
183
|
+
# This script does XYZ.
|
|
184
|
+
# """
|
|
185
|
+
|
|
186
|
+
# # Functions
|
|
187
|
+
# import os
|
|
188
|
+
# import subprocess
|
|
189
|
+
# import sys
|
|
190
|
+
# from datetime import datetime
|
|
191
|
+
|
|
192
|
+
# import matplotlib.pyplot as plt
|
|
193
|
+
# import scitex
|
|
194
|
+
# import pandas as pd
|
|
195
|
+
# import psutil
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
# # Functions
|
|
199
|
+
# def get_processor_usages():
|
|
200
|
+
# """
|
|
201
|
+
# Retrieves the current usage statistics for the CPU, RAM, GPU, and VRAM.
|
|
202
|
+
|
|
203
|
+
# This function fetches the current usage percentages for the CPU and GPU, as well as the current usage in GiB for RAM and VRAM.
|
|
204
|
+
# The data is then compiled into a pandas DataFrame with the current timestamp.
|
|
205
|
+
|
|
206
|
+
# Returns:
|
|
207
|
+
# pd.DataFrame: A pandas DataFrame containing the current usage statistics with the following columns:
|
|
208
|
+
# - Time: The timestamp when the data was retrieved.
|
|
209
|
+
# - CPU [%]: The CPU usage percentage.
|
|
210
|
+
# - RAM [GiB]: The RAM usage in GiB.
|
|
211
|
+
# - GPU [%]: The GPU usage percentage.
|
|
212
|
+
# - VRAM [GiB]: The VRAM usage in GiB.
|
|
213
|
+
# Each row in the DataFrame represents a single instance of data retrieval, rounded to 1 decimal place.
|
|
214
|
+
|
|
215
|
+
# Example:
|
|
216
|
+
# >>> usage_df = get_processor_usages()
|
|
217
|
+
# >>> print(usage_df)
|
|
218
|
+
# """
|
|
219
|
+
# cpu_perc, ram_gb = _get_cpu_usage()
|
|
220
|
+
# gpu_perc, vram_gb = _get_gpu_usage()
|
|
221
|
+
|
|
222
|
+
# sr = pd.Series(
|
|
223
|
+
# {
|
|
224
|
+
# "Time": datetime.now(),
|
|
225
|
+
# "CPU [%]": cpu_perc,
|
|
226
|
+
# "RAM [GiB]": ram_gb,
|
|
227
|
+
# "GPU [%]": gpu_perc,
|
|
228
|
+
# "VRAM [GiB]": vram_gb,
|
|
229
|
+
# }
|
|
230
|
+
# )
|
|
231
|
+
|
|
232
|
+
# df = pd.DataFrame(sr).round(1).T
|
|
233
|
+
|
|
234
|
+
# return df
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
# def _get_cpu_usage(process=os.getpid(), n_round=1):
|
|
238
|
+
# cpu_usage_perc = psutil.cpu_percent()
|
|
239
|
+
# ram_usage_gb = (
|
|
240
|
+
# psutil.virtual_memory().percent
|
|
241
|
+
# / 100
|
|
242
|
+
# * psutil.virtual_memory().total
|
|
243
|
+
# / (1024**3)
|
|
244
|
+
# )
|
|
245
|
+
# return round(cpu_usage_perc, n_round), round(ram_usage_gb, n_round)
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
# def _get_gpu_usage(n_round=1):
|
|
249
|
+
# result = subprocess.run(
|
|
250
|
+
# [
|
|
251
|
+
# "nvidia-smi",
|
|
252
|
+
# "--query-gpu=utilization.gpu,memory.used",
|
|
253
|
+
# "--format=csv,nounits,noheader",
|
|
254
|
+
# ],
|
|
255
|
+
# capture_output=True,
|
|
256
|
+
# text=True,
|
|
257
|
+
# )
|
|
258
|
+
# gpu_usage_perc, _vram_usage_mib = result.stdout.strip().split(",")
|
|
259
|
+
# vram_usage_gb = float(_vram_usage_mib) / 1024
|
|
260
|
+
# return round(float(gpu_usage_perc), n_round), round(
|
|
261
|
+
# float(vram_usage_gb), n_round
|
|
262
|
+
# )
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
# # (YOUR AWESOME CODE)
|
|
266
|
+
|
|
267
|
+
# if __name__ == "__main__":
|
|
268
|
+
# # Start
|
|
269
|
+
# CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.gen.start(
|
|
270
|
+
# sys, plt, verbose=False
|
|
271
|
+
# )
|
|
272
|
+
|
|
273
|
+
# usage = scitex.resource.get_processor_usages()
|
|
274
|
+
# scitex.io.save(usage, "usage.csv")
|
|
275
|
+
|
|
276
|
+
# # Close
|
|
277
|
+
# scitex.gen.close(CONFIG, verbose=False, notify=False)
|
|
278
|
+
|
|
279
|
+
#
|
|
280
|
+
|
|
281
|
+
# EOF
|