scitex 2.0.0__py2.py3-none-any.whl → 2.1.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 +53 -15
- scitex/__main__.py +72 -26
- scitex/__version__.py +1 -1
- scitex/_sh.py +145 -23
- scitex/ai/__init__.py +30 -16
- scitex/ai/_gen_ai/_Anthropic.py +5 -7
- scitex/ai/_gen_ai/_BaseGenAI.py +2 -2
- scitex/ai/_gen_ai/_DeepSeek.py +10 -2
- scitex/ai/_gen_ai/_Google.py +2 -2
- scitex/ai/_gen_ai/_Llama.py +2 -2
- scitex/ai/_gen_ai/_OpenAI.py +2 -2
- scitex/ai/_gen_ai/_PARAMS.py +51 -65
- scitex/ai/_gen_ai/_Perplexity.py +2 -2
- scitex/ai/_gen_ai/__init__.py +25 -14
- scitex/ai/_gen_ai/_format_output_func.py +4 -4
- scitex/ai/classification/{classifier_server.py → Classifier.py} +5 -5
- scitex/ai/classification/CrossValidationExperiment.py +374 -0
- scitex/ai/classification/__init__.py +43 -4
- scitex/ai/classification/reporters/_BaseClassificationReporter.py +281 -0
- scitex/ai/classification/reporters/_ClassificationReporter.py +773 -0
- scitex/ai/classification/reporters/_MultiClassificationReporter.py +406 -0
- scitex/ai/classification/reporters/_SingleClassificationReporter.py +1834 -0
- scitex/ai/classification/reporters/__init__.py +11 -0
- scitex/ai/classification/reporters/reporter_utils/_Plotter.py +1028 -0
- scitex/ai/classification/reporters/reporter_utils/__init__.py +80 -0
- scitex/ai/classification/reporters/reporter_utils/aggregation.py +457 -0
- scitex/ai/classification/reporters/reporter_utils/data_models.py +313 -0
- scitex/ai/classification/reporters/reporter_utils/reporting.py +1056 -0
- scitex/ai/classification/reporters/reporter_utils/storage.py +221 -0
- scitex/ai/classification/reporters/reporter_utils/validation.py +395 -0
- scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +568 -0
- scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +688 -0
- scitex/ai/classification/timeseries/_TimeSeriesMetadata.py +139 -0
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +1716 -0
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +1685 -0
- scitex/ai/classification/timeseries/_TimeSeriesStrategy.py +84 -0
- scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +610 -0
- scitex/ai/classification/timeseries/__init__.py +39 -0
- scitex/ai/classification/timeseries/_normalize_timestamp.py +436 -0
- scitex/ai/clustering/_umap.py +2 -2
- scitex/ai/feature_extraction/vit.py +1 -0
- scitex/ai/feature_selection/__init__.py +30 -0
- scitex/ai/feature_selection/feature_selection.py +364 -0
- scitex/ai/loss/multi_task_loss.py +1 -1
- scitex/ai/metrics/__init__.py +51 -4
- scitex/ai/metrics/_calc_bacc.py +61 -0
- scitex/ai/metrics/_calc_bacc_from_conf_mat.py +38 -0
- scitex/ai/metrics/_calc_clf_report.py +78 -0
- scitex/ai/metrics/_calc_conf_mat.py +93 -0
- scitex/ai/metrics/_calc_feature_importance.py +183 -0
- scitex/ai/metrics/_calc_mcc.py +61 -0
- scitex/ai/metrics/_calc_pre_rec_auc.py +116 -0
- scitex/ai/metrics/_calc_roc_auc.py +110 -0
- scitex/ai/metrics/_calc_seizure_prediction_metrics.py +490 -0
- scitex/ai/metrics/{silhoute_score_block.py → _calc_silhouette_score.py} +15 -8
- scitex/ai/metrics/_normalize_labels.py +83 -0
- scitex/ai/plt/__init__.py +47 -8
- scitex/ai/plt/{_conf_mat.py → _plot_conf_mat.py} +158 -87
- scitex/ai/plt/_plot_feature_importance.py +323 -0
- scitex/ai/plt/_plot_learning_curve.py +345 -0
- scitex/ai/plt/_plot_optuna_study.py +225 -0
- scitex/ai/plt/_plot_pre_rec_curve.py +290 -0
- scitex/ai/plt/_plot_roc_curve.py +255 -0
- scitex/ai/training/{learning_curve_logger.py → _LearningCurveLogger.py} +197 -213
- scitex/ai/training/__init__.py +2 -2
- scitex/ai/utils/grid_search.py +3 -3
- scitex/benchmark/__init__.py +52 -0
- scitex/benchmark/benchmark.py +400 -0
- scitex/benchmark/monitor.py +370 -0
- scitex/benchmark/profiler.py +297 -0
- scitex/browser/__init__.py +48 -0
- scitex/browser/automation/CookieHandler.py +216 -0
- scitex/browser/automation/__init__.py +7 -0
- scitex/browser/collaboration/__init__.py +55 -0
- scitex/browser/collaboration/auth_helpers.py +94 -0
- scitex/browser/collaboration/collaborative_agent.py +136 -0
- scitex/browser/collaboration/credential_manager.py +188 -0
- scitex/browser/collaboration/interactive_panel.py +400 -0
- scitex/browser/collaboration/persistent_browser.py +170 -0
- scitex/browser/collaboration/shared_session.py +383 -0
- scitex/browser/collaboration/standard_interactions.py +246 -0
- scitex/browser/collaboration/visual_feedback.py +181 -0
- scitex/browser/core/BrowserMixin.py +326 -0
- scitex/browser/core/ChromeProfileManager.py +446 -0
- scitex/browser/core/__init__.py +9 -0
- scitex/browser/debugging/__init__.py +18 -0
- scitex/browser/debugging/_browser_logger.py +657 -0
- scitex/browser/debugging/_highlight_element.py +143 -0
- scitex/browser/debugging/_show_grid.py +154 -0
- scitex/browser/interaction/__init__.py +24 -0
- scitex/browser/interaction/click_center.py +149 -0
- scitex/browser/interaction/click_with_fallbacks.py +206 -0
- scitex/browser/interaction/close_popups.py +498 -0
- scitex/browser/interaction/fill_with_fallbacks.py +209 -0
- scitex/browser/pdf/__init__.py +14 -0
- scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +200 -0
- scitex/browser/pdf/detect_chrome_pdf_viewer.py +198 -0
- scitex/browser/remote/CaptchaHandler.py +434 -0
- scitex/browser/remote/ZenRowsAPIClient.py +347 -0
- scitex/browser/remote/ZenRowsBrowserManager.py +570 -0
- scitex/browser/remote/__init__.py +11 -0
- scitex/browser/stealth/HumanBehavior.py +344 -0
- scitex/browser/stealth/StealthManager.py +1008 -0
- scitex/browser/stealth/__init__.py +9 -0
- scitex/browser/template.py +122 -0
- scitex/capture/__init__.py +110 -0
- scitex/capture/__main__.py +25 -0
- scitex/capture/capture.py +848 -0
- scitex/capture/cli.py +233 -0
- scitex/capture/gif.py +344 -0
- scitex/capture/mcp_server.py +961 -0
- scitex/capture/session.py +70 -0
- scitex/capture/utils.py +705 -0
- scitex/cli/__init__.py +17 -0
- scitex/cli/cloud.py +447 -0
- scitex/cli/main.py +42 -0
- scitex/cli/scholar.py +280 -0
- scitex/context/_suppress_output.py +5 -3
- scitex/db/__init__.py +30 -3
- scitex/db/__main__.py +75 -0
- scitex/db/_check_health.py +381 -0
- scitex/db/_delete_duplicates.py +25 -386
- scitex/db/_inspect.py +335 -114
- scitex/db/_inspect_optimized.py +301 -0
- scitex/db/{_PostgreSQL.py → _postgresql/_PostgreSQL.py} +3 -3
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_BackupMixin.py +1 -1
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_BatchMixin.py +1 -1
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_BlobMixin.py +1 -1
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_ConnectionMixin.py +1 -1
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_MaintenanceMixin.py +1 -1
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_QueryMixin.py +1 -1
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_SchemaMixin.py +1 -1
- scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_TransactionMixin.py +1 -1
- scitex/db/_postgresql/__init__.py +6 -0
- scitex/db/_sqlite3/_SQLite3.py +210 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ArrayMixin.py +581 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ArrayMixin_v01-need-_hash-col.py +517 -0
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_BatchMixin.py +1 -1
- scitex/db/_sqlite3/_SQLite3Mixins/_BlobMixin.py +281 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ColumnMixin.py +548 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ColumnMixin_v01-indentation-issues.py +583 -0
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_ConnectionMixin.py +29 -13
- scitex/db/_sqlite3/_SQLite3Mixins/_GitMixin.py +583 -0
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_ImportExportMixin.py +1 -1
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_IndexMixin.py +1 -1
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_MaintenanceMixin.py +2 -1
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_QueryMixin.py +37 -10
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_RowMixin.py +46 -6
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_TableMixin.py +56 -10
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/_TransactionMixin.py +1 -1
- scitex/db/{_SQLite3Mixins → _sqlite3/_SQLite3Mixins}/__init__.py +14 -2
- scitex/db/_sqlite3/__init__.py +7 -0
- scitex/db/_sqlite3/_delete_duplicates.py +274 -0
- scitex/decorators/__init__.py +2 -0
- scitex/decorators/_cache_disk.py +13 -5
- scitex/decorators/_cache_disk_async.py +49 -0
- scitex/decorators/_deprecated.py +175 -10
- scitex/decorators/_timeout.py +1 -1
- scitex/dev/_analyze_code_flow.py +2 -2
- scitex/dict/_DotDict.py +73 -15
- scitex/dict/_DotDict_v01-not-handling-recursive-instantiations.py +442 -0
- scitex/dict/_DotDict_v02-not-serializing-Path-object.py +446 -0
- scitex/dict/__init__.py +2 -0
- scitex/dict/_flatten.py +27 -0
- scitex/dsp/_crop.py +2 -2
- scitex/dsp/_demo_sig.py +2 -2
- scitex/dsp/_detect_ripples.py +2 -2
- scitex/dsp/_hilbert.py +2 -2
- scitex/dsp/_listen.py +6 -6
- scitex/dsp/_modulation_index.py +2 -2
- scitex/dsp/_pac.py +1 -1
- scitex/dsp/_psd.py +2 -2
- scitex/dsp/_resample.py +2 -1
- scitex/dsp/_time.py +3 -2
- scitex/dsp/_wavelet.py +3 -2
- scitex/dsp/add_noise.py +2 -2
- scitex/dsp/example.py +1 -0
- scitex/dsp/filt.py +10 -9
- scitex/dsp/template.py +3 -2
- scitex/dsp/utils/_differential_bandpass_filters.py +1 -1
- scitex/dsp/utils/pac.py +2 -2
- scitex/dt/_normalize_timestamp.py +432 -0
- scitex/errors.py +572 -0
- scitex/gen/_DimHandler.py +2 -2
- scitex/gen/__init__.py +37 -7
- scitex/gen/_deprecated_close.py +80 -0
- scitex/gen/_deprecated_start.py +26 -0
- scitex/gen/_detect_environment.py +152 -0
- scitex/gen/_detect_notebook_path.py +169 -0
- scitex/gen/_embed.py +6 -2
- scitex/gen/_get_notebook_path.py +257 -0
- scitex/gen/_less.py +1 -1
- scitex/gen/_list_packages.py +2 -2
- scitex/gen/_norm.py +44 -9
- scitex/gen/_norm_cache.py +269 -0
- scitex/gen/_src.py +3 -5
- scitex/gen/_title_case.py +3 -3
- scitex/io/__init__.py +28 -6
- scitex/io/_glob.py +13 -7
- scitex/io/_load.py +108 -21
- scitex/io/_load_cache.py +303 -0
- scitex/io/_load_configs.py +40 -15
- scitex/io/{_H5Explorer.py → _load_modules/_H5Explorer.py} +80 -17
- scitex/io/_load_modules/_ZarrExplorer.py +114 -0
- scitex/io/_load_modules/_bibtex.py +207 -0
- scitex/io/_load_modules/_hdf5.py +53 -178
- scitex/io/_load_modules/_json.py +5 -3
- scitex/io/_load_modules/_pdf.py +871 -16
- scitex/io/_load_modules/_sqlite3.py +15 -0
- scitex/io/_load_modules/_txt.py +41 -12
- scitex/io/_load_modules/_yaml.py +4 -3
- scitex/io/_load_modules/_zarr.py +126 -0
- scitex/io/_save.py +429 -171
- scitex/io/_save_modules/__init__.py +6 -0
- scitex/io/_save_modules/_bibtex.py +194 -0
- scitex/io/_save_modules/_csv.py +8 -4
- scitex/io/_save_modules/_excel.py +174 -15
- scitex/io/_save_modules/_hdf5.py +251 -226
- scitex/io/_save_modules/_image.py +1 -3
- scitex/io/_save_modules/_json.py +49 -4
- scitex/io/_save_modules/_listed_dfs_as_csv.py +1 -3
- scitex/io/_save_modules/_listed_scalars_as_csv.py +1 -3
- scitex/io/_save_modules/_tex.py +277 -0
- scitex/io/_save_modules/_yaml.py +42 -3
- scitex/io/_save_modules/_zarr.py +160 -0
- scitex/io/utils/__init__.py +20 -0
- scitex/io/utils/h5_to_zarr.py +616 -0
- scitex/linalg/_geometric_median.py +6 -2
- scitex/{gen/_tee.py → logging/_Tee.py} +43 -84
- scitex/logging/__init__.py +122 -0
- scitex/logging/_config.py +158 -0
- scitex/logging/_context.py +103 -0
- scitex/logging/_formatters.py +128 -0
- scitex/logging/_handlers.py +64 -0
- scitex/logging/_levels.py +35 -0
- scitex/logging/_logger.py +163 -0
- scitex/logging/_print_capture.py +95 -0
- scitex/ml/__init__.py +69 -0
- scitex/{ai/genai/anthropic.py → ml/_gen_ai/_Anthropic.py} +13 -19
- scitex/{ai/genai/base_genai.py → ml/_gen_ai/_BaseGenAI.py} +5 -5
- scitex/{ai/genai/deepseek.py → ml/_gen_ai/_DeepSeek.py} +11 -16
- scitex/{ai/genai/google.py → ml/_gen_ai/_Google.py} +7 -15
- scitex/{ai/genai/groq.py → ml/_gen_ai/_Groq.py} +1 -8
- scitex/{ai/genai/llama.py → ml/_gen_ai/_Llama.py} +3 -16
- scitex/{ai/genai/openai.py → ml/_gen_ai/_OpenAI.py} +3 -3
- scitex/{ai/genai/params.py → ml/_gen_ai/_PARAMS.py} +51 -65
- scitex/{ai/genai/perplexity.py → ml/_gen_ai/_Perplexity.py} +3 -14
- scitex/ml/_gen_ai/__init__.py +43 -0
- scitex/{ai/genai/calc_cost.py → ml/_gen_ai/_calc_cost.py} +1 -1
- scitex/{ai/genai/format_output_func.py → ml/_gen_ai/_format_output_func.py} +4 -4
- scitex/{ai/genai/genai_factory.py → ml/_gen_ai/_genai_factory.py} +8 -8
- scitex/ml/activation/__init__.py +8 -0
- scitex/ml/activation/_define.py +11 -0
- scitex/{ai/classifier_server.py → ml/classification/Classifier.py} +5 -5
- scitex/ml/classification/CrossValidationExperiment.py +374 -0
- scitex/ml/classification/__init__.py +46 -0
- scitex/ml/classification/reporters/_BaseClassificationReporter.py +281 -0
- scitex/ml/classification/reporters/_ClassificationReporter.py +773 -0
- scitex/ml/classification/reporters/_MultiClassificationReporter.py +406 -0
- scitex/ml/classification/reporters/_SingleClassificationReporter.py +1834 -0
- scitex/ml/classification/reporters/__init__.py +11 -0
- scitex/ml/classification/reporters/reporter_utils/_Plotter.py +1028 -0
- scitex/ml/classification/reporters/reporter_utils/__init__.py +80 -0
- scitex/ml/classification/reporters/reporter_utils/aggregation.py +457 -0
- scitex/ml/classification/reporters/reporter_utils/data_models.py +313 -0
- scitex/ml/classification/reporters/reporter_utils/reporting.py +1056 -0
- scitex/ml/classification/reporters/reporter_utils/storage.py +221 -0
- scitex/ml/classification/reporters/reporter_utils/validation.py +395 -0
- scitex/ml/classification/timeseries/_TimeSeriesBlockingSplit.py +568 -0
- scitex/ml/classification/timeseries/_TimeSeriesCalendarSplit.py +688 -0
- scitex/ml/classification/timeseries/_TimeSeriesMetadata.py +139 -0
- scitex/ml/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +1716 -0
- scitex/ml/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +1685 -0
- scitex/ml/classification/timeseries/_TimeSeriesStrategy.py +84 -0
- scitex/ml/classification/timeseries/_TimeSeriesStratifiedSplit.py +610 -0
- scitex/ml/classification/timeseries/__init__.py +39 -0
- scitex/ml/classification/timeseries/_normalize_timestamp.py +436 -0
- scitex/ml/clustering/__init__.py +11 -0
- scitex/ml/clustering/_pca.py +115 -0
- scitex/ml/clustering/_umap.py +376 -0
- scitex/ml/feature_extraction/__init__.py +56 -0
- scitex/ml/feature_extraction/vit.py +149 -0
- scitex/ml/feature_selection/__init__.py +30 -0
- scitex/ml/feature_selection/feature_selection.py +364 -0
- scitex/ml/loss/_L1L2Losses.py +34 -0
- scitex/ml/loss/__init__.py +12 -0
- scitex/ml/loss/multi_task_loss.py +47 -0
- scitex/ml/metrics/__init__.py +56 -0
- scitex/ml/metrics/_calc_bacc.py +61 -0
- scitex/ml/metrics/_calc_bacc_from_conf_mat.py +38 -0
- scitex/ml/metrics/_calc_clf_report.py +78 -0
- scitex/ml/metrics/_calc_conf_mat.py +93 -0
- scitex/ml/metrics/_calc_feature_importance.py +183 -0
- scitex/ml/metrics/_calc_mcc.py +61 -0
- scitex/ml/metrics/_calc_pre_rec_auc.py +116 -0
- scitex/ml/metrics/_calc_roc_auc.py +110 -0
- scitex/ml/metrics/_calc_seizure_prediction_metrics.py +490 -0
- scitex/ml/metrics/_calc_silhouette_score.py +503 -0
- scitex/ml/metrics/_normalize_labels.py +83 -0
- scitex/ml/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
- scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
- scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +207 -0
- scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +238 -0
- scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +215 -0
- scitex/ml/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
- scitex/ml/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
- scitex/ml/optim/__init__.py +13 -0
- scitex/ml/optim/_get_set.py +31 -0
- scitex/ml/optim/_optimizers.py +71 -0
- scitex/ml/plt/__init__.py +60 -0
- scitex/ml/plt/_plot_conf_mat.py +663 -0
- scitex/ml/plt/_plot_feature_importance.py +323 -0
- scitex/ml/plt/_plot_learning_curve.py +345 -0
- scitex/ml/plt/_plot_optuna_study.py +225 -0
- scitex/ml/plt/_plot_pre_rec_curve.py +290 -0
- scitex/ml/plt/_plot_roc_curve.py +255 -0
- scitex/ml/sk/__init__.py +11 -0
- scitex/ml/sk/_clf.py +58 -0
- scitex/ml/sk/_to_sktime.py +100 -0
- scitex/ml/sklearn/__init__.py +26 -0
- scitex/ml/sklearn/clf.py +58 -0
- scitex/ml/sklearn/to_sktime.py +100 -0
- scitex/{ai/training/early_stopping.py → ml/training/_EarlyStopping.py} +1 -2
- scitex/{ai → ml/training}/_LearningCurveLogger.py +198 -242
- scitex/ml/training/__init__.py +7 -0
- scitex/ml/utils/__init__.py +22 -0
- scitex/ml/utils/_check_params.py +50 -0
- scitex/ml/utils/_default_dataset.py +46 -0
- scitex/ml/utils/_format_samples_for_sktime.py +26 -0
- scitex/ml/utils/_label_encoder.py +134 -0
- scitex/ml/utils/_merge_labels.py +22 -0
- scitex/ml/utils/_sliding_window_data_augmentation.py +11 -0
- scitex/ml/utils/_under_sample.py +51 -0
- scitex/ml/utils/_verify_n_gpus.py +16 -0
- scitex/ml/utils/grid_search.py +148 -0
- scitex/nn/_BNet.py +15 -9
- scitex/nn/_Filters.py +2 -2
- scitex/nn/_ModulationIndex.py +2 -2
- scitex/nn/_PAC.py +1 -1
- scitex/nn/_Spectrogram.py +12 -3
- scitex/nn/__init__.py +9 -10
- scitex/path/__init__.py +18 -0
- scitex/path/_clean.py +4 -0
- scitex/path/_find.py +9 -4
- scitex/path/_symlink.py +348 -0
- scitex/path/_version.py +4 -3
- scitex/pd/__init__.py +2 -0
- scitex/pd/_get_unique.py +99 -0
- scitex/plt/__init__.py +114 -5
- scitex/plt/_subplots/_AxesWrapper.py +1 -3
- scitex/plt/_subplots/_AxisWrapper.py +7 -3
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +47 -13
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +160 -2
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +26 -4
- scitex/plt/_subplots/_AxisWrapperMixins/_UnitAwareMixin.py +322 -0
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +1 -0
- scitex/plt/_subplots/_FigWrapper.py +62 -6
- scitex/plt/_subplots/_export_as_csv.py +43 -27
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +5 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +81 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +20 -5
- scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +35 -18
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +15 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +35 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_hist.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +6 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_text.py +60 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +1 -3
- scitex/plt/_subplots/_export_as_csv_formatters.py +56 -59
- scitex/plt/ax/_style/_hide_spines.py +1 -3
- scitex/plt/ax/_style/_rotate_labels.py +180 -76
- scitex/plt/ax/_style/_rotate_labels_v01.py +248 -0
- scitex/plt/ax/_style/_set_meta.py +11 -4
- scitex/plt/ax/_style/_set_supxyt.py +3 -3
- scitex/plt/ax/_style/_set_xyt.py +3 -3
- scitex/plt/ax/_style/_share_axes.py +2 -2
- scitex/plt/color/__init__.py +4 -4
- scitex/plt/color/{_get_colors_from_cmap.py → _get_colors_from_conf_matap.py} +7 -7
- scitex/plt/utils/_configure_mpl.py +99 -86
- scitex/plt/utils/_histogram_utils.py +1 -3
- scitex/plt/utils/_is_valid_axis.py +1 -3
- scitex/plt/utils/_scitex_config.py +1 -0
- scitex/repro/__init__.py +75 -0
- scitex/{reproduce → repro}/_gen_ID.py +1 -1
- scitex/{reproduce → repro}/_gen_timestamp.py +1 -1
- scitex/repro_rng/_RandomStateManager.py +590 -0
- scitex/repro_rng/_RandomStateManager_v01-no-verbose-options.py +414 -0
- scitex/repro_rng/__init__.py +39 -0
- scitex/reproduce/__init__.py +25 -13
- scitex/reproduce/_hash_array.py +22 -0
- scitex/resource/_get_processor_usages.py +4 -4
- scitex/resource/_get_specs.py +2 -2
- scitex/resource/_log_processor_usages.py +2 -2
- scitex/rng/_RandomStateManager.py +590 -0
- scitex/rng/_RandomStateManager_v01-no-verbose-options.py +414 -0
- scitex/rng/__init__.py +39 -0
- scitex/scholar/__init__.py +309 -19
- scitex/scholar/__main__.py +319 -0
- scitex/scholar/auth/ScholarAuthManager.py +308 -0
- scitex/scholar/auth/__init__.py +12 -0
- scitex/scholar/auth/core/AuthenticationGateway.py +473 -0
- scitex/scholar/auth/core/BrowserAuthenticator.py +386 -0
- scitex/scholar/auth/core/StrategyResolver.py +309 -0
- scitex/scholar/auth/core/__init__.py +16 -0
- scitex/scholar/auth/gateway/_OpenURLLinkFinder.py +120 -0
- scitex/scholar/auth/gateway/_OpenURLResolver.py +209 -0
- scitex/scholar/auth/gateway/__init__.py +38 -0
- scitex/scholar/auth/gateway/_resolve_functions.py +101 -0
- scitex/scholar/auth/providers/BaseAuthenticator.py +166 -0
- scitex/scholar/auth/providers/EZProxyAuthenticator.py +484 -0
- scitex/scholar/auth/providers/OpenAthensAuthenticator.py +619 -0
- scitex/scholar/auth/providers/ShibbolethAuthenticator.py +686 -0
- scitex/scholar/auth/providers/__init__.py +18 -0
- scitex/scholar/auth/session/AuthCacheManager.py +189 -0
- scitex/scholar/auth/session/SessionManager.py +159 -0
- scitex/scholar/auth/session/__init__.py +11 -0
- scitex/scholar/auth/sso/BaseSSOAutomator.py +373 -0
- scitex/scholar/auth/sso/OpenAthensSSOAutomator.py +378 -0
- scitex/scholar/auth/sso/SSOAutomator.py +180 -0
- scitex/scholar/auth/sso/UniversityOfMelbourneSSOAutomator.py +380 -0
- scitex/scholar/auth/sso/__init__.py +15 -0
- scitex/scholar/browser/ScholarBrowserManager.py +705 -0
- scitex/scholar/browser/__init__.py +38 -0
- scitex/scholar/browser/utils/__init__.py +13 -0
- scitex/scholar/browser/utils/click_and_wait.py +205 -0
- scitex/scholar/browser/utils/close_unwanted_pages.py +140 -0
- scitex/scholar/browser/utils/wait_redirects.py +732 -0
- scitex/scholar/config/PublisherRules.py +132 -0
- scitex/scholar/config/ScholarConfig.py +126 -0
- scitex/scholar/config/__init__.py +17 -0
- scitex/scholar/core/Paper.py +627 -0
- scitex/scholar/core/Papers.py +722 -0
- scitex/scholar/core/Scholar.py +1975 -0
- scitex/scholar/core/__init__.py +9 -0
- scitex/scholar/impact_factor/ImpactFactorEngine.py +204 -0
- scitex/scholar/impact_factor/__init__.py +20 -0
- scitex/scholar/impact_factor/estimation/ImpactFactorEstimationEngine.py +0 -0
- scitex/scholar/impact_factor/estimation/__init__.py +40 -0
- scitex/scholar/impact_factor/estimation/build_database.py +0 -0
- scitex/scholar/impact_factor/estimation/core/__init__.py +28 -0
- scitex/scholar/impact_factor/estimation/core/cache_manager.py +523 -0
- scitex/scholar/impact_factor/estimation/core/calculator.py +355 -0
- scitex/scholar/impact_factor/estimation/core/journal_matcher.py +428 -0
- scitex/scholar/integration/__init__.py +59 -0
- scitex/scholar/integration/base.py +502 -0
- scitex/scholar/integration/mendeley/__init__.py +22 -0
- scitex/scholar/integration/mendeley/exporter.py +166 -0
- scitex/scholar/integration/mendeley/importer.py +236 -0
- scitex/scholar/integration/mendeley/linker.py +79 -0
- scitex/scholar/integration/mendeley/mapper.py +212 -0
- scitex/scholar/integration/zotero/__init__.py +27 -0
- scitex/scholar/integration/zotero/__main__.py +264 -0
- scitex/scholar/integration/zotero/exporter.py +351 -0
- scitex/scholar/integration/zotero/importer.py +372 -0
- scitex/scholar/integration/zotero/linker.py +415 -0
- scitex/scholar/integration/zotero/mapper.py +286 -0
- scitex/scholar/metadata_engines/ScholarEngine.py +588 -0
- scitex/scholar/metadata_engines/__init__.py +21 -0
- scitex/scholar/metadata_engines/individual/ArXivEngine.py +397 -0
- scitex/scholar/metadata_engines/individual/CrossRefEngine.py +274 -0
- scitex/scholar/metadata_engines/individual/CrossRefLocalEngine.py +263 -0
- scitex/scholar/metadata_engines/individual/OpenAlexEngine.py +350 -0
- scitex/scholar/metadata_engines/individual/PubMedEngine.py +329 -0
- scitex/scholar/metadata_engines/individual/SemanticScholarEngine.py +438 -0
- scitex/scholar/metadata_engines/individual/URLDOIEngine.py +410 -0
- scitex/scholar/metadata_engines/individual/_BaseDOIEngine.py +487 -0
- scitex/scholar/metadata_engines/individual/__init__.py +7 -0
- scitex/scholar/metadata_engines/utils/_PubMedConverter.py +469 -0
- scitex/scholar/metadata_engines/utils/_URLDOIExtractor.py +283 -0
- scitex/scholar/metadata_engines/utils/__init__.py +30 -0
- scitex/scholar/metadata_engines/utils/_metadata2bibtex.py +103 -0
- scitex/scholar/metadata_engines/utils/_standardize_metadata.py +376 -0
- scitex/scholar/pdf_download/ScholarPDFDownloader.py +579 -0
- scitex/scholar/pdf_download/__init__.py +5 -0
- scitex/scholar/pdf_download/strategies/__init__.py +38 -0
- scitex/scholar/pdf_download/strategies/chrome_pdf_viewer.py +376 -0
- scitex/scholar/pdf_download/strategies/direct_download.py +131 -0
- scitex/scholar/pdf_download/strategies/manual_download_fallback.py +167 -0
- scitex/scholar/pdf_download/strategies/manual_download_utils.py +996 -0
- scitex/scholar/pdf_download/strategies/response_body.py +207 -0
- scitex/scholar/pipelines/ScholarPipelineBibTeX.py +364 -0
- scitex/scholar/pipelines/ScholarPipelineParallel.py +478 -0
- scitex/scholar/pipelines/ScholarPipelineSingle.py +767 -0
- scitex/scholar/pipelines/__init__.py +49 -0
- scitex/scholar/storage/BibTeXHandler.py +1018 -0
- scitex/scholar/storage/PaperIO.py +468 -0
- scitex/scholar/storage/ScholarLibrary.py +182 -0
- scitex/scholar/storage/_DeduplicationManager.py +548 -0
- scitex/scholar/storage/_LibraryCacheManager.py +724 -0
- scitex/scholar/storage/_LibraryManager.py +1835 -0
- scitex/scholar/storage/__init__.py +28 -0
- scitex/scholar/url_finder/ScholarURLFinder.py +379 -0
- scitex/scholar/url_finder/__init__.py +7 -0
- scitex/scholar/url_finder/strategies/__init__.py +33 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_direct_links.py +261 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_dropdown.py +67 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_href.py +204 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_navigation.py +256 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_publisher_patterns.py +165 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_zotero_translators.py +163 -0
- scitex/scholar/url_finder/strategies/find_supplementary_urls_by_href.py +70 -0
- scitex/scholar/utils/__init__.py +22 -0
- scitex/scholar/utils/bibtex/__init__.py +9 -0
- scitex/scholar/utils/bibtex/_parse_bibtex.py +71 -0
- scitex/scholar/utils/cleanup/__init__.py +8 -0
- scitex/scholar/utils/cleanup/_cleanup_scholar_processes.py +96 -0
- scitex/scholar/utils/cleanup/cleanup_old_extractions.py +117 -0
- scitex/scholar/utils/text/_TextNormalizer.py +407 -0
- scitex/scholar/utils/text/__init__.py +9 -0
- scitex/scholar/zotero/__init__.py +38 -0
- scitex/session/__init__.py +51 -0
- scitex/session/_lifecycle.py +736 -0
- scitex/session/_manager.py +102 -0
- scitex/session/template.py +122 -0
- scitex/stats/__init__.py +30 -26
- scitex/stats/correct/__init__.py +21 -0
- scitex/stats/correct/_correct_bonferroni.py +551 -0
- scitex/stats/correct/_correct_fdr.py +634 -0
- scitex/stats/correct/_correct_holm.py +548 -0
- scitex/stats/correct/_correct_sidak.py +499 -0
- scitex/stats/descriptive/__init__.py +85 -0
- scitex/stats/descriptive/_circular.py +540 -0
- scitex/stats/descriptive/_describe.py +219 -0
- scitex/stats/descriptive/_nan.py +518 -0
- scitex/stats/descriptive/_real.py +189 -0
- scitex/stats/effect_sizes/__init__.py +41 -0
- scitex/stats/effect_sizes/_cliffs_delta.py +325 -0
- scitex/stats/effect_sizes/_cohens_d.py +342 -0
- scitex/stats/effect_sizes/_epsilon_squared.py +315 -0
- scitex/stats/effect_sizes/_eta_squared.py +302 -0
- scitex/stats/effect_sizes/_prob_superiority.py +296 -0
- scitex/stats/posthoc/__init__.py +19 -0
- scitex/stats/posthoc/_dunnett.py +463 -0
- scitex/stats/posthoc/_games_howell.py +383 -0
- scitex/stats/posthoc/_tukey_hsd.py +367 -0
- scitex/stats/power/__init__.py +19 -0
- scitex/stats/power/_power.py +433 -0
- scitex/stats/template.py +119 -0
- scitex/stats/utils/__init__.py +62 -0
- scitex/stats/utils/_effect_size.py +985 -0
- scitex/stats/utils/_formatters.py +270 -0
- scitex/stats/utils/_normalizers.py +927 -0
- scitex/stats/utils/_power.py +433 -0
- scitex/stats_v01/_EffectSizeCalculator.py +488 -0
- scitex/stats_v01/_StatisticalValidator.py +411 -0
- scitex/stats_v01/__init__.py +60 -0
- scitex/stats_v01/_additional_tests.py +415 -0
- scitex/{stats → stats_v01}/_p2stars.py +19 -5
- scitex/stats_v01/_two_sample_tests.py +141 -0
- scitex/stats_v01/desc/__init__.py +83 -0
- scitex/stats_v01/desc/_circular.py +540 -0
- scitex/stats_v01/desc/_describe.py +219 -0
- scitex/stats_v01/desc/_nan.py +518 -0
- scitex/{stats/desc/_nan.py → stats_v01/desc/_nan_v01-20250920_145731.py} +23 -12
- scitex/stats_v01/desc/_real.py +189 -0
- scitex/stats_v01/tests/__corr_test_optimized.py +221 -0
- scitex/stats_v01/tests/_corr_test_optimized.py +179 -0
- scitex/str/__init__.py +1 -3
- scitex/str/_clean_path.py +6 -2
- scitex/str/_latex_fallback.py +267 -160
- scitex/str/_parse.py +44 -36
- scitex/str/_printc.py +1 -3
- scitex/template/__init__.py +87 -0
- scitex/template/_create_project.py +267 -0
- scitex/template/create_pip_project.py +80 -0
- scitex/template/create_research.py +80 -0
- scitex/template/create_singularity.py +80 -0
- scitex/units.py +291 -0
- scitex/utils/_compress_hdf5.py +14 -3
- scitex/utils/_email.py +21 -2
- scitex/utils/_grid.py +6 -4
- scitex/utils/_notify.py +13 -10
- scitex/utils/_verify_scitex_format.py +589 -0
- scitex/utils/_verify_scitex_format_v01.py +370 -0
- scitex/utils/template.py +122 -0
- scitex/web/_search_pubmed.py +62 -16
- scitex-2.1.0.dist-info/LICENSE +21 -0
- scitex-2.1.0.dist-info/METADATA +677 -0
- scitex-2.1.0.dist-info/RECORD +919 -0
- {scitex-2.0.0.dist-info → scitex-2.1.0.dist-info}/WHEEL +1 -1
- scitex-2.1.0.dist-info/entry_points.txt +3 -0
- scitex/ai/__Classifiers.py +0 -101
- scitex/ai/classification/classification_reporter.py +0 -1137
- scitex/ai/classification/classifiers.py +0 -101
- scitex/ai/classification_reporter.py +0 -1161
- scitex/ai/genai/__init__.py +0 -277
- scitex/ai/genai/anthropic_provider.py +0 -320
- scitex/ai/genai/anthropic_refactored.py +0 -109
- scitex/ai/genai/auth_manager.py +0 -200
- scitex/ai/genai/base_provider.py +0 -291
- scitex/ai/genai/chat_history.py +0 -307
- scitex/ai/genai/cost_tracker.py +0 -276
- scitex/ai/genai/deepseek_provider.py +0 -251
- scitex/ai/genai/google_provider.py +0 -228
- scitex/ai/genai/groq_provider.py +0 -248
- scitex/ai/genai/image_processor.py +0 -250
- scitex/ai/genai/llama_provider.py +0 -214
- scitex/ai/genai/mock_provider.py +0 -127
- scitex/ai/genai/model_registry.py +0 -304
- scitex/ai/genai/openai_provider.py +0 -293
- scitex/ai/genai/perplexity_provider.py +0 -205
- scitex/ai/genai/provider_base.py +0 -302
- scitex/ai/genai/provider_factory.py +0 -370
- scitex/ai/genai/response_handler.py +0 -235
- scitex/ai/layer/_Pass.py +0 -21
- scitex/ai/layer/__init__.py +0 -10
- scitex/ai/layer/_switch.py +0 -8
- scitex/ai/metrics/_bACC.py +0 -51
- scitex/ai/plt/_learning_curve.py +0 -194
- scitex/ai/plt/_optuna_study.py +0 -111
- scitex/ai/plt/aucs/__init__.py +0 -2
- scitex/ai/plt/aucs/example.py +0 -60
- scitex/ai/plt/aucs/pre_rec_auc.py +0 -223
- scitex/ai/plt/aucs/roc_auc.py +0 -246
- scitex/ai/sampling/undersample.py +0 -29
- scitex/db/_SQLite3.py +0 -2136
- scitex/db/_SQLite3Mixins/_BlobMixin.py +0 -229
- scitex/gen/_close.py +0 -222
- scitex/gen/_start.py +0 -451
- scitex/general/__init__.py +0 -5
- scitex/io/_load_modules/_db.py +0 -24
- scitex/life/__init__.py +0 -10
- scitex/life/_monitor_rain.py +0 -49
- scitex/reproduce/_fix_seeds.py +0 -45
- scitex/res/__init__.py +0 -5
- scitex/scholar/_local_search.py +0 -454
- scitex/scholar/_paper.py +0 -244
- scitex/scholar/_pdf_downloader.py +0 -325
- scitex/scholar/_search.py +0 -393
- scitex/scholar/_vector_search.py +0 -370
- scitex/scholar/_web_sources.py +0 -457
- scitex/stats/desc/__init__.py +0 -40
- scitex-2.0.0.dist-info/METADATA +0 -307
- scitex-2.0.0.dist-info/RECORD +0 -572
- scitex-2.0.0.dist-info/licenses/LICENSE +0 -7
- /scitex/ai/{act → activation}/__init__.py +0 -0
- /scitex/ai/{act → activation}/_define.py +0 -0
- /scitex/ai/{early_stopping.py → training/_EarlyStopping.py} +0 -0
- /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_ImportExportMixin.py +0 -0
- /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_IndexMixin.py +0 -0
- /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_RowMixin.py +0 -0
- /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/_TableMixin.py +0 -0
- /scitex/db/{_PostgreSQLMixins → _postgresql/_PostgreSQLMixins}/__init__.py +0 -0
- /scitex/{stats → stats_v01}/_calc_partial_corr.py +0 -0
- /scitex/{stats → stats_v01}/_corr_test_multi.py +0 -0
- /scitex/{stats → stats_v01}/_corr_test_wrapper.py +0 -0
- /scitex/{stats → stats_v01}/_describe_wrapper.py +0 -0
- /scitex/{stats → stats_v01}/_multiple_corrections.py +0 -0
- /scitex/{stats → stats_v01}/_nan_stats.py +0 -0
- /scitex/{stats → stats_v01}/_p2stars_wrapper.py +0 -0
- /scitex/{stats → stats_v01}/_statistical_tests.py +0 -0
- /scitex/{stats/desc/_describe.py → stats_v01/desc/_describe_v01-20250920_145731.py} +0 -0
- /scitex/{stats/desc/_real.py → stats_v01/desc/_real_v01-20250920_145731.py} +0 -0
- /scitex/{stats → stats_v01}/multiple/__init__.py +0 -0
- /scitex/{stats → stats_v01}/multiple/_bonferroni_correction.py +0 -0
- /scitex/{stats → stats_v01}/multiple/_fdr_correction.py +0 -0
- /scitex/{stats → stats_v01}/multiple/_multicompair.py +0 -0
- /scitex/{stats → stats_v01}/tests/__corr_test.py +0 -0
- /scitex/{stats → stats_v01}/tests/__corr_test_multi.py +0 -0
- /scitex/{stats → stats_v01}/tests/__corr_test_single.py +0 -0
- /scitex/{stats → stats_v01}/tests/__init__.py +0 -0
- /scitex/{stats → stats_v01}/tests/_brunner_munzel_test.py +0 -0
- /scitex/{stats → stats_v01}/tests/_nocorrelation_test.py +0 -0
- /scitex/{stats → stats_v01}/tests/_smirnov_grubbs.py +0 -0
- {scitex-2.0.0.dist-info → scitex-2.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""Custom handlers for SciTeX logging."""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import logging.handlers
|
|
7
|
+
import os
|
|
8
|
+
from datetime import datetime
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
from ._formatters import SciTeXConsoleFormatter, SciTeXFileFormatter
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def create_console_handler(level=logging.INFO):
|
|
15
|
+
"""Create a console handler with SciTeX formatting."""
|
|
16
|
+
handler = logging.StreamHandler()
|
|
17
|
+
handler.setLevel(level)
|
|
18
|
+
handler.setFormatter(SciTeXConsoleFormatter())
|
|
19
|
+
return handler
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def create_file_handler(log_file_path, level=logging.INFO, max_bytes=10*1024*1024, backup_count=5):
|
|
23
|
+
"""Create a rotating file handler for log files.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
log_file_path: Path to the log file
|
|
27
|
+
level: Log level for the handler
|
|
28
|
+
max_bytes: Maximum size of log file before rotation (default: 10MB)
|
|
29
|
+
backup_count: Number of backup files to keep (default: 5)
|
|
30
|
+
"""
|
|
31
|
+
# Ensure the log directory exists
|
|
32
|
+
log_dir = Path(log_file_path).parent
|
|
33
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
|
34
|
+
|
|
35
|
+
# Use RotatingFileHandler to prevent log files from growing too large
|
|
36
|
+
handler = logging.handlers.RotatingFileHandler(
|
|
37
|
+
log_file_path,
|
|
38
|
+
maxBytes=max_bytes,
|
|
39
|
+
backupCount=backup_count,
|
|
40
|
+
encoding='utf-8'
|
|
41
|
+
)
|
|
42
|
+
handler.setLevel(level)
|
|
43
|
+
handler.setFormatter(SciTeXFileFormatter())
|
|
44
|
+
return handler
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_default_log_path():
|
|
48
|
+
"""Get the default log file path for SciTeX."""
|
|
49
|
+
# Use ~/.scitex/logs/ directory
|
|
50
|
+
scitex_dir = Path.home() / '.scitex'
|
|
51
|
+
logs_dir = scitex_dir / 'logs'
|
|
52
|
+
|
|
53
|
+
# Create timestamped log file
|
|
54
|
+
timestamp = datetime.now().strftime("%Y-%m-%d")
|
|
55
|
+
log_file = logs_dir / f'scitex-{timestamp}.log'
|
|
56
|
+
|
|
57
|
+
return str(log_file)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
__all__ = [
|
|
61
|
+
'create_console_handler',
|
|
62
|
+
'create_file_handler',
|
|
63
|
+
'get_default_log_path'
|
|
64
|
+
]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""Custom log levels for SciTeX."""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
|
|
7
|
+
# Custom log levels for success/fail
|
|
8
|
+
SUCCESS = 31 # Between WARNING (30) and ERROR (40)
|
|
9
|
+
FAIL = 35 # Between WARNING (30) and ERROR (40)
|
|
10
|
+
|
|
11
|
+
# Add custom levels to logging module with 4-character abbreviations
|
|
12
|
+
logging.addLevelName(SUCCESS, 'SUCC')
|
|
13
|
+
logging.addLevelName(FAIL, 'FAIL')
|
|
14
|
+
logging.addLevelName(logging.DEBUG, 'DEBU')
|
|
15
|
+
logging.addLevelName(logging.INFO, 'INFO')
|
|
16
|
+
logging.addLevelName(logging.WARNING, 'WARN')
|
|
17
|
+
logging.addLevelName(logging.ERROR, 'ERRO')
|
|
18
|
+
logging.addLevelName(logging.CRITICAL, 'CRIT')
|
|
19
|
+
|
|
20
|
+
# Standard levels for convenience
|
|
21
|
+
DEBUG = logging.DEBUG
|
|
22
|
+
INFO = logging.INFO
|
|
23
|
+
WARNING = logging.WARNING
|
|
24
|
+
ERROR = logging.ERROR
|
|
25
|
+
CRITICAL = logging.CRITICAL
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
'SUCCESS',
|
|
29
|
+
'FAIL',
|
|
30
|
+
'DEBUG',
|
|
31
|
+
'INFO',
|
|
32
|
+
'WARNING',
|
|
33
|
+
'ERROR',
|
|
34
|
+
'CRITICAL'
|
|
35
|
+
]
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-10-17 15:03:33 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex_repo/src/scitex/logging/_logger.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
import os
|
|
8
|
+
__FILE__ = (
|
|
9
|
+
"./src/scitex/logging/_logger.py"
|
|
10
|
+
)
|
|
11
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
12
|
+
# ----------------------------------------
|
|
13
|
+
|
|
14
|
+
__FILE__ = __file__
|
|
15
|
+
|
|
16
|
+
"""Enhanced logger class for SciTeX."""
|
|
17
|
+
|
|
18
|
+
import logging
|
|
19
|
+
|
|
20
|
+
from ._levels import FAIL, SUCCESS
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class SciTeXLogger(logging.Logger):
|
|
24
|
+
"""Enhanced logger with success/fail methods, indent, separator, and color support."""
|
|
25
|
+
|
|
26
|
+
def _log_with_indent(
|
|
27
|
+
self,
|
|
28
|
+
level,
|
|
29
|
+
message,
|
|
30
|
+
indent=0,
|
|
31
|
+
sep=None,
|
|
32
|
+
n_sep=40,
|
|
33
|
+
c=None,
|
|
34
|
+
*args,
|
|
35
|
+
**kwargs,
|
|
36
|
+
):
|
|
37
|
+
"""Internal method to log with indent, separator, and color support."""
|
|
38
|
+
# Add separator lines if requested
|
|
39
|
+
if sep is not None:
|
|
40
|
+
separator = sep * n_sep
|
|
41
|
+
message = f"\n{separator}\n{message}\n{separator}"
|
|
42
|
+
|
|
43
|
+
# Add indent and color info to extra
|
|
44
|
+
if indent > 0 or sep is not None or c is not None:
|
|
45
|
+
extra = kwargs.get("extra", {})
|
|
46
|
+
extra["indent"] = indent
|
|
47
|
+
if c is not None:
|
|
48
|
+
extra["color"] = c
|
|
49
|
+
kwargs["extra"] = extra
|
|
50
|
+
|
|
51
|
+
self._log(level, message, args, **kwargs)
|
|
52
|
+
|
|
53
|
+
def debug(
|
|
54
|
+
self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
|
|
55
|
+
):
|
|
56
|
+
"""Log a debug message with optional indent, separator, and color."""
|
|
57
|
+
if self.isEnabledFor(logging.DEBUG):
|
|
58
|
+
self._log_with_indent(
|
|
59
|
+
logging.DEBUG, message, indent, sep, n_sep, c, *args, **kwargs
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
def info(
|
|
63
|
+
self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
|
|
64
|
+
):
|
|
65
|
+
"""Log an info message with optional indent, separator, and color."""
|
|
66
|
+
if self.isEnabledFor(logging.INFO):
|
|
67
|
+
self._log_with_indent(
|
|
68
|
+
logging.INFO, message, indent, sep, n_sep, c, *args, **kwargs
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
def warning(
|
|
72
|
+
self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
|
|
73
|
+
):
|
|
74
|
+
"""Log a warning message with optional indent, separator, and color."""
|
|
75
|
+
if self.isEnabledFor(logging.WARNING):
|
|
76
|
+
self._log_with_indent(
|
|
77
|
+
logging.WARNING,
|
|
78
|
+
message,
|
|
79
|
+
indent,
|
|
80
|
+
sep,
|
|
81
|
+
n_sep,
|
|
82
|
+
c,
|
|
83
|
+
*args,
|
|
84
|
+
**kwargs,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
def error(
|
|
88
|
+
self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
|
|
89
|
+
):
|
|
90
|
+
"""Log an error message with optional indent, separator, and color."""
|
|
91
|
+
if self.isEnabledFor(logging.ERROR):
|
|
92
|
+
self._log_with_indent(
|
|
93
|
+
logging.ERROR, message, indent, sep, n_sep, c, *args, **kwargs
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
def critical(
|
|
97
|
+
self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
|
|
98
|
+
):
|
|
99
|
+
"""Log a critical message with optional indent, separator, and color."""
|
|
100
|
+
if self.isEnabledFor(logging.CRITICAL):
|
|
101
|
+
self._log_with_indent(
|
|
102
|
+
logging.CRITICAL,
|
|
103
|
+
message,
|
|
104
|
+
indent,
|
|
105
|
+
sep,
|
|
106
|
+
n_sep,
|
|
107
|
+
c,
|
|
108
|
+
*args,
|
|
109
|
+
**kwargs,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
def success(
|
|
113
|
+
self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
|
|
114
|
+
):
|
|
115
|
+
"""Log a success message with optional indent, separator, and color."""
|
|
116
|
+
if self.isEnabledFor(SUCCESS):
|
|
117
|
+
self._log_with_indent(
|
|
118
|
+
SUCCESS, message, indent, sep, n_sep, c, *args, **kwargs
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
def fail(
|
|
122
|
+
self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
|
|
123
|
+
):
|
|
124
|
+
"""Log a failure message with optional indent, separator, and color."""
|
|
125
|
+
if self.isEnabledFor(FAIL):
|
|
126
|
+
self._log_with_indent(
|
|
127
|
+
FAIL, message, indent, sep, n_sep, c, *args, **kwargs
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
def to(self, file_path, level=None, mode="w"):
|
|
131
|
+
"""Context manager to temporarily log to a specific file.
|
|
132
|
+
|
|
133
|
+
Usage:
|
|
134
|
+
logger = logging.getLogger(__name__)
|
|
135
|
+
with logger.to("/path/to/file.log"):
|
|
136
|
+
logger.info("This goes to both console and file.log")
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
file_path: Path to log file
|
|
140
|
+
level: Logging level (default: DEBUG)
|
|
141
|
+
mode: File mode ('w' for overwrite, 'a' for append)
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
Context manager
|
|
145
|
+
"""
|
|
146
|
+
from ._context import log_to_file
|
|
147
|
+
|
|
148
|
+
return log_to_file(file_path, level=level or logging.DEBUG, mode=mode)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def setup_logger_class():
|
|
152
|
+
"""Setup the custom logger class."""
|
|
153
|
+
# Set custom logger class before any logger creation
|
|
154
|
+
logging.setLoggerClass(SciTeXLogger)
|
|
155
|
+
|
|
156
|
+
# Force existing root logger to use custom class
|
|
157
|
+
root = logging.getLogger()
|
|
158
|
+
root.__class__ = SciTeXLogger
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
__all__ = ["SciTeXLogger", "setup_logger_class"]
|
|
162
|
+
|
|
163
|
+
# EOF
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""Print capture system for SciTeX logging."""
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
import logging
|
|
7
|
+
from typing import Optional
|
|
8
|
+
from io import StringIO
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class PrintCapture:
|
|
12
|
+
"""Capture print() output and redirect to logging system."""
|
|
13
|
+
|
|
14
|
+
def __init__(self, logger_name: str = "scitex.print_capture"):
|
|
15
|
+
self.logger = logging.getLogger(logger_name)
|
|
16
|
+
self.original_stdout = sys.stdout
|
|
17
|
+
self.original_stderr = sys.stderr
|
|
18
|
+
self.capturing = False
|
|
19
|
+
|
|
20
|
+
def start_capture(self):
|
|
21
|
+
"""Start capturing print output."""
|
|
22
|
+
if self.capturing:
|
|
23
|
+
return
|
|
24
|
+
|
|
25
|
+
self.capturing = True
|
|
26
|
+
sys.stdout = self
|
|
27
|
+
|
|
28
|
+
def stop_capture(self):
|
|
29
|
+
"""Stop capturing print output."""
|
|
30
|
+
if not self.capturing:
|
|
31
|
+
return
|
|
32
|
+
|
|
33
|
+
self.capturing = False
|
|
34
|
+
sys.stdout = self.original_stdout
|
|
35
|
+
|
|
36
|
+
def write(self, text):
|
|
37
|
+
"""Handle write calls from print()."""
|
|
38
|
+
# Also write to original stdout for real-time viewing
|
|
39
|
+
self.original_stdout.write(text)
|
|
40
|
+
self.original_stdout.flush()
|
|
41
|
+
|
|
42
|
+
# Log the output (strip newlines for cleaner logs)
|
|
43
|
+
clean_text = text.rstrip('\n')
|
|
44
|
+
if clean_text: # Only log non-empty text
|
|
45
|
+
self.logger.info(clean_text)
|
|
46
|
+
|
|
47
|
+
def flush(self):
|
|
48
|
+
"""Handle flush calls."""
|
|
49
|
+
self.original_stdout.flush()
|
|
50
|
+
|
|
51
|
+
def isatty(self):
|
|
52
|
+
"""Handle isatty calls."""
|
|
53
|
+
return self.original_stdout.isatty()
|
|
54
|
+
|
|
55
|
+
def __enter__(self):
|
|
56
|
+
"""Context manager entry."""
|
|
57
|
+
self.start_capture()
|
|
58
|
+
return self
|
|
59
|
+
|
|
60
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
61
|
+
"""Context manager exit."""
|
|
62
|
+
self.stop_capture()
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# Global print capture instance
|
|
66
|
+
_print_capture = None
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def enable_print_capture(logger_name: str = "scitex.print_capture"):
|
|
70
|
+
"""Enable automatic print capture globally."""
|
|
71
|
+
global _print_capture
|
|
72
|
+
if _print_capture is None:
|
|
73
|
+
_print_capture = PrintCapture(logger_name)
|
|
74
|
+
_print_capture.start_capture()
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def disable_print_capture():
|
|
78
|
+
"""Disable automatic print capture globally."""
|
|
79
|
+
global _print_capture
|
|
80
|
+
if _print_capture is not None:
|
|
81
|
+
_print_capture.stop_capture()
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def is_print_capture_enabled():
|
|
85
|
+
"""Check if print capture is currently enabled."""
|
|
86
|
+
global _print_capture
|
|
87
|
+
return _print_capture is not None and _print_capture.capturing
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
__all__ = [
|
|
91
|
+
'PrintCapture',
|
|
92
|
+
'enable_print_capture',
|
|
93
|
+
'disable_print_capture',
|
|
94
|
+
'is_print_capture_enabled'
|
|
95
|
+
]
|
scitex/ml/__init__.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-07-19 10:50:54 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex_repo/src/scitex/ai/__init__.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = __file__
|
|
8
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
9
|
+
# ----------------------------------------
|
|
10
|
+
"""Scitex AI module for machine learning and artificial intelligence utilities."""
|
|
11
|
+
|
|
12
|
+
# Lazy imports to avoid loading heavy dependencies eagerly
|
|
13
|
+
from .classification import ClassificationReporter
|
|
14
|
+
from .training._LearningCurveLogger import LearningCurveLogger
|
|
15
|
+
from .training._EarlyStopping import EarlyStopping
|
|
16
|
+
from .loss import MultiTaskLoss
|
|
17
|
+
from .classification import Classifier
|
|
18
|
+
from .optim import get_optimizer, set_optimizer
|
|
19
|
+
|
|
20
|
+
# Import submodules to make them accessible
|
|
21
|
+
from . import activation
|
|
22
|
+
from . import classification
|
|
23
|
+
from . import clustering
|
|
24
|
+
from . import feature_extraction
|
|
25
|
+
# from . import layer
|
|
26
|
+
from . import loss
|
|
27
|
+
from . import metrics
|
|
28
|
+
from . import optim
|
|
29
|
+
from . import plt
|
|
30
|
+
from . import sampling
|
|
31
|
+
from . import sklearn
|
|
32
|
+
from . import training
|
|
33
|
+
from . import utils
|
|
34
|
+
|
|
35
|
+
# Lazy import for GenAI (heavy anthropic dependency)
|
|
36
|
+
def __getattr__(name):
|
|
37
|
+
if name == "GenAI":
|
|
38
|
+
from ._gen_ai import GenAI
|
|
39
|
+
return GenAI
|
|
40
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
41
|
+
|
|
42
|
+
__all__ = [
|
|
43
|
+
# "Classifiers", # Moved to .old directory
|
|
44
|
+
"LearningCurveLogger",
|
|
45
|
+
"ClassificationReporter",
|
|
46
|
+
"EarlyStopping",
|
|
47
|
+
"MultiTaskLoss",
|
|
48
|
+
"GenAI", # Lazy loaded
|
|
49
|
+
"Classifier",
|
|
50
|
+
"get_optimizer",
|
|
51
|
+
"set_optimizer",
|
|
52
|
+
# Submodules
|
|
53
|
+
"activation",
|
|
54
|
+
"classification",
|
|
55
|
+
"clustering",
|
|
56
|
+
"feature_extraction",
|
|
57
|
+
# "genai",
|
|
58
|
+
# "layer",
|
|
59
|
+
"loss",
|
|
60
|
+
"metrics",
|
|
61
|
+
"optim",
|
|
62
|
+
"plt",
|
|
63
|
+
"sampling",
|
|
64
|
+
"sklearn",
|
|
65
|
+
"training",
|
|
66
|
+
"utils",
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
# EOF
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
# Timestamp: "2025-
|
|
4
|
-
# File:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
# File: ./scitex_repo/src/scitex/ai/_gen_ai/_Anthropic.py
|
|
11
|
-
|
|
12
|
-
THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/ai/_gen_ai/_Anthropic.py"
|
|
3
|
+
# Timestamp: "2025-06-24 19:20:24 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex_repo/src/scitex/ai/_gen_ai/_Anthropic.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
__FILE__ = __file__
|
|
8
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
9
|
+
# ----------------------------------------
|
|
13
10
|
|
|
14
11
|
"""
|
|
15
12
|
Functionality:
|
|
@@ -27,20 +24,15 @@ Prerequisites:
|
|
|
27
24
|
"""
|
|
28
25
|
|
|
29
26
|
"""Imports"""
|
|
30
|
-
import os
|
|
31
27
|
import sys
|
|
32
|
-
from typing import
|
|
28
|
+
from typing import Dict, Generator, List, Optional
|
|
33
29
|
|
|
34
30
|
import anthropic
|
|
35
31
|
import matplotlib.pyplot as plt
|
|
36
32
|
|
|
37
|
-
from .
|
|
38
|
-
import re
|
|
39
|
-
|
|
33
|
+
from ._BaseGenAI import BaseGenAI
|
|
40
34
|
|
|
41
35
|
"""Functions & Classes"""
|
|
42
|
-
|
|
43
|
-
|
|
44
36
|
class Anthropic(BaseGenAI):
|
|
45
37
|
def __init__(
|
|
46
38
|
self,
|
|
@@ -164,9 +156,11 @@ def main() -> None:
|
|
|
164
156
|
if __name__ == "__main__":
|
|
165
157
|
import scitex
|
|
166
158
|
|
|
167
|
-
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.
|
|
159
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(
|
|
160
|
+
sys, plt, verbose=False
|
|
161
|
+
)
|
|
168
162
|
main()
|
|
169
|
-
scitex.
|
|
163
|
+
scitex.session.close(CONFIG, verbose=False, notify=False)
|
|
170
164
|
|
|
171
165
|
|
|
172
166
|
"""
|
|
@@ -18,9 +18,9 @@ import matplotlib.pyplot as plt
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
20
|
from ...io._load import load
|
|
21
|
-
from .
|
|
22
|
-
from .
|
|
23
|
-
from .
|
|
21
|
+
from ._calc_cost import calc_cost
|
|
22
|
+
from ._format_output_func import format_output_func
|
|
23
|
+
from ._PARAMS import MODELS
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class BaseGenAI(ABC):
|
|
@@ -324,9 +324,9 @@ def main() -> None:
|
|
|
324
324
|
if __name__ == "__main__":
|
|
325
325
|
import scitex
|
|
326
326
|
|
|
327
|
-
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.
|
|
327
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, verbose=False)
|
|
328
328
|
main()
|
|
329
|
-
scitex.
|
|
329
|
+
scitex.session.close(CONFIG, verbose=False, notify=False)
|
|
330
330
|
|
|
331
331
|
"""
|
|
332
332
|
python src/scitex/ai/_gen_ai/_BaseGenAI.py
|
|
@@ -13,9 +13,6 @@
|
|
|
13
13
|
4. Prerequisites:
|
|
14
14
|
- DEEPSEEK_API_KEY environment variable
|
|
15
15
|
- requests library
|
|
16
|
-
|
|
17
|
-
DEPRECATED: This module is deprecated. Please use deepseek_provider.py instead.
|
|
18
|
-
The new provider-based architecture offers better modularity and maintainability.
|
|
19
16
|
"""
|
|
20
17
|
|
|
21
18
|
"""Imports"""
|
|
@@ -23,19 +20,11 @@ import json
|
|
|
23
20
|
import os
|
|
24
21
|
import sys
|
|
25
22
|
from typing import Dict, Generator, List, Optional
|
|
26
|
-
import warnings
|
|
27
23
|
|
|
28
24
|
import scitex
|
|
29
25
|
import requests
|
|
30
26
|
|
|
31
|
-
from .
|
|
32
|
-
|
|
33
|
-
warnings.warn(
|
|
34
|
-
"deepseek.py is deprecated. Please use deepseek_provider.py instead. "
|
|
35
|
-
"See PROVIDER_MIGRATION_GUIDE.md for migration instructions.",
|
|
36
|
-
DeprecationWarning,
|
|
37
|
-
stacklevel=2,
|
|
38
|
-
)
|
|
27
|
+
from ._BaseGenAI import BaseGenAI
|
|
39
28
|
|
|
40
29
|
"""Warnings"""
|
|
41
30
|
# scitex.pd.ignore_SettingWithCopyWarning()
|
|
@@ -48,8 +37,6 @@ warnings.warn(
|
|
|
48
37
|
# CONFIG = load_configs()
|
|
49
38
|
|
|
50
39
|
"""Functions & Classes"""
|
|
51
|
-
"""Imports"""
|
|
52
|
-
from .base_genai import BaseGenAI
|
|
53
40
|
from openai import OpenAI as _OpenAI
|
|
54
41
|
|
|
55
42
|
"""Functions & Classes"""
|
|
@@ -152,7 +139,7 @@ if __name__ == "__main__":
|
|
|
152
139
|
import matplotlib.pyplot as plt
|
|
153
140
|
|
|
154
141
|
# Configurations
|
|
155
|
-
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.
|
|
142
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(
|
|
156
143
|
sys,
|
|
157
144
|
plt,
|
|
158
145
|
verbose=False,
|
|
@@ -172,12 +159,20 @@ if __name__ == "__main__":
|
|
|
172
159
|
# -----------------------------------
|
|
173
160
|
# Main
|
|
174
161
|
# -----------------------------------
|
|
162
|
+
def main():
|
|
163
|
+
# Example usage
|
|
164
|
+
client = DeepSeek()
|
|
165
|
+
prompt = "Hello, how can I help you?"
|
|
166
|
+
response = client.complete(prompt)
|
|
167
|
+
print(response)
|
|
168
|
+
return 0
|
|
169
|
+
|
|
175
170
|
exit_status = main()
|
|
176
171
|
|
|
177
172
|
# -----------------------------------
|
|
178
173
|
# Cleanup scitex format
|
|
179
174
|
# -----------------------------------
|
|
180
|
-
scitex.
|
|
175
|
+
scitex.session.close(
|
|
181
176
|
CONFIG,
|
|
182
177
|
verbose=False,
|
|
183
178
|
notify=False,
|
|
@@ -19,9 +19,6 @@ Output:
|
|
|
19
19
|
Prerequisites:
|
|
20
20
|
- Google API key (GOOGLE_API_KEY environment variable)
|
|
21
21
|
- google.generativeai package
|
|
22
|
-
|
|
23
|
-
DEPRECATED: This module is deprecated. Please use google_provider.py instead.
|
|
24
|
-
The new provider-based architecture offers better modularity and maintainability.
|
|
25
22
|
"""
|
|
26
23
|
|
|
27
24
|
"""Imports"""
|
|
@@ -29,21 +26,16 @@ import os
|
|
|
29
26
|
import sys
|
|
30
27
|
from pprint import pprint
|
|
31
28
|
from typing import Any, Dict, Generator, List, Optional
|
|
32
|
-
import warnings
|
|
33
29
|
|
|
34
30
|
import matplotlib.pyplot as plt
|
|
35
31
|
import scitex
|
|
36
32
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
try:
|
|
34
|
+
from google import genai
|
|
35
|
+
except ImportError:
|
|
36
|
+
genai = None
|
|
40
37
|
|
|
41
|
-
|
|
42
|
-
"google.py is deprecated. Please use google_provider.py instead. "
|
|
43
|
-
"See PROVIDER_MIGRATION_GUIDE.md for migration instructions.",
|
|
44
|
-
DeprecationWarning,
|
|
45
|
-
stacklevel=2,
|
|
46
|
-
)
|
|
38
|
+
from ._BaseGenAI import BaseGenAI
|
|
47
39
|
|
|
48
40
|
"""Functions & Classes"""
|
|
49
41
|
|
|
@@ -155,9 +147,9 @@ def main() -> None:
|
|
|
155
147
|
|
|
156
148
|
|
|
157
149
|
if __name__ == "__main__":
|
|
158
|
-
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.
|
|
150
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt, verbose=False)
|
|
159
151
|
main()
|
|
160
|
-
scitex.
|
|
152
|
+
scitex.session.close(CONFIG, verbose=False, notify=False)
|
|
161
153
|
|
|
162
154
|
|
|
163
155
|
"""
|
|
@@ -23,13 +23,12 @@ Prerequisites:
|
|
|
23
23
|
"""Imports"""
|
|
24
24
|
import os
|
|
25
25
|
import sys
|
|
26
|
-
import warnings
|
|
27
26
|
from typing import Any, Dict, Generator, List, Optional, Union
|
|
28
27
|
|
|
29
28
|
from groq import Groq as _Groq
|
|
30
29
|
import matplotlib.pyplot as plt
|
|
31
30
|
|
|
32
|
-
from .
|
|
31
|
+
from ._BaseGenAI import BaseGenAI
|
|
33
32
|
|
|
34
33
|
"""Functions & Classes"""
|
|
35
34
|
|
|
@@ -47,12 +46,6 @@ class Groq(BaseGenAI):
|
|
|
47
46
|
chat_history: Optional[List[Dict[str, str]]] = None,
|
|
48
47
|
max_tokens: int = 8000,
|
|
49
48
|
) -> None:
|
|
50
|
-
warnings.warn(
|
|
51
|
-
"Groq class is deprecated. Use GenAI(provider='groq') instead. "
|
|
52
|
-
"Example: from scitex.ai.genai import GenAI; ai = GenAI(provider='groq', model='llama3-8b-8192')",
|
|
53
|
-
DeprecationWarning,
|
|
54
|
-
stacklevel=2,
|
|
55
|
-
)
|
|
56
49
|
max_tokens = min(max_tokens, 8000)
|
|
57
50
|
if not api_key:
|
|
58
51
|
raise ValueError("GROQ_API_KEY environment variable not set")
|