scitex 2.14.0__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/.mcp.json +46 -0
- scitex/__init__.py +268 -0
- scitex/__main__.py +45 -0
- scitex/__version__.py +16 -0
- scitex/_install_guide.py +262 -0
- scitex/_mcp_tools/__init__.py +36 -0
- scitex/_mcp_tools/audio.py +134 -0
- scitex/_mcp_tools/canvas.py +128 -0
- scitex/_mcp_tools/capture.py +174 -0
- scitex/_mcp_tools/diagram.py +106 -0
- scitex/_mcp_tools/plt.py +350 -0
- scitex/_mcp_tools/scholar.py +373 -0
- scitex/_mcp_tools/stats.py +206 -0
- scitex/_mcp_tools/template.py +66 -0
- scitex/_mcp_tools/ui.py +80 -0
- scitex/_mcp_tools/writer.py +220 -0
- scitex/_optional_deps.py +333 -0
- scitex/ai/README.md +295 -0
- scitex/ai/__init__.py +74 -0
- scitex/ai/_gen_ai/_Anthropic.py +173 -0
- scitex/ai/_gen_ai/_BaseGenAI.py +337 -0
- scitex/ai/_gen_ai/_DeepSeek.py +183 -0
- scitex/ai/_gen_ai/_Google.py +162 -0
- scitex/ai/_gen_ai/_Groq.py +95 -0
- scitex/ai/_gen_ai/_Llama.py +144 -0
- scitex/ai/_gen_ai/_OpenAI.py +235 -0
- scitex/ai/_gen_ai/_PARAMS.py +552 -0
- scitex/ai/_gen_ai/_Perplexity.py +207 -0
- scitex/ai/_gen_ai/__init__.py +44 -0
- scitex/ai/_gen_ai/_calc_cost.py +78 -0
- scitex/ai/_gen_ai/_format_output_func.py +185 -0
- scitex/ai/_gen_ai/_genai_factory.py +71 -0
- scitex/ai/activation/__init__.py +8 -0
- scitex/ai/activation/_define.py +11 -0
- scitex/ai/classification/Classifier.py +131 -0
- scitex/ai/classification/CrossValidationExperiment.py +368 -0
- scitex/ai/classification/README.md +251 -0
- scitex/ai/classification/__init__.py +46 -0
- scitex/ai/classification/examples/timeseries_cv_demo.py +416 -0
- scitex/ai/classification/examples/verify_multi/config.json +13 -0
- scitex/ai/classification/examples/verify_multi/multi_task_comparison.md +20 -0
- scitex/ai/classification/examples/verify_multi/multi_task_validation.json +103 -0
- scitex/ai/classification/examples/verify_multi/paper_export/README.md +20 -0
- scitex/ai/classification/examples/verify_multi/paper_export/raw_results.json +174 -0
- scitex/ai/classification/examples/verify_multi/task1/metadata.json +56 -0
- scitex/ai/classification/examples/verify_multi/task1/paper_export/README.md +20 -0
- scitex/ai/classification/examples/verify_multi/task1/paper_export/raw_results.json +93 -0
- scitex/ai/classification/examples/verify_multi/task1/paper_export/summary_table.tex +15 -0
- scitex/ai/classification/examples/verify_multi/task1/report.md +31 -0
- scitex/ai/classification/examples/verify_multi/task1/validation_report.json +47 -0
- scitex/ai/classification/examples/verify_multi/task2/metadata.json +56 -0
- scitex/ai/classification/examples/verify_multi/task2/paper_export/README.md +20 -0
- scitex/ai/classification/examples/verify_multi/task2/paper_export/raw_results.json +93 -0
- scitex/ai/classification/examples/verify_multi/task2/paper_export/summary_table.tex +15 -0
- scitex/ai/classification/examples/verify_multi/task2/report.md +31 -0
- scitex/ai/classification/examples/verify_multi/task2/validation_report.json +47 -0
- scitex/ai/classification/examples/verify_test/metadata.json +62 -0
- scitex/ai/classification/examples/verify_test/paper_export/README.md +20 -0
- scitex/ai/classification/examples/verify_test/paper_export/raw_results.json +131 -0
- scitex/ai/classification/examples/verify_test/paper_export/summary_table.tex +15 -0
- scitex/ai/classification/examples/verify_test/report.md +31 -0
- scitex/ai/classification/examples/verify_test/validation_report.json +52 -0
- scitex/ai/classification/reporters/_BaseClassificationReporter.py +283 -0
- scitex/ai/classification/reporters/_ClassificationReporter.py +758 -0
- scitex/ai/classification/reporters/_MultiClassificationReporter.py +403 -0
- scitex/ai/classification/reporters/_SingleClassificationReporter.py +1778 -0
- scitex/ai/classification/reporters/__init__.py +11 -0
- scitex/ai/classification/reporters/reporter_utils/_Plotter.py +1122 -0
- scitex/ai/classification/reporters/reporter_utils/__init__.py +72 -0
- scitex/ai/classification/reporters/reporter_utils/aggregation.py +439 -0
- scitex/ai/classification/reporters/reporter_utils/data_models.py +321 -0
- scitex/ai/classification/reporters/reporter_utils/reporting.py +1223 -0
- scitex/ai/classification/reporters/reporter_utils/storage.py +224 -0
- scitex/ai/classification/reporters/reporter_utils/validation.py +382 -0
- scitex/ai/classification/timeseries/README.md +313 -0
- scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +643 -0
- scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +732 -0
- scitex/ai/classification/timeseries/_TimeSeriesMetadata.py +139 -0
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +1640 -0
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +1609 -0
- scitex/ai/classification/timeseries/_TimeSeriesStrategy.py +83 -0
- scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +697 -0
- scitex/ai/classification/timeseries/__init__.py +37 -0
- scitex/ai/classification/timeseries/_normalize_timestamp.py +439 -0
- scitex/ai/classification/timeseries/run_all.sh +30 -0
- scitex/ai/clustering/__init__.py +11 -0
- scitex/ai/clustering/_pca.py +114 -0
- scitex/ai/clustering/_umap.py +375 -0
- scitex/ai/feature_extraction/__init__.py +58 -0
- scitex/ai/feature_extraction/vit.py +148 -0
- scitex/ai/feature_selection/__init__.py +30 -0
- scitex/ai/feature_selection/feature_selection.py +359 -0
- scitex/ai/loss/_L1L2Losses.py +34 -0
- scitex/ai/loss/__init__.py +12 -0
- scitex/ai/loss/multi_task_loss.py +47 -0
- scitex/ai/metrics/__init__.py +56 -0
- scitex/ai/metrics/_calc_bacc.py +61 -0
- scitex/ai/metrics/_calc_bacc_from_conf_mat.py +38 -0
- scitex/ai/metrics/_calc_clf_report.py +78 -0
- scitex/ai/metrics/_calc_conf_mat.py +95 -0
- scitex/ai/metrics/_calc_feature_importance.py +179 -0
- scitex/ai/metrics/_calc_mcc.py +61 -0
- scitex/ai/metrics/_calc_pre_rec_auc.py +116 -0
- scitex/ai/metrics/_calc_roc_auc.py +112 -0
- scitex/ai/metrics/_calc_seizure_prediction_metrics.py +505 -0
- scitex/ai/metrics/_calc_silhouette_score.py +501 -0
- scitex/ai/metrics/_normalize_labels.py +83 -0
- scitex/ai/optim/MIGRATION.md +43 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/LICENSE +201 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/README.md +80 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +204 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +235 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +212 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger-init.jpg +0 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger-with-gc-options.jpg +0 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
- scitex/ai/optim/__init__.py +13 -0
- scitex/ai/optim/_get_set.py +31 -0
- scitex/ai/optim/_optimizers.py +71 -0
- scitex/ai/plt/__init__.py +65 -0
- scitex/ai/plt/_plot_feature_importance.py +321 -0
- scitex/ai/plt/_plot_learning_curve.py +330 -0
- scitex/ai/plt/_plot_optuna_study.py +226 -0
- scitex/ai/plt/_plot_pre_rec_curve.py +284 -0
- scitex/ai/plt/_plot_roc_curve.py +253 -0
- scitex/ai/plt/_stx_conf_mat.py +662 -0
- scitex/ai/sampling/undersample.py +44 -0
- scitex/ai/sk/__init__.py +11 -0
- scitex/ai/sk/_clf.py +58 -0
- scitex/ai/sk/_to_sktime.py +100 -0
- scitex/ai/sklearn/__init__.py +26 -0
- scitex/ai/sklearn/clf.py +58 -0
- scitex/ai/sklearn/to_sktime.py +100 -0
- scitex/ai/training/_EarlyStopping.py +149 -0
- scitex/ai/training/_LearningCurveLogger.py +552 -0
- scitex/ai/training/__init__.py +7 -0
- scitex/ai/utils/__init__.py +22 -0
- scitex/ai/utils/_check_params.py +49 -0
- scitex/ai/utils/_default_dataset.py +46 -0
- scitex/ai/utils/_format_samples_for_sktime.py +26 -0
- scitex/ai/utils/_label_encoder.py +134 -0
- scitex/ai/utils/_merge_labels.py +22 -0
- scitex/ai/utils/_sliding_window_data_augmentation.py +11 -0
- scitex/ai/utils/_under_sample.py +51 -0
- scitex/ai/utils/_verify_n_gpus.py +16 -0
- scitex/ai/utils/grid_search.py +148 -0
- scitex/audio/README.md +129 -0
- scitex/audio/__init__.py +392 -0
- scitex/audio/__main__.py +125 -0
- scitex/audio/_cross_process_lock.py +139 -0
- scitex/audio/_mcp/__init__.py +4 -0
- scitex/audio/_mcp/handlers.py +366 -0
- scitex/audio/_mcp/tool_schemas.py +203 -0
- scitex/audio/_tts.py +334 -0
- scitex/audio/engines/__init__.py +44 -0
- scitex/audio/engines/base.py +275 -0
- scitex/audio/engines/elevenlabs_engine.py +146 -0
- scitex/audio/engines/gtts_engine.py +162 -0
- scitex/audio/engines/pyttsx3_engine.py +131 -0
- scitex/audio/mcp_server.py +293 -0
- scitex/benchmark/__init__.py +42 -0
- scitex/benchmark/benchmark.py +407 -0
- scitex/benchmark/monitor.py +380 -0
- scitex/benchmark/profiler.py +300 -0
- scitex/bridge/__init__.py +121 -0
- scitex/bridge/_figrecipe.py +277 -0
- scitex/bridge/_helpers.py +150 -0
- scitex/bridge/_plt_vis.py +542 -0
- scitex/bridge/_protocol.py +283 -0
- scitex/bridge/_stats_plt.py +272 -0
- scitex/bridge/_stats_vis.py +281 -0
- scitex/browser/README.md +167 -0
- scitex/browser/__init__.py +139 -0
- scitex/browser/auth/__init__.py +35 -0
- scitex/browser/auth/google.py +386 -0
- scitex/browser/automation/CookieHandler.py +215 -0
- scitex/browser/automation/__init__.py +11 -0
- scitex/browser/collaboration/__init__.py +62 -0
- scitex/browser/collaboration/auth_helpers.py +96 -0
- scitex/browser/collaboration/collaborative_agent.py +138 -0
- scitex/browser/collaboration/credential_manager.py +188 -0
- scitex/browser/collaboration/interactive_panel.py +400 -0
- scitex/browser/collaboration/persistent_browser.py +170 -0
- scitex/browser/collaboration/shared_session.py +392 -0
- scitex/browser/collaboration/standard_interactions.py +247 -0
- scitex/browser/collaboration/visual_feedback.py +181 -0
- scitex/browser/core/BrowserMixin.py +321 -0
- scitex/browser/core/ChromeProfileManager.py +438 -0
- scitex/browser/core/__init__.py +18 -0
- scitex/browser/debugging/__init__.py +74 -0
- scitex/browser/debugging/_browser_logger.py +644 -0
- scitex/browser/debugging/_failure_capture.py +379 -0
- scitex/browser/debugging/_highlight_element.py +152 -0
- scitex/browser/debugging/_show_grid.py +153 -0
- scitex/browser/debugging/_sync_session.py +260 -0
- scitex/browser/debugging/_test_monitor.py +293 -0
- scitex/browser/debugging/_visual_cursor.py +443 -0
- scitex/browser/docs/ABOUT_PLAYWRIGHT.md +49 -0
- scitex/browser/interaction/__init__.py +24 -0
- scitex/browser/interaction/click_center.py +150 -0
- scitex/browser/interaction/click_with_fallbacks.py +203 -0
- scitex/browser/interaction/close_popups.py +511 -0
- scitex/browser/interaction/fill_with_fallbacks.py +209 -0
- scitex/browser/pdf/__init__.py +16 -0
- scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +201 -0
- scitex/browser/pdf/detect_chrome_pdf_viewer.py +195 -0
- scitex/browser/remote/CaptchaHandler.py +447 -0
- scitex/browser/remote/ZenRowsAPIClient.py +341 -0
- scitex/browser/remote/ZenRowsBrowserManager.py +596 -0
- scitex/browser/remote/__init__.py +11 -0
- scitex/browser/stealth/HumanBehavior.py +339 -0
- scitex/browser/stealth/StealthManager.py +993 -0
- scitex/browser/stealth/__init__.py +9 -0
- scitex/canvas/README.md +386 -0
- scitex/canvas/__init__.py +340 -0
- scitex/canvas/_mcp/__init__.py +4 -0
- scitex/canvas/_mcp/handlers.py +372 -0
- scitex/canvas/_mcp/tool_schemas.py +219 -0
- scitex/canvas/backend/__init__.py +56 -0
- scitex/canvas/backend/_export.py +166 -0
- scitex/canvas/backend/_parser.py +188 -0
- scitex/canvas/backend/_render.py +385 -0
- scitex/canvas/canvas.py +434 -0
- scitex/canvas/docs/CANVAS_ARCHITECTURE.md +307 -0
- scitex/canvas/editor/__init__.py +26 -0
- scitex/canvas/editor/_dearpygui_editor.py +1976 -0
- scitex/canvas/editor/_defaults.py +300 -0
- scitex/canvas/editor/_flask_editor.py +37 -0
- scitex/canvas/editor/_mpl_editor.py +246 -0
- scitex/canvas/editor/_qt_editor.py +1096 -0
- scitex/canvas/editor/_tkinter_editor.py +523 -0
- scitex/canvas/editor/edit/__init__.py +47 -0
- scitex/canvas/editor/edit/backend_detector.py +109 -0
- scitex/canvas/editor/edit/bundle_resolver.py +248 -0
- scitex/canvas/editor/edit/editor_launcher.py +292 -0
- scitex/canvas/editor/edit/manual_handler.py +53 -0
- scitex/canvas/editor/edit/panel_loader.py +246 -0
- scitex/canvas/editor/edit/path_resolver.py +67 -0
- scitex/canvas/editor/flask_editor/__init__.py +21 -0
- scitex/canvas/editor/flask_editor/_bbox.py +1340 -0
- scitex/canvas/editor/flask_editor/_core.py +1688 -0
- scitex/canvas/editor/flask_editor/_plotter.py +601 -0
- scitex/canvas/editor/flask_editor/_renderer.py +854 -0
- scitex/canvas/editor/flask_editor/_utils.py +80 -0
- scitex/canvas/editor/flask_editor/static/css/base/reset.css +41 -0
- scitex/canvas/editor/flask_editor/static/css/base/typography.css +16 -0
- scitex/canvas/editor/flask_editor/static/css/base/variables.css +85 -0
- scitex/canvas/editor/flask_editor/static/css/components/buttons.css +217 -0
- scitex/canvas/editor/flask_editor/static/css/components/context-menu.css +93 -0
- scitex/canvas/editor/flask_editor/static/css/components/dropdown.css +57 -0
- scitex/canvas/editor/flask_editor/static/css/components/forms.css +112 -0
- scitex/canvas/editor/flask_editor/static/css/components/modal.css +59 -0
- scitex/canvas/editor/flask_editor/static/css/components/sections.css +212 -0
- scitex/canvas/editor/flask_editor/static/css/features/canvas.css +176 -0
- scitex/canvas/editor/flask_editor/static/css/features/element-inspector.css +190 -0
- scitex/canvas/editor/flask_editor/static/css/features/loading.css +59 -0
- scitex/canvas/editor/flask_editor/static/css/features/overlay.css +45 -0
- scitex/canvas/editor/flask_editor/static/css/features/panel-grid.css +95 -0
- scitex/canvas/editor/flask_editor/static/css/features/selection.css +101 -0
- scitex/canvas/editor/flask_editor/static/css/features/statistics.css +138 -0
- scitex/canvas/editor/flask_editor/static/css/index.css +31 -0
- scitex/canvas/editor/flask_editor/static/css/layout/container.css +7 -0
- scitex/canvas/editor/flask_editor/static/css/layout/controls.css +56 -0
- scitex/canvas/editor/flask_editor/static/css/layout/preview.css +78 -0
- scitex/canvas/editor/flask_editor/static/js/alignment/axis.js +314 -0
- scitex/canvas/editor/flask_editor/static/js/alignment/basic.js +107 -0
- scitex/canvas/editor/flask_editor/static/js/alignment/distribute.js +54 -0
- scitex/canvas/editor/flask_editor/static/js/canvas/canvas.js +172 -0
- scitex/canvas/editor/flask_editor/static/js/canvas/dragging.js +258 -0
- scitex/canvas/editor/flask_editor/static/js/canvas/resize.js +48 -0
- scitex/canvas/editor/flask_editor/static/js/canvas/selection.js +71 -0
- scitex/canvas/editor/flask_editor/static/js/core/api.js +287 -0
- scitex/canvas/editor/flask_editor/static/js/core/state.js +143 -0
- scitex/canvas/editor/flask_editor/static/js/core/utils.js +245 -0
- scitex/canvas/editor/flask_editor/static/js/dev/element-inspector.js +992 -0
- scitex/canvas/editor/flask_editor/static/js/editor/bbox.js +339 -0
- scitex/canvas/editor/flask_editor/static/js/editor/element-drag.js +286 -0
- scitex/canvas/editor/flask_editor/static/js/editor/overlay.js +371 -0
- scitex/canvas/editor/flask_editor/static/js/editor/preview.js +293 -0
- scitex/canvas/editor/flask_editor/static/js/main.js +426 -0
- scitex/canvas/editor/flask_editor/static/js/shortcuts/context-menu.js +152 -0
- scitex/canvas/editor/flask_editor/static/js/shortcuts/keyboard.js +265 -0
- scitex/canvas/editor/flask_editor/static/js/ui/controls.js +184 -0
- scitex/canvas/editor/flask_editor/static/js/ui/download.js +57 -0
- scitex/canvas/editor/flask_editor/static/js/ui/help.js +100 -0
- scitex/canvas/editor/flask_editor/static/js/ui/theme.js +34 -0
- scitex/canvas/editor/flask_editor/templates/__init__.py +123 -0
- scitex/canvas/editor/flask_editor/templates/_html.py +852 -0
- scitex/canvas/editor/flask_editor/templates/_scripts.py +4933 -0
- scitex/canvas/editor/flask_editor/templates/_styles.py +1658 -0
- scitex/canvas/io/__init__.py +105 -0
- scitex/canvas/io/_bundle.py +1121 -0
- scitex/canvas/io/_canvas.py +230 -0
- scitex/canvas/io/_data.py +208 -0
- scitex/canvas/io/_directory.py +205 -0
- scitex/canvas/io/_export.py +463 -0
- scitex/canvas/io/_load.py +168 -0
- scitex/canvas/io/_panel.py +432 -0
- scitex/canvas/io/_save.py +131 -0
- scitex/canvas/mcp_server.py +151 -0
- scitex/canvas/model/__init__.py +118 -0
- scitex/canvas/model/_annotations.py +116 -0
- scitex/canvas/model/_axes.py +153 -0
- scitex/canvas/model/_figure.py +139 -0
- scitex/canvas/model/_guides.py +105 -0
- scitex/canvas/model/_plot.py +124 -0
- scitex/canvas/model/_plot_types.py +682 -0
- scitex/canvas/model/_styles.py +246 -0
- scitex/canvas/utils/__init__.py +75 -0
- scitex/canvas/utils/_defaults.py +334 -0
- scitex/canvas/utils/_validate.py +198 -0
- scitex/capture/README.md +284 -0
- scitex/capture/TODO.md +40 -0
- scitex/capture/__init__.py +109 -0
- scitex/capture/__main__.py +24 -0
- scitex/capture/_mcp/__init__.py +11 -0
- scitex/capture/_mcp/handlers.py +438 -0
- scitex/capture/_mcp/tool_schemas.py +270 -0
- scitex/capture/capture.py +820 -0
- scitex/capture/cli.py +208 -0
- scitex/capture/gif.py +340 -0
- scitex/capture/grid.py +487 -0
- scitex/capture/mcp_server.py +977 -0
- scitex/capture/powershell/capture_all_desktops.ps1 +79 -0
- scitex/capture/powershell/capture_all_monitors.ps1 +63 -0
- scitex/capture/powershell/capture_single_monitor.ps1 +77 -0
- scitex/capture/powershell/capture_url.ps1 +170 -0
- scitex/capture/powershell/capture_window_by_handle.ps1 +129 -0
- scitex/capture/powershell/detect_monitors_and_desktops.ps1 +143 -0
- scitex/capture/powershell/enumerate_virtual_desktops.ps1 +60 -0
- scitex/capture/session.py +71 -0
- scitex/capture/utils.py +670 -0
- scitex/cli/__init__.py +64 -0
- scitex/cli/audio.py +331 -0
- scitex/cli/browser.py +310 -0
- scitex/cli/capture.py +325 -0
- scitex/cli/cloud.py +764 -0
- scitex/cli/config.py +224 -0
- scitex/cli/convert.py +425 -0
- scitex/cli/main.py +235 -0
- scitex/cli/mcp.py +336 -0
- scitex/cli/repro.py +251 -0
- scitex/cli/resource.py +258 -0
- scitex/cli/scholar/__init__.py +89 -0
- scitex/cli/scholar/_fetch.py +347 -0
- scitex/cli/scholar/_jobs.py +306 -0
- scitex/cli/scholar/_library.py +152 -0
- scitex/cli/scholar/_utils.py +35 -0
- scitex/cli/security.py +103 -0
- scitex/cli/stats.py +343 -0
- scitex/cli/template.py +254 -0
- scitex/cli/tex.py +304 -0
- scitex/cli/web.py +405 -0
- scitex/cli/writer.py +329 -0
- scitex/cloud/__init__.py +134 -0
- scitex/cloud/_matplotlib_hook.py +146 -0
- scitex/compat/__init__.py +74 -0
- scitex/config/README.md +313 -0
- scitex/config/_PriorityConfig.py +292 -0
- scitex/config/_ScitexConfig.py +319 -0
- scitex/config/__init__.py +56 -0
- scitex/config/_paths.py +325 -0
- scitex/config/default.yaml +112 -0
- scitex/context/__init__.py +9 -0
- scitex/context/_suppress_output.py +39 -0
- scitex/cv/__init__.py +87 -0
- scitex/cv/_draw.py +236 -0
- scitex/cv/_filters.py +217 -0
- scitex/cv/_io.py +157 -0
- scitex/cv/_transform.py +184 -0
- scitex/datetime/__init__.py +46 -0
- scitex/datetime/_linspace.py +100 -0
- scitex/datetime/_normalize_timestamp.py +306 -0
- scitex/db/README.md +281 -0
- scitex/db/_BaseMixins/_BaseBackupMixin.py +32 -0
- scitex/db/_BaseMixins/_BaseBatchMixin.py +33 -0
- scitex/db/_BaseMixins/_BaseBlobMixin.py +83 -0
- scitex/db/_BaseMixins/_BaseConnectionMixin.py +43 -0
- scitex/db/_BaseMixins/_BaseImportExportMixin.py +37 -0
- scitex/db/_BaseMixins/_BaseIndexMixin.py +31 -0
- scitex/db/_BaseMixins/_BaseMaintenanceMixin.py +31 -0
- scitex/db/_BaseMixins/_BaseQueryMixin.py +54 -0
- scitex/db/_BaseMixins/_BaseRowMixin.py +34 -0
- scitex/db/_BaseMixins/_BaseSchemaMixin.py +44 -0
- scitex/db/_BaseMixins/_BaseTableMixin.py +68 -0
- scitex/db/_BaseMixins/_BaseTransactionMixin.py +50 -0
- scitex/db/_BaseMixins/__init__.py +30 -0
- scitex/db/__init__.py +49 -0
- scitex/db/__main__.py +62 -0
- scitex/db/_check_health.py +365 -0
- scitex/db/_delete_duplicates.py +39 -0
- scitex/db/_inspect.py +368 -0
- scitex/db/_inspect_optimized.py +305 -0
- scitex/db/_postgresql/_PostgreSQL.py +125 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_BackupMixin.py +166 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_BatchMixin.py +82 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_BlobMixin.py +233 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_ConnectionMixin.py +90 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_ImportExportMixin.py +57 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_IndexMixin.py +64 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_MaintenanceMixin.py +172 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_QueryMixin.py +108 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_RowMixin.py +77 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_SchemaMixin.py +126 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_TableMixin.py +176 -0
- scitex/db/_postgresql/_PostgreSQLMixins/_TransactionMixin.py +55 -0
- scitex/db/_postgresql/_PostgreSQLMixins/__init__.py +34 -0
- scitex/db/_postgresql/__init__.py +6 -0
- scitex/db/_sqlite3/README.md +191 -0
- scitex/db/_sqlite3/README_v01.md +126 -0
- scitex/db/_sqlite3/_SQLite3.py +208 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ArrayMixin.py +580 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ArrayMixin_v01-need-_hash-col.py +522 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_BatchMixin.py +245 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_BlobMixin.py +281 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ColumnMixin.py +555 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ConnectionMixin.py +122 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_GitMixin.py +555 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_ImportExportMixin.py +78 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_IndexMixin.py +34 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_MaintenanceMixin.py +177 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_QueryMixin.py +109 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_RowMixin.py +115 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_TableMixin.py +236 -0
- scitex/db/_sqlite3/_SQLite3Mixins/_TransactionMixin.py +71 -0
- scitex/db/_sqlite3/_SQLite3Mixins/__init__.py +43 -0
- scitex/db/_sqlite3/__init__.py +7 -0
- scitex/db/_sqlite3/_delete_duplicates.py +285 -0
- scitex/decorators/BLUEPRINT.md +101 -0
- scitex/decorators/README.md +179 -0
- scitex/decorators/__init__.py +90 -0
- scitex/decorators/_auto_order.py +172 -0
- scitex/decorators/_batch_fn.py +134 -0
- scitex/decorators/_cache_disk.py +39 -0
- scitex/decorators/_cache_disk_async.py +50 -0
- scitex/decorators/_cache_mem.py +12 -0
- scitex/decorators/_combined.py +104 -0
- scitex/decorators/_converters.py +303 -0
- scitex/decorators/_deprecated.py +201 -0
- scitex/decorators/_not_implemented.py +30 -0
- scitex/decorators/_numpy_fn.py +101 -0
- scitex/decorators/_pandas_fn.py +138 -0
- scitex/decorators/_preserve_doc.py +19 -0
- scitex/decorators/_signal_fn.py +111 -0
- scitex/decorators/_timeout.py +55 -0
- scitex/decorators/_torch_fn.py +155 -0
- scitex/decorators/_wrap.py +39 -0
- scitex/decorators/_xarray_fn.py +108 -0
- scitex/dev/__init__.py +20 -0
- scitex/dev/_analyze_code_flow.py +282 -0
- scitex/dev/_pyproject.py +405 -0
- scitex/dev/_reload.py +59 -0
- scitex/dev/cv/__init__.py +60 -0
- scitex/dev/cv/_compose.py +330 -0
- scitex/dev/cv/_title_card.py +351 -0
- scitex/dev/plt/__init__.py +271 -0
- scitex/dev/plt/data/mpl/PLOTTING_FUNCTIONS.yaml +90 -0
- scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES.yaml +1571 -0
- scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES_DETAILED.yaml +6262 -0
- scitex/dev/plt/data/mpl/SIGNATURES_FLATTENED.yaml +1274 -0
- scitex/dev/plt/data/mpl/dir_ax.txt +459 -0
- scitex/dev/plt/demo_plotters/__init__.py +0 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axhline.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axhspan.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axvline.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_axvspan.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_bar.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_barh.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_boxplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_contour.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_contourf.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_errorbar.py +30 -0
- scitex/dev/plt/demo_plotters/plot_mpl_eventplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_fill.py +30 -0
- scitex/dev/plt/demo_plotters/plot_mpl_fill_between.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_hexbin.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_hist.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_hist2d.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_imshow.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_pcolormesh.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_pie.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_plot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_quiver.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_scatter.py +28 -0
- scitex/dev/plt/demo_plotters/plot_mpl_stackplot.py +31 -0
- scitex/dev/plt/demo_plotters/plot_mpl_stem.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_step.py +29 -0
- scitex/dev/plt/demo_plotters/plot_mpl_violinplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_sns_barplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_boxplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_heatmap.py +28 -0
- scitex/dev/plt/demo_plotters/plot_sns_histplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_kdeplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_lineplot.py +31 -0
- scitex/dev/plt/demo_plotters/plot_sns_scatterplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_stripplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_swarmplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_sns_violinplot.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_bar.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_barh.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_box.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_boxplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_conf_mat.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_contour.py +31 -0
- scitex/dev/plt/demo_plotters/plot_stx_ecdf.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_errorbar.py +30 -0
- scitex/dev/plt/demo_plotters/plot_stx_fill_between.py +31 -0
- scitex/dev/plt/demo_plotters/plot_stx_fillv.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_heatmap.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_image.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_imshow.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_joyplot.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_kde.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_line.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_mean_ci.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_mean_std.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_median_iqr.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_raster.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_rectangle.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_scatter.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_shaded_line.py +29 -0
- scitex/dev/plt/demo_plotters/plot_stx_violin.py +28 -0
- scitex/dev/plt/demo_plotters/plot_stx_violinplot.py +28 -0
- scitex/dev/plt/mpl/get_dir_ax.py +46 -0
- scitex/dev/plt/mpl/get_signatures.py +176 -0
- scitex/dev/plt/mpl/get_signatures_details.py +522 -0
- scitex/dev/plt/plot_mpl_axhline.py +28 -0
- scitex/dev/plt/plot_mpl_axhspan.py +28 -0
- scitex/dev/plt/plot_mpl_axvline.py +28 -0
- scitex/dev/plt/plot_mpl_axvspan.py +28 -0
- scitex/dev/plt/plot_mpl_bar.py +29 -0
- scitex/dev/plt/plot_mpl_barh.py +29 -0
- scitex/dev/plt/plot_mpl_boxplot.py +28 -0
- scitex/dev/plt/plot_mpl_contour.py +31 -0
- scitex/dev/plt/plot_mpl_contourf.py +31 -0
- scitex/dev/plt/plot_mpl_errorbar.py +30 -0
- scitex/dev/plt/plot_mpl_eventplot.py +28 -0
- scitex/dev/plt/plot_mpl_fill.py +30 -0
- scitex/dev/plt/plot_mpl_fill_between.py +31 -0
- scitex/dev/plt/plot_mpl_hexbin.py +28 -0
- scitex/dev/plt/plot_mpl_hist.py +28 -0
- scitex/dev/plt/plot_mpl_hist2d.py +28 -0
- scitex/dev/plt/plot_mpl_imshow.py +29 -0
- scitex/dev/plt/plot_mpl_pcolormesh.py +31 -0
- scitex/dev/plt/plot_mpl_pie.py +29 -0
- scitex/dev/plt/plot_mpl_plot.py +29 -0
- scitex/dev/plt/plot_mpl_quiver.py +31 -0
- scitex/dev/plt/plot_mpl_scatter.py +28 -0
- scitex/dev/plt/plot_mpl_stackplot.py +31 -0
- scitex/dev/plt/plot_mpl_stem.py +29 -0
- scitex/dev/plt/plot_mpl_step.py +29 -0
- scitex/dev/plt/plot_mpl_violinplot.py +28 -0
- scitex/dev/plt/plot_sns_barplot.py +29 -0
- scitex/dev/plt/plot_sns_boxplot.py +29 -0
- scitex/dev/plt/plot_sns_heatmap.py +28 -0
- scitex/dev/plt/plot_sns_histplot.py +29 -0
- scitex/dev/plt/plot_sns_kdeplot.py +29 -0
- scitex/dev/plt/plot_sns_lineplot.py +31 -0
- scitex/dev/plt/plot_sns_scatterplot.py +29 -0
- scitex/dev/plt/plot_sns_stripplot.py +29 -0
- scitex/dev/plt/plot_sns_swarmplot.py +29 -0
- scitex/dev/plt/plot_sns_violinplot.py +29 -0
- scitex/dev/plt/plot_stx_bar.py +29 -0
- scitex/dev/plt/plot_stx_barh.py +29 -0
- scitex/dev/plt/plot_stx_box.py +28 -0
- scitex/dev/plt/plot_stx_boxplot.py +28 -0
- scitex/dev/plt/plot_stx_conf_mat.py +28 -0
- scitex/dev/plt/plot_stx_contour.py +31 -0
- scitex/dev/plt/plot_stx_ecdf.py +28 -0
- scitex/dev/plt/plot_stx_errorbar.py +30 -0
- scitex/dev/plt/plot_stx_fill_between.py +31 -0
- scitex/dev/plt/plot_stx_fillv.py +28 -0
- scitex/dev/plt/plot_stx_heatmap.py +28 -0
- scitex/dev/plt/plot_stx_image.py +28 -0
- scitex/dev/plt/plot_stx_imshow.py +28 -0
- scitex/dev/plt/plot_stx_joyplot.py +28 -0
- scitex/dev/plt/plot_stx_kde.py +28 -0
- scitex/dev/plt/plot_stx_line.py +28 -0
- scitex/dev/plt/plot_stx_mean_ci.py +28 -0
- scitex/dev/plt/plot_stx_mean_std.py +28 -0
- scitex/dev/plt/plot_stx_median_iqr.py +28 -0
- scitex/dev/plt/plot_stx_raster.py +28 -0
- scitex/dev/plt/plot_stx_rectangle.py +28 -0
- scitex/dev/plt/plot_stx_scatter.py +29 -0
- scitex/dev/plt/plot_stx_shaded_line.py +29 -0
- scitex/dev/plt/plot_stx_violin.py +28 -0
- scitex/dev/plt/plot_stx_violinplot.py +28 -0
- scitex/diagram/README.md +197 -0
- scitex/diagram/__init__.py +48 -0
- scitex/diagram/_compile.py +312 -0
- scitex/diagram/_diagram.py +355 -0
- scitex/diagram/_mcp/__init__.py +4 -0
- scitex/diagram/_mcp/handlers.py +400 -0
- scitex/diagram/_mcp/tool_schemas.py +157 -0
- scitex/diagram/_presets.py +173 -0
- scitex/diagram/_schema.py +182 -0
- scitex/diagram/_split.py +278 -0
- scitex/diagram/mcp_server.py +151 -0
- scitex/dict/_DotDict.py +423 -0
- scitex/dict/__init__.py +21 -0
- scitex/dict/_flatten.py +20 -0
- scitex/dict/_listed_dict.py +42 -0
- scitex/dict/_pop_keys.py +30 -0
- scitex/dict/_replace.py +12 -0
- scitex/dict/_safe_merge.py +53 -0
- scitex/dict/_to_str.py +34 -0
- scitex/dsp/README.md +147 -0
- scitex/dsp/__init__.py +86 -0
- scitex/dsp/_crop.py +124 -0
- scitex/dsp/_demo_sig.py +377 -0
- scitex/dsp/_detect_ripples.py +214 -0
- scitex/dsp/_ensure_3d.py +18 -0
- scitex/dsp/_hilbert.py +78 -0
- scitex/dsp/_listen.py +702 -0
- scitex/dsp/_misc.py +30 -0
- scitex/dsp/_mne.py +43 -0
- scitex/dsp/_modulation_index.py +93 -0
- scitex/dsp/_pac.py +337 -0
- scitex/dsp/_psd.py +114 -0
- scitex/dsp/_resample.py +86 -0
- scitex/dsp/_time.py +39 -0
- scitex/dsp/_transform.py +81 -0
- scitex/dsp/_wavelet.py +212 -0
- scitex/dsp/add_noise.py +128 -0
- scitex/dsp/audio.md +22 -0
- scitex/dsp/example.py +262 -0
- scitex/dsp/filt.py +165 -0
- scitex/dsp/norm.py +33 -0
- scitex/dsp/params.py +51 -0
- scitex/dsp/reference.py +60 -0
- scitex/dsp/template.py +26 -0
- scitex/dsp/utils/__init__.py +19 -0
- scitex/dsp/utils/_differential_bandpass_filters.py +148 -0
- scitex/dsp/utils/_ensure_3d.py +18 -0
- scitex/dsp/utils/_ensure_even_len.py +10 -0
- scitex/dsp/utils/_zero_pad.py +62 -0
- scitex/dsp/utils/filter.py +408 -0
- scitex/dsp/utils/pac.py +177 -0
- scitex/dt/__init__.py +45 -0
- scitex/dt/_linspace.py +130 -0
- scitex/dt/_normalize_timestamp.py +435 -0
- scitex/errors.py +130 -0
- scitex/etc/__init__.py +15 -0
- scitex/etc/wait_key.py +34 -0
- scitex/gen/README.md +71 -0
- scitex/gen/_DimHandler.py +196 -0
- scitex/gen/_TimeStamper.py +244 -0
- scitex/gen/__init__.py +170 -0
- scitex/gen/_alternate_kwarg.py +13 -0
- scitex/gen/_cache.py +11 -0
- scitex/gen/_check_host.py +34 -0
- scitex/gen/_ci.py +12 -0
- scitex/gen/_deprecated_close.py +81 -0
- scitex/gen/_deprecated_start.py +28 -0
- scitex/gen/_detect_environment.py +155 -0
- scitex/gen/_detect_notebook_path.py +173 -0
- scitex/gen/_embed.py +82 -0
- scitex/gen/_get_notebook_path.py +276 -0
- scitex/gen/_inspect_module.py +256 -0
- scitex/gen/_is_ipython.py +12 -0
- scitex/gen/_less.py +48 -0
- scitex/gen/_list_packages.py +139 -0
- scitex/gen/_mat2py.py +88 -0
- scitex/gen/_norm.py +214 -0
- scitex/gen/_norm_cache.py +282 -0
- scitex/gen/_paste.py +18 -0
- scitex/gen/_print_config.py +81 -0
- scitex/gen/_shell.py +48 -0
- scitex/gen/_src.py +108 -0
- scitex/gen/_symlink.py +55 -0
- scitex/gen/_symlog.py +27 -0
- scitex/gen/_title2path.py +60 -0
- scitex/gen/_title_case.py +89 -0
- scitex/gen/_to_even.py +84 -0
- scitex/gen/_to_odd.py +34 -0
- scitex/gen/_to_rank.py +39 -0
- scitex/gen/_transpose.py +37 -0
- scitex/gen/_type.py +78 -0
- scitex/gen/_var_info.py +73 -0
- scitex/gen/_wrap.py +17 -0
- scitex/gen/_xml2dict.py +76 -0
- scitex/gen/misc.py +755 -0
- scitex/gen/path.py +0 -0
- scitex/gists/_SigMacro_processFigure_S.py +128 -0
- scitex/gists/_SigMacro_toBlue.py +172 -0
- scitex/gists/__init__.py +15 -0
- scitex/gists/guideline.md +42 -0
- scitex/git/README.md +121 -0
- scitex/git/__init__.py +61 -0
- scitex/git/_branch.py +185 -0
- scitex/git/_clone.py +167 -0
- scitex/git/_commit.py +170 -0
- scitex/git/_constants.py +17 -0
- scitex/git/_init.py +179 -0
- scitex/git/_remote.py +191 -0
- scitex/git/_result.py +70 -0
- scitex/git/_retry.py +113 -0
- scitex/git/_session.py +60 -0
- scitex/git/_types.py +136 -0
- scitex/git/_utils.py +28 -0
- scitex/git/_validation.py +117 -0
- scitex/git/_workflow.py +87 -0
- scitex/io/.gitkeep +0 -0
- scitex/io/README.md +376 -0
- scitex/io/__init__.py +116 -0
- scitex/io/_cache.py +101 -0
- scitex/io/_flush.py +27 -0
- scitex/io/_glob.py +109 -0
- scitex/io/_json2md.py +118 -0
- scitex/io/_load.py +453 -0
- scitex/io/_load_cache.py +303 -0
- scitex/io/_load_configs.py +175 -0
- scitex/io/_load_modules/_H5Explorer.py +352 -0
- scitex/io/_load_modules/_ZarrExplorer.py +114 -0
- scitex/io/_load_modules/__init__.py +41 -0
- scitex/io/_load_modules/_bibtex.py +206 -0
- scitex/io/_load_modules/_canvas.py +166 -0
- scitex/io/_load_modules/_catboost.py +71 -0
- scitex/io/_load_modules/_con.py +31 -0
- scitex/io/_load_modules/_docx.py +42 -0
- scitex/io/_load_modules/_eeg.py +125 -0
- scitex/io/_load_modules/_hdf5.py +73 -0
- scitex/io/_load_modules/_image.py +66 -0
- scitex/io/_load_modules/_joblib.py +19 -0
- scitex/io/_load_modules/_json.py +20 -0
- scitex/io/_load_modules/_markdown.py +103 -0
- scitex/io/_load_modules/_matlab.py +39 -0
- scitex/io/_load_modules/_numpy.py +39 -0
- scitex/io/_load_modules/_optuna.py +112 -0
- scitex/io/_load_modules/_pandas.py +75 -0
- scitex/io/_load_modules/_pdf.py +958 -0
- scitex/io/_load_modules/_pickle.py +24 -0
- scitex/io/_load_modules/_sqlite3.py +16 -0
- scitex/io/_load_modules/_torch.py +25 -0
- scitex/io/_load_modules/_txt.py +164 -0
- scitex/io/_load_modules/_xml.py +49 -0
- scitex/io/_load_modules/_yaml.py +24 -0
- scitex/io/_load_modules/_zarr.py +128 -0
- scitex/io/_metadata.py +47 -0
- scitex/io/_metadata_modules/__init__.py +46 -0
- scitex/io/_metadata_modules/_embed.py +70 -0
- scitex/io/_metadata_modules/_read.py +64 -0
- scitex/io/_metadata_modules/_utils.py +79 -0
- scitex/io/_metadata_modules/embed_metadata_jpeg.py +74 -0
- scitex/io/_metadata_modules/embed_metadata_pdf.py +53 -0
- scitex/io/_metadata_modules/embed_metadata_png.py +26 -0
- scitex/io/_metadata_modules/embed_metadata_svg.py +62 -0
- scitex/io/_metadata_modules/read_metadata_jpeg.py +57 -0
- scitex/io/_metadata_modules/read_metadata_pdf.py +51 -0
- scitex/io/_metadata_modules/read_metadata_png.py +39 -0
- scitex/io/_metadata_modules/read_metadata_svg.py +44 -0
- scitex/io/_mv_to_tmp.py +19 -0
- scitex/io/_path.py +286 -0
- scitex/io/_qr_utils.py +82 -0
- scitex/io/_reload.py +78 -0
- scitex/io/_save.py +497 -0
- scitex/io/_save_modules/__init__.py +130 -0
- scitex/io/_save_modules/_bibtex.py +199 -0
- scitex/io/_save_modules/_canvas.py +355 -0
- scitex/io/_save_modules/_catboost.py +22 -0
- scitex/io/_save_modules/_csv.py +95 -0
- scitex/io/_save_modules/_excel.py +210 -0
- scitex/io/_save_modules/_figure_utils.py +90 -0
- scitex/io/_save_modules/_hdf5.py +262 -0
- scitex/io/_save_modules/_html.py +48 -0
- scitex/io/_save_modules/_image.py +300 -0
- scitex/io/_save_modules/_image_csv.py +497 -0
- scitex/io/_save_modules/_joblib.py +25 -0
- scitex/io/_save_modules/_json.py +115 -0
- scitex/io/_save_modules/_legends.py +91 -0
- scitex/io/_save_modules/_listed_dfs_as_csv.py +56 -0
- scitex/io/_save_modules/_listed_scalars_as_csv.py +42 -0
- scitex/io/_save_modules/_matlab.py +24 -0
- scitex/io/_save_modules/_mp4.py +29 -0
- scitex/io/_save_modules/_numpy.py +55 -0
- scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +49 -0
- scitex/io/_save_modules/_pickle.py +45 -0
- scitex/io/_save_modules/_plot_bundle.py +112 -0
- scitex/io/_save_modules/_plot_scitex.py +536 -0
- scitex/io/_save_modules/_plotly.py +27 -0
- scitex/io/_save_modules/_stx_bundle.py +104 -0
- scitex/io/_save_modules/_symlink.py +96 -0
- scitex/io/_save_modules/_tex.py +278 -0
- scitex/io/_save_modules/_text.py +23 -0
- scitex/io/_save_modules/_torch.py +35 -0
- scitex/io/_save_modules/_yaml.py +68 -0
- scitex/io/_save_modules/_zarr.py +206 -0
- scitex/io/bundle/README.md +221 -0
- scitex/io/bundle/_Bundle.py +759 -0
- scitex/io/bundle/__init__.py +142 -0
- scitex/io/bundle/_children.py +208 -0
- scitex/io/bundle/_conversion/__init__.py +15 -0
- scitex/io/bundle/_conversion/_bundle2dict.py +44 -0
- scitex/io/bundle/_conversion/_dict2bundle.py +50 -0
- scitex/io/bundle/_core.py +651 -0
- scitex/io/bundle/_dataclasses/_Axes.py +57 -0
- scitex/io/bundle/_dataclasses/_BBox.py +54 -0
- scitex/io/bundle/_dataclasses/_ColumnDef.py +72 -0
- scitex/io/bundle/_dataclasses/_DataFormat.py +40 -0
- scitex/io/bundle/_dataclasses/_DataInfo.py +135 -0
- scitex/io/bundle/_dataclasses/_DataSource.py +44 -0
- scitex/io/bundle/_dataclasses/_SizeMM.py +38 -0
- scitex/io/bundle/_dataclasses/_Spec.py +325 -0
- scitex/io/bundle/_dataclasses/_SpecRefs.py +45 -0
- scitex/io/bundle/_dataclasses/__init__.py +35 -0
- scitex/io/bundle/_extractors/__init__.py +32 -0
- scitex/io/bundle/_extractors/_extract_bar.py +131 -0
- scitex/io/bundle/_extractors/_extract_line.py +71 -0
- scitex/io/bundle/_extractors/_extract_scatter.py +79 -0
- scitex/io/bundle/_loader.py +134 -0
- scitex/io/bundle/_manifest.py +99 -0
- scitex/io/bundle/_mpl_helpers.py +480 -0
- scitex/io/bundle/_nested.py +726 -0
- scitex/io/bundle/_saver.py +268 -0
- scitex/io/bundle/_storage.py +200 -0
- scitex/io/bundle/_types.py +99 -0
- scitex/io/bundle/_validation.py +436 -0
- scitex/io/bundle/_zip.py +477 -0
- scitex/io/bundle/kinds/__init__.py +45 -0
- scitex/io/bundle/kinds/_figure/__init__.py +19 -0
- scitex/io/bundle/kinds/_figure/_composite.py +345 -0
- scitex/io/bundle/kinds/_plot/__init__.py +25 -0
- scitex/io/bundle/kinds/_plot/_backend/__init__.py +53 -0
- scitex/io/bundle/kinds/_plot/_backend/_export.py +165 -0
- scitex/io/bundle/kinds/_plot/_backend/_parser.py +188 -0
- scitex/io/bundle/kinds/_plot/_backend/_render.py +538 -0
- scitex/io/bundle/kinds/_plot/_dataclasses/_ChannelEncoding.py +46 -0
- scitex/io/bundle/kinds/_plot/_dataclasses/_Encoding.py +82 -0
- scitex/io/bundle/kinds/_plot/_dataclasses/_Theme.py +441 -0
- scitex/io/bundle/kinds/_plot/_dataclasses/_TraceEncoding.py +52 -0
- scitex/io/bundle/kinds/_plot/_dataclasses/__init__.py +47 -0
- scitex/io/bundle/kinds/_plot/_models/_Annotations.py +115 -0
- scitex/io/bundle/kinds/_plot/_models/_Axes.py +152 -0
- scitex/io/bundle/kinds/_plot/_models/_Figure.py +138 -0
- scitex/io/bundle/kinds/_plot/_models/_Guides.py +104 -0
- scitex/io/bundle/kinds/_plot/_models/_Plot.py +123 -0
- scitex/io/bundle/kinds/_plot/_models/_Styles.py +245 -0
- scitex/io/bundle/kinds/_plot/_models/__init__.py +80 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/__init__.py +156 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_bar.py +43 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_box.py +38 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_distribution.py +36 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_errorbar.py +60 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_histogram.py +30 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_image.py +61 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_line.py +57 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_scatter.py +30 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_seaborn.py +121 -0
- scitex/io/bundle/kinds/_plot/_models/_plot_types/_violin.py +36 -0
- scitex/io/bundle/kinds/_plot/_utils/__init__.py +129 -0
- scitex/io/bundle/kinds/_plot/_utils/_auto_layout.py +127 -0
- scitex/io/bundle/kinds/_plot/_utils/_calc_bounds.py +111 -0
- scitex/io/bundle/kinds/_plot/_utils/_const_sizes.py +48 -0
- scitex/io/bundle/kinds/_plot/_utils/_convert_coords.py +77 -0
- scitex/io/bundle/kinds/_plot/_utils/_get_template.py +178 -0
- scitex/io/bundle/kinds/_plot/_utils/_normalize.py +73 -0
- scitex/io/bundle/kinds/_plot/_utils/_plot_layout.py +397 -0
- scitex/io/bundle/kinds/_plot/_utils/_validate.py +197 -0
- scitex/io/bundle/kinds/_shape/__init__.py +141 -0
- scitex/io/bundle/kinds/_stats/__init__.py +56 -0
- scitex/io/bundle/kinds/_stats/_dataclasses/_Stats.py +423 -0
- scitex/io/bundle/kinds/_stats/_dataclasses/__init__.py +48 -0
- scitex/io/bundle/kinds/_table/__init__.py +72 -0
- scitex/io/bundle/kinds/_table/_latex/__init__.py +93 -0
- scitex/io/bundle/kinds/_table/_latex/_editor/__init__.py +11 -0
- scitex/io/bundle/kinds/_table/_latex/_editor/_app.py +725 -0
- scitex/io/bundle/kinds/_table/_latex/_export.py +279 -0
- scitex/io/bundle/kinds/_table/_latex/_figure_exporter.py +153 -0
- scitex/io/bundle/kinds/_table/_latex/_stats_formatter.py +274 -0
- scitex/io/bundle/kinds/_table/_latex/_table_exporter.py +362 -0
- scitex/io/bundle/kinds/_table/_latex/_utils.py +369 -0
- scitex/io/bundle/kinds/_table/_latex/_validator.py +445 -0
- scitex/io/bundle/kinds/_text/__init__.py +77 -0
- scitex/io/bundle/schemas/__init__.py +30 -0
- scitex/io/bundle/schemas/data_info.schema.json +75 -0
- scitex/io/bundle/schemas/encoding.schema.json +90 -0
- scitex/io/bundle/schemas/node.schema.json +145 -0
- scitex/io/bundle/schemas/render_manifest.schema.json +62 -0
- scitex/io/bundle/schemas/stats.schema.json +132 -0
- scitex/io/bundle/schemas/theme.schema.json +141 -0
- scitex/io/utils/__init__.py +21 -0
- scitex/io/utils/h5_to_zarr.py +636 -0
- scitex/linalg/__init__.py +17 -0
- scitex/linalg/_distance.py +63 -0
- scitex/linalg/_geometric_median.py +69 -0
- scitex/linalg/_misc.py +73 -0
- scitex/logging/README.md +374 -0
- scitex/logging/_Tee.py +195 -0
- scitex/logging/__init__.py +216 -0
- scitex/logging/_config.py +161 -0
- scitex/logging/_context.py +105 -0
- scitex/logging/_errors.py +508 -0
- scitex/logging/_formatters.py +158 -0
- scitex/logging/_handlers.py +63 -0
- scitex/logging/_levels.py +27 -0
- scitex/logging/_logger.py +261 -0
- scitex/logging/_print_capture.py +95 -0
- scitex/logging/_warnings.py +261 -0
- scitex/mcp_server.py +91 -0
- scitex/ml/__init__.py +30 -0
- scitex/msword/__init__.py +255 -0
- scitex/msword/profiles.py +357 -0
- scitex/msword/reader.py +753 -0
- scitex/msword/utils.py +289 -0
- scitex/msword/writer.py +362 -0
- scitex/nn/_AxiswiseDropout.py +27 -0
- scitex/nn/_BNet.py +130 -0
- scitex/nn/_BNet_Res.py +164 -0
- scitex/nn/_ChannelGainChanger.py +44 -0
- scitex/nn/_DropoutChannels.py +50 -0
- scitex/nn/_Filters.py +493 -0
- scitex/nn/_FreqGainChanger.py +110 -0
- scitex/nn/_GaussianFilter.py +48 -0
- scitex/nn/_Hilbert.py +111 -0
- scitex/nn/_MNet_1000.py +157 -0
- scitex/nn/_ModulationIndex.py +223 -0
- scitex/nn/_PAC.py +415 -0
- scitex/nn/_PSD.py +39 -0
- scitex/nn/_ResNet1D.py +120 -0
- scitex/nn/_SpatialAttention.py +25 -0
- scitex/nn/_Spectrogram.py +170 -0
- scitex/nn/_SwapChannels.py +50 -0
- scitex/nn/_TransposeLayer.py +19 -0
- scitex/nn/_Wavelet.py +183 -0
- scitex/nn/__init__.py +75 -0
- scitex/os/__init__.py +8 -0
- scitex/os/_mv.py +50 -0
- scitex/parallel/__init__.py +8 -0
- scitex/parallel/_run.py +152 -0
- scitex/path/README.md +77 -0
- scitex/path/__init__.py +51 -0
- scitex/path/_clean.py +58 -0
- scitex/path/_find.py +90 -0
- scitex/path/_get_module_path.py +53 -0
- scitex/path/_get_spath.py +13 -0
- scitex/path/_getsize.py +32 -0
- scitex/path/_increment_version.py +80 -0
- scitex/path/_mk_spath.py +48 -0
- scitex/path/_path.py +12 -0
- scitex/path/_split.py +35 -0
- scitex/path/_symlink.py +343 -0
- scitex/path/_this_path.py +33 -0
- scitex/path/_version.py +102 -0
- scitex/pd/__init__.py +46 -0
- scitex/pd/_find_indi.py +126 -0
- scitex/pd/_find_pval.py +113 -0
- scitex/pd/_force_df.py +154 -0
- scitex/pd/_from_xyz.py +71 -0
- scitex/pd/_get_unique.py +100 -0
- scitex/pd/_ignore_SettingWithCopyWarning.py +34 -0
- scitex/pd/_melt_cols.py +81 -0
- scitex/pd/_merge_columns.py +221 -0
- scitex/pd/_mv.py +63 -0
- scitex/pd/_replace.py +62 -0
- scitex/pd/_round.py +97 -0
- scitex/pd/_slice.py +63 -0
- scitex/pd/_sort.py +91 -0
- scitex/pd/_to_numeric.py +53 -0
- scitex/pd/_to_xy.py +58 -0
- scitex/pd/_to_xyz.py +110 -0
- scitex/plt/README.md +1675 -0
- scitex/plt/__init__.py +803 -0
- scitex/plt/_figrecipe.py +236 -0
- scitex/plt/_figrecipe_integration.py +121 -0
- scitex/plt/_mcp/__init__.py +4 -0
- scitex/plt/_mcp/_handlers_annotation.py +102 -0
- scitex/plt/_mcp/_handlers_figure.py +195 -0
- scitex/plt/_mcp/_handlers_plot.py +252 -0
- scitex/plt/_mcp/_handlers_style.py +219 -0
- scitex/plt/_mcp/handlers.py +74 -0
- scitex/plt/_mcp/tool_schemas.py +497 -0
- scitex/plt/_subplots/_AxesWrapper.py +197 -0
- scitex/plt/_subplots/_AxisWrapper.py +374 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/__init__.py +36 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_labels.py +264 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_metadata.py +213 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_visual.py +128 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +60 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_base.py +34 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_scientific.py +593 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_statistical.py +654 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_stx_aliases.py +527 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_RawMatplotlibMixin.py +321 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/__init__.py +33 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_base.py +152 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +600 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_TrackingMixin.py +197 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_UnitAwareMixin.py +440 -0
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +91 -0
- scitex/plt/_subplots/_FigWrapper.py +475 -0
- scitex/plt/_subplots/_SubplotsWrapper.py +329 -0
- scitex/plt/_subplots/__init__.py +121 -0
- scitex/plt/_subplots/_export_as_csv.py +467 -0
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +83 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +72 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +138 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +58 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +74 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +50 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_contourf.py +62 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +88 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +83 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hexbin.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +91 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hist2d.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +85 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +48 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_matshow.py +50 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_pcolormesh.py +66 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_pie.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +222 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +98 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +53 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +59 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +44 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_quiver.py +61 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +43 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +66 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +112 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +80 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +95 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +76 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +91 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +64 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +57 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +72 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +80 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +80 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +134 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stackplot.py +62 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stem.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_step.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_streamplot.py +56 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_bar.py +84 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_barh.py +85 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_conf_mat.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_contour.py +54 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_ecdf.py +55 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_errorbar.py +120 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_fillv.py +72 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_heatmap.py +74 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_image.py +109 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_imshow.py +63 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_joyplot.py +84 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_line.py +55 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_ci.py +50 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_std.py +50 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_median_iqr.py +50 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_raster.py +52 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_rectangle.py +129 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter_hist.py +92 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_shaded_line.py +72 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_violin.py +115 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_text.py +61 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +65 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +82 -0
- scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +208 -0
- scitex/plt/_subplots/_export_as_csv_formatters/verify_formatters.py +359 -0
- scitex/plt/_subplots/_fonts.py +71 -0
- scitex/plt/_subplots/_mm_layout.py +282 -0
- scitex/plt/_tpl.py +29 -0
- scitex/plt/ax/__init__.py +123 -0
- scitex/plt/ax/_plot/__init__.py +79 -0
- scitex/plt/ax/_plot/_add_fitted_line.py +152 -0
- scitex/plt/ax/_plot/_plot_circular_hist.py +126 -0
- scitex/plt/ax/_plot/_plot_cube.py +57 -0
- scitex/plt/ax/_plot/_plot_statistical_shaded_line.py +255 -0
- scitex/plt/ax/_plot/_stx_conf_mat.py +139 -0
- scitex/plt/ax/_plot/_stx_ecdf.py +113 -0
- scitex/plt/ax/_plot/_stx_fillv.py +57 -0
- scitex/plt/ax/_plot/_stx_heatmap.py +369 -0
- scitex/plt/ax/_plot/_stx_image.py +96 -0
- scitex/plt/ax/_plot/_stx_joyplot.py +135 -0
- scitex/plt/ax/_plot/_stx_raster.py +199 -0
- scitex/plt/ax/_plot/_stx_rectangle.py +70 -0
- scitex/plt/ax/_plot/_stx_scatter_hist.py +133 -0
- scitex/plt/ax/_plot/_stx_shaded_line.py +219 -0
- scitex/plt/ax/_plot/_stx_violin.py +352 -0
- scitex/plt/ax/_style/__init__.py +42 -0
- scitex/plt/ax/_style/_add_marginal_ax.py +46 -0
- scitex/plt/ax/_style/_add_panel.py +92 -0
- scitex/plt/ax/_style/_auto_scale_axis.py +199 -0
- scitex/plt/ax/_style/_extend.py +66 -0
- scitex/plt/ax/_style/_force_aspect.py +39 -0
- scitex/plt/ax/_style/_format_label.py +23 -0
- scitex/plt/ax/_style/_format_units.py +103 -0
- scitex/plt/ax/_style/_hide_spines.py +86 -0
- scitex/plt/ax/_style/_map_ticks.py +184 -0
- scitex/plt/ax/_style/_rotate_labels.py +320 -0
- scitex/plt/ax/_style/_rotate_labels_v01.py +258 -0
- scitex/plt/ax/_style/_sci_note.py +279 -0
- scitex/plt/ax/_style/_set_log_scale.py +334 -0
- scitex/plt/ax/_style/_set_meta.py +291 -0
- scitex/plt/ax/_style/_set_n_ticks.py +37 -0
- scitex/plt/ax/_style/_set_size.py +16 -0
- scitex/plt/ax/_style/_set_supxyt.py +133 -0
- scitex/plt/ax/_style/_set_ticks.py +276 -0
- scitex/plt/ax/_style/_set_xyt.py +130 -0
- scitex/plt/ax/_style/_share_axes.py +274 -0
- scitex/plt/ax/_style/_shift.py +139 -0
- scitex/plt/ax/_style/_show_spines.py +334 -0
- scitex/plt/ax/_style/_style_barplot.py +69 -0
- scitex/plt/ax/_style/_style_boxplot.py +155 -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 +115 -0
- scitex/plt/color/_PARAMS.py +70 -0
- scitex/plt/color/__init__.py +84 -0
- scitex/plt/color/_add_hue_col.py +42 -0
- scitex/plt/color/_colors.py +204 -0
- scitex/plt/color/_get_colors_from_conf_matap.py +136 -0
- scitex/plt/color/_interpolate.py +29 -0
- scitex/plt/color/_vizualize_colors.py +53 -0
- scitex/plt/docs/FIGURE_ARCHITECTURE.md +315 -0
- scitex/plt/gallery/README.md +75 -0
- scitex/plt/gallery/__init__.py +126 -0
- scitex/plt/gallery/_generate.py +586 -0
- scitex/plt/gallery/_plots.py +594 -0
- scitex/plt/gallery/_registry.py +153 -0
- scitex/plt/gallery.md +170 -0
- scitex/plt/io/__init__.py +51 -0
- scitex/plt/io/_bundle.py +537 -0
- scitex/plt/io/_layered_bundle.py +1478 -0
- scitex/plt/mcp_server.py +231 -0
- scitex/plt/styles/SCITEX_STYLE.yaml +130 -0
- scitex/plt/styles/__init__.py +71 -0
- scitex/plt/styles/_plot_defaults.py +210 -0
- scitex/plt/styles/_plot_postprocess.py +487 -0
- scitex/plt/styles/_postprocess_helpers.py +158 -0
- scitex/plt/styles/_style_loader.py +268 -0
- scitex/plt/styles/presets.py +311 -0
- scitex/plt/utils/__init__.py +114 -0
- scitex/plt/utils/_calc_bacc_from_conf_mat.py +46 -0
- scitex/plt/utils/_calc_nice_ticks.py +101 -0
- scitex/plt/utils/_close.py +73 -0
- scitex/plt/utils/_collect_figure_metadata.py +3384 -0
- scitex/plt/utils/_colorbar.py +156 -0
- scitex/plt/utils/_configure_mpl.py +427 -0
- scitex/plt/utils/_crop.py +297 -0
- scitex/plt/utils/_csv_column_naming.py +474 -0
- scitex/plt/utils/_dimension_viewer.py +425 -0
- scitex/plt/utils/_figure_from_axes_mm.py +407 -0
- scitex/plt/utils/_figure_mm.py +472 -0
- scitex/plt/utils/_get_actual_font.py +57 -0
- scitex/plt/utils/_histogram_utils.py +134 -0
- scitex/plt/utils/_hitmap.py +1643 -0
- scitex/plt/utils/_im2grid.py +70 -0
- scitex/plt/utils/_is_valid_axis.py +82 -0
- scitex/plt/utils/_mk_colorbar.py +65 -0
- scitex/plt/utils/_mk_patches.py +26 -0
- scitex/plt/utils/_scientific_captions.py +701 -0
- scitex/plt/utils/_scitex_config.py +224 -0
- scitex/plt/utils/_units.py +123 -0
- scitex/plt/utils/metadata/__init__.py +61 -0
- scitex/plt/utils/metadata/_artist_extraction.py +119 -0
- scitex/plt/utils/metadata/_axes_metadata.py +93 -0
- scitex/plt/utils/metadata/_collection_artists.py +292 -0
- scitex/plt/utils/metadata/_core.py +207 -0
- scitex/plt/utils/metadata/_csv_column_extraction.py +186 -0
- scitex/plt/utils/metadata/_csv_hash.py +115 -0
- scitex/plt/utils/metadata/_csv_verification.py +95 -0
- scitex/plt/utils/metadata/_data_linkage.py +263 -0
- scitex/plt/utils/metadata/_dimensions.py +242 -0
- scitex/plt/utils/metadata/_editable_export.py +405 -0
- scitex/plt/utils/metadata/_figure_metadata.py +58 -0
- scitex/plt/utils/metadata/_geometry_extraction.py +570 -0
- scitex/plt/utils/metadata/_image_text_artists.py +168 -0
- scitex/plt/utils/metadata/_label_parsing.py +82 -0
- scitex/plt/utils/metadata/_legend_extraction.py +120 -0
- scitex/plt/utils/metadata/_line_artists.py +367 -0
- scitex/plt/utils/metadata/_line_semantic_handling.py +173 -0
- scitex/plt/utils/metadata/_patch_artists.py +211 -0
- scitex/plt/utils/metadata/_plot_content.py +26 -0
- scitex/plt/utils/metadata/_plot_type_detection.py +184 -0
- scitex/plt/utils/metadata/_precision.py +134 -0
- scitex/plt/utils/metadata/_precision_config.py +68 -0
- scitex/plt/utils/metadata/_precision_sections.py +211 -0
- scitex/plt/utils/metadata/_recipe_extraction.py +267 -0
- scitex/plt/utils/metadata/_style_parsing.py +174 -0
- scitex/repro/README_RandomStateManager.md +211 -0
- scitex/repro/_RandomStateManager.py +684 -0
- scitex/repro/__init__.py +66 -0
- scitex/repro/_gen_ID.py +137 -0
- scitex/repro/_gen_timestamp.py +114 -0
- scitex/repro/_hash_array.py +139 -0
- scitex/reproduce/__init__.py +26 -0
- scitex/resource/README.md +81 -0
- scitex/resource/__init__.py +31 -0
- scitex/resource/_get_processor_usages.py +283 -0
- scitex/resource/_get_specs/info.yaml +122 -0
- scitex/resource/_get_specs/specs.yaml +129 -0
- scitex/resource/_get_specs.py +280 -0
- scitex/resource/_log_processor_usages.py +192 -0
- scitex/resource/_utils/__init__.py +31 -0
- scitex/resource/_utils/_get_env_info.py +469 -0
- scitex/resource/limit_ram.py +33 -0
- scitex/rng/__init__.py +32 -0
- scitex/schema/README.md +178 -0
- scitex/schema/__init__.py +222 -0
- scitex/schema/_canvas.py +444 -0
- scitex/schema/_encoding.py +273 -0
- scitex/schema/_figure_elements.py +406 -0
- scitex/schema/_plot.py +1015 -0
- scitex/schema/_stats.py +762 -0
- scitex/schema/_theme.py +360 -0
- scitex/schema/_validation.py +492 -0
- scitex/scholar/.gitignore +23 -0
- scitex/scholar/README.md +122 -0
- scitex/scholar/__init__.py +354 -0
- scitex/scholar/__main__.py +339 -0
- scitex/scholar/_mcp/__init__.py +4 -0
- scitex/scholar/_mcp/all_handlers.py +74 -0
- scitex/scholar/_mcp/handlers.py +1478 -0
- scitex/scholar/_mcp/job_handlers.py +172 -0
- scitex/scholar/_mcp/job_tool_schemas.py +166 -0
- scitex/scholar/_mcp/tool_schemas.py +505 -0
- scitex/scholar/auth/README.md +83 -0
- scitex/scholar/auth/ScholarAuthManager.py +285 -0
- scitex/scholar/auth/__init__.py +21 -0
- scitex/scholar/auth/core/AuthenticationGateway.py +459 -0
- scitex/scholar/auth/core/BrowserAuthenticator.py +468 -0
- scitex/scholar/auth/core/StrategyResolver.py +292 -0
- scitex/scholar/auth/core/__init__.py +20 -0
- scitex/scholar/auth/gateway/_OpenURLLinkFinder.py +110 -0
- scitex/scholar/auth/gateway/_OpenURLResolver.py +201 -0
- scitex/scholar/auth/gateway/__init__.py +38 -0
- scitex/scholar/auth/gateway/_resolve_functions.py +101 -0
- scitex/scholar/auth/providers/BaseAuthenticator.py +167 -0
- scitex/scholar/auth/providers/EZProxyAuthenticator.py +477 -0
- scitex/scholar/auth/providers/OpenAthensAuthenticator.py +436 -0
- scitex/scholar/auth/providers/ShibbolethAuthenticator.py +700 -0
- scitex/scholar/auth/providers/__init__.py +18 -0
- scitex/scholar/auth/providers/_notifications.py +417 -0
- scitex/scholar/auth/session/AuthCacheManager.py +186 -0
- scitex/scholar/auth/session/SessionManager.py +157 -0
- scitex/scholar/auth/session/__init__.py +11 -0
- scitex/scholar/auth/sso/BaseSSOAutomator.py +386 -0
- scitex/scholar/auth/sso/OpenAthensSSOAutomator.py +349 -0
- scitex/scholar/auth/sso/README.md +204 -0
- scitex/scholar/auth/sso/SSOAutomator.py +173 -0
- scitex/scholar/auth/sso/UniversityOfMelbourneSSOAutomator.py +363 -0
- scitex/scholar/auth/sso/__init__.py +15 -0
- scitex/scholar/browser/README.md +60 -0
- scitex/scholar/browser/ScholarBrowserManager.py +680 -0
- scitex/scholar/browser/__init__.py +39 -0
- scitex/scholar/browser/utils/README.md +96 -0
- scitex/scholar/browser/utils/__init__.py +13 -0
- scitex/scholar/browser/utils/click_and_wait.py +204 -0
- scitex/scholar/browser/utils/close_unwanted_pages.py +137 -0
- scitex/scholar/browser/utils/wait_redirects.py +707 -0
- scitex/scholar/citation_graph/README.md +117 -0
- scitex/scholar/citation_graph/__init__.py +28 -0
- scitex/scholar/citation_graph/builder.py +210 -0
- scitex/scholar/citation_graph/database.py +239 -0
- scitex/scholar/citation_graph/example.py +91 -0
- scitex/scholar/citation_graph/models.py +80 -0
- scitex/scholar/cli/README.md +368 -0
- scitex/scholar/cli/_CentralArgumentParser.py +137 -0
- scitex/scholar/cli/_argument_groups.py +222 -0
- scitex/scholar/cli/_doi_operations.py +56 -0
- scitex/scholar/cli/_url_utils.py +219 -0
- scitex/scholar/cli/chrome.py +101 -0
- scitex/scholar/cli/download_pdf.py +236 -0
- scitex/scholar/cli/handlers/__init__.py +23 -0
- scitex/scholar/cli/handlers/bibtex_handler.py +165 -0
- scitex/scholar/cli/handlers/doi_handler.py +63 -0
- scitex/scholar/cli/handlers/project_handler.py +261 -0
- scitex/scholar/cli/open_browser.py +297 -0
- scitex/scholar/cli/open_browser_auto.py +368 -0
- scitex/scholar/cli/open_browser_monitored.py +407 -0
- scitex/scholar/config/PublisherRules.py +132 -0
- scitex/scholar/config/README.md +31 -0
- scitex/scholar/config/ScholarConfig.py +143 -0
- scitex/scholar/config/__init__.py +18 -0
- scitex/scholar/config/_categories/README.md +149 -0
- scitex/scholar/config/_categories/api_keys.yaml +19 -0
- scitex/scholar/config/_categories/auth_gateway.yaml +149 -0
- scitex/scholar/config/_categories/authentication.yaml +24 -0
- scitex/scholar/config/_categories/browser.yaml +24 -0
- scitex/scholar/config/_categories/core.yaml +24 -0
- scitex/scholar/config/_categories/doi_publishers.yaml +53 -0
- scitex/scholar/config/_categories/notifications.yaml +11 -0
- scitex/scholar/config/_categories/pdf_download.yaml +15 -0
- scitex/scholar/config/_categories/publishers_pdf_rules.yaml +184 -0
- scitex/scholar/config/_categories/search_engines.yaml +22 -0
- scitex/scholar/config/_categories/url_finder_openurl.yaml +87 -0
- scitex/scholar/config/_categories/url_finder_selectors.yaml +147 -0
- scitex/scholar/config/core/_CascadeConfig.py +156 -0
- scitex/scholar/config/core/_PathManager.py +535 -0
- scitex/scholar/config/default.yaml +727 -0
- scitex/scholar/core/Paper.py +708 -0
- scitex/scholar/core/Papers.py +711 -0
- scitex/scholar/core/README.md +109 -0
- scitex/scholar/core/Scholar.py +1857 -0
- scitex/scholar/core/__init__.py +53 -0
- scitex/scholar/core/journal_normalizer.py +538 -0
- scitex/scholar/core/oa_cache.py +289 -0
- scitex/scholar/core/open_access.py +466 -0
- scitex/scholar/data/.gitkeep +0 -0
- scitex/scholar/data/README.md +44 -0
- scitex/scholar/data/bib_files/bibliography.bib +1952 -0
- scitex/scholar/data/bib_files/neurovista.bib +277 -0
- scitex/scholar/data/bib_files/neurovista_enriched.bib +441 -0
- scitex/scholar/data/bib_files/neurovista_enriched_enriched.bib +441 -0
- scitex/scholar/data/bib_files/neurovista_processed.bib +338 -0
- scitex/scholar/data/bib_files/openaccess.bib +89 -0
- scitex/scholar/data/bib_files/pac-seizure_prediction_enriched.bib +2178 -0
- scitex/scholar/data/bib_files/pac.bib +698 -0
- scitex/scholar/data/bib_files/pac_enriched.bib +1061 -0
- scitex/scholar/data/bib_files/pac_processed.bib +0 -0
- scitex/scholar/data/bib_files/pac_titles.txt +75 -0
- scitex/scholar/data/bib_files/paywalled.bib +98 -0
- scitex/scholar/data/bib_files/related-papers-by-coauthors.bib +58 -0
- scitex/scholar/data/bib_files/related-papers-by-coauthors_enriched.bib +87 -0
- scitex/scholar/data/bib_files/seizure_prediction.bib +694 -0
- scitex/scholar/data/bib_files/seizure_prediction_processed.bib +0 -0
- scitex/scholar/data/bib_files/test_complete_enriched.bib +437 -0
- scitex/scholar/data/bib_files/test_final_enriched.bib +437 -0
- scitex/scholar/data/bib_files/test_seizure.bib +46 -0
- scitex/scholar/data/impact_factor/JCR_IF_2022.xlsx +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024.db +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024.xlsx +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024_v01.db +0 -0
- scitex/scholar/data/impact_factor.db +0 -0
- scitex/scholar/docs/00_SUMMARY.md +127 -0
- scitex/scholar/docs/01_STORAGE_ARCHITECTURE.md +118 -0
- scitex/scholar/docs/02_PIPELINE_ORGANIZATION.md +251 -0
- scitex/scholar/docs/03_PIPELINE_IMPLEMENTATION_PLAN.md +425 -0
- scitex/scholar/docs/04_PIPELINE_IMPLEMENTATION_COMPLETE.md +324 -0
- scitex/scholar/docs/05_DETAILS_FOR_DEVELOPERS.md +464 -0
- scitex/scholar/docs/06_IMPACT_FACTOR_CITATION_INTEGRATION.md +295 -0
- scitex/scholar/docs/bibfile.bib +66 -0
- scitex/scholar/docs/from_agents/OPENATHENS_SECURITY.md +101 -0
- scitex/scholar/docs/from_agents/feature-requests/scholar-openathens-authentication.md +107 -0
- scitex/scholar/docs/from_agents/scholar_enhancements_summary.md +66 -0
- scitex/scholar/docs/from_user/crawl4ai.md +15 -0
- scitex/scholar/docs/from_user/medium_article_on_logined_page_for_zenrows_1.md +363 -0
- scitex/scholar/docs/from_user/medium_article_on_logined_page_for_zenrows_2.md +1496 -0
- scitex/scholar/docs/from_user/papers.bib +698 -0
- scitex/scholar/docs/from_user/renamed-async_functions.md +970 -0
- scitex/scholar/docs/from_user/suggestions.md +97 -0
- scitex/scholar/docs/sample_data/PAYWALLED.json +84 -0
- scitex/scholar/docs/sample_data/openaccess.json +74 -0
- scitex/scholar/docs/sample_data/papers-enriched.bib +675 -0
- scitex/scholar/docs/sample_data/papers-partial-enriched.bib +601 -0
- scitex/scholar/docs/sample_data/test_papers.bib +18 -0
- scitex/scholar/docs/template.py +123 -0
- scitex/scholar/docs/zenrows_official/FAQ.md +434 -0
- scitex/scholar/docs/zenrows_official/captcha_integration.md +698 -0
- scitex/scholar/docs/zenrows_official/final_url.md +204 -0
- scitex/scholar/docs/zenrows_official/with_playwright.md +336 -0
- scitex/scholar/examples/00_config.py +270 -0
- scitex/scholar/examples/01_auth.py +165 -0
- scitex/scholar/examples/02_browser.py +169 -0
- scitex/scholar/examples/03_01-engine.py +486 -0
- scitex/scholar/examples/03_02-engine-for-bibtex.py +166 -0
- scitex/scholar/examples/04_01-url.py +218 -0
- scitex/scholar/examples/04_02-url-for-bibtex.py +283 -0
- scitex/scholar/examples/04_02-url-for-dois.py +305 -0
- scitex/scholar/examples/05_download_pdf.py +225 -0
- scitex/scholar/examples/06_find_and_download.py +217 -0
- scitex/scholar/examples/06_parse_bibtex.py +256 -0
- scitex/scholar/examples/07_storage_integration.py +253 -0
- scitex/scholar/examples/99_fullpipeline-for-bibtex.py +349 -0
- scitex/scholar/examples/99_fullpipeline-for-one-entry.py +293 -0
- scitex/scholar/examples/99_maintenance.py +134 -0
- scitex/scholar/examples/README.md +18 -0
- scitex/scholar/examples/SUGGESTIONS.md +865 -0
- scitex/scholar/examples/dev.py +38 -0
- scitex/scholar/examples/zotero_integration.py +246 -0
- scitex/scholar/impact_factor/ImpactFactorEngine.py +202 -0
- scitex/scholar/impact_factor/README.md +135 -0
- scitex/scholar/impact_factor/__init__.py +20 -0
- scitex/scholar/impact_factor/estimation/ImpactFactorEstimationEngine.py +0 -0
- scitex/scholar/impact_factor/estimation/README.md +351 -0
- scitex/scholar/impact_factor/estimation/__init__.py +39 -0
- scitex/scholar/impact_factor/estimation/build_database.py +0 -0
- scitex/scholar/impact_factor/estimation/core/__init__.py +24 -0
- scitex/scholar/impact_factor/estimation/core/cache_manager.py +535 -0
- scitex/scholar/impact_factor/estimation/core/calculator.py +389 -0
- scitex/scholar/impact_factor/estimation/core/journal_matcher.py +473 -0
- scitex/scholar/impact_factor/jcr/ImpactFactorJCREngine.py +323 -0
- scitex/scholar/impact_factor/jcr/README.md +84 -0
- scitex/scholar/impact_factor/jcr/TODO.md +28 -0
- scitex/scholar/impact_factor/jcr/build_database.py +268 -0
- scitex/scholar/integration/MIGRATION.md +138 -0
- scitex/scholar/integration/README.md +464 -0
- scitex/scholar/integration/__init__.py +59 -0
- scitex/scholar/integration/base.py +494 -0
- scitex/scholar/integration/mendeley/__init__.py +22 -0
- scitex/scholar/integration/mendeley/exporter.py +164 -0
- scitex/scholar/integration/mendeley/importer.py +236 -0
- scitex/scholar/integration/mendeley/linker.py +79 -0
- scitex/scholar/integration/mendeley/mapper.py +215 -0
- scitex/scholar/integration/zotero/README.md +336 -0
- scitex/scholar/integration/zotero/__init__.py +27 -0
- scitex/scholar/integration/zotero/__main__.py +247 -0
- scitex/scholar/integration/zotero/exporter.py +355 -0
- scitex/scholar/integration/zotero/importer.py +374 -0
- scitex/scholar/integration/zotero/linker.py +411 -0
- scitex/scholar/integration/zotero/mapper.py +291 -0
- scitex/scholar/jobs/_Job.py +266 -0
- scitex/scholar/jobs/_JobManager.py +458 -0
- scitex/scholar/jobs/__init__.py +74 -0
- scitex/scholar/jobs/_errors.py +346 -0
- scitex/scholar/jobs/_executors.py +373 -0
- scitex/scholar/mcp_server.py +365 -0
- scitex/scholar/metadata_engines/.combined-SemanticScholarSource/_SemanticScholarSource.py +289 -0
- scitex/scholar/metadata_engines/.combined-SemanticScholarSource/_SemanticScholarSourceEnhanced.py +229 -0
- scitex/scholar/metadata_engines/README.md +42 -0
- scitex/scholar/metadata_engines/ScholarEngine.py +574 -0
- scitex/scholar/metadata_engines/__init__.py +28 -0
- scitex/scholar/metadata_engines/individual/ArXivEngine.py +378 -0
- scitex/scholar/metadata_engines/individual/CrossRefEngine.py +264 -0
- scitex/scholar/metadata_engines/individual/CrossRefLocalEngine.py +303 -0
- scitex/scholar/metadata_engines/individual/OpenAlexEngine.py +340 -0
- scitex/scholar/metadata_engines/individual/PubMedEngine.py +312 -0
- scitex/scholar/metadata_engines/individual/SemanticScholarEngine.py +431 -0
- scitex/scholar/metadata_engines/individual/URLDOIEngine.py +399 -0
- scitex/scholar/metadata_engines/individual/_BaseDOIEngine.py +458 -0
- scitex/scholar/metadata_engines/individual/__init__.py +7 -0
- scitex/scholar/metadata_engines/utils/_PubMedConverter.py +465 -0
- scitex/scholar/metadata_engines/utils/_URLDOIExtractor.py +296 -0
- scitex/scholar/metadata_engines/utils/__init__.py +32 -0
- scitex/scholar/metadata_engines/utils/_metadata2bibtex.py +106 -0
- scitex/scholar/metadata_engines/utils/_standardize_metadata.py +375 -0
- scitex/scholar/pdf_download/README.md +51 -0
- scitex/scholar/pdf_download/ScholarPDFDownloader.py +704 -0
- scitex/scholar/pdf_download/__init__.py +5 -0
- scitex/scholar/pdf_download/strategies/__init__.py +44 -0
- scitex/scholar/pdf_download/strategies/chrome_pdf_viewer.py +368 -0
- scitex/scholar/pdf_download/strategies/direct_download.py +127 -0
- scitex/scholar/pdf_download/strategies/manual_download_fallback.py +167 -0
- scitex/scholar/pdf_download/strategies/manual_download_utils.py +989 -0
- scitex/scholar/pdf_download/strategies/open_access_download.py +204 -0
- scitex/scholar/pdf_download/strategies/response_body.py +196 -0
- scitex/scholar/pipelines/README.md +172 -0
- scitex/scholar/pipelines/ScholarPipelineBibTeX.py +355 -0
- scitex/scholar/pipelines/ScholarPipelineMetadataParallel.py +269 -0
- scitex/scholar/pipelines/ScholarPipelineMetadataSingle.py +403 -0
- scitex/scholar/pipelines/ScholarPipelineParallel.py +462 -0
- scitex/scholar/pipelines/ScholarPipelineSearchParallel.py +873 -0
- scitex/scholar/pipelines/ScholarPipelineSearchSingle.py +553 -0
- scitex/scholar/pipelines/ScholarPipelineSingle.py +188 -0
- scitex/scholar/pipelines/SearchQueryParser.py +270 -0
- scitex/scholar/pipelines/__init__.py +55 -0
- scitex/scholar/pipelines/_single_steps.py +430 -0
- scitex/scholar/search_engines/ScholarSearchEngine.py +278 -0
- scitex/scholar/search_engines/_BaseSearchEngine.py +180 -0
- scitex/scholar/search_engines/__init__.py +0 -0
- scitex/scholar/search_engines/individual/ArXivSearchEngine.py +194 -0
- scitex/scholar/search_engines/individual/CrossRefSearchEngine.py +159 -0
- scitex/scholar/search_engines/individual/OpenAlexSearchEngine.py +177 -0
- scitex/scholar/search_engines/individual/PubMedSearchEngine.py +186 -0
- scitex/scholar/search_engines/individual/SemanticScholarSearchEngine.py +158 -0
- scitex/scholar/search_engines/individual/__init__.py +0 -0
- scitex/scholar/storage/BibTeXHandler.py +1151 -0
- scitex/scholar/storage/PaperIO.py +500 -0
- scitex/scholar/storage/ScholarLibrary.py +203 -0
- scitex/scholar/storage/_BibTeXValidator.py +571 -0
- scitex/scholar/storage/_DeduplicationManager.py +575 -0
- scitex/scholar/storage/_LibraryCacheManager.py +697 -0
- scitex/scholar/storage/_LibraryManager.py +1725 -0
- scitex/scholar/storage/__init__.py +42 -0
- scitex/scholar/url_finder/README.md +74 -0
- scitex/scholar/url_finder/ScholarURLFinder.py +364 -0
- scitex/scholar/url_finder/__init__.py +7 -0
- scitex/scholar/url_finder/docs/CORE_URL_TYPES.md +187 -0
- scitex/scholar/url_finder/docs/URL_SCHEMA.md +223 -0
- scitex/scholar/url_finder/strategies/__init__.py +33 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_direct_links.py +261 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_dropdown.py +67 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_href.py +200 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_navigation.py +254 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_publisher_patterns.py +158 -0
- scitex/scholar/url_finder/strategies/find_pdf_urls_by_zotero_translators.py +164 -0
- scitex/scholar/url_finder/strategies/find_supplementary_urls_by_href.py +70 -0
- scitex/scholar/url_finder/translators/__init__.py +31 -0
- scitex/scholar/url_finder/translators/core/__init__.py +6 -0
- scitex/scholar/url_finder/translators/core/base.py +50 -0
- scitex/scholar/url_finder/translators/core/patterns.py +40 -0
- scitex/scholar/url_finder/translators/core/registry.py +372 -0
- scitex/scholar/url_finder/translators/individual/BOFiP_Impots.py +200 -0
- scitex/scholar/url_finder/translators/individual/Baidu_Scholar.py +229 -0
- scitex/scholar/url_finder/translators/individual/Bangkok_Post.py +152 -0
- scitex/scholar/url_finder/translators/individual/Baruch_Foundation.py +197 -0
- scitex/scholar/url_finder/translators/individual/Beobachter.py +193 -0
- scitex/scholar/url_finder/translators/individual/Bezneng_Gajit.py +203 -0
- scitex/scholar/url_finder/translators/individual/BibLaTeX.py +329 -0
- scitex/scholar/url_finder/translators/individual/BibTeX.py +330 -0
- scitex/scholar/url_finder/translators/individual/Biblio_com.py +222 -0
- scitex/scholar/url_finder/translators/individual/Bibliontology_RDF.py +228 -0
- scitex/scholar/url_finder/translators/individual/CLASE.py +23 -0
- scitex/scholar/url_finder/translators/individual/COBISS.py +23 -0
- scitex/scholar/url_finder/translators/individual/COinS.py +23 -0
- scitex/scholar/url_finder/translators/individual/CQ_Press.py +23 -0
- scitex/scholar/url_finder/translators/individual/CROSBI.py +23 -0
- scitex/scholar/url_finder/translators/individual/CSL_JSON.py +23 -0
- scitex/scholar/url_finder/translators/individual/CSV.py +23 -0
- scitex/scholar/url_finder/translators/individual/CalMatters.py +23 -0
- scitex/scholar/url_finder/translators/individual/Calisphere.py +23 -0
- scitex/scholar/url_finder/translators/individual/Camara_Brasileira_do_Livro_ISBN.py +290 -0
- scitex/scholar/url_finder/translators/individual/CanLII.py +151 -0
- scitex/scholar/url_finder/translators/individual/Canada_com.py +127 -0
- scitex/scholar/url_finder/translators/individual/Canadian_Letters_and_Images.py +152 -0
- scitex/scholar/url_finder/translators/individual/Canadiana_ca.py +195 -0
- scitex/scholar/url_finder/translators/individual/Cascadilla_Proceedings_Project.py +202 -0
- scitex/scholar/url_finder/translators/individual/Central_and_Eastern_European_Online_Library_Journals.py +172 -0
- scitex/scholar/url_finder/translators/individual/Champlain_Society_Collection.py +172 -0
- scitex/scholar/url_finder/translators/individual/Chicago_Journal_of_Theoretical_Computer_Science.py +210 -0
- scitex/scholar/url_finder/translators/individual/Christian_Science_Monitor.py +118 -0
- scitex/scholar/url_finder/translators/individual/Columbia_University_Press.py +232 -0
- scitex/scholar/url_finder/translators/individual/Common_Place.py +245 -0
- scitex/scholar/url_finder/translators/individual/Cornell_LII.py +165 -0
- scitex/scholar/url_finder/translators/individual/Cornell_University_Press.py +156 -0
- scitex/scholar/url_finder/translators/individual/CourtListener.py +173 -0
- scitex/scholar/url_finder/translators/individual/DAI_Zenon.py +160 -0
- scitex/scholar/url_finder/translators/individual/FULL_DOWNLOAD_LOG.txt +2 -0
- scitex/scholar/url_finder/translators/individual/FULL_DOWNLOAD_LOG_colored.txt +1 -0
- scitex/scholar/url_finder/translators/individual/__init__.py +25 -0
- scitex/scholar/url_finder/translators/individual/abc_news_australia.py +23 -0
- scitex/scholar/url_finder/translators/individual/access_engineering.py +23 -0
- scitex/scholar/url_finder/translators/individual/access_medicine.py +255 -0
- scitex/scholar/url_finder/translators/individual/access_science.py +23 -0
- scitex/scholar/url_finder/translators/individual/acls_humanities_ebook.py +23 -0
- scitex/scholar/url_finder/translators/individual/aclweb.py +23 -0
- scitex/scholar/url_finder/translators/individual/acm.py +11 -0
- scitex/scholar/url_finder/translators/individual/acm_digital_library.py +355 -0
- scitex/scholar/url_finder/translators/individual/acs.py +23 -0
- scitex/scholar/url_finder/translators/individual/acs_publications.py +23 -0
- scitex/scholar/url_finder/translators/individual/adam_matthew_digital.py +23 -0
- scitex/scholar/url_finder/translators/individual/ads_bibcode.py +23 -0
- scitex/scholar/url_finder/translators/individual/aea_web.py +23 -0
- scitex/scholar/url_finder/translators/individual/agencia_del_isbn.py +23 -0
- scitex/scholar/url_finder/translators/individual/agris.py +23 -0
- scitex/scholar/url_finder/translators/individual/ahval_news.py +23 -0
- scitex/scholar/url_finder/translators/individual/aip.py +23 -0
- scitex/scholar/url_finder/translators/individual/air_university_journals.py +23 -0
- scitex/scholar/url_finder/translators/individual/airiti.py +25 -0
- scitex/scholar/url_finder/translators/individual/alexander_street_press.py +23 -0
- scitex/scholar/url_finder/translators/individual/all_africa.py +23 -0
- scitex/scholar/url_finder/translators/individual/allafrica.py +23 -0
- scitex/scholar/url_finder/translators/individual/alsharekh.py +23 -0
- scitex/scholar/url_finder/translators/individual/alternet.py +23 -0
- scitex/scholar/url_finder/translators/individual/aluka.py +23 -0
- scitex/scholar/url_finder/translators/individual/amazon.py +23 -0
- scitex/scholar/url_finder/translators/individual/american_archive_public_broadcasting.py +23 -0
- scitex/scholar/url_finder/translators/individual/american_institute_aeronautics_astronautics.py +23 -0
- scitex/scholar/url_finder/translators/individual/american_prospect.py +23 -0
- scitex/scholar/url_finder/translators/individual/ams_journals.py +23 -0
- scitex/scholar/url_finder/translators/individual/ams_mathscinet.py +23 -0
- scitex/scholar/url_finder/translators/individual/ams_mathscinet_legacy.py +23 -0
- scitex/scholar/url_finder/translators/individual/ancestry_com_us_federal_census.py +23 -0
- scitex/scholar/url_finder/translators/individual/ancestry_us_federal_census.py +23 -0
- scitex/scholar/url_finder/translators/individual/annual_reviews.py +23 -0
- scitex/scholar/url_finder/translators/individual/antikvarium_hu.py +23 -0
- scitex/scholar/url_finder/translators/individual/aosic.py +25 -0
- scitex/scholar/url_finder/translators/individual/apa_psycnet.py +23 -0
- scitex/scholar/url_finder/translators/individual/apn_ru.py +23 -0
- scitex/scholar/url_finder/translators/individual/aps.py +23 -0
- scitex/scholar/url_finder/translators/individual/aps_physics.py +115 -0
- scitex/scholar/url_finder/translators/individual/aquadocs.py +23 -0
- scitex/scholar/url_finder/translators/individual/archeion.py +23 -0
- scitex/scholar/url_finder/translators/individual/archiv_fuer_sozialgeschichte.py +23 -0
- scitex/scholar/url_finder/translators/individual/archive_ouverte_aosic.py +25 -0
- scitex/scholar/url_finder/translators/individual/archive_ouverte_en_sciences_de_l_information_et_de_la_communication___aosic_.py +27 -0
- scitex/scholar/url_finder/translators/individual/archives_canada.py +23 -0
- scitex/scholar/url_finder/translators/individual/ariana_news.py +23 -0
- scitex/scholar/url_finder/translators/individual/art_institute_of_chicago.py +23 -0
- scitex/scholar/url_finder/translators/individual/artefacts_canada.py +23 -0
- scitex/scholar/url_finder/translators/individual/artfl_encyclopedie.py +23 -0
- scitex/scholar/url_finder/translators/individual/artforum.py +152 -0
- scitex/scholar/url_finder/translators/individual/artnet.py +23 -0
- scitex/scholar/url_finder/translators/individual/artnews.py +23 -0
- scitex/scholar/url_finder/translators/individual/artstor.py +23 -0
- scitex/scholar/url_finder/translators/individual/arxiv.py +39 -0
- scitex/scholar/url_finder/translators/individual/arxiv_org.py +122 -0
- scitex/scholar/url_finder/translators/individual/asce.py +23 -0
- scitex/scholar/url_finder/translators/individual/asco_meeting_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/astis.py +23 -0
- scitex/scholar/url_finder/translators/individual/atlanta_journal_constitution.py +145 -0
- scitex/scholar/url_finder/translators/individual/ats_international_journal.py +23 -0
- scitex/scholar/url_finder/translators/individual/atypon.py +23 -0
- scitex/scholar/url_finder/translators/individual/atypon_journals.py +253 -0
- scitex/scholar/url_finder/translators/individual/austlii_and_nzlii.py +251 -0
- scitex/scholar/url_finder/translators/individual/australian_dictionary_of_biography.py +124 -0
- scitex/scholar/url_finder/translators/individual/bailii.py +122 -0
- scitex/scholar/url_finder/translators/individual/bbc.py +229 -0
- scitex/scholar/url_finder/translators/individual/bbc_genome.py +180 -0
- scitex/scholar/url_finder/translators/individual/beck_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/biblioteca_nacional_de_maestros.py +144 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_archives_nationale_quebec_pistard.py +134 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_archives_nationales_quebec.py +187 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_et_archives_nationale_du_quebec__pistard_.py +23 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_et_archives_nationales_du_quebec.py +23 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_nationale_de_france.py +23 -0
- scitex/scholar/url_finder/translators/individual/bibliotheque_nationale_france.py +163 -0
- scitex/scholar/url_finder/translators/individual/bibsys.py +162 -0
- scitex/scholar/url_finder/translators/individual/bioconductor.py +184 -0
- scitex/scholar/url_finder/translators/individual/biomed_central.py +151 -0
- scitex/scholar/url_finder/translators/individual/bioone.py +23 -0
- scitex/scholar/url_finder/translators/individual/biorxiv.py +146 -0
- scitex/scholar/url_finder/translators/individual/blaetter.py +23 -0
- scitex/scholar/url_finder/translators/individual/blogger.py +148 -0
- scitex/scholar/url_finder/translators/individual/bloomberg.py +168 -0
- scitex/scholar/url_finder/translators/individual/bloomsbury_food_library.py +135 -0
- scitex/scholar/url_finder/translators/individual/bluesky.py +129 -0
- scitex/scholar/url_finder/translators/individual/bnf_isbn.py +118 -0
- scitex/scholar/url_finder/translators/individual/bocc.py +247 -0
- scitex/scholar/url_finder/translators/individual/boe.py +196 -0
- scitex/scholar/url_finder/translators/individual/bookmarks.py +23 -0
- scitex/scholar/url_finder/translators/individual/bookshop_org.py +23 -0
- scitex/scholar/url_finder/translators/individual/boston_review.py +23 -0
- scitex/scholar/url_finder/translators/individual/bosworth_toller_anglo_saxon_dictionary.py +23 -0
- scitex/scholar/url_finder/translators/individual/bosworth_toller_s_anglo_saxon_dictionary_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/bracero_history_archive.py +23 -0
- scitex/scholar/url_finder/translators/individual/brill.py +25 -0
- scitex/scholar/url_finder/translators/individual/brukerhandboken.py +23 -0
- scitex/scholar/url_finder/translators/individual/bryn_mawr_classical_review.py +23 -0
- scitex/scholar/url_finder/translators/individual/bundesgesetzblatt.py +23 -0
- scitex/scholar/url_finder/translators/individual/business_standard.py +178 -0
- scitex/scholar/url_finder/translators/individual/cabi___cab_abstracts.py +23 -0
- scitex/scholar/url_finder/translators/individual/cabi_cab_abstracts.py +176 -0
- scitex/scholar/url_finder/translators/individual/cairn.py +23 -0
- scitex/scholar/url_finder/translators/individual/cairn_info.py +23 -0
- scitex/scholar/url_finder/translators/individual/cambridge.py +25 -0
- scitex/scholar/url_finder/translators/individual/cambridge_core.py +178 -0
- scitex/scholar/url_finder/translators/individual/cambridge_engage_preprints.py +23 -0
- scitex/scholar/url_finder/translators/individual/caod.py +224 -0
- scitex/scholar/url_finder/translators/individual/cbc.py +281 -0
- scitex/scholar/url_finder/translators/individual/ccfr__bnf_.py +23 -0
- scitex/scholar/url_finder/translators/individual/ccfr_bnf.py +223 -0
- scitex/scholar/url_finder/translators/individual/cell_press.py +150 -0
- scitex/scholar/url_finder/translators/individual/cern_document_server.py +23 -0
- scitex/scholar/url_finder/translators/individual/ceur_workshop_proceedings.py +23 -0
- scitex/scholar/url_finder/translators/individual/cff.py +23 -0
- scitex/scholar/url_finder/translators/individual/cff_references.py +23 -0
- scitex/scholar/url_finder/translators/individual/champlain_society___collection.py +23 -0
- scitex/scholar/url_finder/translators/individual/chronicling_america.py +23 -0
- scitex/scholar/url_finder/translators/individual/cia_world_factbook.py +163 -0
- scitex/scholar/url_finder/translators/individual/cinii_research.py +23 -0
- scitex/scholar/url_finder/translators/individual/citavi_5_xml.py +23 -0
- scitex/scholar/url_finder/translators/individual/citeseer.py +23 -0
- scitex/scholar/url_finder/translators/individual/citizen_lab.py +23 -0
- scitex/scholar/url_finder/translators/individual/civilization_ca.py +23 -0
- scitex/scholar/url_finder/translators/individual/clacso.py +23 -0
- scitex/scholar/url_finder/translators/individual/climate_change_and_human_health_literature_portal.py +23 -0
- scitex/scholar/url_finder/translators/individual/climate_change_human_health.py +23 -0
- scitex/scholar/url_finder/translators/individual/clinical_key.py +23 -0
- scitex/scholar/url_finder/translators/individual/clinicaltrials_gov.py +23 -0
- scitex/scholar/url_finder/translators/individual/cnki.py +23 -0
- scitex/scholar/url_finder/translators/individual/code4lib_journal.py +23 -0
- scitex/scholar/url_finder/translators/individual/colorado_state_legislature.py +23 -0
- scitex/scholar/url_finder/translators/individual/computer_history_museum_archive.py +23 -0
- scitex/scholar/url_finder/translators/individual/copernicus.py +23 -0
- scitex/scholar/url_finder/translators/individual/crossref_rest.py +618 -0
- scitex/scholar/url_finder/translators/individual/crossref_unixref_xml.py +23 -0
- scitex/scholar/url_finder/translators/individual/csiro_publishing.py +23 -0
- scitex/scholar/url_finder/translators/individual/csiro_publishing_dup.py +23 -0
- scitex/scholar/url_finder/translators/individual/current_affairs.py +112 -0
- scitex/scholar/url_finder/translators/individual/dabi.py +205 -0
- scitex/scholar/url_finder/translators/individual/dagens_nyheter.py +25 -0
- scitex/scholar/url_finder/translators/individual/dagstuhl.py +147 -0
- scitex/scholar/url_finder/translators/individual/dagstuhl_research_online_publication_server.py +23 -0
- scitex/scholar/url_finder/translators/individual/dar_almandumah.py +160 -0
- scitex/scholar/url_finder/translators/individual/dart_europe.py +172 -0
- scitex/scholar/url_finder/translators/individual/data_gov.py +145 -0
- scitex/scholar/url_finder/translators/individual/databrary.py +144 -0
- scitex/scholar/url_finder/translators/individual/datacite_json.py +278 -0
- scitex/scholar/url_finder/translators/individual/dataverse.py +190 -0
- scitex/scholar/url_finder/translators/individual/daum_news.py +133 -0
- scitex/scholar/url_finder/translators/individual/dblp.py +151 -0
- scitex/scholar/url_finder/translators/individual/dblp_computer_science_bibliography.py +104 -0
- scitex/scholar/url_finder/translators/individual/dbpia.py +102 -0
- scitex/scholar/url_finder/translators/individual/de_gruyter_brill.py +23 -0
- scitex/scholar/url_finder/translators/individual/defense_technical_information_center.py +114 -0
- scitex/scholar/url_finder/translators/individual/dejure_org.py +23 -0
- scitex/scholar/url_finder/translators/individual/delpher.py +224 -0
- scitex/scholar/url_finder/translators/individual/demographic_research.py +160 -0
- scitex/scholar/url_finder/translators/individual/denik_cz.py +155 -0
- scitex/scholar/url_finder/translators/individual/depatisnet.py +145 -0
- scitex/scholar/url_finder/translators/individual/der_freitag.py +214 -0
- scitex/scholar/url_finder/translators/individual/der_spiegel.py +189 -0
- scitex/scholar/url_finder/translators/individual/desiring_god.py +23 -0
- scitex/scholar/url_finder/translators/individual/deutsche_fotothek.py +23 -0
- scitex/scholar/url_finder/translators/individual/deutsche_nationalbibliothek.py +23 -0
- scitex/scholar/url_finder/translators/individual/dhistory.py +23 -0
- scitex/scholar/url_finder/translators/individual/dialnet.py +23 -0
- scitex/scholar/url_finder/translators/individual/die_zeit.py +23 -0
- scitex/scholar/url_finder/translators/individual/digibib_net.py +25 -0
- scitex/scholar/url_finder/translators/individual/digital_humanities_quarterly.py +23 -0
- scitex/scholar/url_finder/translators/individual/digital_spy.py +23 -0
- scitex/scholar/url_finder/translators/individual/digizeitschriften.py +25 -0
- scitex/scholar/url_finder/translators/individual/dimensions.py +23 -0
- scitex/scholar/url_finder/translators/individual/dlibra.py +23 -0
- scitex/scholar/url_finder/translators/individual/doaj.py +23 -0
- scitex/scholar/url_finder/translators/individual/doi.py +23 -0
- scitex/scholar/url_finder/translators/individual/doi_content_negotiation.py +23 -0
- scitex/scholar/url_finder/translators/individual/douban.py +23 -0
- scitex/scholar/url_finder/translators/individual/dpla.py +200 -0
- scitex/scholar/url_finder/translators/individual/dreier_neuerscheinungsdienst.py +23 -0
- scitex/scholar/url_finder/translators/individual/drugbank_ca.py +23 -0
- scitex/scholar/url_finder/translators/individual/dryad.py +23 -0
- scitex/scholar/url_finder/translators/individual/dryad_digital_repository.py +23 -0
- scitex/scholar/url_finder/translators/individual/dspace.py +109 -0
- scitex/scholar/url_finder/translators/individual/dspace_intermediate_metadata.py +23 -0
- scitex/scholar/url_finder/translators/individual/duke_university_press_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/e_periodica_switzerland.py +23 -0
- scitex/scholar/url_finder/translators/individual/eastview.py +23 -0
- scitex/scholar/url_finder/translators/individual/ebrary.py +25 -0
- scitex/scholar/url_finder/translators/individual/ebsco_discovery_layer.py +23 -0
- scitex/scholar/url_finder/translators/individual/ebscohost.py +25 -0
- scitex/scholar/url_finder/translators/individual/edinburgh_university_press_journals.py +23 -0
- scitex/scholar/url_finder/translators/individual/education_week.py +23 -0
- scitex/scholar/url_finder/translators/individual/eidr.py +23 -0
- scitex/scholar/url_finder/translators/individual/el_comercio__peru_.py +23 -0
- scitex/scholar/url_finder/translators/individual/el_pais.py +23 -0
- scitex/scholar/url_finder/translators/individual/electronic_colloquium_on_computational_complexity.py +25 -0
- scitex/scholar/url_finder/translators/individual/elibrary_ru.py +23 -0
- scitex/scholar/url_finder/translators/individual/elicit.py +23 -0
- scitex/scholar/url_finder/translators/individual/elife.py +25 -0
- scitex/scholar/url_finder/translators/individual/elsevier_health.py +23 -0
- scitex/scholar/url_finder/translators/individual/elsevier_health_journals.py +25 -0
- scitex/scholar/url_finder/translators/individual/elsevier_pure.py +23 -0
- scitex/scholar/url_finder/translators/individual/embedded_metadata.py +23 -0
- scitex/scholar/url_finder/translators/individual/emedicine.py +23 -0
- scitex/scholar/url_finder/translators/individual/emerald.py +25 -0
- scitex/scholar/url_finder/translators/individual/emerald_insight.py +25 -0
- scitex/scholar/url_finder/translators/individual/emja.py +23 -0
- scitex/scholar/url_finder/translators/individual/encyclopedia_of_chicago.py +23 -0
- scitex/scholar/url_finder/translators/individual/encyclopedia_of_korean_culture.py +23 -0
- scitex/scholar/url_finder/translators/individual/endnote_xml.py +23 -0
- scitex/scholar/url_finder/translators/individual/engineering_village.py +23 -0
- scitex/scholar/url_finder/translators/individual/envidat.py +23 -0
- scitex/scholar/url_finder/translators/individual/epa_national_library_catalog.py +23 -0
- scitex/scholar/url_finder/translators/individual/epicurious.py +25 -0
- scitex/scholar/url_finder/translators/individual/eprint_iacr.py +23 -0
- scitex/scholar/url_finder/translators/individual/eric.py +23 -0
- scitex/scholar/url_finder/translators/individual/erudit.py +23 -0
- scitex/scholar/url_finder/translators/individual/espacenet.py +23 -0
- scitex/scholar/url_finder/translators/individual/etatar_ru.py +23 -0
- scitex/scholar/url_finder/translators/individual/euclid.py +23 -0
- scitex/scholar/url_finder/translators/individual/eur_lex.py +23 -0
- scitex/scholar/url_finder/translators/individual/eurasianet.py +23 -0
- scitex/scholar/url_finder/translators/individual/eurogamerusgamer.py +25 -0
- scitex/scholar/url_finder/translators/individual/europe_pmc.py +23 -0
- scitex/scholar/url_finder/translators/individual/evernote.py +23 -0
- scitex/scholar/url_finder/translators/individual/f1000_research.py +23 -0
- scitex/scholar/url_finder/translators/individual/fachportal_padagogik.py +25 -0
- scitex/scholar/url_finder/translators/individual/factiva.py +23 -0
- scitex/scholar/url_finder/translators/individual/failed_architecture.py +23 -0
- scitex/scholar/url_finder/translators/individual/fairfax_australia.py +23 -0
- scitex/scholar/url_finder/translators/individual/fao_publications.py +23 -0
- scitex/scholar/url_finder/translators/individual/fatcat.py +23 -0
- scitex/scholar/url_finder/translators/individual/faz_net.py +23 -0
- scitex/scholar/url_finder/translators/individual/feb_web_ru.py +23 -0
- scitex/scholar/url_finder/translators/individual/figshare.py +23 -0
- scitex/scholar/url_finder/translators/individual/financial_times.py +23 -0
- scitex/scholar/url_finder/translators/individual/finna.py +23 -0
- scitex/scholar/url_finder/translators/individual/fishpond_co_nz.py +23 -0
- scitex/scholar/url_finder/translators/individual/flickr.py +23 -0
- scitex/scholar/url_finder/translators/individual/foreign_affairs.py +23 -0
- scitex/scholar/url_finder/translators/individual/foreign_policy.py +23 -0
- scitex/scholar/url_finder/translators/individual/fr_online_de.py +23 -0
- scitex/scholar/url_finder/translators/individual/freecite.py +23 -0
- scitex/scholar/url_finder/translators/individual/freepatentsonline.py +23 -0
- scitex/scholar/url_finder/translators/individual/frieze.py +23 -0
- scitex/scholar/url_finder/translators/individual/frontiers.py +84 -0
- scitex/scholar/url_finder/translators/individual/gale_databases.py +25 -0
- scitex/scholar/url_finder/translators/individual/galegdc.py +23 -0
- scitex/scholar/url_finder/translators/individual/galegroup.py +23 -0
- scitex/scholar/url_finder/translators/individual/gallica.py +23 -0
- scitex/scholar/url_finder/translators/individual/game_studies.py +23 -0
- scitex/scholar/url_finder/translators/individual/gamespot.py +23 -0
- scitex/scholar/url_finder/translators/individual/gamestar_gamepro.py +23 -0
- scitex/scholar/url_finder/translators/individual/gasyrlar_awazy.py +23 -0
- scitex/scholar/url_finder/translators/individual/gemeinsamer_bibliotheksverbund_isbn.py +23 -0
- scitex/scholar/url_finder/translators/individual/gene_ontology.py +23 -0
- scitex/scholar/url_finder/translators/individual/github.py +23 -0
- scitex/scholar/url_finder/translators/individual/globes.py +23 -0
- scitex/scholar/url_finder/translators/individual/gmail.py +23 -0
- scitex/scholar/url_finder/translators/individual/gms_german_medical_science.py +111 -0
- scitex/scholar/url_finder/translators/individual/goodreads.py +23 -0
- scitex/scholar/url_finder/translators/individual/google_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/google_patents.py +23 -0
- scitex/scholar/url_finder/translators/individual/google_play.py +23 -0
- scitex/scholar/url_finder/translators/individual/google_presentation.py +23 -0
- scitex/scholar/url_finder/translators/individual/google_research.py +23 -0
- scitex/scholar/url_finder/translators/individual/google_scholar.py +23 -0
- scitex/scholar/url_finder/translators/individual/govinfo.py +23 -0
- scitex/scholar/url_finder/translators/individual/gpo_access_e_cfr.py +23 -0
- scitex/scholar/url_finder/translators/individual/gulag_many_days__many_lives.py +23 -0
- scitex/scholar/url_finder/translators/individual/haaretz.py +23 -0
- scitex/scholar/url_finder/translators/individual/habr.py +23 -0
- scitex/scholar/url_finder/translators/individual/hal.py +23 -0
- scitex/scholar/url_finder/translators/individual/hal_archives_ouvertes.py +23 -0
- scitex/scholar/url_finder/translators/individual/handelszeitung.py +23 -0
- scitex/scholar/url_finder/translators/individual/hanrei_watch.py +23 -0
- scitex/scholar/url_finder/translators/individual/harper_s_magazine.py +23 -0
- scitex/scholar/url_finder/translators/individual/harvard_business_review.py +23 -0
- scitex/scholar/url_finder/translators/individual/harvard_caselaw_access_project.py +23 -0
- scitex/scholar/url_finder/translators/individual/harvard_university_press_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/hathitrust.py +23 -0
- scitex/scholar/url_finder/translators/individual/hcsp.py +23 -0
- scitex/scholar/url_finder/translators/individual/heinonline.py +23 -0
- scitex/scholar/url_finder/translators/individual/heise.py +23 -0
- scitex/scholar/url_finder/translators/individual/herder.py +23 -0
- scitex/scholar/url_finder/translators/individual/highbeam.py +23 -0
- scitex/scholar/url_finder/translators/individual/highwire.py +23 -0
- scitex/scholar/url_finder/translators/individual/highwire2.py +23 -0
- scitex/scholar/url_finder/translators/individual/highwire_2_0.py +23 -0
- scitex/scholar/url_finder/translators/individual/hindawi.py +23 -0
- scitex/scholar/url_finder/translators/individual/hindawi_publishers.py +23 -0
- scitex/scholar/url_finder/translators/individual/hispanic_american_periodical_index.py +23 -0
- scitex/scholar/url_finder/translators/individual/homeland_security_digital_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/hudoc.py +23 -0
- scitex/scholar/url_finder/translators/individual/huff_post.py +23 -0
- scitex/scholar/url_finder/translators/individual/human_rights_watch.py +23 -0
- scitex/scholar/url_finder/translators/individual/ibisworld.py +23 -0
- scitex/scholar/url_finder/translators/individual/idea_alm.py +23 -0
- scitex/scholar/url_finder/translators/individual/idref.py +23 -0
- scitex/scholar/url_finder/translators/individual/ieee_computer_society.py +118 -0
- scitex/scholar/url_finder/translators/individual/ieee_xplore.py +265 -0
- scitex/scholar/url_finder/translators/individual/ietf.py +23 -0
- scitex/scholar/url_finder/translators/individual/ign.py +23 -0
- scitex/scholar/url_finder/translators/individual/imdb.py +23 -0
- scitex/scholar/url_finder/translators/individual/imf.py +23 -0
- scitex/scholar/url_finder/translators/individual/in_these_times.py +23 -0
- scitex/scholar/url_finder/translators/individual/informationssystem_medienpaedagogik.py +23 -0
- scitex/scholar/url_finder/translators/individual/informit_database.py +23 -0
- scitex/scholar/url_finder/translators/individual/infotrac.py +23 -0
- scitex/scholar/url_finder/translators/individual/ingenta_connect.py +23 -0
- scitex/scholar/url_finder/translators/individual/ingentaconnect.py +23 -0
- scitex/scholar/url_finder/translators/individual/inside_higher_ed.py +23 -0
- scitex/scholar/url_finder/translators/individual/insignia_opac.py +23 -0
- scitex/scholar/url_finder/translators/individual/inspire.py +23 -0
- scitex/scholar/url_finder/translators/individual/institute_of_contemporary_art.py +23 -0
- scitex/scholar/url_finder/translators/individual/institute_of_physics.py +23 -0
- scitex/scholar/url_finder/translators/individual/integrum.py +23 -0
- scitex/scholar/url_finder/translators/individual/intellixir.py +23 -0
- scitex/scholar/url_finder/translators/individual/inter_research_science_center.py +116 -0
- scitex/scholar/url_finder/translators/individual/international_nuclear_information_system.py +23 -0
- scitex/scholar/url_finder/translators/individual/internet_archive.py +23 -0
- scitex/scholar/url_finder/translators/individual/internet_archive_scholar.py +23 -0
- scitex/scholar/url_finder/translators/individual/internet_archive_wayback.py +23 -0
- scitex/scholar/url_finder/translators/individual/internet_archive_wayback_machine.py +23 -0
- scitex/scholar/url_finder/translators/individual/invenio_rdm.py +23 -0
- scitex/scholar/url_finder/translators/individual/inveniordm.py +23 -0
- scitex/scholar/url_finder/translators/individual/io_port.py +23 -0
- scitex/scholar/url_finder/translators/individual/iop.py +23 -0
- scitex/scholar/url_finder/translators/individual/ipcc.py +23 -0
- scitex/scholar/url_finder/translators/individual/isidore.py +23 -0
- scitex/scholar/url_finder/translators/individual/istc.py +23 -0
- scitex/scholar/url_finder/translators/individual/j_stage.py +23 -0
- scitex/scholar/url_finder/translators/individual/jahrbuch.py +23 -0
- scitex/scholar/url_finder/translators/individual/japan_times_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/jets.py +23 -0
- scitex/scholar/url_finder/translators/individual/jisc_historical_texts.py +25 -0
- scitex/scholar/url_finder/translators/individual/journal_of_electronic_publishing.py +23 -0
- scitex/scholar/url_finder/translators/individual/journal_of_extension.py +23 -0
- scitex/scholar/url_finder/translators/individual/journal_of_machine_learning_research.py +23 -0
- scitex/scholar/url_finder/translators/individual/journal_of_religion_and_society.py +23 -0
- scitex/scholar/url_finder/translators/individual/jrc_publications_repository.py +23 -0
- scitex/scholar/url_finder/translators/individual/jstage.py +23 -0
- scitex/scholar/url_finder/translators/individual/jstor.py +211 -0
- scitex/scholar/url_finder/translators/individual/juricaf.py +23 -0
- scitex/scholar/url_finder/translators/individual/jurion.py +23 -0
- scitex/scholar/url_finder/translators/individual/juris.py +23 -0
- scitex/scholar/url_finder/translators/individual/jurpc.py +23 -0
- scitex/scholar/url_finder/translators/individual/k10plus_isbn.py +23 -0
- scitex/scholar/url_finder/translators/individual/kanopy.py +23 -0
- scitex/scholar/url_finder/translators/individual/karger.py +23 -0
- scitex/scholar/url_finder/translators/individual/khaama_press.py +23 -0
- scitex/scholar/url_finder/translators/individual/kitapyurdu_com.py +23 -0
- scitex/scholar/url_finder/translators/individual/kommersant.py +23 -0
- scitex/scholar/url_finder/translators/individual/korean_national_library.py +25 -0
- scitex/scholar/url_finder/translators/individual/kstudy.py +23 -0
- scitex/scholar/url_finder/translators/individual/l_annee_philologique.py +23 -0
- scitex/scholar/url_finder/translators/individual/la_croix.py +23 -0
- scitex/scholar/url_finder/translators/individual/la_nacion__argentina_.py +23 -0
- scitex/scholar/url_finder/translators/individual/la_presse.py +23 -0
- scitex/scholar/url_finder/translators/individual/la_republica__peru_.py +23 -0
- scitex/scholar/url_finder/translators/individual/la_times.py +25 -0
- scitex/scholar/url_finder/translators/individual/lagen_nu.py +23 -0
- scitex/scholar/url_finder/translators/individual/landesbibliographie_baden_wurttemberg.py +25 -0
- scitex/scholar/url_finder/translators/individual/lapham_s_quarterly.py +23 -0
- scitex/scholar/url_finder/translators/individual/le_devoir.py +23 -0
- scitex/scholar/url_finder/translators/individual/le_figaro.py +23 -0
- scitex/scholar/url_finder/translators/individual/le_maitron.py +23 -0
- scitex/scholar/url_finder/translators/individual/le_monde.py +23 -0
- scitex/scholar/url_finder/translators/individual/le_monde_diplomatique.py +23 -0
- scitex/scholar/url_finder/translators/individual/legifrance.py +23 -0
- scitex/scholar/url_finder/translators/individual/legislative_insight.py +25 -0
- scitex/scholar/url_finder/translators/individual/lexis_.py +23 -0
- scitex/scholar/url_finder/translators/individual/lexisnexis.py +23 -0
- scitex/scholar/url_finder/translators/individual/libraries_tasmania.py +25 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__aleph_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__amicus_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__aquabrowser_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__bibliocommons_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__blacklight_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__capita_prism_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__dra_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__dynix_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__encore_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__innopac_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__koha_.py +25 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__mango_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__opals_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__pica2_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__pica_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__pika_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__polaris_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__quolto_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__rero_ils_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__sirsi_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__sirsi_elibrary_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__slims_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__tind_ils_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__tinread_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__tlcyouseemore_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__visual_library_2021_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__voyager_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__voyager_7_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_catalog__vtls_.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_genesis.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_hub_discover.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_of_congress_digital_collections.py +23 -0
- scitex/scholar/url_finder/translators/individual/library_of_congress_isbn.py +23 -0
- scitex/scholar/url_finder/translators/individual/libris_isbn.py +23 -0
- scitex/scholar/url_finder/translators/individual/lingbuzz.py +180 -0
- scitex/scholar/url_finder/translators/individual/lippincott_williams_and_wilkins.py +23 -0
- scitex/scholar/url_finder/translators/individual/literary_hub.py +23 -0
- scitex/scholar/url_finder/translators/individual/litres.py +23 -0
- scitex/scholar/url_finder/translators/individual/livejournal.py +23 -0
- scitex/scholar/url_finder/translators/individual/livivo.py +23 -0
- scitex/scholar/url_finder/translators/individual/london_review_of_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/lookus.py +23 -0
- scitex/scholar/url_finder/translators/individual/lulu.py +23 -0
- scitex/scholar/url_finder/translators/individual/lwn_net.py +23 -0
- scitex/scholar/url_finder/translators/individual/lww.py +23 -0
- scitex/scholar/url_finder/translators/individual/mab2.py +23 -0
- scitex/scholar/url_finder/translators/individual/magazines_russ_ru.py +23 -0
- scitex/scholar/url_finder/translators/individual/mailman.py +23 -0
- scitex/scholar/url_finder/translators/individual/mainichi_daily_news.py +23 -0
- scitex/scholar/url_finder/translators/individual/marc.py +23 -0
- scitex/scholar/url_finder/translators/individual/marcxml.py +23 -0
- scitex/scholar/url_finder/translators/individual/mastodon.py +23 -0
- scitex/scholar/url_finder/translators/individual/matbugat_ru.py +23 -0
- scitex/scholar/url_finder/translators/individual/max_planck_institute_for_the_history_of_science_virtual_laboratory_library.py +25 -0
- scitex/scholar/url_finder/translators/individual/mcv.py +23 -0
- scitex/scholar/url_finder/translators/individual/mdpi.py +76 -0
- scitex/scholar/url_finder/translators/individual/mdpi_journals.py +23 -0
- scitex/scholar/url_finder/translators/individual/medes.py +23 -0
- scitex/scholar/url_finder/translators/individual/medium.py +23 -0
- scitex/scholar/url_finder/translators/individual/medline_nbib.py +23 -0
- scitex/scholar/url_finder/translators/individual/medlinenbib.py +23 -0
- scitex/scholar/url_finder/translators/individual/medra.py +23 -0
- scitex/scholar/url_finder/translators/individual/metalib.py +23 -0
- scitex/scholar/url_finder/translators/individual/mets.py +23 -0
- scitex/scholar/url_finder/translators/individual/microbiology_society_journals.py +25 -0
- scitex/scholar/url_finder/translators/individual/microsoft_academic.py +23 -0
- scitex/scholar/url_finder/translators/individual/midas_journals.py +25 -0
- scitex/scholar/url_finder/translators/individual/mikromarc.py +23 -0
- scitex/scholar/url_finder/translators/individual/milli_kutuphane.py +23 -0
- scitex/scholar/url_finder/translators/individual/mit_press_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/mods.py +23 -0
- scitex/scholar/url_finder/translators/individual/mpg_pure.py +23 -0
- scitex/scholar/url_finder/translators/individual/musee_du_louvre.py +23 -0
- scitex/scholar/url_finder/translators/individual/nagoya_university_opac.py +25 -0
- scitex/scholar/url_finder/translators/individual/nasa_ads.py +23 -0
- scitex/scholar/url_finder/translators/individual/nasa_ntrs.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_academies_press.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_agriculture_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_archives_of_australia.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_archives_of_south_africa.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_bureau_of_economic_research.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_diet_library_catalogue.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_gallery_of_art___usa.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_gallery_of_australia.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_australia__new_catalog_.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_belarus.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_norway.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_library_of_poland_isbn.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_post.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_technical_reports_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/national_transportation_library_rosa_p.py +23 -0
- scitex/scholar/url_finder/translators/individual/nature.py +23 -0
- scitex/scholar/url_finder/translators/individual/nature_publishing_group.py +193 -0
- scitex/scholar/url_finder/translators/individual/nber.py +23 -0
- scitex/scholar/url_finder/translators/individual/ncbi_nucleotide.py +23 -0
- scitex/scholar/url_finder/translators/individual/neural_information_processing_systems.py +23 -0
- scitex/scholar/url_finder/translators/individual/new_left_review.py +23 -0
- scitex/scholar/url_finder/translators/individual/new_zealand_herald.py +23 -0
- scitex/scholar/url_finder/translators/individual/newlines_magazine.py +23 -0
- scitex/scholar/url_finder/translators/individual/news_corp_australia.py +23 -0
- scitex/scholar/url_finder/translators/individual/newsbank.py +23 -0
- scitex/scholar/url_finder/translators/individual/newshub_co_nz.py +23 -0
- scitex/scholar/url_finder/translators/individual/newsnettamedia.py +23 -0
- scitex/scholar/url_finder/translators/individual/newspapers_com.py +23 -0
- scitex/scholar/url_finder/translators/individual/noor_digital_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/note_html.py +23 -0
- scitex/scholar/url_finder/translators/individual/note_markdown.py +23 -0
- scitex/scholar/url_finder/translators/individual/notre_dame_philosophical_reviews.py +23 -0
- scitex/scholar/url_finder/translators/individual/npr.py +23 -0
- scitex/scholar/url_finder/translators/individual/nrc_nl.py +23 -0
- scitex/scholar/url_finder/translators/individual/nrc_research_press.py +23 -0
- scitex/scholar/url_finder/translators/individual/ntsb_accident_reports.py +25 -0
- scitex/scholar/url_finder/translators/individual/nypl_menus.py +23 -0
- scitex/scholar/url_finder/translators/individual/nypl_research_catalog.py +23 -0
- scitex/scholar/url_finder/translators/individual/nytimes_com.py +23 -0
- scitex/scholar/url_finder/translators/individual/nzz_ch.py +23 -0
- scitex/scholar/url_finder/translators/individual/oapen.py +23 -0
- scitex/scholar/url_finder/translators/individual/oclc_worldcat_firstsearch.py +23 -0
- scitex/scholar/url_finder/translators/individual/oecd.py +23 -0
- scitex/scholar/url_finder/translators/individual/oecd_ilibrary.py +23 -0
- scitex/scholar/url_finder/translators/individual/ohiolink.py +23 -0
- scitex/scholar/url_finder/translators/individual/open_conf.py +23 -0
- scitex/scholar/url_finder/translators/individual/open_knowledge_repository.py +23 -0
- scitex/scholar/url_finder/translators/individual/open_worldcat.py +23 -0
- scitex/scholar/url_finder/translators/individual/openalex.py +23 -0
- scitex/scholar/url_finder/translators/individual/openalex_json.py +23 -0
- scitex/scholar/url_finder/translators/individual/openedition_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/openedition_journals.py +161 -0
- scitex/scholar/url_finder/translators/individual/openjur.py +23 -0
- scitex/scholar/url_finder/translators/individual/optical_society_of_america.py +23 -0
- scitex/scholar/url_finder/translators/individual/optimization_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/orcid.py +286 -0
- scitex/scholar/url_finder/translators/individual/osa.py +23 -0
- scitex/scholar/url_finder/translators/individual/osf_preprints.py +23 -0
- scitex/scholar/url_finder/translators/individual/osti_energy_citations.py +23 -0
- scitex/scholar/url_finder/translators/individual/ovid.py +23 -0
- scitex/scholar/url_finder/translators/individual/ovid_tagged.py +23 -0
- scitex/scholar/url_finder/translators/individual/oxford.py +148 -0
- scitex/scholar/url_finder/translators/individual/oxford_dictionaries_premium.py +25 -0
- scitex/scholar/url_finder/translators/individual/oxford_english_dictionary.py +23 -0
- scitex/scholar/url_finder/translators/individual/oxford_music_and_art_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/oxford_reference.py +23 -0
- scitex/scholar/url_finder/translators/individual/oxford_university_press.py +23 -0
- scitex/scholar/url_finder/translators/individual/ozon_ru.py +25 -0
- scitex/scholar/url_finder/translators/individual/pajhwok_afghan_news.py +23 -0
- scitex/scholar/url_finder/translators/individual/papers_past.py +23 -0
- scitex/scholar/url_finder/translators/individual/paris_review.py +23 -0
- scitex/scholar/url_finder/translators/individual/pastebin.py +23 -0
- scitex/scholar/url_finder/translators/individual/patents___uspto.py +23 -0
- scitex/scholar/url_finder/translators/individual/pc_gamer.py +23 -0
- scitex/scholar/url_finder/translators/individual/pc_games.py +23 -0
- scitex/scholar/url_finder/translators/individual/peeters.py +23 -0
- scitex/scholar/url_finder/translators/individual/pei_archival_information_network.py +23 -0
- scitex/scholar/url_finder/translators/individual/pep_web.py +23 -0
- scitex/scholar/url_finder/translators/individual/perceiving_systems.py +23 -0
- scitex/scholar/url_finder/translators/individual/perlego.py +23 -0
- scitex/scholar/url_finder/translators/individual/philosopher_s_imprint.py +23 -0
- scitex/scholar/url_finder/translators/individual/philpapers.py +23 -0
- scitex/scholar/url_finder/translators/individual/pkp_catalog_systems.py +23 -0
- scitex/scholar/url_finder/translators/individual/pleade.py +23 -0
- scitex/scholar/url_finder/translators/individual/plos.py +111 -0
- scitex/scholar/url_finder/translators/individual/plos_journals.py +23 -0
- scitex/scholar/url_finder/translators/individual/pnas.py +23 -0
- scitex/scholar/url_finder/translators/individual/polygon.py +25 -0
- scitex/scholar/url_finder/translators/individual/potsdamer_neueste_nachrichten.py +23 -0
- scitex/scholar/url_finder/translators/individual/prc_history_review.py +23 -0
- scitex/scholar/url_finder/translators/individual/preprints_org.py +23 -0
- scitex/scholar/url_finder/translators/individual/primo.py +25 -0
- scitex/scholar/url_finder/translators/individual/primo_2018.py +23 -0
- scitex/scholar/url_finder/translators/individual/primo_normalized_xml.py +23 -0
- scitex/scholar/url_finder/translators/individual/probing_the_past.py +23 -0
- scitex/scholar/url_finder/translators/individual/project_gutenberg.py +23 -0
- scitex/scholar/url_finder/translators/individual/project_muse.py +25 -0
- scitex/scholar/url_finder/translators/individual/promed.py +23 -0
- scitex/scholar/url_finder/translators/individual/proquest.py +23 -0
- scitex/scholar/url_finder/translators/individual/proquest_ebook_central.py +23 -0
- scitex/scholar/url_finder/translators/individual/proquest_policyfile.py +23 -0
- scitex/scholar/url_finder/translators/individual/protein_data_bank.py +23 -0
- scitex/scholar/url_finder/translators/individual/pubfactory_journals.py +25 -0
- scitex/scholar/url_finder/translators/individual/public_record_office_victoria.py +23 -0
- scitex/scholar/url_finder/translators/individual/publications_du_quebec.py +23 -0
- scitex/scholar/url_finder/translators/individual/publications_office_of_the_european_union.py +23 -0
- scitex/scholar/url_finder/translators/individual/pubmed.py +330 -0
- scitex/scholar/url_finder/translators/individual/pubmed_central.py +71 -0
- scitex/scholar/url_finder/translators/individual/pubmed_xml.py +23 -0
- scitex/scholar/url_finder/translators/individual/pubpub.py +23 -0
- scitex/scholar/url_finder/translators/individual/pypi.py +23 -0
- scitex/scholar/url_finder/translators/individual/qatar_digital_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/queensland_state_archives.py +23 -0
- scitex/scholar/url_finder/translators/individual/r_packages.py +23 -0
- scitex/scholar/url_finder/translators/individual/radio_free_europe__radio_liberty.py +23 -0
- scitex/scholar/url_finder/translators/individual/rand.py +23 -0
- scitex/scholar/url_finder/translators/individual/rdf.py +23 -0
- scitex/scholar/url_finder/translators/individual/rechtspraak_nl.py +25 -0
- scitex/scholar/url_finder/translators/individual/redalyc.py +23 -0
- scitex/scholar/url_finder/translators/individual/reddit.py +23 -0
- scitex/scholar/url_finder/translators/individual/referbibix.py +23 -0
- scitex/scholar/url_finder/translators/individual/refworks_tagged.py +23 -0
- scitex/scholar/url_finder/translators/individual/regeringskansliet.py +23 -0
- scitex/scholar/url_finder/translators/individual/repec___econpapers.py +23 -0
- scitex/scholar/url_finder/translators/individual/repec___ideas.py +23 -0
- scitex/scholar/url_finder/translators/individual/repec_ideas.py +23 -0
- scitex/scholar/url_finder/translators/individual/research_square.py +23 -0
- scitex/scholar/url_finder/translators/individual/researchgate.py +23 -0
- scitex/scholar/url_finder/translators/individual/retsinformation.py +23 -0
- scitex/scholar/url_finder/translators/individual/reuters.py +23 -0
- scitex/scholar/url_finder/translators/individual/ris.py +23 -0
- scitex/scholar/url_finder/translators/individual/rock__paper__shotgun.py +23 -0
- scitex/scholar/url_finder/translators/individual/roll_call.py +23 -0
- scitex/scholar/url_finder/translators/individual/rsc.py +23 -0
- scitex/scholar/url_finder/translators/individual/rsc_publishing.py +23 -0
- scitex/scholar/url_finder/translators/individual/russian_state_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/sacramento_bee.py +23 -0
- scitex/scholar/url_finder/translators/individual/sae_papers.py +23 -0
- scitex/scholar/url_finder/translators/individual/safari_books_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/sage.py +23 -0
- scitex/scholar/url_finder/translators/individual/sage_journals.py +183 -0
- scitex/scholar/url_finder/translators/individual/sage_knowledge.py +23 -0
- scitex/scholar/url_finder/translators/individual/saildart.py +23 -0
- scitex/scholar/url_finder/translators/individual/salt_research_archives.py +23 -0
- scitex/scholar/url_finder/translators/individual/sbn_it.py +23 -0
- scitex/scholar/url_finder/translators/individual/scholars_portal_journals.py +23 -0
- scitex/scholar/url_finder/translators/individual/scholia.py +23 -0
- scitex/scholar/url_finder/translators/individual/schweizer_radio_und_fernsehen_srf.py +23 -0
- scitex/scholar/url_finder/translators/individual/scielo.py +23 -0
- scitex/scholar/url_finder/translators/individual/sciencedirect.py +132 -0
- scitex/scholar/url_finder/translators/individual/scinapse.py +110 -0
- scitex/scholar/url_finder/translators/individual/scopus.py +23 -0
- scitex/scholar/url_finder/translators/individual/semantic_scholar.py +23 -0
- scitex/scholar/url_finder/translators/individual/semantics_visual_library.py +25 -0
- scitex/scholar/url_finder/translators/individual/sfu_ipinch.py +23 -0
- scitex/scholar/url_finder/translators/individual/silverchair.py +301 -0
- scitex/scholar/url_finder/translators/individual/sipri.py +23 -0
- scitex/scholar/url_finder/translators/individual/sirs_knowledge_source.py +23 -0
- scitex/scholar/url_finder/translators/individual/slate.py +23 -0
- scitex/scholar/url_finder/translators/individual/slideshare.py +23 -0
- scitex/scholar/url_finder/translators/individual/slub_dresden.py +23 -0
- scitex/scholar/url_finder/translators/individual/sora.py +25 -0
- scitex/scholar/url_finder/translators/individual/springer.py +121 -0
- scitex/scholar/url_finder/translators/individual/springer_link.py +23 -0
- scitex/scholar/url_finder/translators/individual/ssoar.py +23 -0
- scitex/scholar/url_finder/translators/individual/ssrn.py +63 -0
- scitex/scholar/url_finder/translators/individual/stack_exchange.py +23 -0
- scitex/scholar/url_finder/translators/individual/standard_ebooks.py +23 -0
- scitex/scholar/url_finder/translators/individual/stanford_encyclopedia_of_philosophy.py +25 -0
- scitex/scholar/url_finder/translators/individual/stanford_university_press.py +23 -0
- scitex/scholar/url_finder/translators/individual/state_records_office_of_western_australia.py +23 -0
- scitex/scholar/url_finder/translators/individual/state_records_office_wa.py +23 -0
- scitex/scholar/url_finder/translators/individual/stitcher.py +23 -0
- scitex/scholar/url_finder/translators/individual/store_norske_leksikon.py +23 -0
- scitex/scholar/url_finder/translators/individual/stuff_co_nz.py +23 -0
- scitex/scholar/url_finder/translators/individual/substack.py +23 -0
- scitex/scholar/url_finder/translators/individual/sud_ouest.py +23 -0
- scitex/scholar/url_finder/translators/individual/sueddeutsche_de.py +23 -0
- scitex/scholar/url_finder/translators/individual/summon_2.py +23 -0
- scitex/scholar/url_finder/translators/individual/superlib.py +25 -0
- scitex/scholar/url_finder/translators/individual/svenska_dagbladet.py +23 -0
- scitex/scholar/url_finder/translators/individual/sveriges_radio.py +23 -0
- scitex/scholar/url_finder/translators/individual/svt_nyheter.py +23 -0
- scitex/scholar/url_finder/translators/individual/tagesspiegel.py +23 -0
- scitex/scholar/url_finder/translators/individual/talis_aspire.py +23 -0
- scitex/scholar/url_finder/translators/individual/talisprism.py +23 -0
- scitex/scholar/url_finder/translators/individual/tatknigafund.py +23 -0
- scitex/scholar/url_finder/translators/individual/tatpressa_ru.py +23 -0
- scitex/scholar/url_finder/translators/individual/taylor___francis_ebooks.py +23 -0
- scitex/scholar/url_finder/translators/individual/taylor_and_francis_nejm.py +23 -0
- scitex/scholar/url_finder/translators/individual/taylor_francis.py +23 -0
- scitex/scholar/url_finder/translators/individual/taylor_francis_nejm.py +23 -0
- scitex/scholar/url_finder/translators/individual/taz_de.py +23 -0
- scitex/scholar/url_finder/translators/individual/tei.py +23 -0
- scitex/scholar/url_finder/translators/individual/tesis_doctorals_en_xarxa.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_art_newspaper.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_atlantic.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_boston_globe.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_chronicle_of_higher_education.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_daily_beast.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_economic_times___the_times_of_india.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_economist.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_free_dictionary.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_globe_and_mail.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_guardian.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_hamilton_spectator.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_hindu.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_independent.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_intercept.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_met.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_microfinance_gateway.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_nation.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_national_archives__uk_.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_new_republic.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_new_york_review_of_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_new_yorker.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_open_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_straits_times.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_telegraph.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_times_and_sunday_times.py +23 -0
- scitex/scholar/url_finder/translators/individual/the_times_of_israel.py +23 -0
- scitex/scholar/url_finder/translators/individual/themarker.py +23 -0
- scitex/scholar/url_finder/translators/individual/theory_of_computing.py +23 -0
- scitex/scholar/url_finder/translators/individual/thesesfr.py +23 -0
- scitex/scholar/url_finder/translators/individual/thieme.py +23 -0
- scitex/scholar/url_finder/translators/individual/time_com.py +23 -0
- scitex/scholar/url_finder/translators/individual/timesmachine.py +23 -0
- scitex/scholar/url_finder/translators/individual/tony_blair_institute.py +23 -0
- scitex/scholar/url_finder/translators/individual/tony_blair_institute_for_global_change.py +23 -0
- scitex/scholar/url_finder/translators/individual/toronto_star.py +23 -0
- scitex/scholar/url_finder/translators/individual/transportation_research_board.py +23 -0
- scitex/scholar/url_finder/translators/individual/treesearch.py +25 -0
- scitex/scholar/url_finder/translators/individual/trove.py +23 -0
- scitex/scholar/url_finder/translators/individual/tumblr.py +23 -0
- scitex/scholar/url_finder/translators/individual/tv_by_the_numbers.py +23 -0
- scitex/scholar/url_finder/translators/individual/tvnz.py +23 -0
- scitex/scholar/url_finder/translators/individual/twitter.py +23 -0
- scitex/scholar/url_finder/translators/individual/ubiquity_journals.py +23 -0
- scitex/scholar/url_finder/translators/individual/uchicago_vufind.py +23 -0
- scitex/scholar/url_finder/translators/individual/unapi.py +23 -0
- scitex/scholar/url_finder/translators/individual/unesco.py +23 -0
- scitex/scholar/url_finder/translators/individual/university_of_california_press_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/university_of_chicago_press_books.py +25 -0
- scitex/scholar/url_finder/translators/individual/university_of_wisconsin_madison_libraries_catalog.py +23 -0
- scitex/scholar/url_finder/translators/individual/university_press_scholarship.py +23 -0
- scitex/scholar/url_finder/translators/individual/unqualified_dublin_core_rdf.py +23 -0
- scitex/scholar/url_finder/translators/individual/unz_print_archive.py +23 -0
- scitex/scholar/url_finder/translators/individual/upcommons.py +23 -0
- scitex/scholar/url_finder/translators/individual/uptodate_references.py +23 -0
- scitex/scholar/url_finder/translators/individual/us_national_archives_research_catalog.py +23 -0
- scitex/scholar/url_finder/translators/individual/usenix.py +23 -0
- scitex/scholar/url_finder/translators/individual/vanity_fair.py +23 -0
- scitex/scholar/url_finder/translators/individual/verniana.py +23 -0
- scitex/scholar/url_finder/translators/individual/verniana_jules_verne_studies.py +23 -0
- scitex/scholar/url_finder/translators/individual/verso_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/vice.py +23 -0
- scitex/scholar/url_finder/translators/individual/victoria___albert_museum.py +23 -0
- scitex/scholar/url_finder/translators/individual/vimeo.py +23 -0
- scitex/scholar/url_finder/translators/individual/vlex.py +25 -0
- scitex/scholar/url_finder/translators/individual/voxeu.py +23 -0
- scitex/scholar/url_finder/translators/individual/wall_street_journal.py +23 -0
- scitex/scholar/url_finder/translators/individual/wanfang_data.py +23 -0
- scitex/scholar/url_finder/translators/individual/washington_monthly.py +23 -0
- scitex/scholar/url_finder/translators/individual/washington_post.py +23 -0
- scitex/scholar/url_finder/translators/individual/web_of_science.py +25 -0
- scitex/scholar/url_finder/translators/individual/web_of_science_nextgen.py +25 -0
- scitex/scholar/url_finder/translators/individual/web_of_science_tagged.py +23 -0
- scitex/scholar/url_finder/translators/individual/welt_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/westlaw_uk.py +23 -0
- scitex/scholar/url_finder/translators/individual/who.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikidata.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikidata_quickstatements.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikileaks_plusd.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikimedia_commons.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikipedia.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikipedia_citation_templates.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikisource.py +23 -0
- scitex/scholar/url_finder/translators/individual/wikiwand.py +23 -0
- scitex/scholar/url_finder/translators/individual/wiktionary.py +23 -0
- scitex/scholar/url_finder/translators/individual/wildlife_biology_in_practice.py +23 -0
- scitex/scholar/url_finder/translators/individual/wiley.py +187 -0
- scitex/scholar/url_finder/translators/individual/wiley_online_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/wilson_center_digital_archive.py +25 -0
- scitex/scholar/url_finder/translators/individual/winnipeg_free_press.py +23 -0
- scitex/scholar/url_finder/translators/individual/wipo.py +23 -0
- scitex/scholar/url_finder/translators/individual/wired.py +23 -0
- scitex/scholar/url_finder/translators/individual/wiso.py +23 -0
- scitex/scholar/url_finder/translators/individual/womennews.py +23 -0
- scitex/scholar/url_finder/translators/individual/world_bank.py +23 -0
- scitex/scholar/url_finder/translators/individual/world_digital_library.py +23 -0
- scitex/scholar/url_finder/translators/individual/world_history_connected.py +23 -0
- scitex/scholar/url_finder/translators/individual/world_shakespeare_bibliography_online.py +23 -0
- scitex/scholar/url_finder/translators/individual/worldcat_discovery_service.py +23 -0
- scitex/scholar/url_finder/translators/individual/xml_contextobject.py +23 -0
- scitex/scholar/url_finder/translators/individual/yandex_books.py +23 -0
- scitex/scholar/url_finder/translators/individual/ynet.py +23 -0
- scitex/scholar/url_finder/translators/individual/youtube.py +23 -0
- scitex/scholar/url_finder/translators/individual/ypfs.py +23 -0
- scitex/scholar/url_finder/translators/individual/ypsf.py +23 -0
- scitex/scholar/url_finder/translators/individual/zbmath.py +102 -0
- scitex/scholar/url_finder/translators/individual/zenodo.py +23 -0
- scitex/scholar/url_finder/translators/individual/ziponline.py +23 -0
- scitex/scholar/url_finder/translators/individual/zobodat.py +23 -0
- scitex/scholar/url_finder/translators/individual/zotero_org.py +23 -0
- scitex/scholar/url_finder/translators/individual/zotero_rdf.py +23 -0
- scitex/scholar/url_finder/translators/individual/zoterobib.py +23 -0
- scitex/scholar/utils/__init__.py +25 -0
- scitex/scholar/utils/bibtex/__init__.py +9 -0
- scitex/scholar/utils/bibtex/_parse_bibtex.py +71 -0
- scitex/scholar/utils/cleanup/__init__.py +8 -0
- scitex/scholar/utils/cleanup/_cleanup_scholar_processes.py +92 -0
- scitex/scholar/utils/create_demo_movie.sh +49 -0
- scitex/scholar/utils/text/_TextNormalizer.py +480 -0
- scitex/scholar/utils/text/__init__.py +9 -0
- scitex/scholar/utils/validation/DOIValidator.py +292 -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 +225 -0
- scitex/scholar/zotero/__init__.py +38 -0
- scitex/security/README.md +255 -0
- scitex/security/__init__.py +34 -0
- scitex/security/cli.py +127 -0
- scitex/security/github.py +371 -0
- scitex/session/README.md +252 -0
- scitex/session/__init__.py +55 -0
- scitex/session/_decorator.py +631 -0
- scitex/session/_lifecycle.py +827 -0
- scitex/session/_manager.py +106 -0
- scitex/session/template.py +29 -0
- scitex/sh/README.md +58 -0
- scitex/sh/__init__.py +93 -0
- scitex/sh/_execute.py +224 -0
- scitex/sh/_security.py +67 -0
- scitex/sh/_types.py +28 -0
- scitex/sh/test_sh.py +72 -0
- scitex/sh/test_sh_simple.py +61 -0
- scitex/stats/README.md +1085 -0
- scitex/stats/__init__.py +350 -0
- scitex/stats/__main__.py +281 -0
- scitex/stats/_figrecipe_integration.py +116 -0
- scitex/stats/_mcp/__init__.py +4 -0
- scitex/stats/_mcp/handlers.py +1191 -0
- scitex/stats/_mcp/tool_schemas.py +384 -0
- scitex/stats/_schema.py +50 -0
- scitex/stats/auto/__init__.py +187 -0
- scitex/stats/auto/_context.py +331 -0
- scitex/stats/auto/_formatting.py +679 -0
- scitex/stats/auto/_rules.py +901 -0
- scitex/stats/auto/_selector.py +554 -0
- scitex/stats/auto/_styles.py +721 -0
- scitex/stats/correct/__init__.py +21 -0
- scitex/stats/correct/_correct_bonferroni.py +560 -0
- scitex/stats/correct/_correct_fdr.py +608 -0
- scitex/stats/correct/_correct_fdr_.py +627 -0
- scitex/stats/correct/_correct_holm.py +530 -0
- scitex/stats/correct/_correct_sidak.py +514 -0
- scitex/stats/descriptive/__init__.py +85 -0
- scitex/stats/descriptive/_circular.py +400 -0
- scitex/stats/descriptive/_describe.py +182 -0
- scitex/stats/descriptive/_nan.py +288 -0
- scitex/stats/descriptive/_real.py +176 -0
- scitex/stats/effect_sizes/__init__.py +40 -0
- scitex/stats/effect_sizes/_cliffs_delta.py +328 -0
- scitex/stats/effect_sizes/_cohens_d.py +341 -0
- scitex/stats/effect_sizes/_epsilon_squared.py +312 -0
- scitex/stats/effect_sizes/_eta_squared.py +298 -0
- scitex/stats/effect_sizes/_prob_superiority.py +293 -0
- scitex/stats/io/__init__.py +28 -0
- scitex/stats/io/_bundle.py +156 -0
- scitex/stats/mcp_server.py +405 -0
- scitex/stats/posthoc/__init__.py +19 -0
- scitex/stats/posthoc/_dunnett.py +483 -0
- scitex/stats/posthoc/_games_howell.py +401 -0
- scitex/stats/posthoc/_tukey_hsd.py +375 -0
- scitex/stats/power/__init__.py +19 -0
- scitex/stats/power/_power.py +433 -0
- scitex/stats/run_all.sh +46 -0
- scitex/stats/tests/__init__.py +13 -0
- scitex/stats/tests/correlation/__init__.py +13 -0
- scitex/stats/tests/correlation/_test_pearson.py +252 -0
- scitex/stats/utils/__init__.py +59 -0
- scitex/stats/utils/_effect_size.py +992 -0
- scitex/stats/utils/_formatters.py +276 -0
- scitex/stats/utils/_normalizers.py +923 -0
- scitex/stats/utils/_power.py +433 -0
- scitex/str/__init__.py +112 -0
- scitex/str/_clean_path.py +79 -0
- scitex/str/_color_text.py +52 -0
- scitex/str/_decapitalize.py +58 -0
- scitex/str/_factor_out_digits.py +309 -0
- scitex/str/_format_plot_text.py +567 -0
- scitex/str/_grep.py +48 -0
- scitex/str/_latex.py +97 -0
- scitex/str/_latex_fallback.py +583 -0
- scitex/str/_mask_api.py +39 -0
- scitex/str/_mask_api_key.py +8 -0
- scitex/str/_parse.py +163 -0
- scitex/str/_print_block.py +47 -0
- scitex/str/_print_debug.py +68 -0
- scitex/str/_printc.py +62 -0
- scitex/str/_readable_bytes.py +38 -0
- scitex/str/_remove_ansi.py +23 -0
- scitex/str/_replace.py +134 -0
- scitex/str/_search.py +127 -0
- scitex/str/_squeeze_space.py +36 -0
- scitex/template/README.md +154 -0
- scitex/template/__init__.py +115 -0
- scitex/template/_clone_project.py +167 -0
- scitex/template/_copy.py +105 -0
- scitex/template/_customize.py +116 -0
- scitex/template/_git_strategy.py +122 -0
- scitex/template/_logging_helpers.py +122 -0
- scitex/template/_mcp/__init__.py +4 -0
- scitex/template/_mcp/handlers.py +259 -0
- scitex/template/_mcp/tool_schemas.py +112 -0
- scitex/template/_rename.py +65 -0
- scitex/template/clone_pip_project.py +106 -0
- scitex/template/clone_research.py +106 -0
- scitex/template/clone_singularity.py +106 -0
- scitex/template/clone_writer_directory.py +106 -0
- scitex/template/mcp_server.py +186 -0
- scitex/tex/__init__.py +14 -0
- scitex/tex/_export.py +890 -0
- scitex/tex/_preview.py +118 -0
- scitex/tex/_to_vec.py +119 -0
- scitex/torch/__init__.py +28 -0
- scitex/torch/_apply_to.py +34 -0
- scitex/torch/_nan_funcs.py +77 -0
- scitex/types/_ArrayLike.py +66 -0
- scitex/types/_ColorLike.py +21 -0
- scitex/types/__init__.py +14 -0
- scitex/types/_is_listed_X.py +70 -0
- scitex/ui/__init__.py +173 -0
- scitex/ui/_backends/__init__.py +66 -0
- scitex/ui/_backends/_audio.py +86 -0
- scitex/ui/_backends/_config.py +250 -0
- scitex/ui/_backends/_desktop.py +184 -0
- scitex/ui/_backends/_emacs.py +210 -0
- scitex/ui/_backends/_email.py +78 -0
- scitex/ui/_backends/_matplotlib.py +118 -0
- scitex/ui/_backends/_playwright.py +109 -0
- scitex/ui/_backends/_types.py +58 -0
- scitex/ui/_backends/_webhook.py +77 -0
- scitex/ui/_backends.py +37 -0
- scitex/ui/_mcp/__init__.py +23 -0
- scitex/ui/_mcp/handlers.py +260 -0
- scitex/ui/_mcp/tool_schemas.py +107 -0
- scitex/ui/mcp_server.py +151 -0
- scitex/units.py +324 -0
- scitex/utils/__init__.py +22 -0
- scitex/utils/_compress_hdf5.py +127 -0
- scitex/utils/_email.py +221 -0
- scitex/utils/_grid.py +150 -0
- scitex/utils/_notify.py +267 -0
- scitex/utils/_search.py +123 -0
- scitex/utils/_verify_scitex_format.py +564 -0
- scitex/utils/_verify_scitex_format_v01.py +348 -0
- scitex/utils/template.py +123 -0
- scitex/web/__init__.py +49 -0
- scitex/web/_scraping.py +150 -0
- scitex/web/_search_pubmed.py +501 -0
- scitex/web/_summarize_url.py +158 -0
- scitex/web/download_images.py +316 -0
- scitex/writer/README.md +435 -0
- scitex/writer/Writer.py +487 -0
- scitex/writer/__init__.py +46 -0
- scitex/writer/_clone_writer_project.py +160 -0
- scitex/writer/_compile/__init__.py +41 -0
- scitex/writer/_compile/_compile_async.py +130 -0
- scitex/writer/_compile/_compile_unified.py +148 -0
- scitex/writer/_compile/_parser.py +63 -0
- scitex/writer/_compile/_runner.py +457 -0
- scitex/writer/_compile/_validator.py +46 -0
- scitex/writer/_compile/manuscript.py +110 -0
- scitex/writer/_compile/revision.py +82 -0
- scitex/writer/_compile/supplementary.py +100 -0
- scitex/writer/_dataclasses/__init__.py +44 -0
- scitex/writer/_dataclasses/config/_CONSTANTS.py +46 -0
- scitex/writer/_dataclasses/config/_WriterConfig.py +175 -0
- scitex/writer/_dataclasses/config/__init__.py +9 -0
- scitex/writer/_dataclasses/contents/_ManuscriptContents.py +236 -0
- scitex/writer/_dataclasses/contents/_RevisionContents.py +136 -0
- scitex/writer/_dataclasses/contents/_SupplementaryContents.py +114 -0
- scitex/writer/_dataclasses/contents/__init__.py +9 -0
- scitex/writer/_dataclasses/core/_Document.py +146 -0
- scitex/writer/_dataclasses/core/_DocumentSection.py +546 -0
- scitex/writer/_dataclasses/core/__init__.py +7 -0
- scitex/writer/_dataclasses/results/_CompilationResult.py +165 -0
- scitex/writer/_dataclasses/results/_LaTeXIssue.py +102 -0
- scitex/writer/_dataclasses/results/_SaveSectionsResponse.py +118 -0
- scitex/writer/_dataclasses/results/_SectionReadResponse.py +131 -0
- scitex/writer/_dataclasses/results/__init__.py +11 -0
- scitex/writer/_dataclasses/tree/MINIMUM_FILES.md +121 -0
- scitex/writer/_dataclasses/tree/_ConfigTree.py +86 -0
- scitex/writer/_dataclasses/tree/_ManuscriptTree.py +84 -0
- scitex/writer/_dataclasses/tree/_RevisionTree.py +97 -0
- scitex/writer/_dataclasses/tree/_ScriptsTree.py +118 -0
- scitex/writer/_dataclasses/tree/_SharedTree.py +100 -0
- scitex/writer/_dataclasses/tree/_SupplementaryTree.py +101 -0
- scitex/writer/_dataclasses/tree/__init__.py +23 -0
- scitex/writer/_mcp/__init__.py +4 -0
- scitex/writer/_mcp/handlers.py +765 -0
- scitex/writer/_mcp/tool_schemas.py +363 -0
- scitex/writer/_project/__init__.py +29 -0
- scitex/writer/_project/_create.py +89 -0
- scitex/writer/_project/_trees.py +63 -0
- scitex/writer/_project/_validate.py +61 -0
- scitex/writer/utils/.legacy_git_retry.py +164 -0
- scitex/writer/utils/__init__.py +24 -0
- scitex/writer/utils/_converters.py +635 -0
- scitex/writer/utils/_parse_latex_logs.py +138 -0
- scitex/writer/utils/_parse_script_args.py +156 -0
- scitex/writer/utils/_verify_tree_structure.py +205 -0
- scitex/writer/utils/_watch.py +96 -0
- scitex-2.14.0.dist-info/METADATA +1238 -0
- scitex-2.14.0.dist-info/RECORD +2498 -0
- scitex-2.14.0.dist-info/WHEEL +4 -0
- scitex-2.14.0.dist-info/entry_points.txt +12 -0
- scitex-2.14.0.dist-info/licenses/LICENSE +661 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
# Impact Factor and Citation Count Integration
|
|
2
|
+
|
|
3
|
+
**Status**: ✅ FULLY INTEGRATED (October 22, 2025)
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
All Scholar pipelines now automatically enrich papers with:
|
|
8
|
+
- **Citation counts** (total + yearly breakdown) from multiple academic databases
|
|
9
|
+
- **Journal impact factors** from JCR database via `ImpactFactorEngine`
|
|
10
|
+
|
|
11
|
+
## Integration Points
|
|
12
|
+
|
|
13
|
+
### 1. Metadata-Only Pipelines (API-based, fast)
|
|
14
|
+
|
|
15
|
+
These pipelines enrich metadata without browser automation or PDF downloads:
|
|
16
|
+
|
|
17
|
+
#### `ScholarPipelineMetadataSingle`
|
|
18
|
+
**Location**: `/src/scitex/scholar/pipelines/ScholarPipelineMetadataSingle.py`
|
|
19
|
+
|
|
20
|
+
**Features**:
|
|
21
|
+
- Enriches single paper with metadata from ScholarEngine APIs
|
|
22
|
+
- Automatically adds citation counts from OpenAlex/Semantic Scholar
|
|
23
|
+
- Looks up journal impact factor using `ImpactFactorEngine`
|
|
24
|
+
- Fast, lightweight, no browser required
|
|
25
|
+
|
|
26
|
+
**Code Flow**:
|
|
27
|
+
```python
|
|
28
|
+
async def enrich_paper_async(paper: Paper) -> Paper:
|
|
29
|
+
1. Fetch metadata from ScholarEngine APIs
|
|
30
|
+
├─ Title, abstract, authors, year
|
|
31
|
+
├─ Citation counts (total + yearly)
|
|
32
|
+
└─ Journal name, publisher
|
|
33
|
+
|
|
34
|
+
2. Merge metadata into paper object
|
|
35
|
+
├─ paper.metadata.basic.*
|
|
36
|
+
├─ paper.metadata.publication.*
|
|
37
|
+
└─ paper.metadata.citation_count.*
|
|
38
|
+
|
|
39
|
+
3. Enrich impact factor (if journal available)
|
|
40
|
+
└─ paper.metadata.publication.impact_factor
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Usage**:
|
|
44
|
+
```python
|
|
45
|
+
from scitex.scholar.pipelines import ScholarPipelineMetadataSingle
|
|
46
|
+
|
|
47
|
+
pipeline = ScholarPipelineMetadataSingle()
|
|
48
|
+
paper = Paper()
|
|
49
|
+
paper.metadata.id.doi = "10.1038/nature12373"
|
|
50
|
+
|
|
51
|
+
enriched = await pipeline.enrich_paper_async(paper)
|
|
52
|
+
|
|
53
|
+
print(enriched.metadata.publication.journal) # "Nature"
|
|
54
|
+
print(enriched.metadata.citation_count.total) # 1798
|
|
55
|
+
print(enriched.metadata.publication.impact_factor) # IF value (if in DB)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
#### `ScholarPipelineMetadataParallel`
|
|
59
|
+
**Location**: `/src/scitex/scholar/pipelines/ScholarPipelineMetadataParallel.py`
|
|
60
|
+
|
|
61
|
+
**Features**:
|
|
62
|
+
- Parallel processing of multiple papers
|
|
63
|
+
- Each worker uses `ScholarPipelineMetadataSingle` internally
|
|
64
|
+
- Controlled concurrency with semaphore
|
|
65
|
+
- Progress callbacks for UI integration
|
|
66
|
+
|
|
67
|
+
**Usage**:
|
|
68
|
+
```python
|
|
69
|
+
from scitex.scholar.pipelines import ScholarPipelineMetadataParallel
|
|
70
|
+
|
|
71
|
+
pipeline = ScholarPipelineMetadataParallel(num_workers=4)
|
|
72
|
+
|
|
73
|
+
enriched_papers = await pipeline.enrich_papers_async(
|
|
74
|
+
papers=papers,
|
|
75
|
+
on_progress=lambda current, total, info: print(f"{current}/{total}")
|
|
76
|
+
)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Web App Integration**:
|
|
80
|
+
The Scholar web app (`/apps/scholar_app/bibtex_views.py`) uses this pipeline:
|
|
81
|
+
```python
|
|
82
|
+
pipeline = ScholarPipelineMetadataParallel(num_workers=job.num_workers)
|
|
83
|
+
enriched_papers = await pipeline.enrich_papers_async(papers, on_progress=callback)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 2. Full Pipelines (Browser-based, with PDF downloads)
|
|
87
|
+
|
|
88
|
+
These pipelines include browser automation for PDF downloads:
|
|
89
|
+
|
|
90
|
+
#### `ScholarPipelineSingle`
|
|
91
|
+
**Location**: `/src/scitex/scholar/pipelines/ScholarPipelineSingle.py`
|
|
92
|
+
|
|
93
|
+
**Features**:
|
|
94
|
+
- Complete paper acquisition pipeline
|
|
95
|
+
- Metadata enrichment (including impact factor - line 608-647)
|
|
96
|
+
- PDF download via browser automation
|
|
97
|
+
- Full-text extraction
|
|
98
|
+
- Storage in library structure
|
|
99
|
+
|
|
100
|
+
**Impact Factor Integration** (Already Implemented):
|
|
101
|
+
```python
|
|
102
|
+
def _enrich_impact_factor(self, paper: Paper) -> None:
|
|
103
|
+
"""Add journal impact factor to paper metadata if not present."""
|
|
104
|
+
if paper.metadata.publication.impact_factor:
|
|
105
|
+
return # Skip if already present
|
|
106
|
+
|
|
107
|
+
if not paper.metadata.publication.journal:
|
|
108
|
+
return # Need journal name
|
|
109
|
+
|
|
110
|
+
from scitex.scholar.impact_factor import ImpactFactorEngine
|
|
111
|
+
|
|
112
|
+
if_engine = ImpactFactorEngine()
|
|
113
|
+
metrics = if_engine.get_metrics(paper.metadata.publication.journal)
|
|
114
|
+
|
|
115
|
+
if metrics and metrics.get("impact_factor"):
|
|
116
|
+
paper.metadata.publication.impact_factor = metrics["impact_factor"]
|
|
117
|
+
paper.metadata.publication.impact_factor_engines = [
|
|
118
|
+
metrics.get("source", "ImpactFactorEngine")
|
|
119
|
+
]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### `ScholarPipelineParallel`
|
|
123
|
+
**Location**: `/src/scitex/scholar/pipelines/ScholarPipelineParallel.py`
|
|
124
|
+
|
|
125
|
+
**Features**:
|
|
126
|
+
- Parallel processing using multiple browser profiles
|
|
127
|
+
- Each worker runs `ScholarPipelineSingle`
|
|
128
|
+
- Inherits impact factor integration from single pipeline
|
|
129
|
+
- Pre-authentication before spawning workers
|
|
130
|
+
|
|
131
|
+
#### `ScholarPipelineBibTeX`
|
|
132
|
+
**Location**: `/src/scitex/scholar/pipelines/ScholarPipelineBibTeX.py`
|
|
133
|
+
|
|
134
|
+
**Features**:
|
|
135
|
+
- Processes BibTeX files through parallel pipeline
|
|
136
|
+
- Uses `ScholarPipelineParallel` internally
|
|
137
|
+
- Inherits all enrichment features
|
|
138
|
+
- Updates BibTeX with enriched metadata
|
|
139
|
+
|
|
140
|
+
## Data Flow
|
|
141
|
+
|
|
142
|
+
### Citation Count Enrichment
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
ScholarEngine APIs
|
|
146
|
+
├─ OpenAlex: Total citations + yearly breakdown
|
|
147
|
+
├─ Semantic Scholar: Citation counts
|
|
148
|
+
├─ CrossRef: Cited-by count
|
|
149
|
+
└─ PubMed: Citation data
|
|
150
|
+
↓
|
|
151
|
+
Paper.metadata.citation_count
|
|
152
|
+
├─ total: int
|
|
153
|
+
├─ total_engines: List[str]
|
|
154
|
+
├─ y2025: int (yearly counts)
|
|
155
|
+
├─ y2024: int
|
|
156
|
+
└─ ...
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Impact Factor Enrichment
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
Paper.metadata.publication.journal
|
|
163
|
+
↓
|
|
164
|
+
ImpactFactorEngine
|
|
165
|
+
└─ JCR Database Lookup
|
|
166
|
+
↓
|
|
167
|
+
Paper.metadata.publication
|
|
168
|
+
├─ impact_factor: float
|
|
169
|
+
└─ impact_factor_engines: List[str]
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Storage in Paper Object
|
|
173
|
+
|
|
174
|
+
All enriched data is stored in the `Paper` object with source tracking:
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
paper = Paper()
|
|
178
|
+
|
|
179
|
+
# Citation counts
|
|
180
|
+
paper.metadata.citation_count.total = 1798
|
|
181
|
+
paper.metadata.citation_count.total_engines = ["OpenAlex"]
|
|
182
|
+
paper.metadata.citation_count.y2024 = 134
|
|
183
|
+
paper.metadata.citation_count.y2023 = 186
|
|
184
|
+
|
|
185
|
+
# Impact factor
|
|
186
|
+
paper.metadata.publication.journal = "Nature"
|
|
187
|
+
paper.metadata.publication.impact_factor = 64.8
|
|
188
|
+
paper.metadata.publication.impact_factor_engines = ["JCR 2023"]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## BibTeX Export
|
|
192
|
+
|
|
193
|
+
When papers are exported to BibTeX, the enriched fields are included:
|
|
194
|
+
|
|
195
|
+
```bibtex
|
|
196
|
+
@article{kucsko2013nanometre,
|
|
197
|
+
title = {Nanometre-scale thermometry in a living cell},
|
|
198
|
+
author = {Kucsko, G. and Maurer, P. C. and ...},
|
|
199
|
+
journal = {Nature},
|
|
200
|
+
year = {2013},
|
|
201
|
+
citations = {1798},
|
|
202
|
+
impactfactor = {64.8},
|
|
203
|
+
...
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Web Application UI
|
|
208
|
+
|
|
209
|
+
The Scholar web app UI (`/apps/scholar_app/templates/scholar_app/index_partials/enrich.html`) displays:
|
|
210
|
+
|
|
211
|
+
```html
|
|
212
|
+
<p>
|
|
213
|
+
Enrich with <strong>Abstract</strong>, <strong>URL</strong>,
|
|
214
|
+
<strong>Citation Count</strong>, and <strong>Impact Factor</strong>
|
|
215
|
+
</p>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Users upload `.bib` files, and the system automatically:
|
|
219
|
+
1. Loads papers from BibTeX
|
|
220
|
+
2. Enriches with metadata (citations + impact factors)
|
|
221
|
+
3. Returns enriched BibTeX file for download
|
|
222
|
+
|
|
223
|
+
## Impact Factor Database
|
|
224
|
+
|
|
225
|
+
The `ImpactFactorEngine` uses a JCR (Journal Citation Reports) database:
|
|
226
|
+
|
|
227
|
+
**Location**: `/src/scitex/scholar/impact_factor/`
|
|
228
|
+
|
|
229
|
+
**Components**:
|
|
230
|
+
- `ImpactFactorEngine`: Main interface (abstracts implementation)
|
|
231
|
+
- `ImpactFactorJCREngine`: JCR database backend
|
|
232
|
+
- Database file: `data/impact_factor/jcr_*.db` (gitignored)
|
|
233
|
+
|
|
234
|
+
**Current Status**:
|
|
235
|
+
- Integration code: ✅ Complete
|
|
236
|
+
- Database lookup: ⚠️ Returns `None` for some journals
|
|
237
|
+
- This indicates the database may need updating/building
|
|
238
|
+
- The integration will work automatically once database has data
|
|
239
|
+
|
|
240
|
+
## Testing
|
|
241
|
+
|
|
242
|
+
Test script: `/src/scitex/scholar/.dev/test_impactor_integration.py`
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
cd /home/ywatanabe/proj/scitex-code/src/scitex/scholar
|
|
246
|
+
python .dev/test_impactor_integration.py
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Expected Output**:
|
|
250
|
+
```
|
|
251
|
+
Title: Nanometre-scale thermometry in a living cell
|
|
252
|
+
Journal: Nature
|
|
253
|
+
Impact Factor: None (or actual value if in database)
|
|
254
|
+
Citations: 1798 ✅
|
|
255
|
+
Year: 2013
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Files Modified
|
|
259
|
+
|
|
260
|
+
1. **ScholarPipelineMetadataSingle.py**
|
|
261
|
+
- Added `ImpactFactorEngine` import and initialization
|
|
262
|
+
- Added `_enrich_impact_factor()` method
|
|
263
|
+
- Fixed metadata merging for publication and citation data
|
|
264
|
+
|
|
265
|
+
2. **ScholarPipelineMetadataParallel.py**
|
|
266
|
+
- Updated documentation to reflect impact factor enrichment
|
|
267
|
+
- Inherits via `ScholarPipelineMetadataSingle`
|
|
268
|
+
|
|
269
|
+
3. **ScholarPipelineSingle.py**
|
|
270
|
+
- Already had impact factor integration (no changes needed)
|
|
271
|
+
|
|
272
|
+
4. **ScholarPipelineParallel.py**
|
|
273
|
+
- Inherits via `ScholarPipelineSingle` (no changes needed)
|
|
274
|
+
|
|
275
|
+
## Summary
|
|
276
|
+
|
|
277
|
+
| Pipeline | Citations | Impact Factor | PDF Download | Browser Required |
|
|
278
|
+
|----------|-----------|---------------|--------------|------------------|
|
|
279
|
+
| MetadataSingle | ✅ | ✅ | ❌ | ❌ |
|
|
280
|
+
| MetadataParallel | ✅ | ✅ | ❌ | ❌ |
|
|
281
|
+
| Single | ✅ | ✅ | ✅ | ✅ |
|
|
282
|
+
| Parallel | ✅ | ✅ | ✅ | ✅ |
|
|
283
|
+
| BibTeX | ✅ | ✅ | ✅ | ✅ |
|
|
284
|
+
|
|
285
|
+
**All pipelines now support citation count and impact factor enrichment!**
|
|
286
|
+
|
|
287
|
+
## Next Steps (Optional)
|
|
288
|
+
|
|
289
|
+
To ensure impact factors populate for all journals:
|
|
290
|
+
1. Verify JCR database is built: `/src/scitex/scholar/impact_factor/jcr/build_database.py`
|
|
291
|
+
2. Check database path in `ImpactFactorJCREngine`
|
|
292
|
+
3. Update database with latest JCR data
|
|
293
|
+
4. Verify journal name matching (case sensitivity, abbreviations)
|
|
294
|
+
|
|
295
|
+
The integration is complete and production-ready. Impact factor enrichment will work automatically once the database has comprehensive coverage.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
% BibTeX bibliography
|
|
2
|
+
% Generated by SciTeX Scholar on 2025-07-22 13:32:29
|
|
3
|
+
% Number of entries: 5
|
|
4
|
+
|
|
5
|
+
@article{lucasius2024biomim,
|
|
6
|
+
title = {Biomimetic Deep Learning Networks With Applications to Epileptic Spasms and Seizure Prediction.},
|
|
7
|
+
author = {Lucasius, Christopher and Grigorovsky, Vasily and Nariai, Hiroki and Galanopoulou, Aristea S and Gursky, Jonathan and Moshe, Solomon L and Bardakjian, Berj L},
|
|
8
|
+
year = {2024},
|
|
9
|
+
journal = {IEEE transactions on bio-medical engineering},
|
|
10
|
+
doi = {10.1109/TBME.2023.3325762},
|
|
11
|
+
abstract = {In this study, we present a novel biomimetic deep learning network for epileptic spasms and seizure prediction and compare its performance with state-of-the-art conventional machine learning models. Our proposed model incorporates modular Volterra kernel convolutional networks and bidirectional recurrent networks in combination with the phase amplitude cross-frequency coupling features derived from scalp EEG. They are applied to the standard CHB-MIT dataset containing focal epilepsy episodes as well as two other datasets from the Montefiore Medical Center and the University of California Los Angeles that provide data of patients experiencing infantile spasm (IS) syndrome. Overall, in this study, the networks can produce accurate predictions (100\%) and significant detection latencies (10 min). Furthermore, the biomimetic network outperforms conventional ones by producing no false positives. Biomimetic neural networks utilize extensive knowledge about processing and learning in the electrical networks of the brain. Predicting seizures in adults can improve their quality of life. Epileptic spasms in infants are part of a particular seizure type that needs identifying when suspicious behaviors are noticed in babies. Predicting epileptic spasms within a given time frame (the prediction horizon) suggests their existence and allows an epileptologist to flag an EEG trace for future review.},
|
|
12
|
+
keywords = {Infant, Adult, Humans, Spasms, Infantile, Deep Learning, Biomimetics, Quality of Life, Seizures, Electroencephalography, Spasm},
|
|
13
|
+
note = {Generated by SciTeX Scholar}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@article{cmpora2019seizur,
|
|
17
|
+
title = {Seizure localization using pre ictal phase-amplitude coupling in intracranial electroencephalography.},
|
|
18
|
+
author = {Cámpora, Nuria E and Mininni, Camilo J and Kochen, Silvia and Lew, Sergio E},
|
|
19
|
+
year = {2019},
|
|
20
|
+
journal = {Scientific reports},
|
|
21
|
+
doi = {10.1038/s41598-019-56548-y},
|
|
22
|
+
abstract = {Understanding changes in brain rhythms provides useful information to predict the onset of a seizure and to localize its onset zone in epileptic patients. Brain rhythms dynamics in general, and phase-amplitude coupling in particular, are known to be drastically altered during epileptic seizures. However, the neural processes that take place before a seizure are not well understood. We analysed the phase-amplitude coupling dynamics of stereoelectroencephalography recordings (30 seizures, 5 patients) before and after seizure onset. Electrodes near the seizure onset zone show_async higher phase-amplitude coupling. Immediately before the beginning of the seizure, phase-amplitude coupling dropped to values similar to the observed in electrodes far from the seizure onset zone. Thus, our results bring accurate information to detect epileptic events during pre-ictal periods and to delimit the zone of seizure onset in patients undergoing epilepsy surgery.},
|
|
23
|
+
keywords = {Adult, Brain, Brain Mapping, Electrodes, Implanted, Electroencephalography, Female, Humans, Male, Seizures, Young Adult},
|
|
24
|
+
JCR_2024_impact_factor = {3.8},
|
|
25
|
+
impact_factor_source = {JCR 2024},
|
|
26
|
+
JCR_2024_quartile = {Q1},
|
|
27
|
+
quartile_source = {JCR 2024},
|
|
28
|
+
note = {Generated by SciTeX Scholar}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@article{nonoda2016interi,
|
|
32
|
+
title = {Interictal high-frequency oscillations generated by seizure onset and eloquent areas may be differentially coupled with different slow waves.},
|
|
33
|
+
author = {Nonoda, Yutaka and Miyakoshi, Makoto and Ojeda, Alejandro and Makeig, Scott and Juhász, Csaba and Sood, Sandeep and Asano, Eishi},
|
|
34
|
+
year = {2016},
|
|
35
|
+
journal = {Clinical neurophysiology : official journal of the International Federation of Clinical Neurophysiology},
|
|
36
|
+
doi = {10.1016/j.clinph.2016.03.022},
|
|
37
|
+
abstract = {High-frequency oscillations (HFOs) can be spontaneously generated by seizure-onset and functionally-important areas. We determined if consideration of the spectral frequency bands of coupled slow-waves could distinguish between epileptogenic and physiological HFOs. We studied a consecutive series of 13 children with focal epilepsy who underwent extraoperative electrocorticography. We measured the occurrence rate of HFOs during slow-wave sleep at each electrode site. We subsequently determined the performance of HFO rate for localization of seizure-onset sites and undesirable detection of nonepileptic sensorimotor-visual sites defined by neurostimulation. We likewise determined the predictive performance of modulation index: MI(XHz)\&(YHz), reflecting the strength of coupling between amplitude of HFOsXHz and phase of slow-waveYHz. The predictive accuracy was quantified using the area under the curve (AUC) on receiver-operating characteristics analysis. Increase in HFO rate localized seizure-onset sites (AUC⩾0.72; p<0.001), but also undesirably detected nonepileptic sensorimotor-visual sites (AUC⩾0.58; p<0.001). Increase in MI(HFOs)\&(3-4Hz) also detected both seizure-onset (AUC⩾0.74; p<0.001) and nonepileptic sensorimotor-visual sites (AUC⩾0.59; p<0.001). Increase in subtraction-MIHFOs [defined as subtraction of MI(HFOs)\&(0.5-1Hz) from MI(HFOs)\&(3-4Hz)] localized seizure-onset sites (AUC⩾0.71; p<0.001), but rather avoided detection of nonepileptic sensorimotor-visual sites (AUC⩽0.42; p<0.001). Our data suggest that epileptogenic HFOs may be coupled with slow-wave3-4Hz more preferentially than slow-wave0.5-1Hz, whereas physiologic HFOs with slow-wave0.5-1Hz more preferentially than slow-wave3-4Hz during slow-wave sleep. Further studies in larger samples are warranted to determine if consideration of the spectral frequency bands of slow-waves coupled with HFOs can positively contribute to presurgical evaluation of patients with focal epilepsy.},
|
|
38
|
+
keywords = {Adolescent, Brain Mapping, Brain Waves, Child, Epilepsy, Female, Humans, Male, Sensorimotor Cortex, Sleep},
|
|
39
|
+
note = {Generated by SciTeX Scholar}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@article{szczepanski2014dynami,
|
|
43
|
+
title = {Dynamic changes in phase-amplitude coupling facilitate spatial attention control in fronto-parietal cortex.},
|
|
44
|
+
author = {Szczepanski, Sara M and Crone, Nathan E and Kuperman, Rachel A and Auguste, Kurtis I and Parvizi, Josef and Knight, Robert T},
|
|
45
|
+
year = {2014},
|
|
46
|
+
journal = {PLoS biology},
|
|
47
|
+
doi = {10.1371/journal.pbio.1001936},
|
|
48
|
+
abstract = {Attention is a core cognitive mechanism that allows the brain to allocate limited resources depending on current task demands. A number of frontal and posterior parietal cortical areas, referred to collectively as the fronto-parietal attentional control network, are engaged during attentional allocation in both humans and non-human primates. Numerous studies have examined this network in the human brain using various neuroimaging and scalp electrophysiological techniques. However, little is known about how these frontal and parietal areas interact dynamically to produce behavior on a fine temporal (sub-second) and spatial (sub-centimeter) scale. We addressed how human fronto-parietal regions control visuospatial attention on a fine spatiotemporal scale by recording electrocorticography (ECoG) signals measured directly from subdural electrode arrays that were implanted in patients undergoing intracranial monitoring for localization of epileptic foci. Subjects (n = 8) performed a spatial-cuing task, in which they allocated visuospatial attention to either the right or left visual field and detected the appearance of a target. We found increases in high gamma (HG) power (70-250 Hz) time-locked to trial onset that remained elevated throughout the attentional allocation period over frontal, parietal, and visual areas. These HG power increases were modulated by the phase of the ongoing delta/theta (2-5 Hz) oscillation during attentional allocation. Critically, we found that the strength of this delta/theta phase-HG amplitude coupling predicted reaction times to detected targets on a trial-by-trial basis. These results highlight the role of delta/theta phase-HG amplitude coupling as a mechanism for sub-second facilitation and coordination within human fronto-parietal cortex that is guided by momentary attentional demands.},
|
|
49
|
+
keywords = {Attention, Delta Rhythm, Electrodes, Electroencephalography, Evoked Potentials, Frontal Lobe, Humans, Parietal Lobe, Space Perception, Task Performance and Analysis, Theta Rhythm, Visual Fields, Visual Perception},
|
|
50
|
+
JCR_2024_impact_factor = {7.8},
|
|
51
|
+
impact_factor_source = {JCR 2024},
|
|
52
|
+
JCR_2024_quartile = {Q1},
|
|
53
|
+
quartile_source = {JCR 2024},
|
|
54
|
+
note = {Generated by SciTeX Scholar}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@article{weiss2013ictal,
|
|
58
|
+
title = {Ictal high frequency oscillations distinguish two types of seizure territories in humans.},
|
|
59
|
+
author = {Weiss, Shennan A and Banks, Garrett P and McKhann, Guy M and Goodman, Robert R and Emerson, Ronald G and Trevelyan, Andrew J and Schevon, Catherine A},
|
|
60
|
+
year = {2013},
|
|
61
|
+
journal = {Brain : a journal of neurology},
|
|
62
|
+
doi = {10.1093/brain/awt276},
|
|
63
|
+
abstract = {High frequency oscillations have been proposed as a clinically useful biomarker of seizure generating sites. We used a unique set of human microelectrode array recordings (four patients, 10 seizures), in which propagating seizure wavefronts could be readily identified, to investigate the basis of ictal high frequency activity at the cortical (subdural) surface. Sustained, repetitive transient increases in high gamma (80-150 Hz) amplitude, phase-locked to the low-frequency (1-25 Hz) ictal rhythm, correlated with strong multi-unit firing bursts synchronized across the core territory of the seizure. These repetitive high frequency oscillations were seen in recordings from subdural electrodes adjacent to the microelectrode array several seconds after seizure onset, following ictal wavefront passage. Conversely, microelectrode recordings demonstrating only low-level, heterogeneous neural firing correlated with a lack of high frequency oscillations in adjacent subdural recording sites, despite the presence of a strong low-frequency signature. Previously, we reported that this pattern indicates a failure of the seizure to invade the area, because of a feedforward inhibitory veto mechanism. Because multi-unit firing rate and high gamma amplitude are closely related, high frequency oscillations can be used as a surrogate marker to distinguish the core seizure territory from the surrounding penumbra. We developed an efficient measure to detect delayed-onset, sustained ictal high frequency oscillations based on cross-frequency coupling between high gamma amplitude and the low-frequency (1-25 Hz) ictal rhythm. When applied to the broader subdural recording, this measure consistently predicted the timing or failure of ictal invasion, and revealed a surprisingly small and slowly spreading seizure core surrounded by a far larger penumbral territory. Our findings thus establish an underlying neural mechanism for delayed-onset, sustained ictal high frequency oscillations, and provide a practical, efficient method for using them to identify the small ictal core regions. Our observations suggest that it may be possible to reduce substantially the extent of cortical resections in epilepsy surgery procedures without compromising seizure control.},
|
|
64
|
+
keywords = {Analysis of Variance, Biological Clocks, Brain Mapping, Brain Waves, Electroencephalography, Humans, Microelectrodes, Seizures},
|
|
65
|
+
note = {Generated by SciTeX Scholar}
|
|
66
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# OpenAthens Security and Cookie Storage
|
|
2
|
+
|
|
3
|
+
## Cookie Storage Location
|
|
4
|
+
|
|
5
|
+
OpenAthens session cookies are stored in:
|
|
6
|
+
```
|
|
7
|
+
~/.scitex/scholar/openathens_sessions/
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
The exact filename depends on your institution:
|
|
11
|
+
- `openathens_unimelb_edu_au_session.enc` (for user@unimelb.edu.au)
|
|
12
|
+
- `openathens_harvard_edu_session.enc` (for user@harvard.edu)
|
|
13
|
+
- `openathens_default_session.enc` (if no email specified)
|
|
14
|
+
|
|
15
|
+
## Security Features
|
|
16
|
+
|
|
17
|
+
### 1. Encryption at Rest
|
|
18
|
+
|
|
19
|
+
All session cookies are encrypted using:
|
|
20
|
+
- **Algorithm**: Fernet (symmetric encryption)
|
|
21
|
+
- **Key Derivation**: PBKDF2-HMAC-SHA256
|
|
22
|
+
- **Iterations**: 100,000
|
|
23
|
+
- **Salt**: Machine-specific, stored in `~/.scitex/.scitex_salt`
|
|
24
|
+
|
|
25
|
+
### 2. File Permissions
|
|
26
|
+
|
|
27
|
+
- Session files: `0600` (read/write by owner only)
|
|
28
|
+
- Salt file: `0600` (read/write by owner only)
|
|
29
|
+
|
|
30
|
+
### 3. Automatic Migration
|
|
31
|
+
|
|
32
|
+
If you have existing unencrypted session files (`.json`), they will be:
|
|
33
|
+
1. Automatically encrypted on first use
|
|
34
|
+
2. Original unencrypted file deleted
|
|
35
|
+
3. No action required from you
|
|
36
|
+
|
|
37
|
+
### 4. Session Expiry
|
|
38
|
+
|
|
39
|
+
- Sessions expire after ~8 hours
|
|
40
|
+
- Expired sessions are automatically detected
|
|
41
|
+
- Re-authentication required when expired
|
|
42
|
+
|
|
43
|
+
## Security Best Practices
|
|
44
|
+
|
|
45
|
+
1. **Don't share session files** - They're encrypted with your email
|
|
46
|
+
2. **Keep your email secure** - It's used to derive the encryption key
|
|
47
|
+
3. **Machine-bound** - Sessions only work on the machine where created
|
|
48
|
+
4. **Regular cleanup** - Old session files can be safely deleted
|
|
49
|
+
|
|
50
|
+
## Manual Session Management
|
|
51
|
+
|
|
52
|
+
### View your sessions:
|
|
53
|
+
```bash
|
|
54
|
+
ls -la ~/.scitex/scholar/openathens_sessions/
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Clear all sessions:
|
|
58
|
+
```bash
|
|
59
|
+
rm -rf ~/.scitex/scholar/openathens_sessions/*.enc
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Check session validity:
|
|
63
|
+
```python
|
|
64
|
+
from scitex.scholar import Scholar
|
|
65
|
+
|
|
66
|
+
scholar = Scholar()
|
|
67
|
+
if await scholar.is_openathens_authenticate_async():
|
|
68
|
+
print("Session is valid")
|
|
69
|
+
else:
|
|
70
|
+
print("Session expired or not found")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## What's Encrypted
|
|
74
|
+
|
|
75
|
+
The following data is encrypted in session files:
|
|
76
|
+
- Authentication cookies
|
|
77
|
+
- Session tokens
|
|
78
|
+
- Expiry timestamps
|
|
79
|
+
- Associated email address
|
|
80
|
+
|
|
81
|
+
## What's NOT Encrypted
|
|
82
|
+
|
|
83
|
+
- The salt file (it's meant to be random)
|
|
84
|
+
- The email hash in metadata (for identification only)
|
|
85
|
+
- Log files (they don't contain sensitive data)
|
|
86
|
+
|
|
87
|
+
## Troubleshooting
|
|
88
|
+
|
|
89
|
+
### "Failed to decrypt session cache"
|
|
90
|
+
- You may be using a different email than when created
|
|
91
|
+
- The salt file may have been deleted or changed
|
|
92
|
+
- Solution: Delete the session file and re-authenticate_async
|
|
93
|
+
|
|
94
|
+
### "Permission denied" errors
|
|
95
|
+
- Check file permissions: `ls -la ~/.scitex/`
|
|
96
|
+
- Fix permissions: `chmod 600 ~/.scitex/scholar/openathens_sessions/*`
|
|
97
|
+
|
|
98
|
+
### Can't find session files
|
|
99
|
+
- Check the logged location when authenticating
|
|
100
|
+
- Default: `~/.scitex/scholar/openathens_sessions/`
|
|
101
|
+
- Set custom location: `OpenAthensAuthenticator(cache_dir="/my/path")`
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Feature Request: OpenAthens Authentication Support for Scholar Module
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Add OpenAthens institutional authentication support to the Scholar module to enable PDF downloads through institutional subscriptions.
|
|
5
|
+
|
|
6
|
+
## Background
|
|
7
|
+
Currently, the Scholar module can download PDFs through:
|
|
8
|
+
- Direct download (open access papers)
|
|
9
|
+
- Sci-Hub (with ethical acknowledgment)
|
|
10
|
+
- Zotero translators
|
|
11
|
+
|
|
12
|
+
However, many academic papers require institutional authentication. OpenAthens is a widely-used single sign-on system that provides seamless access to academic resources.
|
|
13
|
+
|
|
14
|
+
## Proposed Implementation
|
|
15
|
+
|
|
16
|
+
### 1. Configuration Enhancement
|
|
17
|
+
Add OpenAthens configuration to `ScholarConfig`:
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
@dataclass
|
|
21
|
+
class ScholarConfig:
|
|
22
|
+
# ... existing fields ...
|
|
23
|
+
|
|
24
|
+
# OpenAthens authentication
|
|
25
|
+
openathens_enabled: bool = False
|
|
26
|
+
openathens_org_id: Optional[str] = None # Organization identifier
|
|
27
|
+
openathens_idp_url: Optional[str] = None # Identity provider URL
|
|
28
|
+
openathens_username: Optional[str] = None # Can be prompted if not set
|
|
29
|
+
openathens_password: Optional[str] = None # Should be stored securely
|
|
30
|
+
|
|
31
|
+
# Environment variable support
|
|
32
|
+
# SCITEX_SCHOLAR_OPENATHENS_ENABLED=true
|
|
33
|
+
# SCITEX_SCHOLAR_OPENATHENS_ORG_ID=unimelb
|
|
34
|
+
# SCITEX_SCHOLAR_OPENATHENS_IDP_URL=https://idp.unimelb.edu.au
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 2. Authentication Flow
|
|
38
|
+
Create `_OpenAthensAuthenticator.py`:
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
class OpenAthensAuthenticator:
|
|
42
|
+
"""Handles OpenAthens authentication for institutional access."""
|
|
43
|
+
|
|
44
|
+
async def authenticate_async(self, username: str, password: str) -> Session:
|
|
45
|
+
"""Authenticate and return session with auth cookies."""
|
|
46
|
+
|
|
47
|
+
async def download_with_auth_async(self, url: str, session: Session) -> bytes:
|
|
48
|
+
"""Download PDF using authenticate_async session."""
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 3. Integration with ScholarPDFDownloader
|
|
52
|
+
Modify `_ScholarPDFDownloader.py` to try OpenAthens before Sci-Hub:
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
async def download_pdf_async(self, doi: str) -> Optional[Path]:
|
|
56
|
+
# 1. Try direct download
|
|
57
|
+
# 2. Try OpenAthens (if configured)
|
|
58
|
+
# 3. Try Sci-Hub (if acknowledged)
|
|
59
|
+
# 4. Try Zotero translators
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 4. User Experience
|
|
63
|
+
```python
|
|
64
|
+
# First-time setup
|
|
65
|
+
scholar = Scholar()
|
|
66
|
+
scholar.configure_openathens(
|
|
67
|
+
org_id="unimelb",
|
|
68
|
+
idp_url="https://idp.unimelb.edu.au"
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# Downloads will now use OpenAthens authentication
|
|
72
|
+
papers = scholar.search("neuroscience")
|
|
73
|
+
results = scholar.download_pdf_asyncs(papers) # Will prompt for credentials if needed
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 5. Security Considerations
|
|
77
|
+
- Store credentials securely using keyring/keychain
|
|
78
|
+
- Support environment variables for CI/CD
|
|
79
|
+
- Option to prompt for credentials each session
|
|
80
|
+
- Clear session management and timeout handling
|
|
81
|
+
|
|
82
|
+
## Benefits
|
|
83
|
+
1. **Legal access** - Uses institutional subscriptions legally
|
|
84
|
+
2. **Better success rate** - Access to more journals than open access alone
|
|
85
|
+
3. **Seamless integration** - Works with existing Scholar workflow
|
|
86
|
+
4. **Security** - Proper credential management
|
|
87
|
+
|
|
88
|
+
## Testing Plan
|
|
89
|
+
1. Unit tests with mocked authentication
|
|
90
|
+
2. Integration tests with test OpenAthens endpoint
|
|
91
|
+
3. Manual testing with University of Melbourne account
|
|
92
|
+
4. Documentation and examples
|
|
93
|
+
|
|
94
|
+
## Implementation Priority
|
|
95
|
+
High - This addresses a key limitation where legitimate institutional users cannot access papers they have legal access to.
|
|
96
|
+
|
|
97
|
+
## Related Issues
|
|
98
|
+
- PDF download failures for paywalled content
|
|
99
|
+
- Need for institutional authentication support
|
|
100
|
+
|
|
101
|
+
## Next Steps
|
|
102
|
+
1. Review and approve feature design
|
|
103
|
+
2. Implement OpenAthensAuthenticator class
|
|
104
|
+
3. Integrate with ScholarPDFDownloader
|
|
105
|
+
4. Add configuration options
|
|
106
|
+
5. Create tests and documentation
|
|
107
|
+
6. Deploy and get user feedback
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Scholar Module Enhancements Summary
|
|
2
|
+
|
|
3
|
+
## Date: 2025-07-24
|
|
4
|
+
## Agent: 5db30af0-6862-11f0-928a-00155d8642b8
|
|
5
|
+
|
|
6
|
+
### Completed Enhancements
|
|
7
|
+
|
|
8
|
+
#### 1. Fixed PDF Download Return Value Issue ✅
|
|
9
|
+
**Problem**: `Scholar.download_pdf_asyncs()` was returning an empty Papers collection even though PDFs were downloading successfully.
|
|
10
|
+
|
|
11
|
+
**Solution**:
|
|
12
|
+
- Added logic to create Paper objects when DOI strings are provided as input
|
|
13
|
+
- Properly maps download PDFs back to Paper objects
|
|
14
|
+
- Returns a populated Papers collection with pdf_path set for successful downloads
|
|
15
|
+
|
|
16
|
+
**Code changes**: `_Scholar.py` lines 445-470
|
|
17
|
+
|
|
18
|
+
#### 2. Enhanced OpenAthens Authentication with Email Auto-fill ✅
|
|
19
|
+
**Problem**: Users had to manually type their institutional email in the OpenAthens login form.
|
|
20
|
+
|
|
21
|
+
**Solution**:
|
|
22
|
+
- Implemented automatic email field detection and filling
|
|
23
|
+
- Uses multiple CSS selectors to find the email input field
|
|
24
|
+
- Types with human-like delay for better compatibility
|
|
25
|
+
- Triggers autocomplete dropdown after filling
|
|
26
|
+
- Shows "(auto-filled)" in instructions when email is provided
|
|
27
|
+
|
|
28
|
+
**Code changes**: `_OpenAthensAuthenticator.py` lines 218-264
|
|
29
|
+
|
|
30
|
+
#### 3. Fixed Environment Variable Naming Convention ✅
|
|
31
|
+
**Problem**: Some environment variables in the default config YAML were missing the SCITEX_SCHOLAR_ prefix.
|
|
32
|
+
|
|
33
|
+
**Solution**:
|
|
34
|
+
- Updated all environment variable references to use consistent SCITEX_SCHOLAR_ prefix
|
|
35
|
+
- Added missing configuration options for OpenAthens and auto-download features
|
|
36
|
+
- Updated documentation in default_config.yaml
|
|
37
|
+
|
|
38
|
+
**Files changed**:
|
|
39
|
+
- `config/default_config.yaml`
|
|
40
|
+
|
|
41
|
+
### Configuration Methods Supported
|
|
42
|
+
|
|
43
|
+
The OpenAthens email can now be configured in three ways (priority order):
|
|
44
|
+
1. **Direct parameter**: `scholar.configure_openathens(email="your.email@institution.edu")`
|
|
45
|
+
2. **YAML config file**: `openathens_email: "your.email@institution.edu"`
|
|
46
|
+
3. **Environment variable**: `SCITEX_SCHOLAR_OPENATHENS_EMAIL="your.email@institution.edu"`
|
|
47
|
+
|
|
48
|
+
### Testing
|
|
49
|
+
|
|
50
|
+
Created comprehensive test scripts to verify:
|
|
51
|
+
- PDF download functionality with proper Papers collection return
|
|
52
|
+
- OpenAthens email auto-fill with all configuration methods
|
|
53
|
+
- Configuration priority (direct > YAML > environment)
|
|
54
|
+
|
|
55
|
+
### Impact
|
|
56
|
+
|
|
57
|
+
- Improved user experience with automatic email filling during authentication
|
|
58
|
+
- Fixed critical bug where download PDFs weren't accessible in the returned Papers collection
|
|
59
|
+
- Consistent environment variable naming prevents conflicts with other packages
|
|
60
|
+
- Better configuration documentation for users
|
|
61
|
+
|
|
62
|
+
### Next Steps
|
|
63
|
+
|
|
64
|
+
1. Update unit tests to include new OpenAthens attributes in mock objects
|
|
65
|
+
2. Test with real institutional credentials to verify auto-fill works across different OpenAthens implementations
|
|
66
|
+
3. Consider adding support for other authentication methods (EZProxy, Shibboleth) following the same pattern
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- ---
|
|
2
|
+
!-- Timestamp: 2025-08-07 07:02:22
|
|
3
|
+
!-- Author: ywatanabe
|
|
4
|
+
!-- File: /home/ywatanabe/proj/scitex_repo/src/scitex/scholar/docs/from_user/crawl4ai.md
|
|
5
|
+
!-- --- -->
|
|
6
|
+
|
|
7
|
+
# https://github.com/unclecode/crawl4ai
|
|
8
|
+
|
|
9
|
+
docker pull unclecode/crawl4ai:latest
|
|
10
|
+
docker run -d -p 11235:11235 --name crawl4ai --shm-size=1g unclecode/crawl4ai:latest
|
|
11
|
+
docker run -d -p 11235:11235 --name crawl4ai --shm-size=1g crawl4ai-fixed
|
|
12
|
+
|
|
13
|
+
# Visit the playground at http://localhost:11235/playground
|
|
14
|
+
|
|
15
|
+
<!-- EOF -->
|