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,81 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-25 01:45:48 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_BaseMixins/_BaseBlobMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_BaseMixins/_BaseBlobMixin.py"
|
|
7
|
+
|
|
8
|
+
from abc import ABC, abstractmethod
|
|
9
|
+
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
10
|
+
import numpy as np
|
|
11
|
+
import pandas as pd
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class _BaseBlobMixin(ABC):
|
|
15
|
+
"""Base class for BLOB data handling functionality"""
|
|
16
|
+
|
|
17
|
+
@abstractmethod
|
|
18
|
+
def save_array(
|
|
19
|
+
self,
|
|
20
|
+
table_name: str,
|
|
21
|
+
data: np.ndarray,
|
|
22
|
+
column: str = "data",
|
|
23
|
+
ids: Optional[Union[int, List[int]]] = None,
|
|
24
|
+
where: str = None,
|
|
25
|
+
additional_columns: Dict[str, Any] = None,
|
|
26
|
+
batch_size: int = 1000,
|
|
27
|
+
) -> None:
|
|
28
|
+
"""Save numpy array(s) to database"""
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
@abstractmethod
|
|
32
|
+
def load_array(
|
|
33
|
+
self,
|
|
34
|
+
table_name: str,
|
|
35
|
+
column: str,
|
|
36
|
+
ids: Union[int, List[int], str] = "all",
|
|
37
|
+
where: str = None,
|
|
38
|
+
order_by: str = None,
|
|
39
|
+
batch_size: int = 128,
|
|
40
|
+
dtype: np.dtype = None,
|
|
41
|
+
shape: Optional[Tuple] = None,
|
|
42
|
+
) -> Optional[np.ndarray]:
|
|
43
|
+
"""Load numpy array(s) from database"""
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
@abstractmethod
|
|
47
|
+
def binary_to_array(
|
|
48
|
+
self,
|
|
49
|
+
binary_data,
|
|
50
|
+
dtype_str=None,
|
|
51
|
+
shape_str=None,
|
|
52
|
+
dtype=None,
|
|
53
|
+
shape=None,
|
|
54
|
+
) -> Optional[np.ndarray]:
|
|
55
|
+
"""Convert binary data to numpy array"""
|
|
56
|
+
pass
|
|
57
|
+
|
|
58
|
+
@abstractmethod
|
|
59
|
+
def get_array_dict(
|
|
60
|
+
self,
|
|
61
|
+
df: pd.DataFrame,
|
|
62
|
+
columns: Optional[List[str]] = None,
|
|
63
|
+
dtype: Optional[np.dtype] = None,
|
|
64
|
+
shape: Optional[Tuple] = None,
|
|
65
|
+
) -> Dict[str, np.ndarray]:
|
|
66
|
+
"""Convert DataFrame columns to dictionary of arrays"""
|
|
67
|
+
pass
|
|
68
|
+
|
|
69
|
+
@abstractmethod
|
|
70
|
+
def decode_array_columns(
|
|
71
|
+
self,
|
|
72
|
+
df: pd.DataFrame,
|
|
73
|
+
columns: Optional[List[str]] = None,
|
|
74
|
+
dtype: Optional[np.dtype] = None,
|
|
75
|
+
shape: Optional[Tuple] = None,
|
|
76
|
+
) -> pd.DataFrame:
|
|
77
|
+
"""Decode binary columns in DataFrame to numpy arrays"""
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
# EOF
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-25 06:02:43 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_BaseMixins/_BaseConnectionMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = (
|
|
7
|
+
"/home/ywatanabe/proj/scitex_repo/src/scitex/db/_BaseMixins/_BaseConnectionMixin.py"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
import threading
|
|
11
|
+
from typing import Optional
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class _BaseConnectionMixin:
|
|
15
|
+
def __init__(self):
|
|
16
|
+
self.lock = threading.Lock()
|
|
17
|
+
self._maintenance_lock = threading.Lock()
|
|
18
|
+
self.conn = None
|
|
19
|
+
self.cursor = None
|
|
20
|
+
|
|
21
|
+
def __enter__(self):
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
25
|
+
self.close()
|
|
26
|
+
|
|
27
|
+
def connect(self):
|
|
28
|
+
raise NotImplementedError
|
|
29
|
+
|
|
30
|
+
def close(self):
|
|
31
|
+
raise NotImplementedError
|
|
32
|
+
|
|
33
|
+
def reconnect(self):
|
|
34
|
+
raise NotImplementedError
|
|
35
|
+
|
|
36
|
+
def execute(self, query: str, parameters=()) -> None:
|
|
37
|
+
raise NotImplementedError
|
|
38
|
+
|
|
39
|
+
def executemany(self, query: str, parameters) -> None:
|
|
40
|
+
raise NotImplementedError
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# EOF
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:20:15 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseImportExportMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = (
|
|
7
|
+
"/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseImportExportMixin.py"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
#!/usr/bin/env python3
|
|
12
|
+
# -*- coding: utf-8 -*-
|
|
13
|
+
|
|
14
|
+
from typing import List
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class _BaseImportExportMixin:
|
|
18
|
+
def load_from_csv(
|
|
19
|
+
self,
|
|
20
|
+
table_name: str,
|
|
21
|
+
csv_path: str,
|
|
22
|
+
if_exists: str = "append",
|
|
23
|
+
batch_size: int = 10_000,
|
|
24
|
+
chunk_size: int = 100_000,
|
|
25
|
+
) -> None:
|
|
26
|
+
raise NotImplementedError
|
|
27
|
+
|
|
28
|
+
def save_to_csv(
|
|
29
|
+
self,
|
|
30
|
+
table_name: str,
|
|
31
|
+
output_path: str,
|
|
32
|
+
columns: List[str] = ["*"],
|
|
33
|
+
where: str = None,
|
|
34
|
+
batch_size: int = 10_000,
|
|
35
|
+
) -> None:
|
|
36
|
+
raise NotImplementedError
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# EOF
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:20:26 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseIndexMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseIndexMixin.py"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#!/usr/bin/env python3
|
|
10
|
+
# -*- coding: utf-8 -*-
|
|
11
|
+
|
|
12
|
+
from typing import List
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class _BaseIndexMixin:
|
|
16
|
+
def create_index(
|
|
17
|
+
self,
|
|
18
|
+
table_name: str,
|
|
19
|
+
column_names: List[str],
|
|
20
|
+
index_name: str = None,
|
|
21
|
+
unique: bool = False,
|
|
22
|
+
) -> None:
|
|
23
|
+
raise NotImplementedError
|
|
24
|
+
|
|
25
|
+
def drop_index(self, index_name: str) -> None:
|
|
26
|
+
raise NotImplementedError
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# EOF
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:12:07 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseMaintenanceMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = (
|
|
7
|
+
"/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseMaintenanceMixin.py"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from typing import Optional, List, Dict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class _BaseMaintenanceMixin:
|
|
14
|
+
def vacuum(self, table: Optional[str] = None):
|
|
15
|
+
raise NotImplementedError
|
|
16
|
+
|
|
17
|
+
def analyze(self, table: Optional[str] = None):
|
|
18
|
+
raise NotImplementedError
|
|
19
|
+
|
|
20
|
+
def reindex(self, table: Optional[str] = None):
|
|
21
|
+
raise NotImplementedError
|
|
22
|
+
|
|
23
|
+
def get_table_size(self, table: str):
|
|
24
|
+
raise NotImplementedError
|
|
25
|
+
|
|
26
|
+
def get_database_size(self):
|
|
27
|
+
raise NotImplementedError
|
|
28
|
+
|
|
29
|
+
def get_table_info(self) -> List[Dict]:
|
|
30
|
+
raise NotImplementedError
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# EOF
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:17:03 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseQueryMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseQueryMixin.py"
|
|
7
|
+
|
|
8
|
+
#!/usr/bin/env python3
|
|
9
|
+
# -*- coding: utf-8 -*-
|
|
10
|
+
|
|
11
|
+
from typing import List, Dict, Any, Optional, Union, Tuple
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class _BaseQueryMixin:
|
|
15
|
+
def select(
|
|
16
|
+
self,
|
|
17
|
+
table: str,
|
|
18
|
+
columns: Optional[List[str]] = None,
|
|
19
|
+
where: Optional[str] = None,
|
|
20
|
+
params: Optional[tuple] = None,
|
|
21
|
+
order_by: Optional[str] = None,
|
|
22
|
+
limit: Optional[int] = None,
|
|
23
|
+
) -> List[Dict[str, Any]]:
|
|
24
|
+
raise NotImplementedError
|
|
25
|
+
|
|
26
|
+
def insert(self, table: str, data: Dict[str, Any]) -> None:
|
|
27
|
+
raise NotImplementedError
|
|
28
|
+
|
|
29
|
+
def update(
|
|
30
|
+
self,
|
|
31
|
+
table: str,
|
|
32
|
+
data: Dict[str, Any],
|
|
33
|
+
where: str,
|
|
34
|
+
params: Optional[tuple] = None,
|
|
35
|
+
) -> int:
|
|
36
|
+
raise NotImplementedError
|
|
37
|
+
|
|
38
|
+
def delete(self, table: str, where: str, params: Optional[tuple] = None) -> int:
|
|
39
|
+
raise NotImplementedError
|
|
40
|
+
|
|
41
|
+
def execute_query(
|
|
42
|
+
self, query: str, params: Optional[tuple] = None
|
|
43
|
+
) -> List[Dict[str, Any]]:
|
|
44
|
+
raise NotImplementedError
|
|
45
|
+
|
|
46
|
+
def count(
|
|
47
|
+
self, table: str, where: Optional[str] = None, params: Optional[tuple] = None
|
|
48
|
+
) -> int:
|
|
49
|
+
raise NotImplementedError
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# EOF
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:21:03 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseRowMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseRowMixin.py"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#!/usr/bin/env python3
|
|
10
|
+
# -*- coding: utf-8 -*-
|
|
11
|
+
|
|
12
|
+
from typing import List, Optional
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class _BaseRowMixin:
|
|
16
|
+
def get_rows(
|
|
17
|
+
self,
|
|
18
|
+
table_name: str,
|
|
19
|
+
columns: List[str] = None,
|
|
20
|
+
where: str = None,
|
|
21
|
+
order_by: str = None,
|
|
22
|
+
limit: Optional[int] = None,
|
|
23
|
+
offset: Optional[int] = None,
|
|
24
|
+
return_as: str = "dataframe",
|
|
25
|
+
):
|
|
26
|
+
raise NotImplementedError
|
|
27
|
+
|
|
28
|
+
def get_row_count(self, table_name: str = None, where: str = None) -> int:
|
|
29
|
+
raise NotImplementedError
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# EOF
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:14:24 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseSchemaMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = (
|
|
7
|
+
"/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseSchemaMixin.py"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from typing import List, Dict, Any, Optional
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class _BaseSchemaMixin:
|
|
14
|
+
def get_tables(self) -> List[str]:
|
|
15
|
+
raise NotImplementedError
|
|
16
|
+
|
|
17
|
+
def get_columns(self, table: str) -> List[Dict[str, Any]]:
|
|
18
|
+
raise NotImplementedError
|
|
19
|
+
|
|
20
|
+
def get_primary_keys(self, table: str) -> List[str]:
|
|
21
|
+
raise NotImplementedError
|
|
22
|
+
|
|
23
|
+
def get_foreign_keys(self, table: str) -> List[Dict[str, Any]]:
|
|
24
|
+
raise NotImplementedError
|
|
25
|
+
|
|
26
|
+
def get_indexes(self, table: str) -> List[Dict[str, Any]]:
|
|
27
|
+
raise NotImplementedError
|
|
28
|
+
|
|
29
|
+
def table_exists(self, table: str) -> bool:
|
|
30
|
+
raise NotImplementedError
|
|
31
|
+
|
|
32
|
+
def column_exists(self, table: str, column: str) -> bool:
|
|
33
|
+
raise NotImplementedError
|
|
34
|
+
|
|
35
|
+
def create_index(
|
|
36
|
+
self, table: str, columns: List[str], index_name: Optional[str] = None
|
|
37
|
+
) -> None:
|
|
38
|
+
raise NotImplementedError
|
|
39
|
+
|
|
40
|
+
def drop_index(self, index_name: str) -> None:
|
|
41
|
+
raise NotImplementedError
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# EOF
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:21:17 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseTableMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseTableMixin.py"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#!/usr/bin/env python3
|
|
10
|
+
# -*- coding: utf-8 -*-
|
|
11
|
+
|
|
12
|
+
from typing import Any, Dict, List, Union
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class _BaseTableMixin:
|
|
16
|
+
def create_table(
|
|
17
|
+
self,
|
|
18
|
+
table_name: str,
|
|
19
|
+
columns: Dict[str, str],
|
|
20
|
+
foreign_keys: List[Dict[str, str]] = None,
|
|
21
|
+
if_not_exists: bool = True,
|
|
22
|
+
) -> None:
|
|
23
|
+
raise NotImplementedError
|
|
24
|
+
|
|
25
|
+
def drop_table(self, table_name: str, if_exists: bool = True) -> None:
|
|
26
|
+
raise NotImplementedError
|
|
27
|
+
|
|
28
|
+
def rename_table(self, old_name: str, new_name: str) -> None:
|
|
29
|
+
raise NotImplementedError
|
|
30
|
+
|
|
31
|
+
def add_columns(
|
|
32
|
+
self,
|
|
33
|
+
table_name: str,
|
|
34
|
+
columns: Dict[str, str],
|
|
35
|
+
default_values: Dict[str, Any] = None,
|
|
36
|
+
) -> None:
|
|
37
|
+
raise NotImplementedError
|
|
38
|
+
|
|
39
|
+
def add_column(
|
|
40
|
+
self,
|
|
41
|
+
table_name: str,
|
|
42
|
+
column_name: str,
|
|
43
|
+
column_type: str,
|
|
44
|
+
default_value: Any = None,
|
|
45
|
+
) -> None:
|
|
46
|
+
raise NotImplementedError
|
|
47
|
+
|
|
48
|
+
def drop_columns(
|
|
49
|
+
self, table_name: str, columns: Union[str, List[str]], if_exists: bool = True
|
|
50
|
+
) -> None:
|
|
51
|
+
raise NotImplementedError
|
|
52
|
+
|
|
53
|
+
def get_table_names(self) -> List[str]:
|
|
54
|
+
raise NotImplementedError
|
|
55
|
+
|
|
56
|
+
def get_table_schema(self, table_name: str):
|
|
57
|
+
raise NotImplementedError
|
|
58
|
+
|
|
59
|
+
def get_primary_key(self, table_name: str) -> str:
|
|
60
|
+
raise NotImplementedError
|
|
61
|
+
|
|
62
|
+
def get_table_stats(self, table_name: str) -> Dict[str, int]:
|
|
63
|
+
raise NotImplementedError
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# EOF
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-24 22:08:33 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseTransactionMixin.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = (
|
|
7
|
+
"/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseTransactionMixin.py"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
#!/usr/bin/env python3
|
|
12
|
+
# -*- coding: utf-8 -*-
|
|
13
|
+
|
|
14
|
+
import contextlib
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class _BaseTransactionMixin:
|
|
18
|
+
@contextlib.contextmanager
|
|
19
|
+
def transaction(self):
|
|
20
|
+
try:
|
|
21
|
+
self.begin()
|
|
22
|
+
yield
|
|
23
|
+
self.commit()
|
|
24
|
+
except Exception as e:
|
|
25
|
+
self.rollback()
|
|
26
|
+
raise e
|
|
27
|
+
|
|
28
|
+
def begin(self):
|
|
29
|
+
raise NotImplementedError
|
|
30
|
+
|
|
31
|
+
def commit(self):
|
|
32
|
+
raise NotImplementedError
|
|
33
|
+
|
|
34
|
+
def rollback(self):
|
|
35
|
+
raise NotImplementedError
|
|
36
|
+
|
|
37
|
+
def enable_foreign_keys(self):
|
|
38
|
+
raise NotImplementedError
|
|
39
|
+
|
|
40
|
+
def disable_foreign_keys(self):
|
|
41
|
+
raise NotImplementedError
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def writable(self):
|
|
45
|
+
raise NotImplementedError
|
|
46
|
+
|
|
47
|
+
@writable.setter
|
|
48
|
+
def writable(self, state: bool):
|
|
49
|
+
raise NotImplementedError
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
# EOF
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Base mixins for database functionality."""
|
|
3
|
+
|
|
4
|
+
from ._BaseBackupMixin import _BaseBackupMixin
|
|
5
|
+
from ._BaseBatchMixin import _BaseBatchMixin
|
|
6
|
+
from ._BaseBlobMixin import _BaseBlobMixin
|
|
7
|
+
from ._BaseConnectionMixin import _BaseConnectionMixin
|
|
8
|
+
from ._BaseImportExportMixin import _BaseImportExportMixin
|
|
9
|
+
from ._BaseIndexMixin import _BaseIndexMixin
|
|
10
|
+
from ._BaseMaintenanceMixin import _BaseMaintenanceMixin
|
|
11
|
+
from ._BaseQueryMixin import _BaseQueryMixin
|
|
12
|
+
from ._BaseRowMixin import _BaseRowMixin
|
|
13
|
+
from ._BaseSchemaMixin import _BaseSchemaMixin
|
|
14
|
+
from ._BaseTableMixin import _BaseTableMixin
|
|
15
|
+
from ._BaseTransactionMixin import _BaseTransactionMixin
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"_BaseBackupMixin",
|
|
19
|
+
"_BaseBatchMixin",
|
|
20
|
+
"_BaseBlobMixin",
|
|
21
|
+
"_BaseConnectionMixin",
|
|
22
|
+
"_BaseImportExportMixin",
|
|
23
|
+
"_BaseIndexMixin",
|
|
24
|
+
"_BaseMaintenanceMixin",
|
|
25
|
+
"_BaseQueryMixin",
|
|
26
|
+
"_BaseRowMixin",
|
|
27
|
+
"_BaseSchemaMixin",
|
|
28
|
+
"_BaseTableMixin",
|
|
29
|
+
"_BaseTransactionMixin",
|
|
30
|
+
]
|
scitex/db/_PostgreSQL.py
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-25 02:00:06 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/db/_PostgreSQL.py
|
|
5
|
+
|
|
6
|
+
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_PostgreSQL.py"
|
|
7
|
+
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
from ..str import printc as _printc
|
|
11
|
+
from typing import Optional
|
|
12
|
+
import psycopg2
|
|
13
|
+
from ._PostgreSQLMixins._BackupMixin import _BackupMixin
|
|
14
|
+
from ._PostgreSQLMixins._BatchMixin import _BatchMixin
|
|
15
|
+
from ._PostgreSQLMixins._ConnectionMixin import _ConnectionMixin
|
|
16
|
+
from ._PostgreSQLMixins._ImportExportMixin import _ImportExportMixin
|
|
17
|
+
from ._PostgreSQLMixins._IndexMixin import _IndexMixin
|
|
18
|
+
from ._PostgreSQLMixins._MaintenanceMixin import _MaintenanceMixin
|
|
19
|
+
from ._PostgreSQLMixins._QueryMixin import _QueryMixin
|
|
20
|
+
from ._PostgreSQLMixins._RowMixin import _RowMixin
|
|
21
|
+
from ._PostgreSQLMixins._SchemaMixin import _SchemaMixin
|
|
22
|
+
from ._PostgreSQLMixins._TableMixin import _TableMixin
|
|
23
|
+
from ._PostgreSQLMixins._TransactionMixin import _TransactionMixin
|
|
24
|
+
from ._PostgreSQLMixins._BlobMixin import _BlobMixin
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class PostgreSQL(
|
|
28
|
+
_BackupMixin,
|
|
29
|
+
_BatchMixin,
|
|
30
|
+
_ConnectionMixin,
|
|
31
|
+
_ImportExportMixin,
|
|
32
|
+
_IndexMixin,
|
|
33
|
+
_MaintenanceMixin,
|
|
34
|
+
_QueryMixin,
|
|
35
|
+
_RowMixin,
|
|
36
|
+
_SchemaMixin,
|
|
37
|
+
_TableMixin,
|
|
38
|
+
_TransactionMixin,
|
|
39
|
+
_BlobMixin,
|
|
40
|
+
):
|
|
41
|
+
|
|
42
|
+
def __init__(
|
|
43
|
+
self,
|
|
44
|
+
dbname: Optional[str] = None,
|
|
45
|
+
user: str = None,
|
|
46
|
+
password: str = None,
|
|
47
|
+
host: str = "localhost",
|
|
48
|
+
port: int = 5432,
|
|
49
|
+
):
|
|
50
|
+
super().__init__(
|
|
51
|
+
dbname=dbname, user=user, password=password, host=host, port=port
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
def __call__(
|
|
55
|
+
self,
|
|
56
|
+
return_summary=False,
|
|
57
|
+
print_summary=True,
|
|
58
|
+
table_names: Optional[List[str]] = None,
|
|
59
|
+
verbose: bool = True,
|
|
60
|
+
limit: int = 5,
|
|
61
|
+
):
|
|
62
|
+
"""Display or return database summary."""
|
|
63
|
+
summary = self.get_summaries(
|
|
64
|
+
table_names=table_names,
|
|
65
|
+
verbose=verbose,
|
|
66
|
+
limit=limit,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
if print_summary:
|
|
70
|
+
for k, v in summary.items():
|
|
71
|
+
_printc(f"{k}\n{v}")
|
|
72
|
+
|
|
73
|
+
if return_summary:
|
|
74
|
+
return summary
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def summary(self):
|
|
78
|
+
"""Property to quickly access database summary."""
|
|
79
|
+
self()
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
# class BaseSQLiteDB(
|
|
83
|
+
# _ConnectionMixin,
|
|
84
|
+
# _QueryMixin,
|
|
85
|
+
# _TransactionMixin,
|
|
86
|
+
# _TableMixin,
|
|
87
|
+
# _IndexMixin,
|
|
88
|
+
# _RowMixin,
|
|
89
|
+
# _BatchMixin,
|
|
90
|
+
# _BlobMixin,
|
|
91
|
+
# _ImportExportMixin,
|
|
92
|
+
# _MaintenanceMixin,
|
|
93
|
+
# ):
|
|
94
|
+
# """Comprehensive SQLite database management class."""
|
|
95
|
+
|
|
96
|
+
# def __init__(self, db_path: str, use_temp: bool = False):
|
|
97
|
+
# """Initializes database with option for temporary copy."""
|
|
98
|
+
# _ConnectionMixin.__init__(self, db_path, use_temp)
|
|
99
|
+
|
|
100
|
+
# def __call__(
|
|
101
|
+
# self,
|
|
102
|
+
# return_summary=False,
|
|
103
|
+
# print_summary=True,
|
|
104
|
+
# table_names: Optional[List[str]] = None,
|
|
105
|
+
# verbose: bool = True,
|
|
106
|
+
# limit: int = 5,
|
|
107
|
+
# ):
|
|
108
|
+
# summary = self.get_summaries(
|
|
109
|
+
# table_names=table_names,
|
|
110
|
+
# verbose=verbose,
|
|
111
|
+
# limit=limit,
|
|
112
|
+
# )
|
|
113
|
+
|
|
114
|
+
# if print_summary:
|
|
115
|
+
# for k, v in summary.items():
|
|
116
|
+
# _printc(f"{k}\n{v}")
|
|
117
|
+
|
|
118
|
+
# if return_summary:
|
|
119
|
+
# return summary
|
|
120
|
+
|
|
121
|
+
# @property
|
|
122
|
+
# def summary(self):
|
|
123
|
+
# self()
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
# EOF
|