scitex 2.10.3__py3-none-any.whl → 2.13.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/__init__.py +1 -4
- scitex/__main__.py +24 -5
- scitex/__version__.py +1 -1
- scitex/_install_guide.py +14 -2
- scitex/_optional_deps.py +33 -0
- scitex/ai/classification/reporters/_ClassificationReporter.py +1 -1
- scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +2 -2
- scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +2 -2
- scitex/ai/classification/timeseries/_normalize_timestamp.py +1 -1
- scitex/ai/metrics/_calc_seizure_prediction_metrics.py +1 -1
- scitex/ai/plt/_plot_feature_importance.py +1 -1
- scitex/ai/plt/_plot_learning_curve.py +1 -1
- scitex/ai/plt/_plot_optuna_study.py +1 -1
- scitex/ai/plt/_plot_pre_rec_curve.py +1 -1
- scitex/ai/plt/_plot_roc_curve.py +1 -1
- scitex/ai/plt/_stx_conf_mat.py +1 -1
- scitex/ai/training/_LearningCurveLogger.py +1 -1
- scitex/audio/mcp_server.py +38 -8
- scitex/bridge/_figrecipe.py +1 -1
- scitex/bridge/_helpers.py +1 -1
- scitex/bridge/_plt_vis.py +1 -1
- scitex/bridge/_stats_plt.py +1 -1
- scitex/bridge/_stats_vis.py +2 -2
- scitex/browser/automation/CookieHandler.py +1 -1
- scitex/browser/core/BrowserMixin.py +1 -1
- scitex/browser/core/ChromeProfileManager.py +1 -1
- scitex/browser/debugging/_browser_logger.py +1 -1
- scitex/browser/debugging/_highlight_element.py +1 -1
- scitex/browser/debugging/_show_grid.py +1 -1
- scitex/browser/interaction/click_center.py +1 -1
- scitex/browser/interaction/click_with_fallbacks.py +1 -1
- scitex/browser/interaction/close_popups.py +1 -1
- scitex/browser/interaction/fill_with_fallbacks.py +1 -1
- scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +1 -1
- scitex/browser/pdf/detect_chrome_pdf_viewer.py +1 -1
- scitex/browser/stealth/HumanBehavior.py +1 -1
- scitex/browser/stealth/StealthManager.py +1 -1
- scitex/{fig → canvas}/__init__.py +84 -96
- scitex/canvas/_mcp_handlers.py +372 -0
- scitex/canvas/_mcp_tool_schemas.py +219 -0
- scitex/{fig → canvas}/backend/_parser.py +1 -1
- scitex/{fig → canvas}/canvas.py +13 -14
- scitex/{fts/_fig/_editor → canvas/editor}/_defaults.py +2 -2
- scitex/{fig → canvas}/editor/edit/__init__.py +11 -14
- scitex/{fig → canvas}/editor/edit/bundle_resolver.py +56 -48
- scitex/{fig → canvas}/editor/edit/editor_launcher.py +79 -26
- scitex/{fts/_fig/_editor/_cui/_panel_loader.py → canvas/editor/edit/panel_loader.py} +8 -8
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_bbox.py +2 -1
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_core.py +84 -84
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_renderer.py +7 -6
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/static/css/features/canvas.css +2 -2
- scitex/{fig → canvas}/editor/flask_editor/static/css/features/panel-grid.css +1 -1
- scitex/{fig → canvas}/editor/flask_editor/static/js/core/api.js +3 -4
- scitex/{fig → canvas}/editor/flask_editor/static/js/editor/preview.js +5 -5
- scitex/{fig → canvas}/editor/flask_editor/templates/_html.py +3 -3
- scitex/{fig → canvas}/editor/flask_editor/templates/_scripts.py +10 -10
- scitex/{fig → canvas}/editor/flask_editor/templates/_styles.py +3 -3
- scitex/{fig → canvas}/io/__init__.py +32 -38
- scitex/{fig → canvas}/io/_bundle.py +217 -154
- scitex/{fig → canvas}/io/_canvas.py +1 -1
- scitex/{fig → canvas}/io/_data.py +1 -1
- scitex/{fig → canvas}/io/_export.py +1 -1
- scitex/{fig → canvas}/io/_load.py +1 -1
- scitex/{fig → canvas}/io/_panel.py +1 -1
- scitex/{fig → canvas}/io/_save.py +1 -1
- scitex/canvas/mcp_server.py +151 -0
- scitex/{fig → canvas}/model/__init__.py +1 -1
- scitex/{fig → canvas}/model/_annotations.py +1 -1
- scitex/{fig → canvas}/model/_axes.py +1 -1
- scitex/{fig → canvas}/model/_figure.py +1 -1
- scitex/{fig → canvas}/model/_guides.py +1 -1
- scitex/{fig → canvas}/model/_plot.py +1 -1
- scitex/{fig → canvas}/model/_styles.py +1 -1
- scitex/{fig → canvas}/utils/__init__.py +1 -1
- scitex/capture/mcp_server.py +41 -12
- scitex/cli/audio.py +233 -0
- scitex/cli/capture.py +307 -0
- scitex/cli/convert.py +10 -6
- scitex/cli/main.py +27 -4
- scitex/cli/repro.py +233 -0
- scitex/cli/resource.py +240 -0
- scitex/cli/stats.py +325 -0
- scitex/cli/template.py +236 -0
- scitex/cli/tex.py +286 -0
- scitex/cli/web.py +11 -12
- scitex/dev/__init__.py +3 -0
- scitex/dev/_pyproject.py +405 -0
- scitex/dev/plt/__init__.py +2 -2
- scitex/dev/plt/mpl/get_dir_ax.py +1 -1
- scitex/dev/plt/mpl/get_signatures.py +1 -1
- scitex/dev/plt/mpl/get_signatures_details.py +1 -1
- scitex/diagram/README.md +7 -7
- scitex/diagram/_mcp_handlers.py +400 -0
- scitex/diagram/_mcp_tool_schemas.py +157 -0
- scitex/diagram/mcp_server.py +151 -0
- scitex/dsp/_demo_sig.py +51 -5
- scitex/dsp/_mne.py +13 -2
- scitex/dsp/_modulation_index.py +15 -3
- scitex/dsp/_pac.py +23 -5
- scitex/dsp/_psd.py +16 -4
- scitex/dsp/_resample.py +24 -4
- scitex/dsp/_transform.py +16 -3
- scitex/dsp/add_noise.py +15 -1
- scitex/dsp/norm.py +17 -2
- scitex/dsp/reference.py +17 -1
- scitex/dsp/utils/_differential_bandpass_filters.py +20 -2
- scitex/dsp/utils/_zero_pad.py +18 -4
- scitex/dt/_normalize_timestamp.py +1 -1
- scitex/git/_session.py +1 -1
- scitex/io/__init__.py +7 -19
- scitex/io/_load.py +15 -19
- scitex/io/_load_modules/_canvas.py +2 -2
- scitex/io/_load_modules/_con.py +17 -6
- scitex/io/_load_modules/_eeg.py +28 -13
- scitex/io/_load_modules/_optuna.py +21 -63
- scitex/io/_load_modules/_torch.py +11 -3
- scitex/io/_save.py +11 -16
- scitex/io/_save_modules/__init__.py +6 -10
- scitex/io/_save_modules/_canvas.py +3 -3
- scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +13 -2
- scitex/io/_save_modules/_plot_bundle.py +112 -0
- scitex/io/_save_modules/{_pltz_stx.py → _plot_scitex.py} +7 -7
- scitex/io/_save_modules/_stx_bundle.py +16 -16
- scitex/io/_save_modules/_torch.py +11 -3
- scitex/io/bundle/README.md +89 -80
- scitex/{fts/_bundle/_FTS.py → io/bundle/_Bundle.py} +197 -95
- scitex/io/bundle/__init__.py +67 -35
- scitex/{fts/_bundle → io/bundle}/_children.py +32 -40
- scitex/io/bundle/_core.py +184 -97
- scitex/{fts/_bundle/_dataclasses/_Node.py → io/bundle/_dataclasses/_Spec.py} +29 -23
- scitex/{fts/_bundle/_dataclasses/_NodeRefs.py → io/bundle/_dataclasses/_SpecRefs.py} +6 -6
- scitex/{fts/_bundle → io/bundle}/_dataclasses/__init__.py +4 -4
- scitex/{fts/_bundle → io/bundle}/_loader.py +19 -19
- scitex/io/bundle/_manifest.py +99 -0
- scitex/{fts/_bundle → io/bundle}/_mpl_helpers.py +119 -28
- scitex/io/bundle/_nested.py +113 -100
- scitex/{fts/_bundle → io/bundle}/_saver.py +13 -14
- scitex/{fts/_bundle → io/bundle}/_storage.py +3 -3
- scitex/io/bundle/_types.py +41 -16
- scitex/{fts/_bundle → io/bundle}/_validation.py +20 -18
- scitex/io/bundle/_zip.py +21 -31
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_backend/_parser.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Annotations.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Axes.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Figure.py +1 -1
- scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_Guides.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Plot.py +1 -1
- scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_Styles.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_utils/_plot_layout.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/__init__.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_editor/_app.py +1 -1
- scitex/{fts/_tables → io/bundle/kinds/_table}/_latex/_export.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_figure_exporter.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_table_exporter.py +1 -1
- scitex/io/bundle/schemas/__init__.py +30 -0
- scitex/mcp_server.py +159 -0
- scitex/parallel/_run.py +5 -4
- scitex/path/_find.py +60 -83
- scitex/path/_get_module_path.py +23 -21
- scitex/path/_get_spath.py +6 -27
- scitex/path/_getsize.py +23 -9
- scitex/path/_increment_version.py +31 -38
- scitex/path/_mk_spath.py +26 -29
- scitex/path/_path.py +5 -12
- scitex/path/_split.py +27 -15
- scitex/path/_this_path.py +23 -9
- scitex/plt/_mcp_handlers.py +361 -0
- scitex/plt/_mcp_tool_schemas.py +169 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +2 -1
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +2 -2
- scitex/plt/gallery/_generate.py +76 -50
- scitex/plt/io/__init__.py +17 -19
- scitex/plt/io/_bundle.py +99 -52
- scitex/plt/io/_layered_bundle.py +303 -168
- scitex/plt/mcp_server.py +205 -0
- scitex/plt/utils/_csv_column_naming.py +250 -118
- scitex/repro/README_RandomStateManager.md +3 -3
- scitex/repro/_RandomStateManager.py +14 -14
- scitex/repro/_gen_ID.py +1 -1
- scitex/repro/_gen_timestamp.py +1 -1
- scitex/repro/_hash_array.py +4 -4
- scitex/schema/__init__.py +69 -73
- scitex/schema/_canvas.py +1 -1
- scitex/schema/_stats.py +2 -2
- scitex/scholar/__main__.py +24 -2
- scitex/scholar/_mcp_handlers.py +685 -0
- scitex/scholar/_mcp_tool_schemas.py +339 -0
- scitex/scholar/docs/template.py +1 -1
- scitex/scholar/examples/07_storage_integration.py +1 -1
- scitex/scholar/impact_factor/jcr/ImpactFactorJCREngine.py +1 -1
- scitex/scholar/impact_factor/jcr/build_database.py +1 -1
- scitex/scholar/mcp_server.py +315 -0
- scitex/scholar/pdf_download/ScholarPDFDownloader.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineBibTeX.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineParallel.py +1 -1
- scitex/scholar/pipelines/ScholarPipelineSingle.py +1 -1
- scitex/scholar/storage/PaperIO.py +1 -1
- scitex/session/README.md +4 -4
- scitex/session/__init__.py +1 -1
- scitex/session/_decorator.py +9 -9
- scitex/session/_lifecycle.py +5 -5
- scitex/session/template.py +1 -1
- scitex/stats/__init__.py +30 -33
- scitex/stats/__main__.py +281 -0
- scitex/stats/_mcp_handlers.py +1191 -0
- scitex/stats/_mcp_tool_schemas.py +384 -0
- scitex/stats/_schema.py +1 -1
- scitex/stats/correct/_correct_bonferroni.py +1 -1
- scitex/stats/correct/_correct_fdr.py +1 -1
- scitex/stats/correct/_correct_fdr_.py +1 -1
- scitex/stats/correct/_correct_holm.py +1 -1
- scitex/stats/correct/_correct_sidak.py +1 -1
- scitex/stats/effect_sizes/_cliffs_delta.py +1 -1
- scitex/stats/effect_sizes/_cohens_d.py +1 -1
- scitex/stats/effect_sizes/_epsilon_squared.py +1 -1
- scitex/stats/effect_sizes/_eta_squared.py +1 -1
- scitex/stats/effect_sizes/_prob_superiority.py +1 -1
- scitex/stats/io/__init__.py +10 -11
- scitex/stats/io/_bundle.py +16 -16
- scitex/stats/mcp_server.py +405 -0
- scitex/stats/posthoc/_dunnett.py +1 -1
- scitex/stats/posthoc/_games_howell.py +1 -1
- scitex/stats/posthoc/_tukey_hsd.py +1 -1
- scitex/stats/power/_power.py +1 -1
- scitex/stats/utils/_effect_size.py +1 -1
- scitex/stats/utils/_formatters.py +1 -1
- scitex/stats/utils/_power.py +1 -1
- scitex/template/_mcp_handlers.py +259 -0
- scitex/template/_mcp_tool_schemas.py +112 -0
- scitex/template/mcp_server.py +186 -0
- scitex/utils/_verify_scitex_format.py +2 -2
- scitex/utils/template.py +1 -1
- scitex/web/__init__.py +12 -11
- scitex/web/_scraping.py +26 -265
- scitex/web/download_images.py +316 -0
- scitex/writer/Writer.py +1 -1
- scitex/writer/_clone_writer_project.py +1 -1
- scitex/writer/_validate_tree_structures.py +1 -1
- scitex/writer/dataclasses/config/_WriterConfig.py +1 -1
- scitex/writer/dataclasses/contents/_ManuscriptContents.py +1 -1
- scitex/writer/dataclasses/core/_Document.py +1 -1
- scitex/writer/dataclasses/core/_DocumentSection.py +1 -1
- scitex/writer/dataclasses/results/_CompilationResult.py +1 -1
- scitex/writer/dataclasses/results/_LaTeXIssue.py +1 -1
- scitex/writer/utils/.legacy_git_retry.py +7 -5
- scitex/writer/utils/_parse_latex_logs.py +1 -1
- scitex-2.13.0.dist-info/METADATA +1231 -0
- {scitex-2.10.3.dist-info → scitex-2.13.0.dist-info}/RECORD +376 -470
- scitex-2.13.0.dist-info/entry_points.txt +11 -0
- scitex/fig/editor/_defaults.py +0 -300
- scitex/fig/editor/edit/panel_loader.py +0 -232
- scitex/fig/editor/flask_editor/_bbox.py +0 -1299
- scitex/fig/editor/flask_editor/_core.py +0 -1429
- scitex/fig/editor/flask_editor/_renderer.py +0 -813
- scitex/fig/editor/flask_editor/static/css/features/canvas.css +0 -176
- scitex/fts/README.md +0 -262
- scitex/fts/TODO.md +0 -66
- scitex/fts/__init__.py +0 -90
- scitex/fts/_bundle/README_IN_BUNDLE.md +0 -102
- scitex/fts/_bundle/__init__.py +0 -38
- scitex/fts/_bundle/_utils/__init__.py +0 -55
- scitex/fts/_bundle/_utils/_const.py +0 -26
- scitex/fts/_bundle/_utils/_errors.py +0 -73
- scitex/fts/_bundle/_utils/_generate.py +0 -21
- scitex/fts/_bundle/_utils/_types.py +0 -76
- scitex/fts/_bundle/_zipbundle.py +0 -165
- scitex/fts/_fig/__init__.py +0 -22
- scitex/fts/_fig/_backend/_parser.py +0 -188
- scitex/fts/_fig/_editor/__init__.py +0 -14
- scitex/fts/_fig/_editor/_cui/__init__.py +0 -33
- scitex/fts/_fig/_editor/_cui/_backend_detector.py +0 -39
- scitex/fts/_fig/_editor/_cui/_bundle_resolver.py +0 -366
- scitex/fts/_fig/_editor/_cui/_editor_launcher.py +0 -175
- scitex/fts/_fig/_editor/_cui/_manual_handler.py +0 -52
- scitex/fts/_fig/_editor/_cui/_path_resolver.py +0 -66
- scitex/fts/_fig/_editor/_gui/__init__.py +0 -11
- scitex/fts/_fig/_editor/_gui/_flask_editor/__init__.py +0 -20
- scitex/fts/_fig/_editor/_gui/_flask_editor/_plotter.py +0 -664
- scitex/fts/_fig/_editor/_gui/_flask_editor/_utils.py +0 -79
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/reset.css +0 -41
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/typography.css +0 -16
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/variables.css +0 -85
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/buttons.css +0 -217
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/context-menu.css +0 -93
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/dropdown.css +0 -57
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/forms.css +0 -112
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/modal.css +0 -59
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/sections.css +0 -212
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/element-inspector.css +0 -190
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/loading.css +0 -59
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/overlay.css +0 -45
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/panel-grid.css +0 -95
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/selection.css +0 -101
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/statistics.css +0 -138
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/index.css +0 -31
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/container.css +0 -7
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/controls.css +0 -56
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/preview.css +0 -78
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/axis.js +0 -314
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/basic.js +0 -107
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/distribute.js +0 -54
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/canvas.js +0 -172
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/dragging.js +0 -258
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/resize.js +0 -48
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/selection.js +0 -71
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/api.js +0 -288
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/state.js +0 -143
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/utils.js +0 -245
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/dev/element-inspector.js +0 -992
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/bbox.js +0 -339
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/element-drag.js +0 -286
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/overlay.js +0 -371
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/preview.js +0 -293
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/main.js +0 -426
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/context-menu.js +0 -152
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/keyboard.js +0 -265
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/controls.js +0 -184
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/download.js +0 -57
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/help.js +0 -100
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/theme.js +0 -34
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/__init__.py +0 -124
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_html.py +0 -851
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_scripts.py +0 -4932
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_styles.py +0 -1657
- scitex/fts/_fig/_editor/_gui/_flask_editor.py +0 -36
- scitex/fts/_fig/_models/_Annotations.py +0 -115
- scitex/fts/_fig/_models/_Axes.py +0 -152
- scitex/fts/_fig/_models/_Figure.py +0 -138
- scitex/fts/_fig/_models/_Plot.py +0 -123
- scitex/fts/_fig/_utils/_plot_layout.py +0 -397
- scitex/fts/_kinds/_figure/_composite.py +0 -345
- scitex/fts/_kinds/_plot/_backend/__init__.py +0 -53
- scitex/fts/_kinds/_plot/_backend/_export.py +0 -165
- scitex/fts/_kinds/_plot/_backend/_render.py +0 -538
- scitex/fts/_kinds/_plot/_dataclasses/_ChannelEncoding.py +0 -46
- scitex/fts/_kinds/_plot/_dataclasses/_Encoding.py +0 -82
- scitex/fts/_kinds/_plot/_dataclasses/_Theme.py +0 -441
- scitex/fts/_kinds/_plot/_dataclasses/_TraceEncoding.py +0 -52
- scitex/fts/_kinds/_plot/_dataclasses/__init__.py +0 -47
- scitex/fts/_kinds/_plot/_models/_Guides.py +0 -104
- scitex/fts/_kinds/_plot/_models/_Styles.py +0 -245
- scitex/fts/_kinds/_plot/_models/__init__.py +0 -80
- scitex/fts/_kinds/_plot/_models/_plot_types/__init__.py +0 -156
- scitex/fts/_kinds/_plot/_models/_plot_types/_bar.py +0 -43
- scitex/fts/_kinds/_plot/_models/_plot_types/_box.py +0 -38
- scitex/fts/_kinds/_plot/_models/_plot_types/_distribution.py +0 -36
- scitex/fts/_kinds/_plot/_models/_plot_types/_errorbar.py +0 -60
- scitex/fts/_kinds/_plot/_models/_plot_types/_histogram.py +0 -30
- scitex/fts/_kinds/_plot/_models/_plot_types/_image.py +0 -61
- scitex/fts/_kinds/_plot/_models/_plot_types/_line.py +0 -57
- scitex/fts/_kinds/_plot/_models/_plot_types/_scatter.py +0 -30
- scitex/fts/_kinds/_plot/_models/_plot_types/_seaborn.py +0 -121
- scitex/fts/_kinds/_plot/_models/_plot_types/_violin.py +0 -36
- scitex/fts/_kinds/_plot/_utils/__init__.py +0 -129
- scitex/fts/_kinds/_plot/_utils/_auto_layout.py +0 -127
- scitex/fts/_kinds/_plot/_utils/_calc_bounds.py +0 -111
- scitex/fts/_kinds/_plot/_utils/_const_sizes.py +0 -48
- scitex/fts/_kinds/_plot/_utils/_convert_coords.py +0 -77
- scitex/fts/_kinds/_plot/_utils/_get_template.py +0 -178
- scitex/fts/_kinds/_plot/_utils/_normalize.py +0 -73
- scitex/fts/_kinds/_plot/_utils/_validate.py +0 -197
- scitex/fts/_kinds/_table/_latex/_export.py +0 -279
- scitex/fts/_stats/__init__.py +0 -48
- scitex/fts/_stats/_dataclasses/_Stats.py +0 -423
- scitex/fts/_stats/_dataclasses/__init__.py +0 -48
- scitex/fts/_tables/__init__.py +0 -65
- scitex/fts/_tables/_latex/__init__.py +0 -93
- scitex/fts/_tables/_latex/_editor/__init__.py +0 -11
- scitex/fts/_tables/_latex/_editor/_app.py +0 -725
- scitex/fts/_tables/_latex/_figure_exporter.py +0 -153
- scitex/fts/_tables/_latex/_stats_formatter.py +0 -274
- scitex/fts/_tables/_latex/_table_exporter.py +0 -362
- scitex/fts/_tables/_latex/_utils.py +0 -369
- scitex/fts/_tables/_latex/_validator.py +0 -445
- scitex/io/_save_modules/_pltz_bundle.py +0 -356
- scitex-2.10.3.dist-info/METADATA +0 -952
- scitex-2.10.3.dist-info/entry_points.txt +0 -2
- /scitex/{fig → canvas}/README.md +0 -0
- /scitex/{fig → canvas}/backend/__init__.py +0 -0
- /scitex/{fig → canvas}/backend/_export.py +0 -0
- /scitex/{fig → canvas}/backend/_render.py +0 -0
- /scitex/{fig → canvas}/docs/CANVAS_ARCHITECTURE.md +0 -0
- /scitex/{fig → canvas}/editor/__init__.py +0 -0
- /scitex/{fig → canvas}/editor/_dearpygui_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_flask_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_mpl_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_qt_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_tkinter_editor.py +0 -0
- /scitex/{fig → canvas}/editor/edit/backend_detector.py +0 -0
- /scitex/{fig → canvas}/editor/edit/manual_handler.py +0 -0
- /scitex/{fig → canvas}/editor/edit/path_resolver.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/__init__.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/_plotter.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/_utils.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/base/reset.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/base/typography.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/base/variables.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/buttons.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/context-menu.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/dropdown.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/forms.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/modal.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/sections.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/element-inspector.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/loading.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/overlay.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/selection.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/statistics.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/index.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/container.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/controls.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/preview.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/axis.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/basic.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/distribute.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/canvas.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/dragging.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/resize.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/selection.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/core/state.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/core/utils.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/dev/element-inspector.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/bbox.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/element-drag.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/overlay.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/main.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/shortcuts/context-menu.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/shortcuts/keyboard.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/controls.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/download.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/help.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/theme.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/templates/__init__.py +0 -0
- /scitex/{fig → canvas}/io/_directory.py +0 -0
- /scitex/{fig → canvas}/model/_plot_types.py +0 -0
- /scitex/{fig → canvas}/utils/_defaults.py +0 -0
- /scitex/{fig → canvas}/utils/_validate.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_conversion/__init__.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_conversion/_bundle2dict.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_conversion/_dict2bundle.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_Axes.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_BBox.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_ColumnDef.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataFormat.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataInfo.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataSource.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_SizeMM.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/__init__.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_bar.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_line.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_scatter.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_figure/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_figure}/_composite.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_plot/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/_export.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/_render.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_ChannelEncoding.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_Encoding.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_Theme.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_TraceEncoding.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_bar.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_box.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_distribution.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_errorbar.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_histogram.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_image.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_line.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_scatter.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_seaborn.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_violin.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_auto_layout.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_calc_bounds.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_const_sizes.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_convert_coords.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_get_template.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_normalize.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_validate.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_shape/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_stats/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_stats/_dataclasses/_Stats.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_stats/_dataclasses/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_editor/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_stats_formatter.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_utils.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_validator.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_text/__init__.py +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/data_info.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/encoding.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/node.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/render_manifest.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/stats.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/theme.schema.json +0 -0
- {scitex-2.10.3.dist-info → scitex-2.13.0.dist-info}/WHEEL +0 -0
- {scitex-2.10.3.dist-info → scitex-2.13.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -14,7 +14,7 @@ __DIR__ = os.path.dirname(__FILE__)
|
|
|
14
14
|
Clean, simple RandomStateManager for scientific reproducibility.
|
|
15
15
|
|
|
16
16
|
Main API:
|
|
17
|
-
|
|
17
|
+
rng = RandomStateManager(seed=42) # Create instance
|
|
18
18
|
gen = rng("name") # Get named generator
|
|
19
19
|
rng.verify(obj, "name") # Verify reproducibility
|
|
20
20
|
"""
|
|
@@ -44,11 +44,11 @@ class RandomStateManager:
|
|
|
44
44
|
>>> import scitex as stx
|
|
45
45
|
>>>
|
|
46
46
|
>>> # Method 1: Direct usage
|
|
47
|
-
>>>
|
|
47
|
+
>>> rng = stx.rng.RandomStateManager(seed=42)
|
|
48
48
|
>>> data = rng("data").random(100)
|
|
49
49
|
>>>
|
|
50
50
|
>>> # Method 2: From session.start
|
|
51
|
-
>>> CONFIG, stdout, stderr, plt, CC,
|
|
51
|
+
>>> CONFIG, stdout, stderr, plt, CC, rng = stx.session.start(seed=42)
|
|
52
52
|
>>> model = rng("model").normal(size=(10, 10))
|
|
53
53
|
>>>
|
|
54
54
|
>>> # Verify reproducibility
|
|
@@ -98,7 +98,7 @@ class RandomStateManager:
|
|
|
98
98
|
np.random.seed(self.seed)
|
|
99
99
|
# Also set default_rng for new API
|
|
100
100
|
self._np = np
|
|
101
|
-
self.
|
|
101
|
+
self._np_default_rng = np.random.default_rng(self.seed)
|
|
102
102
|
fixed_modules.append("numpy")
|
|
103
103
|
except ImportError:
|
|
104
104
|
self._np = None
|
|
@@ -159,7 +159,7 @@ class RandomStateManager:
|
|
|
159
159
|
|
|
160
160
|
Examples
|
|
161
161
|
--------
|
|
162
|
-
>>>
|
|
162
|
+
>>> rng = RandomStateManager(42)
|
|
163
163
|
>>> gen = rng.get_np_generator("data")
|
|
164
164
|
>>> values = gen.random(100)
|
|
165
165
|
>>> perm = gen.permutation(100)
|
|
@@ -427,7 +427,7 @@ class RandomStateManager:
|
|
|
427
427
|
|
|
428
428
|
Examples
|
|
429
429
|
--------
|
|
430
|
-
>>>
|
|
430
|
+
>>> rng = RandomStateManager(42)
|
|
431
431
|
>>> from sklearn.model_selection import train_test_split
|
|
432
432
|
>>> X_train, X_test = train_test_split(
|
|
433
433
|
... X, test_size=0.2,
|
|
@@ -455,7 +455,7 @@ class RandomStateManager:
|
|
|
455
455
|
|
|
456
456
|
Examples
|
|
457
457
|
--------
|
|
458
|
-
>>>
|
|
458
|
+
>>> rng = RandomStateManager(42)
|
|
459
459
|
>>> gen = rng.get_torch_generator("model")
|
|
460
460
|
>>> torch.randn(5, 5, generator=gen)
|
|
461
461
|
"""
|
|
@@ -503,7 +503,7 @@ class RandomStateManager:
|
|
|
503
503
|
|
|
504
504
|
Examples
|
|
505
505
|
--------
|
|
506
|
-
>>>
|
|
506
|
+
>>> rng = RandomStateManager(42)
|
|
507
507
|
>>> rng.clear_cache() # Clear all
|
|
508
508
|
>>> rng.clear_cache("old_data") # Clear specific
|
|
509
509
|
>>> rng.clear_cache(["test1", "test2"]) # Clear multiple
|
|
@@ -559,7 +559,7 @@ def get(verbose: bool = False) -> RandomStateManager:
|
|
|
559
559
|
Examples
|
|
560
560
|
--------
|
|
561
561
|
>>> import scitex as stx
|
|
562
|
-
>>>
|
|
562
|
+
>>> rng = stx.rng.get()
|
|
563
563
|
>>> data = rng("data").random(100)
|
|
564
564
|
"""
|
|
565
565
|
global _GLOBAL_INSTANCE
|
|
@@ -589,7 +589,7 @@ def reset(seed: int = 42, verbose: bool = False) -> RandomStateManager:
|
|
|
589
589
|
Examples
|
|
590
590
|
--------
|
|
591
591
|
>>> import scitex as stx
|
|
592
|
-
>>>
|
|
592
|
+
>>> rng = stx.repro.reset(seed=123)
|
|
593
593
|
"""
|
|
594
594
|
global _GLOBAL_INSTANCE
|
|
595
595
|
_GLOBAL_INSTANCE = RandomStateManager(seed, verbose=verbose)
|
|
@@ -626,8 +626,8 @@ def main(args):
|
|
|
626
626
|
print(f"Seed: {args.seed}")
|
|
627
627
|
|
|
628
628
|
# Get named generators
|
|
629
|
-
data_gen =
|
|
630
|
-
model_gen =
|
|
629
|
+
data_gen = rng("data")
|
|
630
|
+
model_gen = rng("model")
|
|
631
631
|
|
|
632
632
|
# Generate data
|
|
633
633
|
print(f"\n{'Data Generation':-^60}")
|
|
@@ -641,7 +641,7 @@ def main(args):
|
|
|
641
641
|
|
|
642
642
|
# Verify reproducibility
|
|
643
643
|
print(f"\n{'Verification':-^60}")
|
|
644
|
-
|
|
644
|
+
rng.verify(data, "demo_data")
|
|
645
645
|
print("✓ Data reproducibility verified")
|
|
646
646
|
|
|
647
647
|
print(f"\n{'=' * 60}")
|
|
@@ -660,7 +660,7 @@ if __name__ == "__main__":
|
|
|
660
660
|
|
|
661
661
|
args = parse_args()
|
|
662
662
|
|
|
663
|
-
CONFIG, sys.stdout, sys.stderr, plt, CC,
|
|
663
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC, rng = stx.session.start(
|
|
664
664
|
sys,
|
|
665
665
|
plt,
|
|
666
666
|
args=args,
|
scitex/repro/_gen_ID.py
CHANGED
scitex/repro/_gen_timestamp.py
CHANGED
scitex/repro/_hash_array.py
CHANGED
|
@@ -72,8 +72,8 @@ def main(args):
|
|
|
72
72
|
print(f"Array size: {args.size}")
|
|
73
73
|
print(f"Seed: {args.seed}")
|
|
74
74
|
|
|
75
|
-
# Generate arrays using
|
|
76
|
-
gen =
|
|
75
|
+
# Generate arrays using rng
|
|
76
|
+
gen = rng("demo")
|
|
77
77
|
|
|
78
78
|
# Create array and hash it
|
|
79
79
|
print(f"\n{'Hash Generation':-^60}")
|
|
@@ -95,7 +95,7 @@ def main(args):
|
|
|
95
95
|
|
|
96
96
|
# Reset generator and create same data
|
|
97
97
|
print(f"\n{'Reproducibility Check':-^60}")
|
|
98
|
-
gen_repro =
|
|
98
|
+
gen_repro = rng("demo") # Same name = same seed
|
|
99
99
|
data3 = gen_repro.random(args.size)
|
|
100
100
|
hash3 = hash_array(data3)
|
|
101
101
|
print(f"Array 3 hash (reproduced): {hash3}")
|
|
@@ -115,7 +115,7 @@ if __name__ == "__main__":
|
|
|
115
115
|
|
|
116
116
|
args = parse_args()
|
|
117
117
|
|
|
118
|
-
CONFIG, sys.stdout, sys.stderr, plt, CC,
|
|
118
|
+
CONFIG, sys.stdout, sys.stderr, plt, CC, rng = stx.session.start(
|
|
119
119
|
sys,
|
|
120
120
|
plt,
|
|
121
121
|
args=args,
|
scitex/schema/__init__.py
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
SciTeX Schema Module - DEPRECATED
|
|
6
6
|
|
|
7
7
|
This module is scheduled for removal. All schemas are being consolidated
|
|
8
|
-
in scitex.
|
|
8
|
+
in scitex.io.bundle as the single source of truth.
|
|
9
9
|
|
|
10
|
-
For new code, import from scitex.
|
|
11
|
-
from scitex.
|
|
10
|
+
For new code, import from scitex.io.bundle:
|
|
11
|
+
from scitex.io.bundle import FTS, Node, Encoding, Theme, Stats
|
|
12
12
|
|
|
13
13
|
This module exists temporarily for backward compatibility.
|
|
14
14
|
"""
|
|
@@ -16,31 +16,28 @@ This module exists temporarily for backward compatibility.
|
|
|
16
16
|
import warnings
|
|
17
17
|
|
|
18
18
|
warnings.warn(
|
|
19
|
-
"scitex.schema is deprecated. Import from scitex.
|
|
19
|
+
"scitex.schema is deprecated. Import from scitex.io.bundle instead. "
|
|
20
20
|
"This module will be removed in a future version.",
|
|
21
21
|
DeprecationWarning,
|
|
22
|
-
stacklevel=2
|
|
22
|
+
stacklevel=2,
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
# Schema version
|
|
26
26
|
SCHEMA_VERSION = "0.2.0"
|
|
27
27
|
|
|
28
28
|
# =============================================================================
|
|
29
|
-
# Re-export from scitex.
|
|
29
|
+
# Re-export from scitex.io.bundle (new single source of truth)
|
|
30
30
|
# =============================================================================
|
|
31
31
|
try:
|
|
32
|
-
from scitex.
|
|
33
|
-
# Core bundle classes
|
|
32
|
+
from scitex.io.bundle import ( # Core bundle classes; Encoding and Theme; Stats
|
|
34
33
|
FTS,
|
|
35
|
-
Node,
|
|
36
34
|
BBox,
|
|
37
|
-
SizeMM,
|
|
38
35
|
DataInfo,
|
|
39
|
-
# Encoding and Theme
|
|
40
36
|
Encoding,
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
Node,
|
|
38
|
+
SizeMM,
|
|
43
39
|
Stats,
|
|
40
|
+
Theme,
|
|
44
41
|
)
|
|
45
42
|
except ImportError:
|
|
46
43
|
# FTS not fully configured yet
|
|
@@ -52,21 +49,10 @@ except ImportError:
|
|
|
52
49
|
|
|
53
50
|
# =============================================================================
|
|
54
51
|
# Independent schemas (still defined here temporarily)
|
|
55
|
-
# These will be migrated to scitex.
|
|
52
|
+
# These will be migrated to scitex.io.bundle in subsequent phases
|
|
56
53
|
# =============================================================================
|
|
57
54
|
|
|
58
55
|
# Stats schema (GUI-focused version - to be merged with FTS Stats)
|
|
59
|
-
from scitex.schema._stats import (
|
|
60
|
-
Position,
|
|
61
|
-
PositionMode,
|
|
62
|
-
StatPositioning,
|
|
63
|
-
StatResult,
|
|
64
|
-
StatStyling,
|
|
65
|
-
SymbolStyle,
|
|
66
|
-
UnitType,
|
|
67
|
-
create_stat_result,
|
|
68
|
-
)
|
|
69
|
-
|
|
70
56
|
# Encoding schema
|
|
71
57
|
from scitex.schema._encoding import (
|
|
72
58
|
ENCODING_VERSION,
|
|
@@ -87,48 +73,58 @@ from scitex.schema._figure_elements import (
|
|
|
87
73
|
generate_caption_markdown,
|
|
88
74
|
)
|
|
89
75
|
|
|
90
|
-
# Theme schema
|
|
91
|
-
from scitex.schema._theme import (
|
|
92
|
-
THEME_VERSION,
|
|
93
|
-
ColorScheme,
|
|
94
|
-
LegendStyle,
|
|
95
|
-
LineDefaults,
|
|
96
|
-
MarkerDefaults,
|
|
97
|
-
PlotTheme,
|
|
98
|
-
Typography,
|
|
99
|
-
)
|
|
100
|
-
from scitex.schema._theme import TraceStyle as ThemeTraceStyle
|
|
101
|
-
|
|
102
76
|
# Plot schema
|
|
103
77
|
from scitex.schema._plot import (
|
|
104
78
|
DPI_FALLBACK,
|
|
105
79
|
PLOT_GEOMETRY_VERSION,
|
|
106
80
|
PLOT_SPEC_VERSION,
|
|
107
81
|
PLOT_STYLE_VERSION,
|
|
82
|
+
AxesLabels,
|
|
83
|
+
AxesLimits,
|
|
84
|
+
AxesSpecItem,
|
|
108
85
|
BboxPx,
|
|
109
86
|
BboxRatio,
|
|
110
87
|
CoordinateSpace,
|
|
88
|
+
DataSourceSpec,
|
|
89
|
+
FontSpec,
|
|
90
|
+
HitRegionEntry,
|
|
111
91
|
LegendLocation,
|
|
92
|
+
LegendSpec,
|
|
93
|
+
PlotGeometry,
|
|
94
|
+
PlotSpec,
|
|
95
|
+
PlotStyle,
|
|
96
|
+
RenderedArtist,
|
|
97
|
+
RenderedAxes,
|
|
98
|
+
RenderManifest,
|
|
99
|
+
SelectableRegion,
|
|
100
|
+
SizeSpec,
|
|
101
|
+
ThemeSpec,
|
|
102
|
+
TraceSpec,
|
|
103
|
+
TraceStyleSpec,
|
|
112
104
|
TraceType,
|
|
113
105
|
)
|
|
114
|
-
from scitex.schema.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
from scitex.schema.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
106
|
+
from scitex.schema._stats import (
|
|
107
|
+
Position,
|
|
108
|
+
PositionMode,
|
|
109
|
+
StatPositioning,
|
|
110
|
+
StatResult,
|
|
111
|
+
StatStyling,
|
|
112
|
+
SymbolStyle,
|
|
113
|
+
UnitType,
|
|
114
|
+
create_stat_result,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
# Theme schema
|
|
118
|
+
from scitex.schema._theme import (
|
|
119
|
+
THEME_VERSION,
|
|
120
|
+
ColorScheme,
|
|
121
|
+
LegendStyle,
|
|
122
|
+
LineDefaults,
|
|
123
|
+
MarkerDefaults,
|
|
124
|
+
PlotTheme,
|
|
125
|
+
)
|
|
126
|
+
from scitex.schema._theme import TraceStyle as ThemeTraceStyle
|
|
127
|
+
from scitex.schema._theme import Typography
|
|
132
128
|
|
|
133
129
|
# Validation (temporarily keep here)
|
|
134
130
|
from scitex.schema._validation import (
|
|
@@ -164,24 +160,24 @@ __all__ = [
|
|
|
164
160
|
"LegendLocation",
|
|
165
161
|
"BboxRatio",
|
|
166
162
|
"BboxPx",
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
"
|
|
175
|
-
"
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"
|
|
183
|
-
"
|
|
184
|
-
"
|
|
163
|
+
"TraceSpec",
|
|
164
|
+
"AxesLimits",
|
|
165
|
+
"AxesLabels",
|
|
166
|
+
"AxesSpecItem",
|
|
167
|
+
"DataSourceSpec",
|
|
168
|
+
"PlotSpec",
|
|
169
|
+
"TraceStyleSpec",
|
|
170
|
+
"ThemeSpec",
|
|
171
|
+
"FontSpec",
|
|
172
|
+
"SizeSpec",
|
|
173
|
+
"LegendSpec",
|
|
174
|
+
"PlotStyle",
|
|
175
|
+
"RenderedArtist",
|
|
176
|
+
"RenderedAxes",
|
|
177
|
+
"HitRegionEntry",
|
|
178
|
+
"SelectableRegion",
|
|
179
|
+
"PlotGeometry",
|
|
180
|
+
"RenderManifest",
|
|
185
181
|
# Encoding
|
|
186
182
|
"ENCODING_VERSION",
|
|
187
183
|
"ChannelBinding",
|
scitex/schema/_canvas.py
CHANGED
|
@@ -327,7 +327,7 @@ class CanvasSpec:
|
|
|
327
327
|
Complete specification for a SciTeX canvas.
|
|
328
328
|
|
|
329
329
|
This is the wire format for canvas.json files.
|
|
330
|
-
The Canvas class in scitex.
|
|
330
|
+
The Canvas class in scitex.canvas provides the OO interface.
|
|
331
331
|
|
|
332
332
|
Examples
|
|
333
333
|
--------
|
scitex/schema/_stats.py
CHANGED
|
@@ -10,7 +10,7 @@ Statistical Result Schema - Central Source of Truth.
|
|
|
10
10
|
This module defines the canonical schema for statistical test results
|
|
11
11
|
that integrates with:
|
|
12
12
|
- scitex.plt (TrackingMixin, metadata embedding)
|
|
13
|
-
- scitex.
|
|
13
|
+
- scitex.canvas (JSON serialization, FigureModel)
|
|
14
14
|
- scitex-cloud GUI (Fabric.js canvas, properties panel, positioning)
|
|
15
15
|
- scitex.bridge (cross-module adapters)
|
|
16
16
|
|
|
@@ -272,7 +272,7 @@ class StatResult:
|
|
|
272
272
|
|
|
273
273
|
This is the central schema for statistical results that integrates with:
|
|
274
274
|
- scitex.plt: Automatic annotation via TrackingMixin
|
|
275
|
-
- scitex.
|
|
275
|
+
- scitex.canvas: JSON serialization for FigureModel
|
|
276
276
|
- scitex-cloud GUI: Fabric.js canvas positioning and properties panel
|
|
277
277
|
- scitex.bridge: Cross-module adapters
|
|
278
278
|
|
scitex/scholar/__main__.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
2
|
# File: /home/ywatanabe/proj/scitex_repo/src/scitex/scholar/__main__.py
|
|
4
3
|
|
|
5
4
|
"""Scholar CLI entry point - Subcommand-based interface.
|
|
@@ -8,6 +7,7 @@ Clean interface routing to battle-tested pipeline implementations:
|
|
|
8
7
|
- single: Process single paper (DOI or title)
|
|
9
8
|
- parallel: Process multiple papers in parallel
|
|
10
9
|
- bibtex: Process papers from BibTeX file
|
|
10
|
+
- mcp: Start MCP server for LLM integration
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
13
|
from __future__ import annotations
|
|
@@ -33,6 +33,7 @@ Clean subcommand interface to battle-tested pipelines:
|
|
|
33
33
|
single - Process a single paper (DOI or title)
|
|
34
34
|
parallel - Process multiple papers in parallel
|
|
35
35
|
bibtex - Process papers from BibTeX file
|
|
36
|
+
mcp - Start MCP server for LLM integration
|
|
36
37
|
|
|
37
38
|
STORAGE: ~/.scitex/scholar/library/
|
|
38
39
|
MASTER/{8DIGITID}/ - Centralized storage (no duplicates)
|
|
@@ -193,6 +194,16 @@ STORAGE: ~/.scitex/scholar/library/
|
|
|
193
194
|
help="Base Chrome profile to sync from (default: system)",
|
|
194
195
|
)
|
|
195
196
|
|
|
197
|
+
# ========================================
|
|
198
|
+
# Subcommand: mcp
|
|
199
|
+
# ========================================
|
|
200
|
+
subparsers.add_parser(
|
|
201
|
+
"mcp",
|
|
202
|
+
help="Start MCP server for LLM integration",
|
|
203
|
+
description="Start the MCP (Model Context Protocol) server for Claude/LLM integration",
|
|
204
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
205
|
+
)
|
|
206
|
+
|
|
196
207
|
return parser
|
|
197
208
|
|
|
198
209
|
|
|
@@ -220,7 +231,7 @@ async def run_single_pipeline(args):
|
|
|
220
231
|
force=args.force,
|
|
221
232
|
)
|
|
222
233
|
|
|
223
|
-
logger.success(
|
|
234
|
+
logger.success("Single paper pipeline completed")
|
|
224
235
|
return 0
|
|
225
236
|
|
|
226
237
|
|
|
@@ -288,6 +299,15 @@ async def run_bibtex_pipeline(args):
|
|
|
288
299
|
return 0
|
|
289
300
|
|
|
290
301
|
|
|
302
|
+
async def run_mcp_server():
|
|
303
|
+
"""Run MCP server."""
|
|
304
|
+
from .mcp_server import main as mcp_main
|
|
305
|
+
|
|
306
|
+
logger.info("Starting Scholar MCP server...")
|
|
307
|
+
await mcp_main()
|
|
308
|
+
return 0
|
|
309
|
+
|
|
310
|
+
|
|
291
311
|
async def main_async():
|
|
292
312
|
"""Main async entry point."""
|
|
293
313
|
parser = create_parser()
|
|
@@ -300,6 +320,8 @@ async def main_async():
|
|
|
300
320
|
return await run_parallel_pipeline(args)
|
|
301
321
|
elif args.command == "bibtex":
|
|
302
322
|
return await run_bibtex_pipeline(args)
|
|
323
|
+
elif args.command == "mcp":
|
|
324
|
+
return await run_mcp_server()
|
|
303
325
|
else:
|
|
304
326
|
logger.error(f"Unknown command: {args.command}")
|
|
305
327
|
return 1
|