scitex 2.1.2__py3-none-any.whl → 2.4.2__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 +90 -10
- scitex/__main__.py +0 -110
- scitex/__version__.py +1 -1
- scitex/_optional_deps.py +0 -0
- scitex/ai/_gen_ai/_BaseGenAI.py +1 -1
- scitex/ai/classification/examples/timeseries_cv_demo.py +0 -0
- scitex/ai/classification/reporters/_ClassificationReporter.py +1 -1
- scitex/ai/classification/reporters/__init__.py +0 -0
- scitex/ai/classification/reporters/reporter_utils/_Plotter.py +1 -1
- scitex/ai/classification/reporters/reporter_utils/__init__.py +0 -0
- scitex/ai/classification/reporters/reporter_utils/aggregation.py +0 -0
- scitex/ai/classification/reporters/reporter_utils/data_models.py +0 -0
- scitex/ai/classification/reporters/reporter_utils/reporting.py +0 -0
- scitex/ai/classification/reporters/reporter_utils/validation.py +0 -0
- scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +6 -6
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +6 -6
- scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +2 -2
- scitex/ai/classification/timeseries/_normalize_timestamp.py +1 -1
- scitex/ai/feature_extraction/vit.py +1 -1
- scitex/ai/feature_selection/__init__.py +0 -0
- scitex/ai/feature_selection/feature_selection.py +0 -0
- scitex/ai/loss/multi_task_loss.py +1 -1
- scitex/ai/metrics/_calc_bacc.py +0 -0
- scitex/ai/metrics/_calc_bacc_from_conf_mat.py +0 -0
- scitex/ai/metrics/_calc_clf_report.py +0 -0
- scitex/ai/metrics/_calc_conf_mat.py +0 -0
- scitex/ai/metrics/_calc_feature_importance.py +0 -0
- scitex/ai/metrics/_calc_mcc.py +0 -0
- scitex/ai/metrics/_calc_pre_rec_auc.py +0 -0
- scitex/ai/metrics/_calc_roc_auc.py +0 -0
- scitex/ai/metrics/_calc_seizure_prediction_metrics.py +1 -1
- scitex/ai/metrics/_normalize_labels.py +0 -0
- scitex/ai/plt/__init__.py +2 -2
- scitex/ai/plt/_plot_feature_importance.py +1 -1
- scitex/ai/plt/_plot_learning_curve.py +1 -1
- scitex/ai/plt/_plot_optuna_study.py +1 -1
- scitex/ai/plt/_plot_pre_rec_curve.py +1 -1
- scitex/ai/plt/_plot_roc_curve.py +1 -1
- scitex/ai/plt/{_plot_conf_mat.py → _stx_conf_mat.py} +4 -4
- scitex/ai/sampling/undersample.py +1 -1
- scitex/ai/training/_LearningCurveLogger.py +1 -1
- scitex/benchmark/__init__.py +3 -3
- scitex/benchmark/benchmark.py +0 -0
- scitex/benchmark/monitor.py +0 -0
- scitex/benchmark/profiler.py +0 -0
- scitex/browser/__init__.py +0 -0
- scitex/browser/auth/__init__.py +35 -0
- scitex/browser/auth/google.py +381 -0
- scitex/browser/automation/CookieHandler.py +1 -1
- scitex/browser/automation/__init__.py +0 -0
- scitex/browser/collaboration/__init__.py +5 -0
- scitex/browser/collaboration/auth_helpers.py +0 -0
- scitex/browser/collaboration/collaborative_agent.py +0 -0
- scitex/browser/collaboration/credential_manager.py +0 -0
- scitex/browser/collaboration/interactive_panel.py +0 -0
- scitex/browser/collaboration/persistent_browser.py +0 -0
- scitex/browser/collaboration/shared_session.py +0 -0
- scitex/browser/collaboration/standard_interactions.py +0 -0
- scitex/browser/collaboration/visual_feedback.py +0 -0
- scitex/browser/core/BrowserMixin.py +1 -1
- scitex/browser/core/ChromeProfileManager.py +1 -1
- scitex/browser/core/__init__.py +0 -0
- scitex/browser/debugging/_browser_logger.py +1 -1
- scitex/browser/debugging/_highlight_element.py +1 -1
- scitex/browser/debugging/_show_grid.py +1 -1
- scitex/browser/interaction/click_center.py +1 -1
- scitex/browser/interaction/click_with_fallbacks.py +1 -1
- scitex/browser/interaction/close_popups.py +1 -1
- scitex/browser/interaction/fill_with_fallbacks.py +1 -1
- scitex/browser/pdf/__init__.py +0 -0
- scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +1 -1
- scitex/browser/pdf/detect_chrome_pdf_viewer.py +1 -1
- scitex/browser/remote/CaptchaHandler.py +0 -0
- scitex/browser/remote/ZenRowsAPIClient.py +0 -0
- scitex/browser/remote/__init__.py +0 -0
- scitex/browser/stealth/HumanBehavior.py +1 -1
- scitex/browser/stealth/StealthManager.py +1 -1
- scitex/browser/stealth/__init__.py +0 -0
- scitex/cli/__init__.py +0 -0
- scitex/cli/cloud.py +200 -9
- scitex/cli/main.py +139 -10
- scitex/cli/scholar.py +0 -0
- scitex/cli/security.py +109 -0
- scitex/cli/web.py +409 -0
- scitex/cli/writer.py +270 -0
- scitex/cloud/__init__.py +131 -0
- scitex/cloud/_matplotlib_hook.py +146 -0
- scitex/config/PriorityConfig.py +195 -0
- scitex/config/__init__.py +24 -0
- scitex/db/_delete_duplicates.py +1 -1
- scitex/db/_inspect_optimized.py +0 -0
- scitex/db/_postgresql/_PostgreSQL.py +1 -1
- scitex/db/_sqlite3/_SQLite3.py +1 -1
- scitex/decorators/__init__.py +9 -0
- scitex/dict/_DotDict.py +65 -138
- scitex/dict/__init__.py +1 -0
- scitex/dict/_flatten.py +2 -10
- scitex/dict/_listed_dict.py +2 -3
- scitex/dict/_pop_keys.py +2 -3
- scitex/dict/_replace.py +1 -3
- scitex/dict/_safe_merge.py +6 -16
- scitex/dict/_to_str.py +6 -3
- scitex/dsp/_demo_sig.py +1 -1
- scitex/dsp/_detect_ripples.py +1 -1
- scitex/dsp/_ensure_3d.py +1 -1
- scitex/dsp/_hilbert.py +2 -2
- scitex/dsp/_misc.py +1 -1
- scitex/dsp/_modulation_index.py +2 -2
- scitex/dsp/_pac.py +3 -3
- scitex/dsp/_psd.py +2 -2
- scitex/dsp/_resample.py +1 -1
- scitex/dsp/_transform.py +1 -1
- scitex/dsp/_wavelet.py +2 -2
- scitex/dsp/add_noise.py +1 -1
- scitex/dsp/filt.py +6 -6
- scitex/dsp/norm.py +1 -1
- scitex/dsp/reference.py +1 -1
- scitex/dsp/utils/_differential_bandpass_filters.py +3 -3
- scitex/dsp/utils/_ensure_3d.py +1 -1
- scitex/dsp/utils/_zero_pad.py +1 -1
- scitex/dsp/utils/filter.py +2 -2
- scitex/dt/_normalize_timestamp.py +1 -1
- scitex/gen/_check_host.py +1 -1
- scitex/gen/_deprecated_close.py +3 -3
- scitex/gen/_deprecated_start.py +1 -1
- scitex/gen/_norm.py +2 -2
- scitex/gen/_norm_cache.py +1 -1
- scitex/gen/_symlink.py +1 -1
- scitex/gen/_to_rank.py +1 -1
- scitex/gen/_transpose.py +1 -1
- scitex/git/__init__.py +0 -0
- scitex/git/_branch.py +5 -3
- scitex/git/_clone.py +35 -6
- scitex/git/_commit.py +3 -2
- scitex/git/_constants.py +0 -0
- scitex/git/_init.py +0 -0
- scitex/git/_remote.py +1 -1
- scitex/git/_result.py +0 -0
- scitex/git/_retry.py +0 -0
- scitex/git/_session.py +1 -1
- scitex/git/_types.py +0 -0
- scitex/git/_utils.py +0 -0
- scitex/git/_validation.py +0 -0
- scitex/git/_workflow.py +1 -1
- scitex/io/README.md +65 -1
- scitex/io/__init__.py +12 -0
- scitex/io/_glob.py +1 -1
- scitex/io/_load.py +59 -9
- scitex/io/_load_cache.py +0 -0
- scitex/io/_load_configs.py +9 -4
- scitex/io/_load_modules/_image.py +48 -4
- scitex/io/_load_modules/_pdf.py +95 -32
- scitex/io/_load_modules/_sqlite3.py +1 -1
- scitex/io/_metadata.py +298 -0
- scitex/io/_path.py +2 -2
- scitex/io/_qr_utils.py +75 -0
- scitex/io/_save.py +324 -45
- scitex/io/_save_modules/_image.py +92 -23
- scitex/io/_save_modules/_tex.py +1 -1
- scitex/io/memo.md +2827 -0
- scitex/io/utils/h5_to_zarr.py +1 -1
- scitex/linalg/_distance.py +2 -2
- scitex/linalg/_geometric_median.py +1 -1
- scitex/logging/README.md +1 -1
- scitex/logging/_Tee.py +2 -2
- scitex/logging/_context.py +0 -0
- scitex/logging/_formatters.py +9 -2
- scitex/logging/_handlers.py +0 -0
- scitex/logging/_levels.py +0 -0
- scitex/logging/_logger.py +59 -20
- scitex/logging/_print_capture.py +0 -0
- scitex/ml/__init__.py +1 -1
- scitex/nn/_Filters.py +6 -6
- scitex/nn/_Spectrogram.py +1 -1
- scitex/nn/_Wavelet.py +2 -2
- scitex/pd/_force_df.py +1 -1
- scitex/plt/README.md +26 -1
- scitex/plt/__init__.py +559 -8
- scitex/plt/_subplots/_AxesWrapper.py +2 -1
- scitex/plt/_subplots/_AxisWrapper.py +98 -50
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +93 -4
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +572 -127
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +49 -8
- scitex/plt/_subplots/_AxisWrapperMixins/_UnitAwareMixin.py +2 -2
- scitex/plt/_subplots/_FigWrapper.py +104 -10
- scitex/plt/_subplots/_SubplotsWrapper.py +471 -26
- scitex/plt/_subplots/_export_as_csv.py +193 -57
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +26 -16
- scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +0 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_contourf.py +54 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hexbin.py +41 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hist2d.py +41 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +59 -47
- scitex/plt/_subplots/_export_as_csv_formatters/_format_matshow.py +42 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_pie.py +42 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +72 -35
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +1 -1
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +40 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +0 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_quiver.py +53 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stem.py +42 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_step.py +42 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_streamplot.py +48 -0
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_conf_mat.py → _format_stx_conf_mat.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_ecdf.py → _format_stx_ecdf.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_fillv.py → _format_stx_fillv.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_heatmap.py → _format_stx_heatmap.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_image.py → _format_stx_image.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_joyplot.py → _format_stx_joyplot.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_line.py → _format_stx_line.py} +3 -3
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_mean_ci.py → _format_stx_mean_ci.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_mean_std.py → _format_stx_mean_std.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_median_iqr.py → _format_stx_median_iqr.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_raster.py → _format_stx_raster.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_rectangle.py → _format_stx_rectangle.py} +1 -1
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_scatter_hist.py → _format_stx_scatter_hist.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_shaded_line.py → _format_stx_shaded_line.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/{_format_plot_violin.py → _format_stx_violin.py} +2 -2
- scitex/plt/_subplots/_export_as_csv_formatters/verify_formatters.py +23 -23
- scitex/plt/ax/__init__.py +25 -16
- scitex/plt/ax/_plot/__init__.py +32 -30
- scitex/plt/ax/_plot/_add_fitted_line.py +151 -0
- scitex/plt/ax/_plot/_plot_statistical_shaded_line.py +104 -76
- scitex/plt/ax/_plot/{_plot_conf_mat.py → _stx_conf_mat.py} +12 -12
- scitex/plt/ax/_plot/_stx_ecdf.py +109 -0
- scitex/plt/ax/_plot/{_plot_fillv.py → _stx_fillv.py} +7 -7
- scitex/plt/ax/_plot/_stx_heatmap.py +366 -0
- scitex/plt/ax/_plot/{_plot_image.py → _stx_image.py} +1 -1
- scitex/plt/ax/_plot/_stx_joyplot.py +113 -0
- scitex/plt/ax/_plot/{_plot_raster.py → _stx_raster.py} +37 -25
- scitex/plt/ax/_plot/{_plot_rectangle.py → _stx_rectangle.py} +10 -9
- scitex/plt/ax/_plot/{_plot_scatter_hist.py → _stx_scatter_hist.py} +1 -1
- scitex/plt/ax/_plot/_stx_shaded_line.py +215 -0
- scitex/plt/ax/_plot/{_plot_violin.py → _stx_violin.py} +13 -6
- scitex/plt/ax/_style/__init__.py +4 -0
- scitex/plt/ax/_style/_auto_scale_axis.py +195 -0
- scitex/plt/ax/_style/_format_units.py +103 -0
- scitex/plt/ax/_style/_set_ticks.py +2 -2
- scitex/plt/ax/_style/_style_barplot.py +69 -0
- scitex/plt/ax/_style/_style_boxplot.py +144 -0
- scitex/plt/ax/_style/_style_errorbar.py +82 -0
- scitex/plt/ax/_style/_style_scatter.py +82 -0
- scitex/plt/ax/_style/_style_suptitles.py +76 -0
- scitex/plt/ax/_style/_style_violinplot.py +109 -0
- scitex/plt/color/_PARAMS.py +2 -2
- scitex/plt/color/_colors.py +1 -1
- scitex/plt/color/_vizualize_colors.py +3 -3
- scitex/plt/styles/SCITEX_STYLE.yaml +104 -0
- scitex/plt/styles/__init__.py +57 -0
- scitex/plt/styles/_plot_defaults.py +209 -0
- scitex/plt/styles/_plot_postprocess.py +518 -0
- scitex/plt/styles/_style_loader.py +268 -0
- scitex/plt/styles/presets.py +208 -0
- scitex/plt/utils/__init__.py +21 -0
- scitex/plt/utils/_calc_bacc_from_conf_mat.py +1 -1
- scitex/plt/utils/_collect_figure_metadata.py +620 -0
- scitex/plt/utils/_colorbar.py +72 -10
- scitex/plt/utils/_configure_mpl.py +194 -68
- scitex/plt/utils/_crop.py +246 -0
- scitex/plt/utils/_dimension_viewer.py +437 -0
- scitex/plt/utils/_figure_from_axes_mm.py +353 -0
- scitex/plt/utils/_figure_mm.py +356 -0
- scitex/plt/utils/_get_actual_font.py +56 -0
- scitex/plt/utils/_units.py +123 -0
- scitex/{rng/README.md → repro/README_RandomStateManager.md} +2 -2
- scitex/{rng → repro}/_RandomStateManager.py +99 -10
- scitex/repro/__init__.py +32 -50
- scitex/repro/_gen_ID.py +84 -0
- scitex/repro/_gen_timestamp.py +78 -0
- scitex/repro/_hash_array.py +143 -0
- scitex/reproduce/__init__.py +2 -2
- scitex/resource/_get_specs.py +1 -1
- scitex/resource/_log_processor_usages.py +4 -4
- scitex/rng/__init__.py +20 -27
- scitex/scholar/auth/core/__init__.py +0 -0
- scitex/scholar/auth/gateway/__init__.py +0 -0
- scitex/scholar/auth/providers/OpenAthensAuthenticator.py +3 -3
- scitex/scholar/auth/providers/__init__.py +0 -0
- scitex/scholar/auth/session/__init__.py +0 -0
- scitex/scholar/auth/sso/BaseSSOAutomator.py +1 -1
- scitex/scholar/auth/sso/__init__.py +0 -0
- scitex/scholar/browser/utils/__init__.py +0 -0
- scitex/scholar/citation_graph/README.md +117 -0
- scitex/scholar/citation_graph/__init__.py +29 -0
- scitex/scholar/citation_graph/builder.py +214 -0
- scitex/scholar/citation_graph/database.py +239 -0
- scitex/scholar/citation_graph/example.py +96 -0
- scitex/scholar/citation_graph/models.py +80 -0
- scitex/scholar/cli/_CentralArgumentParser.py +0 -0
- scitex/scholar/cli/_argument_groups.py +0 -0
- scitex/scholar/cli/_doi_operations.py +0 -0
- scitex/scholar/cli/_url_utils.py +0 -0
- scitex/scholar/cli/handlers/__init__.py +0 -0
- scitex/scholar/cli/handlers/bibtex_handler.py +0 -0
- scitex/scholar/cli/handlers/doi_handler.py +0 -0
- scitex/scholar/cli/handlers/project_handler.py +0 -0
- scitex/scholar/cli/open_browser.py +0 -0
- scitex/scholar/cli/open_browser_auto.py +0 -0
- scitex/scholar/cli/open_browser_monitored.py +0 -0
- scitex/scholar/config/PublisherRules.py +0 -0
- scitex/scholar/config/core/_PathManager.py +42 -0
- scitex/scholar/config/default.yaml +1 -0
- scitex/scholar/core/__init__.py +0 -0
- scitex/scholar/docs/template.py +1 -1
- scitex/scholar/docs/to_claude/guidelines/python/env.md +1 -1
- scitex/scholar/docs/to_claude/guidelines/python/general.md +1 -1
- scitex/scholar/examples/07_storage_integration.py +1 -1
- scitex/scholar/examples/zotero_integration.py +0 -0
- scitex/scholar/impact_factor/estimation/ImpactFactorEstimationEngine.py +0 -0
- scitex/scholar/impact_factor/estimation/__init__.py +0 -0
- scitex/scholar/impact_factor/estimation/build_database.py +0 -0
- scitex/scholar/impact_factor/estimation/core/__init__.py +0 -0
- scitex/scholar/impact_factor/estimation/core/cache_manager.py +0 -0
- scitex/scholar/impact_factor/estimation/core/calculator.py +0 -0
- scitex/scholar/impact_factor/estimation/core/journal_matcher.py +0 -0
- scitex/scholar/impact_factor/jcr/ImpactFactorJCREngine.py +1 -1
- scitex/scholar/impact_factor/jcr/build_database.py +1 -1
- scitex/scholar/integration/__init__.py +0 -0
- scitex/scholar/integration/base.py +0 -0
- scitex/scholar/integration/mendeley/__init__.py +0 -0
- scitex/scholar/integration/mendeley/exporter.py +0 -0
- scitex/scholar/integration/mendeley/importer.py +0 -0
- scitex/scholar/integration/mendeley/linker.py +0 -0
- scitex/scholar/integration/mendeley/mapper.py +0 -0
- scitex/scholar/integration/zotero/__init__.py +0 -0
- scitex/scholar/integration/zotero/__main__.py +0 -0
- scitex/scholar/integration/zotero/exporter.py +0 -0
- scitex/scholar/integration/zotero/importer.py +0 -0
- scitex/scholar/integration/zotero/linker.py +0 -0
- scitex/scholar/integration/zotero/mapper.py +0 -0
- scitex/scholar/metadata_engines/ScholarEngine.py +9 -1
- scitex/scholar/metadata_engines/individual/ArXivEngine.py +4 -1
- scitex/scholar/metadata_engines/individual/CrossRefEngine.py +20 -3
- scitex/scholar/metadata_engines/individual/CrossRefLocalEngine.py +82 -21
- scitex/scholar/metadata_engines/individual/__init__.py +0 -0
- scitex/scholar/metadata_engines/utils/_URLDOIExtractor.py +19 -1
- scitex/scholar/pdf_download/ScholarPDFDownloader.py +1 -1
- scitex/scholar/pdf_download/__init__.py +0 -0
- scitex/scholar/pipelines/ScholarPipelineBibTeX.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineMetadataParallel.py +0 -0
- scitex/scholar/pipelines/ScholarPipelineMetadataSingle.py +102 -7
- scitex/scholar/pipelines/ScholarPipelineParallel.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineSearchParallel.py +9 -6
- scitex/scholar/pipelines/ScholarPipelineSearchSingle.py +9 -6
- scitex/scholar/pipelines/ScholarPipelineSingle.py +1 -1
- scitex/scholar/pipelines/SearchQueryParser.py +0 -0
- scitex/scholar/pipelines/__init__.py +0 -0
- scitex/scholar/search_engines/ScholarSearchEngine.py +6 -1
- scitex/scholar/search_engines/_BaseSearchEngine.py +0 -0
- scitex/scholar/search_engines/__init__.py +0 -0
- scitex/scholar/search_engines/individual/ArXivSearchEngine.py +0 -0
- scitex/scholar/search_engines/individual/CrossRefSearchEngine.py +0 -0
- scitex/scholar/search_engines/individual/OpenAlexSearchEngine.py +0 -0
- scitex/scholar/search_engines/individual/PubMedSearchEngine.py +0 -0
- scitex/scholar/search_engines/individual/SemanticScholarSearchEngine.py +0 -0
- scitex/scholar/search_engines/individual/__init__.py +0 -0
- scitex/scholar/storage/BibTeXHandler.py +35 -5
- scitex/scholar/storage/PaperIO.py +1 -1
- scitex/scholar/storage/_DeduplicationManager.py +0 -0
- scitex/scholar/storage/_LibraryManager.py +0 -0
- scitex/scholar/storage/__init__.py +0 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_direct_links.py +0 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_dropdown.py +0 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_href.py +0 -0
- scitex/scholar/url_finder/translators/__init__.py +0 -0
- scitex/scholar/url_finder/translators/core/__init__.py +0 -0
- scitex/scholar/url_finder/translators/core/base.py +0 -0
- scitex/scholar/url_finder/translators/core/patterns.py +0 -0
- scitex/scholar/url_finder/translators/individual/BOFiP_Impots.py +0 -0
- scitex/scholar/url_finder/translators/individual/Baidu_Scholar.py +0 -0
- scitex/scholar/url_finder/translators/individual/Bangkok_Post.py +0 -0
- scitex/scholar/url_finder/translators/individual/Baruch_Foundation.py +0 -0
- scitex/scholar/url_finder/translators/individual/Beobachter.py +0 -0
- scitex/scholar/url_finder/translators/individual/Bezneng_Gajit.py +0 -0
- scitex/scholar/url_finder/translators/individual/BibLaTeX.py +0 -0
- scitex/scholar/url_finder/translators/individual/BibTeX.py +0 -0
- scitex/scholar/url_finder/translators/individual/Biblio_com.py +0 -0
- scitex/scholar/url_finder/translators/individual/Bibliontology_RDF.py +0 -0
- scitex/scholar/url_finder/translators/individual/CLASE.py +0 -0
- scitex/scholar/url_finder/translators/individual/COBISS.py +0 -0
- scitex/scholar/url_finder/translators/individual/COinS.py +0 -0
- scitex/scholar/url_finder/translators/individual/CQ_Press.py +0 -0
- scitex/scholar/url_finder/translators/individual/CROSBI.py +0 -0
- scitex/scholar/url_finder/translators/individual/CSL_JSON.py +0 -0
- scitex/scholar/url_finder/translators/individual/CSV.py +0 -0
- scitex/scholar/url_finder/translators/individual/CalMatters.py +0 -0
- scitex/scholar/url_finder/translators/individual/Calisphere.py +0 -0
- scitex/scholar/url_finder/translators/individual/Camara_Brasileira_do_Livro_ISBN.py +0 -0
- scitex/scholar/url_finder/translators/individual/CanLII.py +0 -0
- scitex/scholar/url_finder/translators/individual/Canada_com.py +0 -0
- scitex/scholar/url_finder/translators/individual/Canadian_Letters_and_Images.py +0 -0
- scitex/scholar/url_finder/translators/individual/Canadiana_ca.py +0 -0
- scitex/scholar/url_finder/translators/individual/Cascadilla_Proceedings_Project.py +0 -0
- scitex/scholar/url_finder/translators/individual/Central_and_Eastern_European_Online_Library_Journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/Champlain_Society_Collection.py +0 -0
- scitex/scholar/url_finder/translators/individual/Chicago_Journal_of_Theoretical_Computer_Science.py +0 -0
- scitex/scholar/url_finder/translators/individual/Christian_Science_Monitor.py +0 -0
- scitex/scholar/url_finder/translators/individual/Columbia_University_Press.py +0 -0
- scitex/scholar/url_finder/translators/individual/Common_Place.py +0 -0
- scitex/scholar/url_finder/translators/individual/Cornell_LII.py +0 -0
- scitex/scholar/url_finder/translators/individual/Cornell_University_Press.py +0 -0
- scitex/scholar/url_finder/translators/individual/CourtListener.py +0 -0
- scitex/scholar/url_finder/translators/individual/DAI_Zenon.py +0 -0
- scitex/scholar/url_finder/translators/individual/__init__.py +0 -0
- scitex/scholar/url_finder/translators/individual/abc_news_australia.py +0 -0
- scitex/scholar/url_finder/translators/individual/access_engineering.py +0 -0
- scitex/scholar/url_finder/translators/individual/access_medicine.py +0 -0
- scitex/scholar/url_finder/translators/individual/access_science.py +0 -0
- scitex/scholar/url_finder/translators/individual/acls_humanities_ebook.py +0 -0
- scitex/scholar/url_finder/translators/individual/aclweb.py +0 -0
- scitex/scholar/url_finder/translators/individual/acm.py +0 -0
- scitex/scholar/url_finder/translators/individual/acm_digital_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/acs.py +0 -0
- scitex/scholar/url_finder/translators/individual/acs_publications.py +0 -0
- scitex/scholar/url_finder/translators/individual/adam_matthew_digital.py +0 -0
- scitex/scholar/url_finder/translators/individual/ads_bibcode.py +0 -0
- scitex/scholar/url_finder/translators/individual/aea_web.py +0 -0
- scitex/scholar/url_finder/translators/individual/agencia_del_isbn.py +0 -0
- scitex/scholar/url_finder/translators/individual/agris.py +0 -0
- scitex/scholar/url_finder/translators/individual/ahval_news.py +0 -0
- scitex/scholar/url_finder/translators/individual/aip.py +0 -0
- scitex/scholar/url_finder/translators/individual/air_university_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/airiti.py +0 -0
- scitex/scholar/url_finder/translators/individual/alexander_street_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/all_africa.py +0 -0
- scitex/scholar/url_finder/translators/individual/allafrica.py +0 -0
- scitex/scholar/url_finder/translators/individual/alsharekh.py +0 -0
- scitex/scholar/url_finder/translators/individual/alternet.py +0 -0
- scitex/scholar/url_finder/translators/individual/aluka.py +0 -0
- scitex/scholar/url_finder/translators/individual/amazon.py +0 -0
- scitex/scholar/url_finder/translators/individual/american_archive_public_broadcasting.py +0 -0
- scitex/scholar/url_finder/translators/individual/american_institute_aeronautics_astronautics.py +0 -0
- scitex/scholar/url_finder/translators/individual/american_prospect.py +0 -0
- scitex/scholar/url_finder/translators/individual/ams_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/ams_mathscinet.py +0 -0
- scitex/scholar/url_finder/translators/individual/ams_mathscinet_legacy.py +0 -0
- scitex/scholar/url_finder/translators/individual/ancestry_com_us_federal_census.py +0 -0
- scitex/scholar/url_finder/translators/individual/ancestry_us_federal_census.py +0 -0
- scitex/scholar/url_finder/translators/individual/annual_reviews.py +0 -0
- scitex/scholar/url_finder/translators/individual/antikvarium_hu.py +0 -0
- scitex/scholar/url_finder/translators/individual/aosic.py +0 -0
- scitex/scholar/url_finder/translators/individual/apa_psycnet.py +0 -0
- scitex/scholar/url_finder/translators/individual/apn_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/aps.py +0 -0
- scitex/scholar/url_finder/translators/individual/aps_physics.py +0 -0
- scitex/scholar/url_finder/translators/individual/aquadocs.py +0 -0
- scitex/scholar/url_finder/translators/individual/archeion.py +0 -0
- scitex/scholar/url_finder/translators/individual/archiv_fuer_sozialgeschichte.py +0 -0
- scitex/scholar/url_finder/translators/individual/ariana_news.py +0 -0
- scitex/scholar/url_finder/translators/individual/art_institute_of_chicago.py +0 -0
- scitex/scholar/url_finder/translators/individual/artefacts_canada.py +0 -0
- scitex/scholar/url_finder/translators/individual/artfl_encyclopedie.py +0 -0
- scitex/scholar/url_finder/translators/individual/artforum.py +0 -0
- scitex/scholar/url_finder/translators/individual/artnet.py +0 -0
- scitex/scholar/url_finder/translators/individual/artnews.py +0 -0
- scitex/scholar/url_finder/translators/individual/artstor.py +0 -0
- scitex/scholar/url_finder/translators/individual/arxiv.py +0 -0
- scitex/scholar/url_finder/translators/individual/asce.py +0 -0
- scitex/scholar/url_finder/translators/individual/asco_meeting_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/astis.py +0 -0
- scitex/scholar/url_finder/translators/individual/atlanta_journal_constitution.py +0 -0
- scitex/scholar/url_finder/translators/individual/ats_international_journal.py +0 -0
- scitex/scholar/url_finder/translators/individual/atypon.py +0 -0
- scitex/scholar/url_finder/translators/individual/atypon_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/austlii_and_nzlii.py +0 -0
- scitex/scholar/url_finder/translators/individual/australian_dictionary_of_biography.py +0 -0
- scitex/scholar/url_finder/translators/individual/bailii.py +0 -0
- scitex/scholar/url_finder/translators/individual/bbc.py +0 -0
- scitex/scholar/url_finder/translators/individual/bbc_genome.py +0 -0
- scitex/scholar/url_finder/translators/individual/beck_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/biblioteca_nacional_de_maestros.py +0 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_archives_nationale_quebec_pistard.py +0 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_archives_nationales_quebec.py +0 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_et_archives_nationale_du_quebec__pistard_.py +0 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_et_archives_nationales_du_quebec.py +0 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_nationale_de_france.py +0 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_nationale_france.py +0 -0
- scitex/scholar/url_finder/translators/individual/bibsys.py +0 -0
- scitex/scholar/url_finder/translators/individual/bioconductor.py +0 -0
- scitex/scholar/url_finder/translators/individual/biomed_central.py +0 -0
- scitex/scholar/url_finder/translators/individual/bioone.py +0 -0
- scitex/scholar/url_finder/translators/individual/biorxiv.py +0 -0
- scitex/scholar/url_finder/translators/individual/blaetter.py +0 -0
- scitex/scholar/url_finder/translators/individual/blogger.py +0 -0
- scitex/scholar/url_finder/translators/individual/bloomberg.py +0 -0
- scitex/scholar/url_finder/translators/individual/bloomsbury_food_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/bluesky.py +0 -0
- scitex/scholar/url_finder/translators/individual/bnf_isbn.py +0 -0
- scitex/scholar/url_finder/translators/individual/bocc.py +0 -0
- scitex/scholar/url_finder/translators/individual/boe.py +0 -0
- scitex/scholar/url_finder/translators/individual/bookmarks.py +0 -0
- scitex/scholar/url_finder/translators/individual/bookshop_org.py +0 -0
- scitex/scholar/url_finder/translators/individual/boston_review.py +0 -0
- scitex/scholar/url_finder/translators/individual/bosworth_toller_anglo_saxon_dictionary.py +0 -0
- scitex/scholar/url_finder/translators/individual/bosworth_toller_s_anglo_saxon_dictionary_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/bracero_history_archive.py +0 -0
- scitex/scholar/url_finder/translators/individual/brill.py +0 -0
- scitex/scholar/url_finder/translators/individual/brukerhandboken.py +0 -0
- scitex/scholar/url_finder/translators/individual/bryn_mawr_classical_review.py +0 -0
- scitex/scholar/url_finder/translators/individual/bundesgesetzblatt.py +0 -0
- scitex/scholar/url_finder/translators/individual/business_standard.py +0 -0
- scitex/scholar/url_finder/translators/individual/cabi___cab_abstracts.py +0 -0
- scitex/scholar/url_finder/translators/individual/cabi_cab_abstracts.py +0 -0
- scitex/scholar/url_finder/translators/individual/cairn.py +0 -0
- scitex/scholar/url_finder/translators/individual/cairn_info.py +0 -0
- scitex/scholar/url_finder/translators/individual/cambridge.py +0 -0
- scitex/scholar/url_finder/translators/individual/cambridge_core.py +0 -0
- scitex/scholar/url_finder/translators/individual/cambridge_engage_preprints.py +0 -0
- scitex/scholar/url_finder/translators/individual/caod.py +0 -0
- scitex/scholar/url_finder/translators/individual/cbc.py +0 -0
- scitex/scholar/url_finder/translators/individual/ccfr__bnf_.py +0 -0
- scitex/scholar/url_finder/translators/individual/ccfr_bnf.py +0 -0
- scitex/scholar/url_finder/translators/individual/cell_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/cern_document_server.py +0 -0
- scitex/scholar/url_finder/translators/individual/ceur_workshop_proceedings.py +0 -0
- scitex/scholar/url_finder/translators/individual/cff.py +0 -0
- scitex/scholar/url_finder/translators/individual/cff_references.py +0 -0
- scitex/scholar/url_finder/translators/individual/champlain_society___collection.py +0 -0
- scitex/scholar/url_finder/translators/individual/chronicling_america.py +0 -0
- scitex/scholar/url_finder/translators/individual/cia_world_factbook.py +0 -0
- scitex/scholar/url_finder/translators/individual/cinii_research.py +0 -0
- scitex/scholar/url_finder/translators/individual/citavi_5_xml.py +0 -0
- scitex/scholar/url_finder/translators/individual/citeseer.py +0 -0
- scitex/scholar/url_finder/translators/individual/citizen_lab.py +0 -0
- scitex/scholar/url_finder/translators/individual/civilization_ca.py +0 -0
- scitex/scholar/url_finder/translators/individual/clacso.py +0 -0
- scitex/scholar/url_finder/translators/individual/climate_change_and_human_health_literature_portal.py +0 -0
- scitex/scholar/url_finder/translators/individual/climate_change_human_health.py +0 -0
- scitex/scholar/url_finder/translators/individual/clinical_key.py +0 -0
- scitex/scholar/url_finder/translators/individual/clinicaltrials_gov.py +0 -0
- scitex/scholar/url_finder/translators/individual/cnki.py +0 -0
- scitex/scholar/url_finder/translators/individual/code4lib_journal.py +0 -0
- scitex/scholar/url_finder/translators/individual/colorado_state_legislature.py +0 -0
- scitex/scholar/url_finder/translators/individual/computer_history_museum_archive.py +0 -0
- scitex/scholar/url_finder/translators/individual/copernicus.py +0 -0
- scitex/scholar/url_finder/translators/individual/crossref_rest.py +0 -0
- scitex/scholar/url_finder/translators/individual/crossref_unixref_xml.py +0 -0
- scitex/scholar/url_finder/translators/individual/csiro_publishing.py +0 -0
- scitex/scholar/url_finder/translators/individual/csiro_publishing_dup.py +0 -0
- scitex/scholar/url_finder/translators/individual/current_affairs.py +0 -0
- scitex/scholar/url_finder/translators/individual/dabi.py +0 -0
- scitex/scholar/url_finder/translators/individual/dagens_nyheter.py +0 -0
- scitex/scholar/url_finder/translators/individual/dagstuhl.py +0 -0
- scitex/scholar/url_finder/translators/individual/dagstuhl_research_online_publication_server.py +0 -0
- scitex/scholar/url_finder/translators/individual/dar_almandumah.py +0 -0
- scitex/scholar/url_finder/translators/individual/dart_europe.py +0 -0
- scitex/scholar/url_finder/translators/individual/data_gov.py +0 -0
- scitex/scholar/url_finder/translators/individual/databrary.py +0 -0
- scitex/scholar/url_finder/translators/individual/datacite_json.py +0 -0
- scitex/scholar/url_finder/translators/individual/dataverse.py +0 -0
- scitex/scholar/url_finder/translators/individual/daum_news.py +0 -0
- scitex/scholar/url_finder/translators/individual/dblp.py +0 -0
- scitex/scholar/url_finder/translators/individual/dblp_computer_science_bibliography.py +0 -0
- scitex/scholar/url_finder/translators/individual/dbpia.py +0 -0
- scitex/scholar/url_finder/translators/individual/de_gruyter_brill.py +0 -0
- scitex/scholar/url_finder/translators/individual/defense_technical_information_center.py +0 -0
- scitex/scholar/url_finder/translators/individual/dejure_org.py +0 -0
- scitex/scholar/url_finder/translators/individual/delpher.py +0 -0
- scitex/scholar/url_finder/translators/individual/demographic_research.py +0 -0
- scitex/scholar/url_finder/translators/individual/denik_cz.py +0 -0
- scitex/scholar/url_finder/translators/individual/depatisnet.py +0 -0
- scitex/scholar/url_finder/translators/individual/der_freitag.py +0 -0
- scitex/scholar/url_finder/translators/individual/der_spiegel.py +0 -0
- scitex/scholar/url_finder/translators/individual/desiring_god.py +0 -0
- scitex/scholar/url_finder/translators/individual/deutsche_fotothek.py +0 -0
- scitex/scholar/url_finder/translators/individual/deutsche_nationalbibliothek.py +0 -0
- scitex/scholar/url_finder/translators/individual/dhistory.py +0 -0
- scitex/scholar/url_finder/translators/individual/dialnet.py +0 -0
- scitex/scholar/url_finder/translators/individual/die_zeit.py +0 -0
- scitex/scholar/url_finder/translators/individual/digibib_net.py +0 -0
- scitex/scholar/url_finder/translators/individual/digital_humanities_quarterly.py +0 -0
- scitex/scholar/url_finder/translators/individual/digital_spy.py +0 -0
- scitex/scholar/url_finder/translators/individual/digizeitschriften.py +0 -0
- scitex/scholar/url_finder/translators/individual/dimensions.py +0 -0
- scitex/scholar/url_finder/translators/individual/dlibra.py +0 -0
- scitex/scholar/url_finder/translators/individual/doaj.py +0 -0
- scitex/scholar/url_finder/translators/individual/doi.py +0 -0
- scitex/scholar/url_finder/translators/individual/doi_content_negotiation.py +0 -0
- scitex/scholar/url_finder/translators/individual/douban.py +0 -0
- scitex/scholar/url_finder/translators/individual/dpla.py +0 -0
- scitex/scholar/url_finder/translators/individual/dreier_neuerscheinungsdienst.py +0 -0
- scitex/scholar/url_finder/translators/individual/drugbank_ca.py +0 -0
- scitex/scholar/url_finder/translators/individual/dryad.py +0 -0
- scitex/scholar/url_finder/translators/individual/dryad_digital_repository.py +0 -0
- scitex/scholar/url_finder/translators/individual/dspace.py +0 -0
- scitex/scholar/url_finder/translators/individual/dspace_intermediate_metadata.py +0 -0
- scitex/scholar/url_finder/translators/individual/duke_university_press_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/e_periodica_switzerland.py +0 -0
- scitex/scholar/url_finder/translators/individual/eastview.py +0 -0
- scitex/scholar/url_finder/translators/individual/ebrary.py +0 -0
- scitex/scholar/url_finder/translators/individual/ebsco_discovery_layer.py +0 -0
- scitex/scholar/url_finder/translators/individual/ebscohost.py +0 -0
- scitex/scholar/url_finder/translators/individual/edinburgh_university_press_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/education_week.py +0 -0
- scitex/scholar/url_finder/translators/individual/eidr.py +0 -0
- scitex/scholar/url_finder/translators/individual/el_comercio__peru_.py +0 -0
- scitex/scholar/url_finder/translators/individual/el_pais.py +0 -0
- scitex/scholar/url_finder/translators/individual/electronic_colloquium_on_computational_complexity.py +0 -0
- scitex/scholar/url_finder/translators/individual/elibrary_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/elicit.py +0 -0
- scitex/scholar/url_finder/translators/individual/elife.py +0 -0
- scitex/scholar/url_finder/translators/individual/elsevier_health.py +0 -0
- scitex/scholar/url_finder/translators/individual/elsevier_health_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/elsevier_pure.py +0 -0
- scitex/scholar/url_finder/translators/individual/embedded_metadata.py +0 -0
- scitex/scholar/url_finder/translators/individual/emedicine.py +0 -0
- scitex/scholar/url_finder/translators/individual/emerald.py +0 -0
- scitex/scholar/url_finder/translators/individual/emerald_insight.py +0 -0
- scitex/scholar/url_finder/translators/individual/emja.py +0 -0
- scitex/scholar/url_finder/translators/individual/encyclopedia_of_chicago.py +0 -0
- scitex/scholar/url_finder/translators/individual/encyclopedia_of_korean_culture.py +0 -0
- scitex/scholar/url_finder/translators/individual/endnote_xml.py +0 -0
- scitex/scholar/url_finder/translators/individual/engineering_village.py +0 -0
- scitex/scholar/url_finder/translators/individual/envidat.py +0 -0
- scitex/scholar/url_finder/translators/individual/epa_national_library_catalog.py +0 -0
- scitex/scholar/url_finder/translators/individual/epicurious.py +0 -0
- scitex/scholar/url_finder/translators/individual/eprint_iacr.py +0 -0
- scitex/scholar/url_finder/translators/individual/eric.py +0 -0
- scitex/scholar/url_finder/translators/individual/erudit.py +0 -0
- scitex/scholar/url_finder/translators/individual/espacenet.py +0 -0
- scitex/scholar/url_finder/translators/individual/etatar_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/euclid.py +0 -0
- scitex/scholar/url_finder/translators/individual/eur_lex.py +0 -0
- scitex/scholar/url_finder/translators/individual/eurasianet.py +0 -0
- scitex/scholar/url_finder/translators/individual/eurogamerusgamer.py +0 -0
- scitex/scholar/url_finder/translators/individual/europe_pmc.py +0 -0
- scitex/scholar/url_finder/translators/individual/evernote.py +0 -0
- scitex/scholar/url_finder/translators/individual/f1000_research.py +0 -0
- scitex/scholar/url_finder/translators/individual/fachportal_padagogik.py +0 -0
- scitex/scholar/url_finder/translators/individual/factiva.py +0 -0
- scitex/scholar/url_finder/translators/individual/failed_architecture.py +0 -0
- scitex/scholar/url_finder/translators/individual/fairfax_australia.py +0 -0
- scitex/scholar/url_finder/translators/individual/fao_publications.py +0 -0
- scitex/scholar/url_finder/translators/individual/fatcat.py +0 -0
- scitex/scholar/url_finder/translators/individual/faz_net.py +0 -0
- scitex/scholar/url_finder/translators/individual/feb_web_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/figshare.py +0 -0
- scitex/scholar/url_finder/translators/individual/financial_times.py +0 -0
- scitex/scholar/url_finder/translators/individual/finna.py +0 -0
- scitex/scholar/url_finder/translators/individual/fishpond_co_nz.py +0 -0
- scitex/scholar/url_finder/translators/individual/flickr.py +0 -0
- scitex/scholar/url_finder/translators/individual/foreign_affairs.py +0 -0
- scitex/scholar/url_finder/translators/individual/foreign_policy.py +0 -0
- scitex/scholar/url_finder/translators/individual/fr_online_de.py +0 -0
- scitex/scholar/url_finder/translators/individual/freecite.py +0 -0
- scitex/scholar/url_finder/translators/individual/freepatentsonline.py +0 -0
- scitex/scholar/url_finder/translators/individual/frieze.py +0 -0
- scitex/scholar/url_finder/translators/individual/frontiers.py +0 -0
- scitex/scholar/url_finder/translators/individual/gale_databases.py +0 -0
- scitex/scholar/url_finder/translators/individual/galegdc.py +0 -0
- scitex/scholar/url_finder/translators/individual/galegroup.py +0 -0
- scitex/scholar/url_finder/translators/individual/gallica.py +0 -0
- scitex/scholar/url_finder/translators/individual/game_studies.py +0 -0
- scitex/scholar/url_finder/translators/individual/gamespot.py +0 -0
- scitex/scholar/url_finder/translators/individual/gamestar_gamepro.py +0 -0
- scitex/scholar/url_finder/translators/individual/gasyrlar_awazy.py +0 -0
- scitex/scholar/url_finder/translators/individual/gemeinsamer_bibliotheksverbund_isbn.py +0 -0
- scitex/scholar/url_finder/translators/individual/gene_ontology.py +0 -0
- scitex/scholar/url_finder/translators/individual/github.py +0 -0
- scitex/scholar/url_finder/translators/individual/globes.py +0 -0
- scitex/scholar/url_finder/translators/individual/gmail.py +0 -0
- scitex/scholar/url_finder/translators/individual/gms_german_medical_science.py +0 -0
- scitex/scholar/url_finder/translators/individual/goodreads.py +0 -0
- scitex/scholar/url_finder/translators/individual/google_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/google_patents.py +0 -0
- scitex/scholar/url_finder/translators/individual/google_play.py +0 -0
- scitex/scholar/url_finder/translators/individual/google_presentation.py +0 -0
- scitex/scholar/url_finder/translators/individual/google_research.py +0 -0
- scitex/scholar/url_finder/translators/individual/google_scholar.py +0 -0
- scitex/scholar/url_finder/translators/individual/govinfo.py +0 -0
- scitex/scholar/url_finder/translators/individual/gpo_access_e_cfr.py +0 -0
- scitex/scholar/url_finder/translators/individual/gulag_many_days__many_lives.py +0 -0
- scitex/scholar/url_finder/translators/individual/haaretz.py +0 -0
- scitex/scholar/url_finder/translators/individual/habr.py +0 -0
- scitex/scholar/url_finder/translators/individual/hal.py +0 -0
- scitex/scholar/url_finder/translators/individual/hal_archives_ouvertes.py +0 -0
- scitex/scholar/url_finder/translators/individual/handelszeitung.py +0 -0
- scitex/scholar/url_finder/translators/individual/hanrei_watch.py +0 -0
- scitex/scholar/url_finder/translators/individual/harper_s_magazine.py +0 -0
- scitex/scholar/url_finder/translators/individual/harvard_business_review.py +0 -0
- scitex/scholar/url_finder/translators/individual/harvard_caselaw_access_project.py +0 -0
- scitex/scholar/url_finder/translators/individual/harvard_university_press_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/hathitrust.py +0 -0
- scitex/scholar/url_finder/translators/individual/hcsp.py +0 -0
- scitex/scholar/url_finder/translators/individual/heinonline.py +0 -0
- scitex/scholar/url_finder/translators/individual/heise.py +0 -0
- scitex/scholar/url_finder/translators/individual/herder.py +0 -0
- scitex/scholar/url_finder/translators/individual/highbeam.py +0 -0
- scitex/scholar/url_finder/translators/individual/highwire.py +0 -0
- scitex/scholar/url_finder/translators/individual/highwire2.py +0 -0
- scitex/scholar/url_finder/translators/individual/highwire_2_0.py +0 -0
- scitex/scholar/url_finder/translators/individual/hindawi.py +0 -0
- scitex/scholar/url_finder/translators/individual/hindawi_publishers.py +0 -0
- scitex/scholar/url_finder/translators/individual/hispanic_american_periodical_index.py +0 -0
- scitex/scholar/url_finder/translators/individual/homeland_security_digital_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/hudoc.py +0 -0
- scitex/scholar/url_finder/translators/individual/huff_post.py +0 -0
- scitex/scholar/url_finder/translators/individual/human_rights_watch.py +0 -0
- scitex/scholar/url_finder/translators/individual/ibisworld.py +0 -0
- scitex/scholar/url_finder/translators/individual/idea_alm.py +0 -0
- scitex/scholar/url_finder/translators/individual/idref.py +0 -0
- scitex/scholar/url_finder/translators/individual/ieee_computer_society.py +0 -0
- scitex/scholar/url_finder/translators/individual/ieee_xplore.py +0 -0
- scitex/scholar/url_finder/translators/individual/ietf.py +0 -0
- scitex/scholar/url_finder/translators/individual/ign.py +0 -0
- scitex/scholar/url_finder/translators/individual/imdb.py +0 -0
- scitex/scholar/url_finder/translators/individual/imf.py +0 -0
- scitex/scholar/url_finder/translators/individual/in_these_times.py +0 -0
- scitex/scholar/url_finder/translators/individual/informationssystem_medienpaedagogik.py +0 -0
- scitex/scholar/url_finder/translators/individual/informit_database.py +0 -0
- scitex/scholar/url_finder/translators/individual/infotrac.py +0 -0
- scitex/scholar/url_finder/translators/individual/ingenta_connect.py +0 -0
- scitex/scholar/url_finder/translators/individual/ingentaconnect.py +0 -0
- scitex/scholar/url_finder/translators/individual/inside_higher_ed.py +0 -0
- scitex/scholar/url_finder/translators/individual/insignia_opac.py +0 -0
- scitex/scholar/url_finder/translators/individual/inspire.py +0 -0
- scitex/scholar/url_finder/translators/individual/institute_of_contemporary_art.py +0 -0
- scitex/scholar/url_finder/translators/individual/institute_of_physics.py +0 -0
- scitex/scholar/url_finder/translators/individual/integrum.py +0 -0
- scitex/scholar/url_finder/translators/individual/intellixir.py +0 -0
- scitex/scholar/url_finder/translators/individual/inter_research_science_center.py +0 -0
- scitex/scholar/url_finder/translators/individual/international_nuclear_information_system.py +0 -0
- scitex/scholar/url_finder/translators/individual/internet_archive.py +0 -0
- scitex/scholar/url_finder/translators/individual/internet_archive_scholar.py +0 -0
- scitex/scholar/url_finder/translators/individual/internet_archive_wayback.py +0 -0
- scitex/scholar/url_finder/translators/individual/internet_archive_wayback_machine.py +0 -0
- scitex/scholar/url_finder/translators/individual/invenio_rdm.py +0 -0
- scitex/scholar/url_finder/translators/individual/inveniordm.py +0 -0
- scitex/scholar/url_finder/translators/individual/io_port.py +0 -0
- scitex/scholar/url_finder/translators/individual/iop.py +0 -0
- scitex/scholar/url_finder/translators/individual/ipcc.py +0 -0
- scitex/scholar/url_finder/translators/individual/isidore.py +0 -0
- scitex/scholar/url_finder/translators/individual/istc.py +0 -0
- scitex/scholar/url_finder/translators/individual/j_stage.py +0 -0
- scitex/scholar/url_finder/translators/individual/jahrbuch.py +0 -0
- scitex/scholar/url_finder/translators/individual/japan_times_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/jets.py +0 -0
- scitex/scholar/url_finder/translators/individual/jisc_historical_texts.py +0 -0
- scitex/scholar/url_finder/translators/individual/journal_of_electronic_publishing.py +0 -0
- scitex/scholar/url_finder/translators/individual/journal_of_extension.py +0 -0
- scitex/scholar/url_finder/translators/individual/journal_of_machine_learning_research.py +0 -0
- scitex/scholar/url_finder/translators/individual/journal_of_religion_and_society.py +0 -0
- scitex/scholar/url_finder/translators/individual/jrc_publications_repository.py +0 -0
- scitex/scholar/url_finder/translators/individual/jstage.py +0 -0
- scitex/scholar/url_finder/translators/individual/juricaf.py +0 -0
- scitex/scholar/url_finder/translators/individual/jurion.py +0 -0
- scitex/scholar/url_finder/translators/individual/juris.py +0 -0
- scitex/scholar/url_finder/translators/individual/jurpc.py +0 -0
- scitex/scholar/url_finder/translators/individual/k10plus_isbn.py +0 -0
- scitex/scholar/url_finder/translators/individual/kanopy.py +0 -0
- scitex/scholar/url_finder/translators/individual/karger.py +0 -0
- scitex/scholar/url_finder/translators/individual/khaama_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/kitapyurdu_com.py +0 -0
- scitex/scholar/url_finder/translators/individual/kommersant.py +0 -0
- scitex/scholar/url_finder/translators/individual/korean_national_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/kstudy.py +0 -0
- scitex/scholar/url_finder/translators/individual/l_annee_philologique.py +0 -0
- scitex/scholar/url_finder/translators/individual/la_croix.py +0 -0
- scitex/scholar/url_finder/translators/individual/la_nacion__argentina_.py +0 -0
- scitex/scholar/url_finder/translators/individual/la_presse.py +0 -0
- scitex/scholar/url_finder/translators/individual/la_republica__peru_.py +0 -0
- scitex/scholar/url_finder/translators/individual/la_times.py +0 -0
- scitex/scholar/url_finder/translators/individual/lagen_nu.py +0 -0
- scitex/scholar/url_finder/translators/individual/landesbibliographie_baden_wurttemberg.py +0 -0
- scitex/scholar/url_finder/translators/individual/lapham_s_quarterly.py +0 -0
- scitex/scholar/url_finder/translators/individual/le_devoir.py +0 -0
- scitex/scholar/url_finder/translators/individual/le_figaro.py +0 -0
- scitex/scholar/url_finder/translators/individual/le_maitron.py +0 -0
- scitex/scholar/url_finder/translators/individual/le_monde.py +0 -0
- scitex/scholar/url_finder/translators/individual/le_monde_diplomatique.py +0 -0
- scitex/scholar/url_finder/translators/individual/legifrance.py +0 -0
- scitex/scholar/url_finder/translators/individual/legislative_insight.py +0 -0
- scitex/scholar/url_finder/translators/individual/lexis_.py +0 -0
- scitex/scholar/url_finder/translators/individual/lexisnexis.py +0 -0
- scitex/scholar/url_finder/translators/individual/libraries_tasmania.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__aleph_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__amicus_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__aquabrowser_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__bibliocommons_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__blacklight_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__capita_prism_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__dra_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__dynix_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__encore_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__innopac_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__koha_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__mango_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__opals_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__pica2_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__pica_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__pika_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__polaris_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__quolto_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__rero_ils_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__sirsi_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__sirsi_elibrary_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__slims_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__tind_ils_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__tinread_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__tlcyouseemore_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__visual_library_2021_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__voyager_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__voyager_7_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__vtls_.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_genesis.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_hub_discover.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_of_congress_digital_collections.py +0 -0
- scitex/scholar/url_finder/translators/individual/library_of_congress_isbn.py +0 -0
- scitex/scholar/url_finder/translators/individual/libris_isbn.py +0 -0
- scitex/scholar/url_finder/translators/individual/lingbuzz.py +0 -0
- scitex/scholar/url_finder/translators/individual/lippincott_williams_and_wilkins.py +0 -0
- scitex/scholar/url_finder/translators/individual/literary_hub.py +0 -0
- scitex/scholar/url_finder/translators/individual/litres.py +0 -0
- scitex/scholar/url_finder/translators/individual/livejournal.py +0 -0
- scitex/scholar/url_finder/translators/individual/livivo.py +0 -0
- scitex/scholar/url_finder/translators/individual/london_review_of_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/lookus.py +0 -0
- scitex/scholar/url_finder/translators/individual/lulu.py +0 -0
- scitex/scholar/url_finder/translators/individual/lwn_net.py +0 -0
- scitex/scholar/url_finder/translators/individual/lww.py +0 -0
- scitex/scholar/url_finder/translators/individual/mab2.py +0 -0
- scitex/scholar/url_finder/translators/individual/magazines_russ_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/mailman.py +0 -0
- scitex/scholar/url_finder/translators/individual/mainichi_daily_news.py +0 -0
- scitex/scholar/url_finder/translators/individual/marc.py +0 -0
- scitex/scholar/url_finder/translators/individual/marcxml.py +0 -0
- scitex/scholar/url_finder/translators/individual/mastodon.py +0 -0
- scitex/scholar/url_finder/translators/individual/matbugat_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/max_planck_institute_for_the_history_of_science_virtual_laboratory_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/mcv.py +0 -0
- scitex/scholar/url_finder/translators/individual/mdpi.py +0 -0
- scitex/scholar/url_finder/translators/individual/mdpi_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/medes.py +0 -0
- scitex/scholar/url_finder/translators/individual/medium.py +0 -0
- scitex/scholar/url_finder/translators/individual/medline_nbib.py +0 -0
- scitex/scholar/url_finder/translators/individual/medlinenbib.py +0 -0
- scitex/scholar/url_finder/translators/individual/medra.py +0 -0
- scitex/scholar/url_finder/translators/individual/metalib.py +0 -0
- scitex/scholar/url_finder/translators/individual/mets.py +0 -0
- scitex/scholar/url_finder/translators/individual/microbiology_society_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/microsoft_academic.py +0 -0
- scitex/scholar/url_finder/translators/individual/midas_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/mikromarc.py +0 -0
- scitex/scholar/url_finder/translators/individual/milli_kutuphane.py +0 -0
- scitex/scholar/url_finder/translators/individual/mit_press_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/mods.py +0 -0
- scitex/scholar/url_finder/translators/individual/mpg_pure.py +0 -0
- scitex/scholar/url_finder/translators/individual/musee_du_louvre.py +0 -0
- scitex/scholar/url_finder/translators/individual/nagoya_university_opac.py +0 -0
- scitex/scholar/url_finder/translators/individual/nasa_ads.py +0 -0
- scitex/scholar/url_finder/translators/individual/nasa_ntrs.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_academies_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_agriculture_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_archives_of_australia.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_archives_of_south_africa.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_bureau_of_economic_research.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_diet_library_catalogue.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_gallery_of_art___usa.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_gallery_of_australia.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_australia__new_catalog_.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_belarus.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_norway.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_poland_isbn.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_post.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_technical_reports_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/national_transportation_library_rosa_p.py +0 -0
- scitex/scholar/url_finder/translators/individual/nature.py +0 -0
- scitex/scholar/url_finder/translators/individual/nber.py +0 -0
- scitex/scholar/url_finder/translators/individual/ncbi_nucleotide.py +0 -0
- scitex/scholar/url_finder/translators/individual/neural_information_processing_systems.py +0 -0
- scitex/scholar/url_finder/translators/individual/new_left_review.py +0 -0
- scitex/scholar/url_finder/translators/individual/new_zealand_herald.py +0 -0
- scitex/scholar/url_finder/translators/individual/newlines_magazine.py +0 -0
- scitex/scholar/url_finder/translators/individual/news_corp_australia.py +0 -0
- scitex/scholar/url_finder/translators/individual/newsbank.py +0 -0
- scitex/scholar/url_finder/translators/individual/newshub_co_nz.py +0 -0
- scitex/scholar/url_finder/translators/individual/newsnettamedia.py +0 -0
- scitex/scholar/url_finder/translators/individual/newspapers_com.py +0 -0
- scitex/scholar/url_finder/translators/individual/noor_digital_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/note_html.py +0 -0
- scitex/scholar/url_finder/translators/individual/note_markdown.py +0 -0
- scitex/scholar/url_finder/translators/individual/notre_dame_philosophical_reviews.py +0 -0
- scitex/scholar/url_finder/translators/individual/npr.py +0 -0
- scitex/scholar/url_finder/translators/individual/nrc_nl.py +0 -0
- scitex/scholar/url_finder/translators/individual/nrc_research_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/ntsb_accident_reports.py +0 -0
- scitex/scholar/url_finder/translators/individual/nypl_menus.py +0 -0
- scitex/scholar/url_finder/translators/individual/nypl_research_catalog.py +0 -0
- scitex/scholar/url_finder/translators/individual/nytimes_com.py +0 -0
- scitex/scholar/url_finder/translators/individual/nzz_ch.py +0 -0
- scitex/scholar/url_finder/translators/individual/oapen.py +0 -0
- scitex/scholar/url_finder/translators/individual/oclc_worldcat_firstsearch.py +0 -0
- scitex/scholar/url_finder/translators/individual/oecd.py +0 -0
- scitex/scholar/url_finder/translators/individual/oecd_ilibrary.py +0 -0
- scitex/scholar/url_finder/translators/individual/ohiolink.py +0 -0
- scitex/scholar/url_finder/translators/individual/open_conf.py +0 -0
- scitex/scholar/url_finder/translators/individual/open_knowledge_repository.py +0 -0
- scitex/scholar/url_finder/translators/individual/open_worldcat.py +0 -0
- scitex/scholar/url_finder/translators/individual/openalex.py +0 -0
- scitex/scholar/url_finder/translators/individual/openalex_json.py +0 -0
- scitex/scholar/url_finder/translators/individual/openedition_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/openedition_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/openjur.py +0 -0
- scitex/scholar/url_finder/translators/individual/optical_society_of_america.py +0 -0
- scitex/scholar/url_finder/translators/individual/optimization_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/orcid.py +0 -0
- scitex/scholar/url_finder/translators/individual/osa.py +0 -0
- scitex/scholar/url_finder/translators/individual/osf_preprints.py +0 -0
- scitex/scholar/url_finder/translators/individual/osti_energy_citations.py +0 -0
- scitex/scholar/url_finder/translators/individual/ovid.py +0 -0
- scitex/scholar/url_finder/translators/individual/ovid_tagged.py +0 -0
- scitex/scholar/url_finder/translators/individual/oxford.py +0 -0
- scitex/scholar/url_finder/translators/individual/oxford_dictionaries_premium.py +0 -0
- scitex/scholar/url_finder/translators/individual/oxford_english_dictionary.py +0 -0
- scitex/scholar/url_finder/translators/individual/oxford_music_and_art_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/oxford_reference.py +0 -0
- scitex/scholar/url_finder/translators/individual/oxford_university_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/ozon_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/pajhwok_afghan_news.py +0 -0
- scitex/scholar/url_finder/translators/individual/papers_past.py +0 -0
- scitex/scholar/url_finder/translators/individual/paris_review.py +0 -0
- scitex/scholar/url_finder/translators/individual/pastebin.py +0 -0
- scitex/scholar/url_finder/translators/individual/patents___uspto.py +0 -0
- scitex/scholar/url_finder/translators/individual/pc_gamer.py +0 -0
- scitex/scholar/url_finder/translators/individual/pc_games.py +0 -0
- scitex/scholar/url_finder/translators/individual/peeters.py +0 -0
- scitex/scholar/url_finder/translators/individual/pei_archival_information_network.py +0 -0
- scitex/scholar/url_finder/translators/individual/pep_web.py +0 -0
- scitex/scholar/url_finder/translators/individual/perceiving_systems.py +0 -0
- scitex/scholar/url_finder/translators/individual/perlego.py +0 -0
- scitex/scholar/url_finder/translators/individual/philosopher_s_imprint.py +0 -0
- scitex/scholar/url_finder/translators/individual/philpapers.py +0 -0
- scitex/scholar/url_finder/translators/individual/pkp_catalog_systems.py +0 -0
- scitex/scholar/url_finder/translators/individual/pleade.py +0 -0
- scitex/scholar/url_finder/translators/individual/plos.py +0 -0
- scitex/scholar/url_finder/translators/individual/plos_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/pnas.py +0 -0
- scitex/scholar/url_finder/translators/individual/polygon.py +0 -0
- scitex/scholar/url_finder/translators/individual/potsdamer_neueste_nachrichten.py +0 -0
- scitex/scholar/url_finder/translators/individual/prc_history_review.py +0 -0
- scitex/scholar/url_finder/translators/individual/preprints_org.py +0 -0
- scitex/scholar/url_finder/translators/individual/primo.py +0 -0
- scitex/scholar/url_finder/translators/individual/primo_2018.py +0 -0
- scitex/scholar/url_finder/translators/individual/primo_normalized_xml.py +0 -0
- scitex/scholar/url_finder/translators/individual/probing_the_past.py +0 -0
- scitex/scholar/url_finder/translators/individual/project_gutenberg.py +0 -0
- scitex/scholar/url_finder/translators/individual/project_muse.py +0 -0
- scitex/scholar/url_finder/translators/individual/promed.py +0 -0
- scitex/scholar/url_finder/translators/individual/proquest.py +0 -0
- scitex/scholar/url_finder/translators/individual/proquest_ebook_central.py +0 -0
- scitex/scholar/url_finder/translators/individual/proquest_policyfile.py +0 -0
- scitex/scholar/url_finder/translators/individual/protein_data_bank.py +0 -0
- scitex/scholar/url_finder/translators/individual/pubfactory_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/public_record_office_victoria.py +0 -0
- scitex/scholar/url_finder/translators/individual/publications_du_quebec.py +0 -0
- scitex/scholar/url_finder/translators/individual/publications_office_of_the_european_union.py +0 -0
- scitex/scholar/url_finder/translators/individual/pubmed.py +0 -0
- scitex/scholar/url_finder/translators/individual/pubmed_central.py +0 -0
- scitex/scholar/url_finder/translators/individual/pubmed_xml.py +0 -0
- scitex/scholar/url_finder/translators/individual/pubpub.py +0 -0
- scitex/scholar/url_finder/translators/individual/pypi.py +0 -0
- scitex/scholar/url_finder/translators/individual/qatar_digital_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/queensland_state_archives.py +0 -0
- scitex/scholar/url_finder/translators/individual/r_packages.py +0 -0
- scitex/scholar/url_finder/translators/individual/radio_free_europe__radio_liberty.py +0 -0
- scitex/scholar/url_finder/translators/individual/rand.py +0 -0
- scitex/scholar/url_finder/translators/individual/rdf.py +0 -0
- scitex/scholar/url_finder/translators/individual/rechtspraak_nl.py +0 -0
- scitex/scholar/url_finder/translators/individual/redalyc.py +0 -0
- scitex/scholar/url_finder/translators/individual/reddit.py +0 -0
- scitex/scholar/url_finder/translators/individual/referbibix.py +0 -0
- scitex/scholar/url_finder/translators/individual/refworks_tagged.py +0 -0
- scitex/scholar/url_finder/translators/individual/regeringskansliet.py +0 -0
- scitex/scholar/url_finder/translators/individual/repec___econpapers.py +0 -0
- scitex/scholar/url_finder/translators/individual/repec___ideas.py +0 -0
- scitex/scholar/url_finder/translators/individual/repec_ideas.py +0 -0
- scitex/scholar/url_finder/translators/individual/research_square.py +0 -0
- scitex/scholar/url_finder/translators/individual/researchgate.py +0 -0
- scitex/scholar/url_finder/translators/individual/retsinformation.py +0 -0
- scitex/scholar/url_finder/translators/individual/reuters.py +0 -0
- scitex/scholar/url_finder/translators/individual/ris.py +0 -0
- scitex/scholar/url_finder/translators/individual/rock__paper__shotgun.py +0 -0
- scitex/scholar/url_finder/translators/individual/roll_call.py +0 -0
- scitex/scholar/url_finder/translators/individual/rsc.py +0 -0
- scitex/scholar/url_finder/translators/individual/rsc_publishing.py +0 -0
- scitex/scholar/url_finder/translators/individual/russian_state_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/sacramento_bee.py +0 -0
- scitex/scholar/url_finder/translators/individual/sae_papers.py +0 -0
- scitex/scholar/url_finder/translators/individual/safari_books_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/sage.py +0 -0
- scitex/scholar/url_finder/translators/individual/sage_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/sage_knowledge.py +0 -0
- scitex/scholar/url_finder/translators/individual/saildart.py +0 -0
- scitex/scholar/url_finder/translators/individual/salt_research_archives.py +0 -0
- scitex/scholar/url_finder/translators/individual/sbn_it.py +0 -0
- scitex/scholar/url_finder/translators/individual/scholars_portal_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/scholia.py +0 -0
- scitex/scholar/url_finder/translators/individual/schweizer_radio_und_fernsehen_srf.py +0 -0
- scitex/scholar/url_finder/translators/individual/scielo.py +0 -0
- scitex/scholar/url_finder/translators/individual/sciencedirect.py +0 -0
- scitex/scholar/url_finder/translators/individual/scinapse.py +0 -0
- scitex/scholar/url_finder/translators/individual/scopus.py +0 -0
- scitex/scholar/url_finder/translators/individual/semantic_scholar.py +0 -0
- scitex/scholar/url_finder/translators/individual/semantics_visual_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/sfu_ipinch.py +0 -0
- scitex/scholar/url_finder/translators/individual/silverchair.py +0 -0
- scitex/scholar/url_finder/translators/individual/sipri.py +0 -0
- scitex/scholar/url_finder/translators/individual/sirs_knowledge_source.py +0 -0
- scitex/scholar/url_finder/translators/individual/slate.py +0 -0
- scitex/scholar/url_finder/translators/individual/slideshare.py +0 -0
- scitex/scholar/url_finder/translators/individual/slub_dresden.py +0 -0
- scitex/scholar/url_finder/translators/individual/sora.py +0 -0
- scitex/scholar/url_finder/translators/individual/springer.py +0 -0
- scitex/scholar/url_finder/translators/individual/springer_link.py +0 -0
- scitex/scholar/url_finder/translators/individual/ssoar.py +0 -0
- scitex/scholar/url_finder/translators/individual/stack_exchange.py +0 -0
- scitex/scholar/url_finder/translators/individual/standard_ebooks.py +0 -0
- scitex/scholar/url_finder/translators/individual/stanford_encyclopedia_of_philosophy.py +0 -0
- scitex/scholar/url_finder/translators/individual/stanford_university_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/state_records_office_of_western_australia.py +0 -0
- scitex/scholar/url_finder/translators/individual/state_records_office_wa.py +0 -0
- scitex/scholar/url_finder/translators/individual/stitcher.py +0 -0
- scitex/scholar/url_finder/translators/individual/store_norske_leksikon.py +0 -0
- scitex/scholar/url_finder/translators/individual/stuff_co_nz.py +0 -0
- scitex/scholar/url_finder/translators/individual/substack.py +0 -0
- scitex/scholar/url_finder/translators/individual/sud_ouest.py +0 -0
- scitex/scholar/url_finder/translators/individual/sueddeutsche_de.py +0 -0
- scitex/scholar/url_finder/translators/individual/summon_2.py +0 -0
- scitex/scholar/url_finder/translators/individual/superlib.py +0 -0
- scitex/scholar/url_finder/translators/individual/svenska_dagbladet.py +0 -0
- scitex/scholar/url_finder/translators/individual/sveriges_radio.py +0 -0
- scitex/scholar/url_finder/translators/individual/svt_nyheter.py +0 -0
- scitex/scholar/url_finder/translators/individual/tagesspiegel.py +0 -0
- scitex/scholar/url_finder/translators/individual/talis_aspire.py +0 -0
- scitex/scholar/url_finder/translators/individual/talisprism.py +0 -0
- scitex/scholar/url_finder/translators/individual/tatknigafund.py +0 -0
- scitex/scholar/url_finder/translators/individual/tatpressa_ru.py +0 -0
- scitex/scholar/url_finder/translators/individual/taylor___francis_ebooks.py +0 -0
- scitex/scholar/url_finder/translators/individual/taylor_and_francis_nejm.py +0 -0
- scitex/scholar/url_finder/translators/individual/taylor_francis.py +0 -0
- scitex/scholar/url_finder/translators/individual/taylor_francis_nejm.py +0 -0
- scitex/scholar/url_finder/translators/individual/taz_de.py +0 -0
- scitex/scholar/url_finder/translators/individual/tei.py +0 -0
- scitex/scholar/url_finder/translators/individual/tesis_doctorals_en_xarxa.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_art_newspaper.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_atlantic.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_boston_globe.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_chronicle_of_higher_education.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_daily_beast.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_economic_times___the_times_of_india.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_economist.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_free_dictionary.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_globe_and_mail.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_guardian.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_hamilton_spectator.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_hindu.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_independent.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_intercept.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_met.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_microfinance_gateway.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_nation.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_national_archives__uk_.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_new_republic.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_new_york_review_of_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_new_yorker.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_open_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_straits_times.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_telegraph.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_times_and_sunday_times.py +0 -0
- scitex/scholar/url_finder/translators/individual/the_times_of_israel.py +0 -0
- scitex/scholar/url_finder/translators/individual/themarker.py +0 -0
- scitex/scholar/url_finder/translators/individual/theory_of_computing.py +0 -0
- scitex/scholar/url_finder/translators/individual/thesesfr.py +0 -0
- scitex/scholar/url_finder/translators/individual/thieme.py +0 -0
- scitex/scholar/url_finder/translators/individual/time_com.py +0 -0
- scitex/scholar/url_finder/translators/individual/timesmachine.py +0 -0
- scitex/scholar/url_finder/translators/individual/tony_blair_institute.py +0 -0
- scitex/scholar/url_finder/translators/individual/tony_blair_institute_for_global_change.py +0 -0
- scitex/scholar/url_finder/translators/individual/toronto_star.py +0 -0
- scitex/scholar/url_finder/translators/individual/transportation_research_board.py +0 -0
- scitex/scholar/url_finder/translators/individual/treesearch.py +0 -0
- scitex/scholar/url_finder/translators/individual/trove.py +0 -0
- scitex/scholar/url_finder/translators/individual/tumblr.py +0 -0
- scitex/scholar/url_finder/translators/individual/tv_by_the_numbers.py +0 -0
- scitex/scholar/url_finder/translators/individual/tvnz.py +0 -0
- scitex/scholar/url_finder/translators/individual/twitter.py +0 -0
- scitex/scholar/url_finder/translators/individual/ubiquity_journals.py +0 -0
- scitex/scholar/url_finder/translators/individual/uchicago_vufind.py +0 -0
- scitex/scholar/url_finder/translators/individual/unapi.py +0 -0
- scitex/scholar/url_finder/translators/individual/unesco.py +0 -0
- scitex/scholar/url_finder/translators/individual/university_of_california_press_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/university_of_chicago_press_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/university_of_wisconsin_madison_libraries_catalog.py +0 -0
- scitex/scholar/url_finder/translators/individual/university_press_scholarship.py +0 -0
- scitex/scholar/url_finder/translators/individual/unqualified_dublin_core_rdf.py +0 -0
- scitex/scholar/url_finder/translators/individual/unz_print_archive.py +0 -0
- scitex/scholar/url_finder/translators/individual/upcommons.py +0 -0
- scitex/scholar/url_finder/translators/individual/uptodate_references.py +0 -0
- scitex/scholar/url_finder/translators/individual/us_national_archives_research_catalog.py +0 -0
- scitex/scholar/url_finder/translators/individual/usenix.py +0 -0
- scitex/scholar/url_finder/translators/individual/vanity_fair.py +0 -0
- scitex/scholar/url_finder/translators/individual/verniana.py +0 -0
- scitex/scholar/url_finder/translators/individual/verniana_jules_verne_studies.py +0 -0
- scitex/scholar/url_finder/translators/individual/verso_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/vice.py +0 -0
- scitex/scholar/url_finder/translators/individual/victoria___albert_museum.py +0 -0
- scitex/scholar/url_finder/translators/individual/vimeo.py +0 -0
- scitex/scholar/url_finder/translators/individual/vlex.py +0 -0
- scitex/scholar/url_finder/translators/individual/voxeu.py +0 -0
- scitex/scholar/url_finder/translators/individual/wall_street_journal.py +0 -0
- scitex/scholar/url_finder/translators/individual/wanfang_data.py +0 -0
- scitex/scholar/url_finder/translators/individual/washington_monthly.py +0 -0
- scitex/scholar/url_finder/translators/individual/washington_post.py +0 -0
- scitex/scholar/url_finder/translators/individual/web_of_science.py +0 -0
- scitex/scholar/url_finder/translators/individual/web_of_science_nextgen.py +0 -0
- scitex/scholar/url_finder/translators/individual/web_of_science_tagged.py +0 -0
- scitex/scholar/url_finder/translators/individual/welt_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/westlaw_uk.py +0 -0
- scitex/scholar/url_finder/translators/individual/who.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikidata.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikidata_quickstatements.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikileaks_plusd.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikimedia_commons.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikipedia.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikipedia_citation_templates.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikisource.py +0 -0
- scitex/scholar/url_finder/translators/individual/wikiwand.py +0 -0
- scitex/scholar/url_finder/translators/individual/wiktionary.py +0 -0
- scitex/scholar/url_finder/translators/individual/wildlife_biology_in_practice.py +0 -0
- scitex/scholar/url_finder/translators/individual/wiley.py +0 -0
- scitex/scholar/url_finder/translators/individual/wiley_online_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/wilson_center_digital_archive.py +0 -0
- scitex/scholar/url_finder/translators/individual/winnipeg_free_press.py +0 -0
- scitex/scholar/url_finder/translators/individual/wipo.py +0 -0
- scitex/scholar/url_finder/translators/individual/wired.py +0 -0
- scitex/scholar/url_finder/translators/individual/wiso.py +0 -0
- scitex/scholar/url_finder/translators/individual/womennews.py +0 -0
- scitex/scholar/url_finder/translators/individual/world_bank.py +0 -0
- scitex/scholar/url_finder/translators/individual/world_digital_library.py +0 -0
- scitex/scholar/url_finder/translators/individual/world_history_connected.py +0 -0
- scitex/scholar/url_finder/translators/individual/world_shakespeare_bibliography_online.py +0 -0
- scitex/scholar/url_finder/translators/individual/worldcat_discovery_service.py +0 -0
- scitex/scholar/url_finder/translators/individual/xml_contextobject.py +0 -0
- scitex/scholar/url_finder/translators/individual/yandex_books.py +0 -0
- scitex/scholar/url_finder/translators/individual/ynet.py +0 -0
- scitex/scholar/url_finder/translators/individual/youtube.py +0 -0
- scitex/scholar/url_finder/translators/individual/ypfs.py +0 -0
- scitex/scholar/url_finder/translators/individual/ypsf.py +0 -0
- scitex/scholar/url_finder/translators/individual/zbmath.py +0 -0
- scitex/scholar/url_finder/translators/individual/zenodo.py +0 -0
- scitex/scholar/url_finder/translators/individual/ziponline.py +0 -0
- scitex/scholar/url_finder/translators/individual/zobodat.py +0 -0
- scitex/scholar/url_finder/translators/individual/zotero_org.py +0 -0
- scitex/scholar/url_finder/translators/individual/zotero_rdf.py +0 -0
- scitex/scholar/url_finder/translators/individual/zoterobib.py +0 -0
- scitex/scholar/utils/__init__.py +3 -0
- scitex/scholar/utils/bibtex/__init__.py +0 -0
- scitex/scholar/utils/cleanup/__init__.py +0 -0
- scitex/scholar/utils/text/_TextNormalizer.py +0 -0
- scitex/scholar/utils/text/__init__.py +0 -0
- scitex/scholar/utils/validation/DOIValidator.py +289 -0
- scitex/scholar/utils/validation/README.md +169 -0
- scitex/scholar/utils/validation/__init__.py +13 -0
- scitex/scholar/utils/validation/validate_library_dois.py +221 -0
- scitex/scholar/zotero/__init__.py +0 -0
- scitex/security/README.md +255 -0
- scitex/security/__init__.py +35 -0
- scitex/security/cli.py +140 -0
- scitex/security/github.py +358 -0
- scitex/session/README.md +95 -30
- scitex/session/__init__.py +8 -3
- scitex/session/_decorator.py +610 -0
- scitex/session/_lifecycle.py +155 -62
- scitex/session/_manager.py +0 -0
- scitex/session/template.py +16 -110
- scitex/sh/README.md +1 -1
- scitex/sh/__init__.py +0 -0
- scitex/stats/__init__.py +17 -3
- scitex/stats/_schema.py +578 -0
- scitex/stats/correct/_correct_bonferroni.py +3 -3
- scitex/stats/correct/_correct_fdr.py +62 -62
- scitex/stats/correct/_correct_fdr_.py +634 -0
- scitex/stats/correct/_correct_holm.py +2 -2
- scitex/stats/correct/_correct_sidak.py +2 -2
- scitex/stats/descriptive/_circular.py +2 -2
- scitex/stats/descriptive/_describe.py +2 -2
- scitex/stats/descriptive/_nan.py +2 -2
- scitex/stats/descriptive/_real.py +2 -2
- scitex/stats/effect_sizes/_cliffs_delta.py +1 -1
- scitex/stats/effect_sizes/_cohens_d.py +1 -1
- scitex/stats/effect_sizes/_epsilon_squared.py +1 -1
- scitex/stats/effect_sizes/_eta_squared.py +1 -1
- scitex/stats/effect_sizes/_prob_superiority.py +1 -1
- scitex/stats/posthoc/_dunnett.py +3 -3
- scitex/stats/posthoc/_games_howell.py +3 -3
- scitex/stats/posthoc/_tukey_hsd.py +3 -3
- scitex/stats/power/_power.py +1 -1
- scitex/stats/tests/__init__.py +13 -0
- scitex/stats/tests/correlation/__init__.py +3 -22
- scitex/stats/tests/correlation/_test_pearson.py +180 -506
- scitex/stats/utils/_effect_size.py +1 -1
- scitex/stats/utils/_formatters.py +1 -1
- scitex/stats/utils/_normalizers.py +8 -5
- scitex/stats/utils/_power.py +1 -1
- scitex/str/_parse.py +1 -1
- scitex/str/_replace.py +1 -1
- scitex/template/_clone_project.py +58 -41
- scitex/template/_copy.py +22 -15
- scitex/template/_customize.py +9 -4
- scitex/template/_git_strategy.py +32 -32
- scitex/template/_logging_helpers.py +122 -0
- scitex/template/clone_pip_project.py +24 -17
- scitex/template/clone_research.py +26 -21
- scitex/template/clone_singularity.py +25 -22
- scitex/template/clone_writer_directory.py +24 -17
- scitex/tex/_preview.py +2 -2
- scitex/tex/_to_vec.py +1 -1
- scitex/utils/_email.py +1 -1
- scitex/utils/_verify_scitex_format.py +2 -2
- scitex/utils/template.py +1 -1
- scitex/vis/DJANGO_INTEGRATION.md +677 -0
- scitex/vis/README.md +755 -0
- scitex/vis/__init__.py +117 -0
- scitex/vis/backend/__init__.py +56 -0
- scitex/vis/backend/export.py +166 -0
- scitex/vis/backend/parser.py +190 -0
- scitex/vis/backend/render.py +385 -0
- scitex/vis/editor/__init__.py +23 -0
- scitex/vis/editor/_defaults.py +205 -0
- scitex/vis/editor/_edit.py +342 -0
- scitex/vis/editor/_mpl_editor.py +231 -0
- scitex/vis/editor/_tkinter_editor.py +466 -0
- scitex/vis/editor/_web_editor.py +1440 -0
- scitex/vis/io/__init__.py +36 -0
- scitex/vis/io/load.py +168 -0
- scitex/vis/io/save.py +131 -0
- scitex/vis/model/__init__.py +118 -0
- scitex/vis/model/annotations.py +118 -0
- scitex/vis/model/axes.py +153 -0
- scitex/vis/model/figure.py +139 -0
- scitex/vis/model/guides.py +105 -0
- scitex/vis/model/plot.py +126 -0
- scitex/vis/model/plot_types.py +682 -0
- scitex/vis/model/styles.py +246 -0
- scitex/vis/tmp.txt +239 -0
- scitex/vis/utils/__init__.py +75 -0
- scitex/vis/utils/defaults.py +335 -0
- scitex/vis/utils/validate.py +204 -0
- scitex/web/__init__.py +4 -0
- scitex/web/_scraping.py +373 -0
- scitex/writer/README.md +11 -2
- scitex/writer/Writer.py +75 -15
- scitex/writer/_clone_writer_project.py +41 -28
- scitex/writer/_compile/__init__.py +9 -67
- scitex/writer/_compile/_parser.py +0 -0
- scitex/writer/_compile/_runner.py +249 -28
- scitex/writer/_compile/_validator.py +0 -0
- scitex/writer/_compile/manuscript.py +109 -0
- scitex/writer/_compile/revision.py +81 -0
- scitex/writer/_compile/supplementary.py +99 -0
- scitex/writer/_project/__init__.py +0 -0
- scitex/writer/_project/_create.py +10 -12
- scitex/writer/_project/_trees.py +0 -0
- scitex/writer/_project/_validate.py +1 -1
- scitex/writer/_validate_tree_structures.py +4 -4
- scitex/writer/dataclasses/__init__.py +0 -0
- scitex/writer/dataclasses/config/_WriterConfig.py +3 -3
- scitex/writer/dataclasses/config/__init__.py +0 -0
- scitex/writer/dataclasses/contents/_ManuscriptContents.py +4 -3
- scitex/writer/dataclasses/contents/_RevisionContents.py +9 -5
- scitex/writer/dataclasses/contents/_SupplementaryContents.py +7 -4
- scitex/writer/dataclasses/contents/__init__.py +0 -0
- scitex/writer/dataclasses/core/_Document.py +1 -1
- scitex/writer/dataclasses/core/_DocumentSection.py +1 -1
- scitex/writer/dataclasses/core/__init__.py +0 -0
- scitex/writer/dataclasses/results/_CompilationResult.py +1 -1
- scitex/writer/dataclasses/results/_LaTeXIssue.py +1 -1
- scitex/writer/dataclasses/results/_SaveSectionsResponse.py +107 -0
- scitex/writer/dataclasses/results/_SectionReadResponse.py +117 -0
- scitex/writer/dataclasses/results/__init__.py +4 -0
- scitex/writer/dataclasses/tree/_ConfigTree.py +3 -2
- scitex/writer/dataclasses/tree/_ManuscriptTree.py +5 -3
- scitex/writer/dataclasses/tree/_RevisionTree.py +7 -4
- scitex/writer/dataclasses/tree/_ScriptsTree.py +5 -3
- scitex/writer/dataclasses/tree/_SharedTree.py +5 -4
- scitex/writer/dataclasses/tree/_SupplementaryTree.py +7 -4
- scitex/writer/dataclasses/tree/__init__.py +0 -0
- scitex/writer/tests/__init__.py +0 -0
- scitex/writer/utils/.legacy_git_retry.py +1 -1
- scitex/writer/utils/__init__.py +0 -0
- scitex/writer/utils/_parse_latex_logs.py +1 -1
- scitex/writer/utils/_parse_script_args.py +0 -0
- scitex/writer/utils/_watch.py +0 -0
- {scitex-2.1.2.dist-info → scitex-2.4.2.dist-info}/METADATA +373 -363
- {scitex-2.1.2.dist-info → scitex-2.4.2.dist-info}/RECORD +375 -370
- {scitex-2.1.2.dist-info → scitex-2.4.2.dist-info}/WHEEL +1 -1
- scitex-2.4.2.dist-info/licenses/LICENSE +661 -0
- scitex/.claude/mcp-config.json +0 -42
- scitex/_sh.py +0 -18
- scitex/ai/training/legacy/early_stopping.py +0 -150
- scitex/ai/training/legacy/learning_curve_logger.py +0 -557
- scitex/ai/viewed-ai.md +0 -4984
- scitex/browser/ARCHITECTURE_PROPOSAL.md +0 -795
- scitex/browser/INTERACTIVE_COLLABORATION.md +0 -782
- scitex/browser/SAFE_IMPLEMENTATION_PLAN.md +0 -363
- scitex/browser/SHARED_BROWSER_SESSION.md +0 -652
- scitex/browser/TODO.md +0 -11
- scitex/browser/collaboration/CLIENTSERVER_ARCHITECTURE.md +0 -165
- scitex/browser/collaboration/INTERACTION_STRATEGY.md +0 -547
- scitex/browser/collaboration/NON_INTERFERING_LOGIC.md +0 -730
- scitex/browser/template.py +0 -122
- scitex/db/legacy/_inspect_v02.py +0 -171
- scitex/db/legacy/_inspect_v03-not-optimized.py +0 -179
- scitex/db/legacy/_inspect_v04-working-but-printing-both-scheme-and-first-row.py +0 -337
- scitex/db/legacy/_inspect_v05-working-but-no-clear-separation-between-dtype-and-actual-values.py +0 -358
- scitex/dict/_DotDict_v01-not-handling-recursive-instantiations.py +0 -442
- scitex/dict/_DotDict_v02-not-serializing-Path-object.py +0 -446
- scitex/plt/KNOWN_ISSUES.md +0 -68
- scitex/plt/TODO.md +0 -7
- scitex/plt/ax/_plot/_plot_ecdf.py +0 -84
- scitex/plt/ax/_plot/_plot_heatmap.py +0 -266
- scitex/plt/ax/_plot/_plot_joyplot.py +0 -77
- scitex/plt/ax/_plot/_plot_shaded_line.py +0 -142
- scitex/project/DESIGN.md +0 -423
- scitex/project/DJANGO_INTEGRATION.md +0 -546
- scitex/project/NAMING.md +0 -251
- scitex/project/README.md +0 -441
- scitex/project/__init__.py +0 -80
- scitex/project/core.py +0 -466
- scitex/project/metadata.py +0 -345
- scitex/project/storage.py +0 -321
- scitex/project/validators.py +0 -296
- scitex/reproduce/_hash_array.py +0 -22
- scitex/rng/_RandomStateManager_v01-no-verbose-options.py +0 -414
- scitex/scholar/.claude/agents/ArchitectAgent.md +0 -50
- scitex/scholar/.claude/agents/BulletinBoardOrganizerAgent.md +0 -24
- scitex/scholar/.claude/agents/DebuggerAgent.md +0 -38
- scitex/scholar/.claude/agents/ExamplesDeveloperAgent.md +0 -49
- scitex/scholar/.claude/agents/ExperimentationAgent.md +0 -13
- scitex/scholar/.claude/agents/GitHandlerAgent.md +0 -38
- scitex/scholar/.claude/agents/ResearcherAgent.md +0 -35
- scitex/scholar/.claude/agents/ReviewerAgent.md +0 -70
- scitex/scholar/.claude/agents/SciTeXTranslatorAgent.md +0 -55
- scitex/scholar/.claude/agents/SourceDeveloperAgent.md +0 -48
- scitex/scholar/.claude/agents/TestDeveloperAgent.md +0 -48
- scitex/scholar/.claude/agents/TestResultsReportAgent.md +0 -52
- scitex/scholar/.claude/agents/TestRunnerAgent.md +0 -48
- scitex/scholar/.claude/mcp-config.json +0 -42
- scitex/scholar/.legacy/metadata/doi/utils/legacy/_ConfigurationResolver.py +0 -387
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_MultiInstitutionalResolver.py +0 -397
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_OpenURLResolverWithZenRows.py +0 -718
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_ResumableOpenURLResolver.py +0 -298
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_UnimelbLibraryGoButtonSelector.py +0 -466
- scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_ZenRowsOpenURLResolver.py +0 -372
- scitex/scholar/docs/to_claude/guidelines/.claude/mcp-config.json +0 -0
- scitex/scholar/docs/to_claude/guidelines/.claude/settings.json +0 -231
- scitex/scholar/url_finder/.tmp/open_url/legacy/_MultiInstitutionalResolver.py +0 -397
- scitex/scholar/url_finder/.tmp/open_url/legacy/_OpenURLResolverWithZenRows.py +0 -718
- scitex/scholar/url_finder/.tmp/open_url/legacy/_ResumableOpenURLResolver.py +0 -298
- scitex/scholar/url_finder/.tmp/open_url/legacy/_UnimelbLibraryGoButtonSelector.py +0 -466
- scitex/scholar/url_finder/.tmp/open_url/legacy/_ZenRowsOpenURLResolver.py +0 -372
- scitex/stats/QUICKSTART.md +0 -260
- scitex/stats/TODO.md +0 -19
- scitex/stats/docs/API.md +0 -165
- scitex/stats/docs/ARCHITECTURE.md +0 -732
- scitex/stats/docs/MIGRATION_GUIDE.md +0 -253
- scitex/stats/docs/PROGRESS.md +0 -635
- scitex/stats/docs/SUMMARY.md +0 -241
- scitex/stats/docs/TODO.md +0 -181
- scitex/stats/docs/ax_parameter_migration.md +0 -125
- scitex/stats/template.py +0 -119
- scitex/stats/tests/categorical/__init__.py +0 -20
- scitex/stats/tests/categorical/_test_chi2.py +0 -708
- scitex/stats/tests/categorical/_test_cochran_q.py +0 -609
- scitex/stats/tests/categorical/_test_fisher.py +0 -585
- scitex/stats/tests/categorical/_test_mcnemar.py +0 -567
- scitex/stats/tests/correlation/_test_kendall.py +0 -508
- scitex/stats/tests/correlation/_test_spearman.py +0 -485
- scitex/stats/tests/correlation/_test_theilsen.py +0 -193
- scitex/stats/tests/nonparametric/__init__.py +0 -23
- scitex/stats/tests/nonparametric/_test_brunner_munzel.py +0 -559
- scitex/stats/tests/nonparametric/_test_friedman.py +0 -595
- scitex/stats/tests/nonparametric/_test_kruskal.py +0 -557
- scitex/stats/tests/nonparametric/_test_mannwhitneyu.py +0 -518
- scitex/stats/tests/nonparametric/_test_wilcoxon.py +0 -505
- scitex/stats/tests/normality/__init__.py +0 -17
- scitex/stats/tests/normality/_test_ks.py +0 -702
- scitex/stats/tests/normality/_test_shapiro.py +0 -498
- scitex/stats/tests/parametric/__init__.py +0 -27
- scitex/stats/tests/parametric/_test_anova.py +0 -625
- scitex/stats/tests/parametric/_test_anova_2way.py +0 -665
- scitex/stats/tests/parametric/_test_anova_rm.py +0 -717
- scitex/stats/tests/parametric/_test_ttest.py +0 -835
- scitex/template/ANALYSIS.md +0 -202
- scitex-2.1.2.dist-info/licenses/LICENSE +0 -21
- {scitex-2.1.2.dist-info → scitex-2.4.2.dist-info}/entry_points.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
# Timestamp: "2025-
|
|
4
|
-
# File: /home/ywatanabe/proj/
|
|
3
|
+
# Timestamp: "2025-12-01 12:00:00 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex-code/src/scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py
|
|
5
5
|
# ----------------------------------------
|
|
6
6
|
import os
|
|
7
7
|
|
|
@@ -17,19 +17,39 @@ import numpy as np
|
|
|
17
17
|
import pandas as pd
|
|
18
18
|
from scipy.stats import gaussian_kde
|
|
19
19
|
|
|
20
|
-
from
|
|
21
|
-
from
|
|
20
|
+
from scitex.pd import to_xyz
|
|
21
|
+
from scitex.types import ArrayLike
|
|
22
|
+
from scitex.plt.utils import mm_to_pt
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# ============================================================================
|
|
26
|
+
# Constants for default styling (same as styles/_plot_defaults.py)
|
|
27
|
+
# ============================================================================
|
|
28
|
+
DEFAULT_LINE_WIDTH_MM = 0.2
|
|
29
|
+
DEFAULT_MARKER_SIZE_MM = 0.8
|
|
30
|
+
DEFAULT_FILL_ALPHA = 0.3
|
|
22
31
|
|
|
23
32
|
|
|
24
33
|
class MatplotlibPlotMixin:
|
|
25
34
|
"""Mixin class for basic plotting operations."""
|
|
26
|
-
|
|
35
|
+
|
|
27
36
|
def _get_ax_module(self):
|
|
28
37
|
"""Lazy import ax module to avoid circular imports."""
|
|
29
38
|
from ....plt import ax as ax_module
|
|
30
39
|
return ax_module
|
|
31
40
|
|
|
32
|
-
def
|
|
41
|
+
def _apply_scitex_postprocess(self, method_name, result=None, kwargs=None, args=None):
|
|
42
|
+
"""Apply scitex post-processing styling after plotting.
|
|
43
|
+
|
|
44
|
+
This ensures all scitex wrapper methods get the same styling
|
|
45
|
+
as matplotlib methods going through __getattr__ (tick locator, spines, etc.).
|
|
46
|
+
"""
|
|
47
|
+
from scitex.plt.styles import apply_plot_postprocess
|
|
48
|
+
apply_plot_postprocess(
|
|
49
|
+
method_name, result, self._axis_mpl, kwargs or {}, args
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
def stx_image(
|
|
33
53
|
self,
|
|
34
54
|
arr_2d: ArrayLike,
|
|
35
55
|
track: bool = True,
|
|
@@ -37,11 +57,11 @@ class MatplotlibPlotMixin:
|
|
|
37
57
|
**kwargs,
|
|
38
58
|
) -> None:
|
|
39
59
|
# Method Name for downstream csv exporting
|
|
40
|
-
method_name = "
|
|
60
|
+
method_name = "stx_image"
|
|
41
61
|
|
|
42
62
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
43
63
|
with self._no_tracking():
|
|
44
|
-
self._axis_mpl = self._get_ax_module().
|
|
64
|
+
self._axis_mpl = self._get_ax_module().stx_image(self._axis_mpl, arr_2d, **kwargs)
|
|
45
65
|
|
|
46
66
|
# Tracking
|
|
47
67
|
tracked_dict = {"image_df": pd.DataFrame(arr_2d)}
|
|
@@ -55,11 +75,14 @@ class MatplotlibPlotMixin:
|
|
|
55
75
|
None,
|
|
56
76
|
)
|
|
57
77
|
|
|
78
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
79
|
+
self._apply_scitex_postprocess(method_name)
|
|
80
|
+
|
|
58
81
|
return self._axis_mpl
|
|
59
82
|
|
|
60
|
-
def
|
|
83
|
+
def stx_kde(
|
|
61
84
|
self,
|
|
62
|
-
|
|
85
|
+
values_1d: ArrayLike,
|
|
63
86
|
cumulative=False,
|
|
64
87
|
fill=False,
|
|
65
88
|
track: bool = True,
|
|
@@ -67,23 +90,23 @@ class MatplotlibPlotMixin:
|
|
|
67
90
|
**kwargs,
|
|
68
91
|
) -> None:
|
|
69
92
|
# Method Name for downstream csv exporting
|
|
70
|
-
method_name = "
|
|
93
|
+
method_name = "stx_kde"
|
|
71
94
|
|
|
72
95
|
# Sample count as label
|
|
73
|
-
n_samples = (~np.isnan(
|
|
96
|
+
n_samples = (~np.isnan(values_1d)).sum()
|
|
74
97
|
if kwargs.get("label"):
|
|
75
|
-
kwargs["label"] = f"{kwargs['label']} (n
|
|
98
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_samples})"
|
|
76
99
|
|
|
77
100
|
# Xlim (kwargs["xlim"] is not accepted in downstream plotters)
|
|
78
|
-
xlim = kwargs.
|
|
101
|
+
xlim = kwargs.pop("xlim", None)
|
|
79
102
|
if not xlim:
|
|
80
|
-
xlim = (np.nanmin(
|
|
103
|
+
xlim = (np.nanmin(values_1d), np.nanmax(values_1d))
|
|
81
104
|
|
|
82
105
|
# X
|
|
83
106
|
xx = np.linspace(xlim[0], xlim[1], int(1e3))
|
|
84
107
|
|
|
85
108
|
# Y
|
|
86
|
-
density = gaussian_kde(
|
|
109
|
+
density = gaussian_kde(values_1d)(xx)
|
|
87
110
|
density /= density.sum()
|
|
88
111
|
|
|
89
112
|
# Cumulative
|
|
@@ -92,15 +115,29 @@ class MatplotlibPlotMixin:
|
|
|
92
115
|
|
|
93
116
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
94
117
|
with self._no_tracking():
|
|
118
|
+
# Get line width from kwargs or use default (0.2mm for KDE)
|
|
119
|
+
from scitex.plt.utils import mm_to_pt
|
|
120
|
+
if 'linewidth' not in kwargs and 'lw' not in kwargs:
|
|
121
|
+
kwargs['linewidth'] = mm_to_pt(0.2) # Default 0.2mm for KDE
|
|
122
|
+
|
|
123
|
+
# Set default color to black (customizable via color kwarg)
|
|
124
|
+
if 'color' not in kwargs and 'c' not in kwargs:
|
|
125
|
+
kwargs['color'] = 'black'
|
|
126
|
+
|
|
127
|
+
# Set default linestyle to dashed (customizable via linestyle kwarg)
|
|
128
|
+
if 'linestyle' not in kwargs and 'ls' not in kwargs:
|
|
129
|
+
kwargs['linestyle'] = '--'
|
|
130
|
+
|
|
95
131
|
# Filled Line
|
|
96
132
|
if fill:
|
|
97
133
|
self._axis_mpl.fill_between(
|
|
98
134
|
xx,
|
|
99
135
|
density,
|
|
136
|
+
**kwargs,
|
|
100
137
|
)
|
|
101
138
|
# Simple Line
|
|
102
139
|
else:
|
|
103
|
-
self._axis_mpl.plot(xx, density)
|
|
140
|
+
self._axis_mpl.plot(xx, density, **kwargs)
|
|
104
141
|
|
|
105
142
|
# Tracking
|
|
106
143
|
tracked_dict = {
|
|
@@ -116,11 +153,14 @@ class MatplotlibPlotMixin:
|
|
|
116
153
|
None,
|
|
117
154
|
)
|
|
118
155
|
|
|
156
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
157
|
+
self._apply_scitex_postprocess(method_name)
|
|
158
|
+
|
|
119
159
|
return self._axis_mpl
|
|
120
160
|
|
|
121
|
-
def
|
|
161
|
+
def stx_conf_mat(
|
|
122
162
|
self,
|
|
123
|
-
|
|
163
|
+
conf_mat_2d: ArrayLike,
|
|
124
164
|
x_labels: Optional[List[str]] = None,
|
|
125
165
|
y_labels: Optional[List[str]] = None,
|
|
126
166
|
title: str = "Confusion Matrix",
|
|
@@ -136,13 +176,13 @@ class MatplotlibPlotMixin:
|
|
|
136
176
|
**kwargs,
|
|
137
177
|
) -> None:
|
|
138
178
|
# Method Name for downstream csv exporting
|
|
139
|
-
method_name = "
|
|
179
|
+
method_name = "stx_conf_mat"
|
|
140
180
|
|
|
141
181
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
142
182
|
with self._no_tracking():
|
|
143
|
-
self._axis_mpl, bacc_val = self._get_ax_module().
|
|
183
|
+
self._axis_mpl, bacc_val = self._get_ax_module().stx_conf_mat(
|
|
144
184
|
self._axis_mpl,
|
|
145
|
-
|
|
185
|
+
conf_mat_2d,
|
|
146
186
|
x_labels=x_labels,
|
|
147
187
|
y_labels=y_labels,
|
|
148
188
|
title=title,
|
|
@@ -160,10 +200,13 @@ class MatplotlibPlotMixin:
|
|
|
160
200
|
# Tracking
|
|
161
201
|
self._track(track, id, method_name, tracked_dict, None)
|
|
162
202
|
|
|
203
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
204
|
+
self._apply_scitex_postprocess(method_name)
|
|
205
|
+
|
|
163
206
|
return self._axis_mpl, bacc_val
|
|
164
207
|
|
|
165
208
|
# @wraps removed to avoid circular import
|
|
166
|
-
def
|
|
209
|
+
def stx_rectangle(
|
|
167
210
|
self,
|
|
168
211
|
xx: float,
|
|
169
212
|
yy: float,
|
|
@@ -174,11 +217,11 @@ class MatplotlibPlotMixin:
|
|
|
174
217
|
**kwargs,
|
|
175
218
|
) -> None:
|
|
176
219
|
# Method Name for downstream csv exporting
|
|
177
|
-
method_name = "
|
|
220
|
+
method_name = "stx_rectangle"
|
|
178
221
|
|
|
179
222
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
180
223
|
with self._no_tracking():
|
|
181
|
-
self._axis_mpl = self._get_ax_module().
|
|
224
|
+
self._axis_mpl = self._get_ax_module().stx_rectangle(
|
|
182
225
|
self._axis_mpl, xx, yy, width, height, **kwargs
|
|
183
226
|
)
|
|
184
227
|
|
|
@@ -186,13 +229,16 @@ class MatplotlibPlotMixin:
|
|
|
186
229
|
tracked_dict = {"xx": xx, "yy": yy, "width": width, "height": height}
|
|
187
230
|
self._track(track, id, method_name, tracked_dict, None)
|
|
188
231
|
|
|
232
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
233
|
+
self._apply_scitex_postprocess(method_name)
|
|
234
|
+
|
|
189
235
|
return self._axis_mpl
|
|
190
236
|
|
|
191
237
|
# @wraps removed to avoid circular import
|
|
192
|
-
def
|
|
238
|
+
def stx_fillv(
|
|
193
239
|
self,
|
|
194
|
-
|
|
195
|
-
|
|
240
|
+
starts_1d: ArrayLike,
|
|
241
|
+
ends_1d: ArrayLike,
|
|
196
242
|
color: str = "red",
|
|
197
243
|
alpha: float = 0.2,
|
|
198
244
|
track: bool = True,
|
|
@@ -200,51 +246,70 @@ class MatplotlibPlotMixin:
|
|
|
200
246
|
**kwargs,
|
|
201
247
|
) -> None:
|
|
202
248
|
# Method Name for downstream csv exporting
|
|
203
|
-
method_name = "
|
|
249
|
+
method_name = "stx_fillv"
|
|
204
250
|
|
|
205
251
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
206
252
|
with self._no_tracking():
|
|
207
|
-
self._axis_mpl = self._get_ax_module().
|
|
208
|
-
self._axis_mpl,
|
|
253
|
+
self._axis_mpl = self._get_ax_module().stx_fillv(
|
|
254
|
+
self._axis_mpl, starts_1d, ends_1d, color=color, alpha=alpha
|
|
209
255
|
)
|
|
210
256
|
|
|
211
257
|
# Tracking
|
|
212
|
-
tracked_dict = {"starts":
|
|
258
|
+
tracked_dict = {"starts": starts_1d, "ends": ends_1d}
|
|
213
259
|
self._track(track, id, method_name, tracked_dict, None)
|
|
214
260
|
|
|
261
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
262
|
+
self._apply_scitex_postprocess(method_name)
|
|
263
|
+
|
|
215
264
|
return self._axis_mpl
|
|
216
265
|
|
|
217
|
-
def
|
|
266
|
+
def stx_box(
|
|
218
267
|
self,
|
|
219
|
-
|
|
268
|
+
values_list: ArrayLike,
|
|
269
|
+
colors: Optional[List] = None,
|
|
220
270
|
track: bool = True,
|
|
221
271
|
id: Optional[str] = None,
|
|
222
272
|
**kwargs,
|
|
223
|
-
) ->
|
|
273
|
+
) -> dict:
|
|
224
274
|
# Method Name for downstream csv exporting
|
|
225
|
-
method_name = "
|
|
275
|
+
method_name = "stx_box"
|
|
226
276
|
|
|
227
277
|
# Copy data
|
|
228
|
-
_data =
|
|
278
|
+
_data = values_list.copy()
|
|
229
279
|
|
|
230
|
-
# Sample count as label
|
|
231
|
-
n = len(data)
|
|
280
|
+
# Sample count per group as label (show range if variable)
|
|
232
281
|
if kwargs.get("label"):
|
|
233
|
-
|
|
282
|
+
n_per_group = [len(g) for g in values_list]
|
|
283
|
+
n_min, n_max = min(n_per_group), max(n_per_group)
|
|
284
|
+
n_str = str(n_min) if n_min == n_max else f"{n_min}-{n_max}"
|
|
285
|
+
kwargs["label"] = kwargs["label"] + f" ($n$={n_str})"
|
|
286
|
+
|
|
287
|
+
# Enable patch_artist for styling (fill colors, edges)
|
|
288
|
+
if "patch_artist" not in kwargs:
|
|
289
|
+
kwargs["patch_artist"] = True
|
|
234
290
|
|
|
235
291
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
236
292
|
with self._no_tracking():
|
|
237
|
-
self._axis_mpl.boxplot(
|
|
293
|
+
result = self._axis_mpl.boxplot(values_list, **kwargs)
|
|
238
294
|
|
|
239
|
-
# Tracking
|
|
295
|
+
# Tracking - calculate sample size per group
|
|
296
|
+
n_per_group = [len(g) for g in values_list]
|
|
240
297
|
tracked_dict = {
|
|
241
298
|
"data": _data,
|
|
242
|
-
"n":
|
|
299
|
+
"n": n_per_group,
|
|
243
300
|
}
|
|
244
301
|
self._track(track, id, method_name, tracked_dict, None)
|
|
245
302
|
|
|
246
|
-
|
|
247
|
-
|
|
303
|
+
# Apply style_boxplot automatically for publication quality
|
|
304
|
+
# Uses scitex palette by default, or custom colors if provided
|
|
305
|
+
from scitex.plt.ax import style_boxplot
|
|
306
|
+
style_boxplot(result, colors=colors)
|
|
307
|
+
|
|
308
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
309
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
310
|
+
|
|
311
|
+
return result
|
|
312
|
+
|
|
248
313
|
def hist(
|
|
249
314
|
self,
|
|
250
315
|
x: ArrayLike,
|
|
@@ -302,13 +367,16 @@ class MatplotlibPlotMixin:
|
|
|
302
367
|
}
|
|
303
368
|
|
|
304
369
|
self._track(track, id, method_name, tracked_dict, kwargs)
|
|
305
|
-
|
|
370
|
+
|
|
371
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
372
|
+
self._apply_scitex_postprocess(method_name, hist_data)
|
|
373
|
+
|
|
306
374
|
return hist_data
|
|
307
375
|
|
|
308
376
|
# @wraps removed to avoid circular import
|
|
309
|
-
def
|
|
377
|
+
def stx_raster(
|
|
310
378
|
self,
|
|
311
|
-
|
|
379
|
+
spike_times_list: List[ArrayLike],
|
|
312
380
|
time: Optional[ArrayLike] = None,
|
|
313
381
|
labels: Optional[List[str]] = None,
|
|
314
382
|
colors: Optional[List[str]] = None,
|
|
@@ -317,90 +385,77 @@ class MatplotlibPlotMixin:
|
|
|
317
385
|
**kwargs,
|
|
318
386
|
) -> None:
|
|
319
387
|
# Method Name for downstream csv exporting
|
|
320
|
-
method_name = "
|
|
388
|
+
method_name = "stx_raster"
|
|
321
389
|
|
|
322
390
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
323
391
|
with self._no_tracking():
|
|
324
|
-
self._axis_mpl, raster_digit_df = self._get_ax_module().
|
|
325
|
-
self._axis_mpl,
|
|
392
|
+
self._axis_mpl, raster_digit_df = self._get_ax_module().stx_raster(
|
|
393
|
+
self._axis_mpl, spike_times_list, time=time
|
|
326
394
|
)
|
|
327
395
|
|
|
328
396
|
# Tracking
|
|
329
397
|
tracked_dict = {"raster_digit_df": raster_digit_df}
|
|
330
398
|
self._track(track, id, method_name, tracked_dict, None)
|
|
331
399
|
|
|
400
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
401
|
+
self._apply_scitex_postprocess(method_name)
|
|
402
|
+
|
|
332
403
|
return self._axis_mpl, raster_digit_df
|
|
333
404
|
|
|
334
405
|
# @wraps removed to avoid circular import
|
|
335
|
-
def
|
|
406
|
+
def stx_ecdf(
|
|
336
407
|
self,
|
|
337
|
-
|
|
408
|
+
values_1d: ArrayLike,
|
|
338
409
|
track: bool = True,
|
|
339
410
|
id: Optional[str] = None,
|
|
340
411
|
**kwargs,
|
|
341
412
|
) -> None:
|
|
342
413
|
# Method Name for downstream csv exporting
|
|
343
|
-
method_name = "
|
|
414
|
+
method_name = "stx_ecdf"
|
|
344
415
|
|
|
345
416
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
346
417
|
with self._no_tracking():
|
|
347
|
-
self._axis_mpl, ecdf_df = self._get_ax_module().
|
|
348
|
-
self._axis_mpl,
|
|
418
|
+
self._axis_mpl, ecdf_df = self._get_ax_module().stx_ecdf(
|
|
419
|
+
self._axis_mpl, values_1d, **kwargs
|
|
349
420
|
)
|
|
350
421
|
|
|
351
422
|
# Tracking
|
|
352
423
|
tracked_dict = {"ecdf_df": ecdf_df}
|
|
353
424
|
self._track(track, id, method_name, tracked_dict, None)
|
|
354
425
|
|
|
426
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
427
|
+
self._apply_scitex_postprocess(method_name)
|
|
428
|
+
|
|
355
429
|
return self._axis_mpl, ecdf_df
|
|
356
430
|
|
|
357
431
|
# @wraps removed to avoid circular import
|
|
358
|
-
def
|
|
432
|
+
def stx_joyplot(
|
|
359
433
|
self,
|
|
360
|
-
|
|
361
|
-
orientation: str = "vertical",
|
|
434
|
+
arrays: ArrayLike,
|
|
362
435
|
track: bool = True,
|
|
363
436
|
id: Optional[str] = None,
|
|
364
437
|
**kwargs,
|
|
365
438
|
) -> None:
|
|
366
439
|
# Method Name for downstream csv exporting
|
|
367
|
-
method_name = "
|
|
440
|
+
method_name = "stx_joyplot"
|
|
368
441
|
|
|
369
442
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
370
443
|
with self._no_tracking():
|
|
371
|
-
self._axis_mpl = self._get_ax_module().
|
|
372
|
-
self._axis_mpl,
|
|
444
|
+
self._axis_mpl = self._get_ax_module().stx_joyplot(
|
|
445
|
+
self._axis_mpl, arrays, **kwargs
|
|
373
446
|
)
|
|
374
447
|
|
|
375
448
|
# Tracking
|
|
376
|
-
tracked_dict = {"
|
|
449
|
+
tracked_dict = {"joyplot_arrays": arrays}
|
|
377
450
|
self._track(track, id, method_name, tracked_dict, None)
|
|
378
451
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
# @wraps removed to avoid circular import
|
|
382
|
-
def plot_joyplot(
|
|
383
|
-
self,
|
|
384
|
-
data: ArrayLike,
|
|
385
|
-
track: bool = True,
|
|
386
|
-
id: Optional[str] = None,
|
|
387
|
-
**kwargs,
|
|
388
|
-
) -> None:
|
|
389
|
-
# Method Name for downstream csv exporting
|
|
390
|
-
method_name = "plot_joyplot"
|
|
391
|
-
|
|
392
|
-
# Plotting with pure matplotlib methods under non-tracking context
|
|
393
|
-
with self._no_tracking():
|
|
394
|
-
self._axis_mpl = self._get_ax_module().plot_joyplot(self._axis_mpl, data, **kwargs)
|
|
395
|
-
|
|
396
|
-
# Tracking
|
|
397
|
-
tracked_dict = {"joyplot_data": data}
|
|
398
|
-
self._track(track, id, method_name, tracked_dict, None)
|
|
452
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
453
|
+
self._apply_scitex_postprocess(method_name)
|
|
399
454
|
|
|
400
455
|
return self._axis_mpl
|
|
401
456
|
|
|
402
457
|
# @wraps removed to avoid circular import
|
|
403
|
-
def
|
|
458
|
+
def stx_scatter_hist(
|
|
404
459
|
self,
|
|
405
460
|
x: ArrayLike,
|
|
406
461
|
y: ArrayLike,
|
|
@@ -418,11 +473,11 @@ class MatplotlibPlotMixin:
|
|
|
418
473
|
) -> None:
|
|
419
474
|
"""Plot a scatter plot with marginal histograms."""
|
|
420
475
|
# Method Name for downstream csv exporting
|
|
421
|
-
method_name = "
|
|
476
|
+
method_name = "stx_scatter_hist"
|
|
422
477
|
|
|
423
478
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
424
479
|
with self._no_tracking():
|
|
425
|
-
self._axis_mpl, ax_histx, ax_histy, hist_data = self._get_ax_module().
|
|
480
|
+
self._axis_mpl, ax_histx, ax_histy, hist_data = self._get_ax_module().stx_scatter_hist(
|
|
426
481
|
self._axis_mpl,
|
|
427
482
|
x,
|
|
428
483
|
y,
|
|
@@ -448,12 +503,15 @@ class MatplotlibPlotMixin:
|
|
|
448
503
|
}
|
|
449
504
|
self._track(track, id, method_name, tracked_dict, None)
|
|
450
505
|
|
|
506
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
507
|
+
self._apply_scitex_postprocess(method_name)
|
|
508
|
+
|
|
451
509
|
return self._axis_mpl, ax_histx, ax_histy, hist_data
|
|
452
510
|
|
|
453
511
|
# @wraps removed to avoid circular import
|
|
454
|
-
def
|
|
512
|
+
def stx_heatmap(
|
|
455
513
|
self,
|
|
456
|
-
|
|
514
|
+
values_2d: ArrayLike,
|
|
457
515
|
x_labels: Optional[List[str]] = None,
|
|
458
516
|
y_labels: Optional[List[str]] = None,
|
|
459
517
|
cmap: str = "viridis",
|
|
@@ -468,13 +526,13 @@ class MatplotlibPlotMixin:
|
|
|
468
526
|
) -> Tuple[matplotlib.image.AxesImage, matplotlib.colorbar.Colorbar]:
|
|
469
527
|
"""Plot a heatmap on the axes."""
|
|
470
528
|
# Method Name for downstream csv exporting
|
|
471
|
-
method_name = "
|
|
529
|
+
method_name = "stx_heatmap"
|
|
472
530
|
|
|
473
531
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
474
532
|
with self._no_tracking():
|
|
475
|
-
ax, im, cbar = self._get_ax_module().
|
|
533
|
+
ax, im, cbar = self._get_ax_module().stx_heatmap(
|
|
476
534
|
self._axis_mpl,
|
|
477
|
-
|
|
535
|
+
values_2d,
|
|
478
536
|
x_labels=x_labels,
|
|
479
537
|
y_labels=y_labels,
|
|
480
538
|
cmap=cmap,
|
|
@@ -488,18 +546,21 @@ class MatplotlibPlotMixin:
|
|
|
488
546
|
|
|
489
547
|
# Tracking
|
|
490
548
|
tracked_dict = {
|
|
491
|
-
"data":
|
|
549
|
+
"data": values_2d,
|
|
492
550
|
"x_labels": x_labels,
|
|
493
551
|
"y_labels": y_labels,
|
|
494
552
|
}
|
|
495
553
|
self._track(track, id, method_name, tracked_dict, None)
|
|
496
554
|
|
|
555
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
556
|
+
self._apply_scitex_postprocess(method_name)
|
|
557
|
+
|
|
497
558
|
return ax, im, cbar
|
|
498
559
|
|
|
499
560
|
# @wraps removed to avoid circular import
|
|
500
|
-
def
|
|
561
|
+
def stx_violin(
|
|
501
562
|
self,
|
|
502
|
-
|
|
563
|
+
values_list: Union[pd.DataFrame, List, ArrayLike],
|
|
503
564
|
x=None,
|
|
504
565
|
y=None,
|
|
505
566
|
hue=None,
|
|
@@ -512,17 +573,17 @@ class MatplotlibPlotMixin:
|
|
|
512
573
|
) -> None:
|
|
513
574
|
"""Plot a violin plot."""
|
|
514
575
|
# Method Name for downstream csv exporting
|
|
515
|
-
method_name = "
|
|
576
|
+
method_name = "stx_violin"
|
|
516
577
|
|
|
517
578
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
518
579
|
with self._no_tracking():
|
|
519
580
|
# Handle the list-style input case
|
|
520
|
-
if isinstance(
|
|
521
|
-
isinstance(item, (list, np.ndarray)) for item in
|
|
581
|
+
if isinstance(values_list, list) and all(
|
|
582
|
+
isinstance(item, (list, np.ndarray)) for item in values_list
|
|
522
583
|
):
|
|
523
|
-
self._axis_mpl = self._get_ax_module().
|
|
584
|
+
self._axis_mpl = self._get_ax_module().stx_violin(
|
|
524
585
|
self._axis_mpl,
|
|
525
|
-
|
|
586
|
+
values_list=values_list,
|
|
526
587
|
labels=labels,
|
|
527
588
|
colors=colors,
|
|
528
589
|
half=half,
|
|
@@ -530,9 +591,9 @@ class MatplotlibPlotMixin:
|
|
|
530
591
|
)
|
|
531
592
|
# Handle DataFrame or other inputs
|
|
532
593
|
else:
|
|
533
|
-
self._axis_mpl = self._get_ax_module().
|
|
594
|
+
self._axis_mpl = self._get_ax_module().stx_violin(
|
|
534
595
|
self._axis_mpl,
|
|
535
|
-
data=
|
|
596
|
+
data=values_list,
|
|
536
597
|
x=x,
|
|
537
598
|
y=y,
|
|
538
599
|
hue=hue,
|
|
@@ -542,7 +603,7 @@ class MatplotlibPlotMixin:
|
|
|
542
603
|
|
|
543
604
|
# Tracking
|
|
544
605
|
tracked_dict = {
|
|
545
|
-
"data":
|
|
606
|
+
"data": values_list,
|
|
546
607
|
"x": x,
|
|
547
608
|
"y": y,
|
|
548
609
|
"hue": hue,
|
|
@@ -551,6 +612,10 @@ class MatplotlibPlotMixin:
|
|
|
551
612
|
"colors": colors,
|
|
552
613
|
}
|
|
553
614
|
self._track(track, id, method_name, tracked_dict, None)
|
|
615
|
+
|
|
616
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
617
|
+
self._apply_scitex_postprocess(method_name)
|
|
618
|
+
|
|
554
619
|
return self._axis_mpl
|
|
555
620
|
|
|
556
621
|
# def plot_area(
|
|
@@ -756,9 +821,9 @@ class MatplotlibPlotMixin:
|
|
|
756
821
|
# return self._axis_mpl
|
|
757
822
|
|
|
758
823
|
# @wraps removed to avoid circular import
|
|
759
|
-
def
|
|
824
|
+
def stx_line(
|
|
760
825
|
self,
|
|
761
|
-
|
|
826
|
+
values_1d: ArrayLike,
|
|
762
827
|
xx: Optional[ArrayLike] = None,
|
|
763
828
|
track: bool = True,
|
|
764
829
|
id: Optional[str] = None,
|
|
@@ -766,24 +831,27 @@ class MatplotlibPlotMixin:
|
|
|
766
831
|
) -> None:
|
|
767
832
|
"""Plot a simple line."""
|
|
768
833
|
# Method Name for downstream csv exporting
|
|
769
|
-
method_name = "
|
|
834
|
+
method_name = "stx_line"
|
|
770
835
|
|
|
771
836
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
772
837
|
with self._no_tracking():
|
|
773
|
-
self._axis_mpl, plot_df = self._get_ax_module().
|
|
774
|
-
self._axis_mpl,
|
|
838
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_line(
|
|
839
|
+
self._axis_mpl, values_1d, xx=xx, **kwargs
|
|
775
840
|
)
|
|
776
841
|
|
|
777
842
|
# Tracking
|
|
778
843
|
tracked_dict = {"plot_df": plot_df}
|
|
779
844
|
self._track(track, id, method_name, tracked_dict, None)
|
|
780
845
|
|
|
846
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
847
|
+
self._apply_scitex_postprocess(method_name)
|
|
848
|
+
|
|
781
849
|
return self._axis_mpl, plot_df
|
|
782
850
|
|
|
783
851
|
# @wraps removed to avoid circular import
|
|
784
|
-
def
|
|
852
|
+
def stx_mean_std(
|
|
785
853
|
self,
|
|
786
|
-
|
|
854
|
+
values_2d: ArrayLike,
|
|
787
855
|
xx: Optional[ArrayLike] = None,
|
|
788
856
|
sd: float = 1,
|
|
789
857
|
track: bool = True,
|
|
@@ -792,24 +860,27 @@ class MatplotlibPlotMixin:
|
|
|
792
860
|
) -> None:
|
|
793
861
|
"""Plot mean line with standard deviation shading."""
|
|
794
862
|
# Method Name for downstream csv exporting
|
|
795
|
-
method_name = "
|
|
863
|
+
method_name = "stx_mean_std"
|
|
796
864
|
|
|
797
865
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
798
866
|
with self._no_tracking():
|
|
799
|
-
self._axis_mpl, plot_df = self._get_ax_module().
|
|
800
|
-
self._axis_mpl,
|
|
867
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_mean_std(
|
|
868
|
+
self._axis_mpl, values_2d, xx=xx, sd=sd, **kwargs
|
|
801
869
|
)
|
|
802
870
|
|
|
803
871
|
# Tracking
|
|
804
872
|
tracked_dict = {"plot_df": plot_df}
|
|
805
873
|
self._track(track, id, method_name, tracked_dict, None)
|
|
806
874
|
|
|
875
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
876
|
+
self._apply_scitex_postprocess(method_name)
|
|
877
|
+
|
|
807
878
|
return self._axis_mpl, plot_df
|
|
808
879
|
|
|
809
880
|
# @wraps removed to avoid circular import
|
|
810
|
-
def
|
|
881
|
+
def stx_mean_ci(
|
|
811
882
|
self,
|
|
812
|
-
|
|
883
|
+
values_2d: ArrayLike,
|
|
813
884
|
xx: Optional[ArrayLike] = None,
|
|
814
885
|
perc: float = 95,
|
|
815
886
|
track: bool = True,
|
|
@@ -818,24 +889,27 @@ class MatplotlibPlotMixin:
|
|
|
818
889
|
) -> None:
|
|
819
890
|
"""Plot mean line with confidence interval shading."""
|
|
820
891
|
# Method Name for downstream csv exporting
|
|
821
|
-
method_name = "
|
|
892
|
+
method_name = "stx_mean_ci"
|
|
822
893
|
|
|
823
894
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
824
895
|
with self._no_tracking():
|
|
825
|
-
self._axis_mpl, plot_df = self._get_ax_module().
|
|
826
|
-
self._axis_mpl,
|
|
896
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_mean_ci(
|
|
897
|
+
self._axis_mpl, values_2d, xx=xx, perc=perc, **kwargs
|
|
827
898
|
)
|
|
828
899
|
|
|
829
900
|
# Tracking
|
|
830
901
|
tracked_dict = {"plot_df": plot_df}
|
|
831
902
|
self._track(track, id, method_name, tracked_dict, None)
|
|
832
903
|
|
|
904
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
905
|
+
self._apply_scitex_postprocess(method_name)
|
|
906
|
+
|
|
833
907
|
return self._axis_mpl, plot_df
|
|
834
908
|
|
|
835
909
|
# @wraps removed to avoid circular import
|
|
836
|
-
def
|
|
910
|
+
def stx_median_iqr(
|
|
837
911
|
self,
|
|
838
|
-
|
|
912
|
+
values_2d: ArrayLike,
|
|
839
913
|
xx: Optional[ArrayLike] = None,
|
|
840
914
|
track: bool = True,
|
|
841
915
|
id: Optional[str] = None,
|
|
@@ -843,22 +917,25 @@ class MatplotlibPlotMixin:
|
|
|
843
917
|
) -> None:
|
|
844
918
|
"""Plot median line with interquartile range shading."""
|
|
845
919
|
# Method Name for downstream csv exporting
|
|
846
|
-
method_name = "
|
|
920
|
+
method_name = "stx_median_iqr"
|
|
847
921
|
|
|
848
922
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
849
923
|
with self._no_tracking():
|
|
850
|
-
self._axis_mpl, plot_df = self._get_ax_module().
|
|
851
|
-
self._axis_mpl,
|
|
924
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_median_iqr(
|
|
925
|
+
self._axis_mpl, values_2d, xx=xx, **kwargs
|
|
852
926
|
)
|
|
853
927
|
|
|
854
928
|
# Tracking
|
|
855
929
|
tracked_dict = {"plot_df": plot_df}
|
|
856
930
|
self._track(track, id, method_name, tracked_dict, None)
|
|
857
931
|
|
|
932
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
933
|
+
self._apply_scitex_postprocess(method_name)
|
|
934
|
+
|
|
858
935
|
return self._axis_mpl, plot_df
|
|
859
936
|
|
|
860
937
|
# @wraps removed to avoid circular import
|
|
861
|
-
def
|
|
938
|
+
def stx_shaded_line(
|
|
862
939
|
self,
|
|
863
940
|
xs: ArrayLike,
|
|
864
941
|
ys_lower: ArrayLike,
|
|
@@ -872,11 +949,11 @@ class MatplotlibPlotMixin:
|
|
|
872
949
|
) -> None:
|
|
873
950
|
"""Plot a line with shaded area between lower and upper bounds."""
|
|
874
951
|
# Method Name for downstream csv exporting
|
|
875
|
-
method_name = "
|
|
952
|
+
method_name = "stx_shaded_line"
|
|
876
953
|
|
|
877
954
|
# Plotting with pure matplotlib methods under non-tracking context
|
|
878
955
|
with self._no_tracking():
|
|
879
|
-
self._axis_mpl, plot_df = self._get_ax_module().
|
|
956
|
+
self._axis_mpl, plot_df = self._get_ax_module().stx_shaded_line(
|
|
880
957
|
self._axis_mpl,
|
|
881
958
|
xs,
|
|
882
959
|
ys_lower,
|
|
@@ -891,8 +968,316 @@ class MatplotlibPlotMixin:
|
|
|
891
968
|
tracked_dict = {"plot_df": plot_df}
|
|
892
969
|
self._track(track, id, method_name, tracked_dict, None)
|
|
893
970
|
|
|
971
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
972
|
+
self._apply_scitex_postprocess(method_name)
|
|
973
|
+
|
|
894
974
|
return self._axis_mpl, plot_df
|
|
895
975
|
|
|
976
|
+
# =========================================================================
|
|
977
|
+
# stx_ aliases for standard matplotlib methods
|
|
978
|
+
# These provide a consistent stx_ prefix for all scitex wrapper methods
|
|
979
|
+
# =========================================================================
|
|
980
|
+
|
|
981
|
+
def stx_bar(self, x, height, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
982
|
+
"""Bar plot with scitex styling and tracking.
|
|
983
|
+
|
|
984
|
+
Parameters
|
|
985
|
+
----------
|
|
986
|
+
x : array-like
|
|
987
|
+
The x coordinates of the bars
|
|
988
|
+
height : array-like
|
|
989
|
+
The heights of the bars
|
|
990
|
+
track : bool
|
|
991
|
+
Whether to track data for CSV export
|
|
992
|
+
id : str, optional
|
|
993
|
+
Identifier for tracking
|
|
994
|
+
**kwargs
|
|
995
|
+
Additional arguments passed to matplotlib bar
|
|
996
|
+
"""
|
|
997
|
+
method_name = "stx_bar"
|
|
998
|
+
|
|
999
|
+
# Add sample size to label if provided
|
|
1000
|
+
if kwargs.get("label"):
|
|
1001
|
+
n_samples = len(x)
|
|
1002
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_samples})"
|
|
1003
|
+
|
|
1004
|
+
with self._no_tracking():
|
|
1005
|
+
result = self._axis_mpl.bar(x, height, **kwargs)
|
|
1006
|
+
|
|
1007
|
+
# Track bar data
|
|
1008
|
+
tracked_dict = {"bar_df": pd.DataFrame({"x": x, "height": height})}
|
|
1009
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
1010
|
+
|
|
1011
|
+
# Apply style_barplot automatically for publication quality
|
|
1012
|
+
from scitex.plt.ax import style_barplot
|
|
1013
|
+
style_barplot(result)
|
|
1014
|
+
|
|
1015
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1016
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1017
|
+
|
|
1018
|
+
return result
|
|
1019
|
+
|
|
1020
|
+
def stx_barh(self, y, width, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1021
|
+
"""Horizontal bar plot with scitex styling and tracking.
|
|
1022
|
+
|
|
1023
|
+
Parameters
|
|
1024
|
+
----------
|
|
1025
|
+
y : array-like
|
|
1026
|
+
The y coordinates of the bars
|
|
1027
|
+
width : array-like
|
|
1028
|
+
The widths of the bars
|
|
1029
|
+
track : bool
|
|
1030
|
+
Whether to track data for CSV export
|
|
1031
|
+
id : str, optional
|
|
1032
|
+
Identifier for tracking
|
|
1033
|
+
**kwargs
|
|
1034
|
+
Additional arguments passed to matplotlib barh
|
|
1035
|
+
"""
|
|
1036
|
+
method_name = "stx_barh"
|
|
1037
|
+
|
|
1038
|
+
# Add sample size to label if provided
|
|
1039
|
+
if kwargs.get("label"):
|
|
1040
|
+
n_samples = len(y)
|
|
1041
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_samples})"
|
|
1042
|
+
|
|
1043
|
+
with self._no_tracking():
|
|
1044
|
+
result = self._axis_mpl.barh(y, width, **kwargs)
|
|
1045
|
+
|
|
1046
|
+
# Track bar data
|
|
1047
|
+
tracked_dict = {"barh_df": pd.DataFrame({"y": y, "width": width})}
|
|
1048
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
1049
|
+
|
|
1050
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1051
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1052
|
+
|
|
1053
|
+
return result
|
|
1054
|
+
|
|
1055
|
+
def stx_scatter(self, x, y, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1056
|
+
"""Scatter plot with scitex styling and tracking.
|
|
1057
|
+
|
|
1058
|
+
Parameters
|
|
1059
|
+
----------
|
|
1060
|
+
x : array-like
|
|
1061
|
+
The x coordinates of the points
|
|
1062
|
+
y : array-like
|
|
1063
|
+
The y coordinates of the points
|
|
1064
|
+
track : bool
|
|
1065
|
+
Whether to track data for CSV export
|
|
1066
|
+
id : str, optional
|
|
1067
|
+
Identifier for tracking
|
|
1068
|
+
**kwargs
|
|
1069
|
+
Additional arguments passed to matplotlib scatter
|
|
1070
|
+
"""
|
|
1071
|
+
method_name = "stx_scatter"
|
|
1072
|
+
|
|
1073
|
+
# Add sample size to label if provided
|
|
1074
|
+
if kwargs.get("label"):
|
|
1075
|
+
n_samples = len(x)
|
|
1076
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_samples})"
|
|
1077
|
+
|
|
1078
|
+
with self._no_tracking():
|
|
1079
|
+
result = self._axis_mpl.scatter(x, y, **kwargs)
|
|
1080
|
+
|
|
1081
|
+
# Track scatter data
|
|
1082
|
+
tracked_dict = {"scatter_df": pd.DataFrame({"x": x, "y": y})}
|
|
1083
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
1084
|
+
|
|
1085
|
+
# Apply style_scatter automatically for publication quality
|
|
1086
|
+
from scitex.plt.ax import style_scatter
|
|
1087
|
+
style_scatter(result)
|
|
1088
|
+
|
|
1089
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1090
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1091
|
+
|
|
1092
|
+
return result
|
|
1093
|
+
|
|
1094
|
+
def stx_errorbar(self, x, y, yerr=None, xerr=None, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1095
|
+
"""Error bar plot with scitex styling and tracking.
|
|
1096
|
+
|
|
1097
|
+
Parameters
|
|
1098
|
+
----------
|
|
1099
|
+
x : array-like
|
|
1100
|
+
The x coordinates of the data points
|
|
1101
|
+
y : array-like
|
|
1102
|
+
The y coordinates of the data points
|
|
1103
|
+
yerr : array-like, optional
|
|
1104
|
+
The y error values
|
|
1105
|
+
xerr : array-like, optional
|
|
1106
|
+
The x error values
|
|
1107
|
+
track : bool
|
|
1108
|
+
Whether to track data for CSV export
|
|
1109
|
+
id : str, optional
|
|
1110
|
+
Identifier for tracking
|
|
1111
|
+
**kwargs
|
|
1112
|
+
Additional arguments passed to matplotlib errorbar
|
|
1113
|
+
"""
|
|
1114
|
+
method_name = "stx_errorbar"
|
|
1115
|
+
|
|
1116
|
+
# Add sample size to label if provided
|
|
1117
|
+
if kwargs.get("label"):
|
|
1118
|
+
n_samples = len(x)
|
|
1119
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_samples})"
|
|
1120
|
+
|
|
1121
|
+
with self._no_tracking():
|
|
1122
|
+
result = self._axis_mpl.errorbar(x, y, yerr=yerr, xerr=xerr, **kwargs)
|
|
1123
|
+
|
|
1124
|
+
# Track errorbar data
|
|
1125
|
+
df_dict = {"x": x, "y": y}
|
|
1126
|
+
if yerr is not None:
|
|
1127
|
+
df_dict["yerr"] = yerr
|
|
1128
|
+
if xerr is not None:
|
|
1129
|
+
df_dict["xerr"] = xerr
|
|
1130
|
+
tracked_dict = {"errorbar_df": pd.DataFrame(df_dict)}
|
|
1131
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
1132
|
+
|
|
1133
|
+
# Apply style_errorbar automatically for publication quality
|
|
1134
|
+
from scitex.plt.ax import style_errorbar
|
|
1135
|
+
style_errorbar(result)
|
|
1136
|
+
|
|
1137
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1138
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1139
|
+
|
|
1140
|
+
return result
|
|
1141
|
+
|
|
1142
|
+
def stx_fill_between(self, x, y1, y2=0, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1143
|
+
"""Fill between plot with scitex styling and tracking.
|
|
1144
|
+
|
|
1145
|
+
Parameters
|
|
1146
|
+
----------
|
|
1147
|
+
x : array-like
|
|
1148
|
+
The x coordinates
|
|
1149
|
+
y1 : array-like
|
|
1150
|
+
The first y boundary
|
|
1151
|
+
y2 : array-like or scalar, optional
|
|
1152
|
+
The second y boundary (default 0)
|
|
1153
|
+
track : bool
|
|
1154
|
+
Whether to track data for CSV export
|
|
1155
|
+
id : str, optional
|
|
1156
|
+
Identifier for tracking
|
|
1157
|
+
**kwargs
|
|
1158
|
+
Additional arguments passed to matplotlib fill_between
|
|
1159
|
+
"""
|
|
1160
|
+
method_name = "stx_fill_between"
|
|
1161
|
+
|
|
1162
|
+
with self._no_tracking():
|
|
1163
|
+
result = self._axis_mpl.fill_between(x, y1, y2, **kwargs)
|
|
1164
|
+
|
|
1165
|
+
# Track fill_between data
|
|
1166
|
+
tracked_dict = {"fill_between_df": pd.DataFrame({
|
|
1167
|
+
"x": x,
|
|
1168
|
+
"y1": y1,
|
|
1169
|
+
"y2": y2 if hasattr(y2, '__len__') else [y2] * len(x)
|
|
1170
|
+
})}
|
|
1171
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
1172
|
+
|
|
1173
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1174
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1175
|
+
|
|
1176
|
+
return result
|
|
1177
|
+
|
|
1178
|
+
def stx_contour(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1179
|
+
"""Contour plot with scitex styling and tracking.
|
|
1180
|
+
|
|
1181
|
+
Parameters
|
|
1182
|
+
----------
|
|
1183
|
+
*args
|
|
1184
|
+
Positional arguments passed to matplotlib contour (X, Y, Z)
|
|
1185
|
+
track : bool
|
|
1186
|
+
Whether to track data for CSV export
|
|
1187
|
+
id : str, optional
|
|
1188
|
+
Identifier for tracking
|
|
1189
|
+
**kwargs
|
|
1190
|
+
Additional arguments passed to matplotlib contour
|
|
1191
|
+
"""
|
|
1192
|
+
method_name = "stx_contour"
|
|
1193
|
+
|
|
1194
|
+
with self._no_tracking():
|
|
1195
|
+
result = self._axis_mpl.contour(*args, **kwargs)
|
|
1196
|
+
|
|
1197
|
+
# Track contour data
|
|
1198
|
+
if len(args) >= 3:
|
|
1199
|
+
X, Y, Z = args[0], args[1], args[2]
|
|
1200
|
+
tracked_dict = {"contour_df": pd.DataFrame({
|
|
1201
|
+
"X": np.ravel(X),
|
|
1202
|
+
"Y": np.ravel(Y),
|
|
1203
|
+
"Z": np.ravel(Z)
|
|
1204
|
+
})}
|
|
1205
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
1206
|
+
|
|
1207
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1208
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1209
|
+
|
|
1210
|
+
return result
|
|
1211
|
+
|
|
1212
|
+
def stx_imshow(self, data, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1213
|
+
"""Image display with scitex styling and tracking.
|
|
1214
|
+
|
|
1215
|
+
Parameters
|
|
1216
|
+
----------
|
|
1217
|
+
data : array-like
|
|
1218
|
+
2D array of image data
|
|
1219
|
+
track : bool
|
|
1220
|
+
Whether to track data for CSV export
|
|
1221
|
+
id : str, optional
|
|
1222
|
+
Identifier for tracking
|
|
1223
|
+
**kwargs
|
|
1224
|
+
Additional arguments passed to matplotlib imshow
|
|
1225
|
+
"""
|
|
1226
|
+
method_name = "stx_imshow"
|
|
1227
|
+
|
|
1228
|
+
with self._no_tracking():
|
|
1229
|
+
result = self._axis_mpl.imshow(data, **kwargs)
|
|
1230
|
+
|
|
1231
|
+
# Track image data
|
|
1232
|
+
if hasattr(data, 'shape') and len(data.shape) == 2:
|
|
1233
|
+
n_rows, n_cols = data.shape
|
|
1234
|
+
df = pd.DataFrame(data, columns=[f"col_{i}" for i in range(n_cols)])
|
|
1235
|
+
else:
|
|
1236
|
+
df = pd.DataFrame(data)
|
|
1237
|
+
tracked_dict = {"imshow_df": df}
|
|
1238
|
+
self._track(track, id, method_name, tracked_dict, None)
|
|
1239
|
+
|
|
1240
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1241
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1242
|
+
|
|
1243
|
+
return result
|
|
1244
|
+
|
|
1245
|
+
def stx_boxplot(self, data, colors: Optional[List] = None, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1246
|
+
"""Boxplot with scitex styling and tracking (alias for stx_box).
|
|
1247
|
+
|
|
1248
|
+
Parameters
|
|
1249
|
+
----------
|
|
1250
|
+
data : list of array-like
|
|
1251
|
+
List of data arrays for each box
|
|
1252
|
+
colors : list, optional
|
|
1253
|
+
Colors for each box
|
|
1254
|
+
track : bool
|
|
1255
|
+
Whether to track data for CSV export
|
|
1256
|
+
id : str, optional
|
|
1257
|
+
Identifier for tracking
|
|
1258
|
+
**kwargs
|
|
1259
|
+
Additional arguments passed to matplotlib boxplot
|
|
1260
|
+
"""
|
|
1261
|
+
return self.stx_box(data, colors=colors, track=track, id=id, **kwargs)
|
|
1262
|
+
|
|
1263
|
+
def stx_violinplot(self, data, colors: Optional[List] = None, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1264
|
+
"""Violinplot with scitex styling and tracking (alias for stx_violin).
|
|
1265
|
+
|
|
1266
|
+
Parameters
|
|
1267
|
+
----------
|
|
1268
|
+
data : list of array-like or DataFrame
|
|
1269
|
+
Data for violin plot
|
|
1270
|
+
colors : list, optional
|
|
1271
|
+
Colors for each violin
|
|
1272
|
+
track : bool
|
|
1273
|
+
Whether to track data for CSV export
|
|
1274
|
+
id : str, optional
|
|
1275
|
+
Identifier for tracking
|
|
1276
|
+
**kwargs
|
|
1277
|
+
Additional arguments passed to stx_violin
|
|
1278
|
+
"""
|
|
1279
|
+
return self.stx_violin(data, colors=colors, track=track, id=id, **kwargs)
|
|
1280
|
+
|
|
896
1281
|
# Standard matplotlib plot methods with plot_ prefix
|
|
897
1282
|
def plot_bar(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
898
1283
|
"""Wrapper for matplotlib bar plot with tracking support."""
|
|
@@ -906,6 +1291,9 @@ class MatplotlibPlotMixin:
|
|
|
906
1291
|
tracked_dict = {"bar_df": pd.DataFrame({"x": args[0], "height": args[1]})}
|
|
907
1292
|
self._track(track, id, method_name, tracked_dict, None)
|
|
908
1293
|
|
|
1294
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1295
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1296
|
+
|
|
909
1297
|
return result
|
|
910
1298
|
|
|
911
1299
|
def plot_barh(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
@@ -920,12 +1308,20 @@ class MatplotlibPlotMixin:
|
|
|
920
1308
|
tracked_dict = {"barh_df": pd.DataFrame({"y": args[0], "width": args[1]})}
|
|
921
1309
|
self._track(track, id, method_name, tracked_dict, None)
|
|
922
1310
|
|
|
1311
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1312
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1313
|
+
|
|
923
1314
|
return result
|
|
924
1315
|
|
|
925
1316
|
def plot_scatter(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
926
1317
|
"""Wrapper for matplotlib scatter plot with tracking support."""
|
|
927
1318
|
method_name = "plot_scatter"
|
|
928
1319
|
|
|
1320
|
+
# Add sample size to label if provided
|
|
1321
|
+
if kwargs.get("label") and len(args) >= 1:
|
|
1322
|
+
n_samples = len(args[0])
|
|
1323
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_samples})"
|
|
1324
|
+
|
|
929
1325
|
with self._no_tracking():
|
|
930
1326
|
result = self._axis_mpl.scatter(*args, **kwargs)
|
|
931
1327
|
|
|
@@ -934,6 +1330,9 @@ class MatplotlibPlotMixin:
|
|
|
934
1330
|
tracked_dict = {"scatter_df": pd.DataFrame({"x": args[0], "y": args[1]})}
|
|
935
1331
|
self._track(track, id, method_name, tracked_dict, None)
|
|
936
1332
|
|
|
1333
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1334
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1335
|
+
|
|
937
1336
|
return result
|
|
938
1337
|
|
|
939
1338
|
def plot_errorbar(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
@@ -953,6 +1352,9 @@ class MatplotlibPlotMixin:
|
|
|
953
1352
|
tracked_dict = {"errorbar_df": pd.DataFrame(df_dict)}
|
|
954
1353
|
self._track(track, id, method_name, tracked_dict, None)
|
|
955
1354
|
|
|
1355
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1356
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1357
|
+
|
|
956
1358
|
return result
|
|
957
1359
|
|
|
958
1360
|
def plot_fill_between(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
@@ -971,6 +1373,9 @@ class MatplotlibPlotMixin:
|
|
|
971
1373
|
})}
|
|
972
1374
|
self._track(track, id, method_name, tracked_dict, None)
|
|
973
1375
|
|
|
1376
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1377
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1378
|
+
|
|
974
1379
|
return result
|
|
975
1380
|
|
|
976
1381
|
def plot_contour(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
@@ -991,6 +1396,9 @@ class MatplotlibPlotMixin:
|
|
|
991
1396
|
})}
|
|
992
1397
|
self._track(track, id, method_name, tracked_dict, None)
|
|
993
1398
|
|
|
1399
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1400
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1401
|
+
|
|
994
1402
|
return result
|
|
995
1403
|
|
|
996
1404
|
def plot_imshow(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
@@ -1013,12 +1421,28 @@ class MatplotlibPlotMixin:
|
|
|
1013
1421
|
tracked_dict = {"imshow_df": df}
|
|
1014
1422
|
self._track(track, id, method_name, tracked_dict, None)
|
|
1015
1423
|
|
|
1424
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1425
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1426
|
+
|
|
1016
1427
|
return result
|
|
1017
1428
|
|
|
1018
|
-
def plot_boxplot(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1019
|
-
"""Wrapper for matplotlib boxplot with tracking support."""
|
|
1429
|
+
def plot_boxplot(self, *args, colors: Optional[List] = None, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1430
|
+
"""Wrapper for matplotlib boxplot with tracking support and auto-styling."""
|
|
1020
1431
|
method_name = "plot_boxplot"
|
|
1021
1432
|
|
|
1433
|
+
# Add sample size per group to label if provided (show range if variable)
|
|
1434
|
+
if kwargs.get("label") and len(args) >= 1:
|
|
1435
|
+
data = args[0]
|
|
1436
|
+
if isinstance(data, list):
|
|
1437
|
+
n_per_group = [len(g) for g in data]
|
|
1438
|
+
n_min, n_max = min(n_per_group), max(n_per_group)
|
|
1439
|
+
n_str = str(n_min) if n_min == n_max else f"{n_min}-{n_max}"
|
|
1440
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_str})"
|
|
1441
|
+
|
|
1442
|
+
# Enable patch_artist for styling (fill colors, edges)
|
|
1443
|
+
if "patch_artist" not in kwargs:
|
|
1444
|
+
kwargs["patch_artist"] = True
|
|
1445
|
+
|
|
1022
1446
|
with self._no_tracking():
|
|
1023
1447
|
result = self._axis_mpl.boxplot(*args, **kwargs)
|
|
1024
1448
|
|
|
@@ -1031,12 +1455,29 @@ class MatplotlibPlotMixin:
|
|
|
1031
1455
|
tracked_dict = {"boxplot_df": pd.DataFrame({"data": data})}
|
|
1032
1456
|
self._track(track, id, method_name, tracked_dict, None)
|
|
1033
1457
|
|
|
1458
|
+
# Apply style_boxplot automatically for publication quality
|
|
1459
|
+
# Uses scitex palette by default, or custom colors if provided
|
|
1460
|
+
from scitex.plt.ax import style_boxplot
|
|
1461
|
+
style_boxplot(result, colors=colors)
|
|
1462
|
+
|
|
1463
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1464
|
+
self._apply_scitex_postprocess(method_name, result)
|
|
1465
|
+
|
|
1034
1466
|
return result
|
|
1035
1467
|
|
|
1036
1468
|
def plot_violinplot(self, *args, track: bool = True, id: Optional[str] = None, **kwargs):
|
|
1037
1469
|
"""Wrapper for matplotlib violinplot with tracking support."""
|
|
1038
1470
|
method_name = "plot_violinplot"
|
|
1039
1471
|
|
|
1472
|
+
# Add sample size per group to label if provided (show range if variable)
|
|
1473
|
+
if kwargs.get("label") and len(args) >= 1:
|
|
1474
|
+
data = args[0]
|
|
1475
|
+
if isinstance(data, list):
|
|
1476
|
+
n_per_group = [len(g) for g in data]
|
|
1477
|
+
n_min, n_max = min(n_per_group), max(n_per_group)
|
|
1478
|
+
n_str = str(n_min) if n_min == n_max else f"{n_min}-{n_max}"
|
|
1479
|
+
kwargs["label"] = f"{kwargs['label']} ($n$={n_str})"
|
|
1480
|
+
|
|
1040
1481
|
with self._no_tracking():
|
|
1041
1482
|
result = self._axis_mpl.violinplot(*args, **kwargs)
|
|
1042
1483
|
|
|
@@ -1049,6 +1490,10 @@ class MatplotlibPlotMixin:
|
|
|
1049
1490
|
tracked_dict = {"violinplot_df": pd.DataFrame({"data": data})}
|
|
1050
1491
|
self._track(track, id, method_name, tracked_dict, None)
|
|
1051
1492
|
|
|
1493
|
+
# Apply post-processing (tick locator, spines, etc.)
|
|
1494
|
+
self._apply_scitex_postprocess(method_name, result, kwargs, args)
|
|
1495
|
+
|
|
1052
1496
|
return result
|
|
1053
1497
|
|
|
1498
|
+
|
|
1054
1499
|
# EOF
|