scitex 2.7.0__py3-none-any.whl → 2.8.1__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 +6 -2
- scitex/__version__.py +1 -1
- scitex/audio/README.md +52 -0
- scitex/audio/__init__.py +384 -0
- scitex/audio/__main__.py +129 -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 +143 -0
- scitex/audio/engines/gtts_engine.py +162 -0
- scitex/audio/engines/pyttsx3_engine.py +131 -0
- scitex/audio/mcp_server.py +757 -0
- scitex/bridge/_helpers.py +1 -1
- scitex/bridge/_plt_vis.py +1 -1
- scitex/bridge/_stats_vis.py +1 -1
- scitex/dev/plt/__init__.py +272 -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/_presets.py +173 -0
- scitex/diagram/_schema.py +182 -0
- scitex/diagram/_split.py +278 -0
- scitex/fig/__init__.py +352 -0
- scitex/{vis → fig}/backend/_parser.py +1 -1
- scitex/{vis → fig}/canvas.py +1 -1
- scitex/{vis → fig}/editor/__init__.py +5 -2
- scitex/{vis → fig}/editor/_dearpygui_editor.py +1 -1
- scitex/{vis → fig}/editor/_defaults.py +70 -5
- scitex/{vis → fig}/editor/_mpl_editor.py +1 -1
- scitex/{vis → fig}/editor/_qt_editor.py +182 -2
- scitex/{vis → fig}/editor/_tkinter_editor.py +1 -1
- scitex/fig/editor/edit/__init__.py +50 -0
- scitex/fig/editor/edit/backend_detector.py +109 -0
- scitex/fig/editor/edit/bundle_resolver.py +240 -0
- scitex/fig/editor/edit/editor_launcher.py +239 -0
- scitex/fig/editor/edit/manual_handler.py +53 -0
- scitex/fig/editor/edit/panel_loader.py +232 -0
- scitex/fig/editor/edit/path_resolver.py +67 -0
- scitex/fig/editor/flask_editor/_bbox.py +1299 -0
- scitex/fig/editor/flask_editor/_core.py +1429 -0
- scitex/{vis → fig}/editor/flask_editor/_plotter.py +38 -4
- scitex/fig/editor/flask_editor/_renderer.py +813 -0
- scitex/fig/editor/flask_editor/static/css/base/reset.css +41 -0
- scitex/fig/editor/flask_editor/static/css/base/typography.css +16 -0
- scitex/fig/editor/flask_editor/static/css/base/variables.css +85 -0
- scitex/fig/editor/flask_editor/static/css/components/buttons.css +217 -0
- scitex/fig/editor/flask_editor/static/css/components/context-menu.css +93 -0
- scitex/fig/editor/flask_editor/static/css/components/dropdown.css +57 -0
- scitex/fig/editor/flask_editor/static/css/components/forms.css +112 -0
- scitex/fig/editor/flask_editor/static/css/components/modal.css +59 -0
- scitex/fig/editor/flask_editor/static/css/components/sections.css +212 -0
- scitex/fig/editor/flask_editor/static/css/features/canvas.css +176 -0
- scitex/fig/editor/flask_editor/static/css/features/element-inspector.css +190 -0
- scitex/fig/editor/flask_editor/static/css/features/loading.css +59 -0
- scitex/fig/editor/flask_editor/static/css/features/overlay.css +45 -0
- scitex/fig/editor/flask_editor/static/css/features/panel-grid.css +95 -0
- scitex/fig/editor/flask_editor/static/css/features/selection.css +101 -0
- scitex/fig/editor/flask_editor/static/css/features/statistics.css +138 -0
- scitex/fig/editor/flask_editor/static/css/index.css +31 -0
- scitex/fig/editor/flask_editor/static/css/layout/container.css +7 -0
- scitex/fig/editor/flask_editor/static/css/layout/controls.css +56 -0
- scitex/fig/editor/flask_editor/static/css/layout/preview.css +78 -0
- scitex/fig/editor/flask_editor/static/js/alignment/axis.js +314 -0
- scitex/fig/editor/flask_editor/static/js/alignment/basic.js +107 -0
- scitex/fig/editor/flask_editor/static/js/alignment/distribute.js +54 -0
- scitex/fig/editor/flask_editor/static/js/canvas/canvas.js +172 -0
- scitex/fig/editor/flask_editor/static/js/canvas/dragging.js +258 -0
- scitex/fig/editor/flask_editor/static/js/canvas/resize.js +48 -0
- scitex/fig/editor/flask_editor/static/js/canvas/selection.js +71 -0
- scitex/fig/editor/flask_editor/static/js/core/api.js +288 -0
- scitex/fig/editor/flask_editor/static/js/core/state.js +143 -0
- scitex/fig/editor/flask_editor/static/js/core/utils.js +245 -0
- scitex/fig/editor/flask_editor/static/js/dev/element-inspector.js +992 -0
- scitex/fig/editor/flask_editor/static/js/editor/bbox.js +339 -0
- scitex/fig/editor/flask_editor/static/js/editor/element-drag.js +286 -0
- scitex/fig/editor/flask_editor/static/js/editor/overlay.js +371 -0
- scitex/fig/editor/flask_editor/static/js/editor/preview.js +293 -0
- scitex/fig/editor/flask_editor/static/js/main.js +426 -0
- scitex/fig/editor/flask_editor/static/js/shortcuts/context-menu.js +152 -0
- scitex/fig/editor/flask_editor/static/js/shortcuts/keyboard.js +265 -0
- scitex/fig/editor/flask_editor/static/js/ui/controls.js +184 -0
- scitex/fig/editor/flask_editor/static/js/ui/download.js +57 -0
- scitex/fig/editor/flask_editor/static/js/ui/help.js +100 -0
- scitex/fig/editor/flask_editor/static/js/ui/theme.js +34 -0
- scitex/fig/editor/flask_editor/templates/__init__.py +123 -0
- scitex/fig/editor/flask_editor/templates/_html.py +852 -0
- scitex/fig/editor/flask_editor/templates/_scripts.py +4933 -0
- scitex/fig/editor/flask_editor/templates/_styles.py +1658 -0
- scitex/{vis → fig}/io/__init__.py +13 -1
- scitex/fig/io/_bundle.py +1058 -0
- scitex/{vis → fig}/io/_canvas.py +1 -1
- scitex/{vis → fig}/io/_data.py +1 -1
- scitex/{vis → fig}/io/_export.py +1 -1
- scitex/{vis → fig}/io/_load.py +1 -1
- scitex/{vis → fig}/io/_panel.py +1 -1
- scitex/{vis → fig}/io/_save.py +1 -1
- scitex/{vis → fig}/model/__init__.py +1 -1
- scitex/{vis → fig}/model/_annotations.py +1 -1
- scitex/{vis → fig}/model/_axes.py +1 -1
- scitex/{vis → fig}/model/_figure.py +1 -1
- scitex/{vis → fig}/model/_guides.py +1 -1
- scitex/{vis → fig}/model/_plot.py +1 -1
- scitex/{vis → fig}/model/_styles.py +1 -1
- scitex/{vis → fig}/utils/__init__.py +1 -1
- scitex/io/__init__.py +22 -26
- scitex/io/_bundle.py +493 -0
- scitex/io/_flush.py +5 -2
- scitex/io/_load.py +98 -0
- scitex/io/_load_modules/_H5Explorer.py +5 -2
- scitex/io/_load_modules/_canvas.py +2 -2
- scitex/io/_load_modules/_image.py +3 -4
- scitex/io/_load_modules/_txt.py +4 -2
- scitex/io/_metadata.py +34 -324
- 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/_qr_utils.py +5 -3
- scitex/io/_save.py +548 -30
- scitex/io/_save_modules/_canvas.py +3 -3
- scitex/io/_save_modules/_image.py +5 -9
- scitex/io/_save_modules/_tex.py +7 -4
- scitex/io/_zip_bundle.py +439 -0
- scitex/io/utils/h5_to_zarr.py +11 -9
- 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/plt/__init__.py +5 -2
- scitex/plt/_subplots/_AxesWrapper.py +6 -6
- scitex/plt/_subplots/_AxisWrapper.py +15 -9
- 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 +59 -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/__init__.py +79 -5
- scitex/plt/_subplots/_FigWrapper.py +6 -6
- scitex/plt/_subplots/_SubplotsWrapper.py +28 -18
- scitex/plt/_subplots/_export_as_csv.py +35 -5
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +8 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +10 -21
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +18 -7
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +28 -12
- scitex/plt/_subplots/_export_as_csv_formatters/_format_matshow.py +10 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +13 -1
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +12 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +10 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_quiver.py +10 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +18 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +44 -36
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +14 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_streamplot.py +11 -5
- 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 +14 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_contour.py +54 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_ecdf.py +14 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_errorbar.py +120 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_heatmap.py +16 -6
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_image.py +29 -19
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_imshow.py +63 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_joyplot.py +22 -5
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_ci.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_std.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_median_iqr.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_raster.py +10 -2
- 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 +18 -9
- scitex/plt/ax/_plot/_stx_ecdf.py +4 -2
- scitex/plt/gallery/_generate.py +421 -14
- scitex/plt/io/__init__.py +53 -0
- scitex/plt/io/_bundle.py +490 -0
- scitex/plt/io/_layered_bundle.py +1343 -0
- scitex/plt/styles/SCITEX_STYLE.yaml +26 -0
- scitex/plt/styles/__init__.py +14 -0
- scitex/plt/styles/presets.py +78 -0
- scitex/plt/utils/__init__.py +13 -1
- scitex/plt/utils/_collect_figure_metadata.py +10 -14
- scitex/plt/utils/_configure_mpl.py +6 -18
- scitex/plt/utils/_crop.py +32 -14
- scitex/plt/utils/_csv_column_naming.py +54 -0
- scitex/plt/utils/_figure_mm.py +116 -1
- scitex/plt/utils/_hitmap.py +1643 -0
- scitex/plt/utils/metadata/__init__.py +25 -0
- scitex/plt/utils/metadata/_core.py +9 -10
- scitex/plt/utils/metadata/_dimensions.py +6 -3
- scitex/plt/utils/metadata/_editable_export.py +405 -0
- scitex/plt/utils/metadata/_geometry_extraction.py +570 -0
- scitex/schema/__init__.py +109 -16
- scitex/schema/_canvas.py +1 -1
- scitex/schema/_plot.py +1015 -0
- scitex/schema/_stats.py +2 -2
- scitex/stats/__init__.py +117 -0
- scitex/stats/io/__init__.py +29 -0
- scitex/stats/io/_bundle.py +156 -0
- scitex/tex/__init__.py +4 -0
- scitex/tex/_export.py +890 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/METADATA +11 -1
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/RECORD +294 -170
- scitex/io/memo.md +0 -2827
- scitex/plt/REQUESTS.md +0 -191
- scitex/plt/_subplots/TODO.md +0 -53
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +0 -559
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +0 -1609
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +0 -447
- scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_between.json +0 -110
- scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_betweenx.json +0 -88
- scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fill_between.json +0 -103
- scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fillv.json +0 -106
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/bar.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/barh.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/boxplot.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_bar.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_barh.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_box.json +0 -83
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_boxplot.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violin.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violinplot.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/violinplot.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/contour.json +0 -97
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/contourf.json +0 -98
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/stx_contour.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist.json +0 -101
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist2d.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_ecdf.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_joyplot.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_kde.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/imshow.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/matshow.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_conf_mat.json +0 -83
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_heatmap.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_image.json +0 -121
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_imshow.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/line/plot.json +0 -110
- scitex/plt/templates/research-master/scitex/vis/gallery/line/step.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_line.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_shaded_line.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/hexbin.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/scatter.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stem.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stx_scatter.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/special/pie.json +0 -94
- scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_raster.json +0 -109
- scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_rectangle.json +0 -108
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/errorbar.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_errorbar.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_ci.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_std.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_median_iqr.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/vector/quiver.json +0 -99
- scitex/plt/templates/research-master/scitex/vis/gallery/vector/streamplot.json +0 -100
- scitex/vis/__init__.py +0 -177
- scitex/vis/editor/_edit.py +0 -390
- scitex/vis/editor/flask_editor/_bbox.py +0 -529
- scitex/vis/editor/flask_editor/_core.py +0 -168
- scitex/vis/editor/flask_editor/_renderer.py +0 -393
- scitex/vis/editor/flask_editor/templates/__init__.py +0 -33
- scitex/vis/editor/flask_editor/templates/_html.py +0 -513
- scitex/vis/editor/flask_editor/templates/_scripts.py +0 -1261
- scitex/vis/editor/flask_editor/templates/_styles.py +0 -739
- /scitex/{vis → fig}/README.md +0 -0
- /scitex/{vis → fig}/backend/__init__.py +0 -0
- /scitex/{vis → fig}/backend/_export.py +0 -0
- /scitex/{vis → fig}/backend/_render.py +0 -0
- /scitex/{vis → fig}/docs/CANVAS_ARCHITECTURE.md +0 -0
- /scitex/{vis → fig}/editor/_flask_editor.py +0 -0
- /scitex/{vis → fig}/editor/flask_editor/__init__.py +0 -0
- /scitex/{vis → fig}/editor/flask_editor/_utils.py +0 -0
- /scitex/{vis → fig}/io/_directory.py +0 -0
- /scitex/{vis → fig}/model/_plot_types.py +0 -0
- /scitex/{vis → fig}/utils/_defaults.py +0 -0
- /scitex/{vis → fig}/utils/_validate.py +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/WHEEL +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/entry_points.txt +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/licenses/LICENSE +0 -0
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.fig (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.fig: 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/stats/__init__.py
CHANGED
|
@@ -66,6 +66,120 @@ from .auto import (
|
|
|
66
66
|
p_to_stars,
|
|
67
67
|
)
|
|
68
68
|
|
|
69
|
+
# =============================================================================
|
|
70
|
+
# .statsz Bundle Support
|
|
71
|
+
# =============================================================================
|
|
72
|
+
|
|
73
|
+
def save_statsz(
|
|
74
|
+
comparisons,
|
|
75
|
+
path,
|
|
76
|
+
metadata=None,
|
|
77
|
+
as_zip=False,
|
|
78
|
+
):
|
|
79
|
+
"""
|
|
80
|
+
Save statistical results as a .statsz bundle.
|
|
81
|
+
|
|
82
|
+
Parameters
|
|
83
|
+
----------
|
|
84
|
+
comparisons : list of dict or list of StatResult
|
|
85
|
+
List of comparison results. Each should have:
|
|
86
|
+
- name: Comparison name (e.g., "Control vs Treatment")
|
|
87
|
+
- method: Test method (e.g., "t-test")
|
|
88
|
+
- p_value: P-value
|
|
89
|
+
- effect_size: Effect size (optional)
|
|
90
|
+
- ci95: 95% confidence interval (optional)
|
|
91
|
+
- formatted: Star notation (optional)
|
|
92
|
+
path : str or Path
|
|
93
|
+
Output path (e.g., "comparison.statsz.d" or "comparison.statsz").
|
|
94
|
+
metadata : dict, optional
|
|
95
|
+
Additional metadata (n, seed, bootstrap_iters, etc.).
|
|
96
|
+
as_zip : bool, optional
|
|
97
|
+
If True, save as ZIP archive (default: False).
|
|
98
|
+
|
|
99
|
+
Returns
|
|
100
|
+
-------
|
|
101
|
+
Path
|
|
102
|
+
Path to saved bundle.
|
|
103
|
+
|
|
104
|
+
Examples
|
|
105
|
+
--------
|
|
106
|
+
>>> import scitex.stats as sstats
|
|
107
|
+
>>> comparisons = [
|
|
108
|
+
... {
|
|
109
|
+
... "name": "Control vs Treatment",
|
|
110
|
+
... "method": "t-test",
|
|
111
|
+
... "p_value": 0.003,
|
|
112
|
+
... "effect_size": 1.21,
|
|
113
|
+
... "ci95": [0.5, 1.8],
|
|
114
|
+
... "formatted": "**"
|
|
115
|
+
... }
|
|
116
|
+
... ]
|
|
117
|
+
>>> sstats.save_statsz(comparisons, "results.statsz.d")
|
|
118
|
+
"""
|
|
119
|
+
from pathlib import Path
|
|
120
|
+
from scitex.io._bundle import save_bundle, BundleType
|
|
121
|
+
|
|
122
|
+
p = Path(path)
|
|
123
|
+
|
|
124
|
+
# Convert StatResult objects to dicts if needed
|
|
125
|
+
comp_dicts = []
|
|
126
|
+
for comp in comparisons:
|
|
127
|
+
if hasattr(comp, 'to_dict'):
|
|
128
|
+
comp_dicts.append(comp.to_dict())
|
|
129
|
+
elif hasattr(comp, '__dict__'):
|
|
130
|
+
comp_dicts.append(vars(comp))
|
|
131
|
+
else:
|
|
132
|
+
comp_dicts.append(comp)
|
|
133
|
+
|
|
134
|
+
# Build spec
|
|
135
|
+
spec = {
|
|
136
|
+
'schema': {'name': 'scitex.stats.stats', 'version': '1.0.0'},
|
|
137
|
+
'comparisons': comp_dicts,
|
|
138
|
+
'metadata': metadata or {},
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
bundle_data = {'spec': spec}
|
|
142
|
+
|
|
143
|
+
return save_bundle(bundle_data, p, bundle_type=BundleType.STATSZ, as_zip=as_zip)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def load_statsz(path):
|
|
147
|
+
"""
|
|
148
|
+
Load a .statsz bundle.
|
|
149
|
+
|
|
150
|
+
Parameters
|
|
151
|
+
----------
|
|
152
|
+
path : str or Path
|
|
153
|
+
Path to .statsz bundle (directory or ZIP).
|
|
154
|
+
|
|
155
|
+
Returns
|
|
156
|
+
-------
|
|
157
|
+
dict
|
|
158
|
+
Stats data with:
|
|
159
|
+
- 'comparisons': List of comparison dicts
|
|
160
|
+
- 'metadata': Metadata dict
|
|
161
|
+
|
|
162
|
+
Examples
|
|
163
|
+
--------
|
|
164
|
+
>>> stats = scitex.stats.load_statsz("results.statsz.d")
|
|
165
|
+
>>> for comp in stats['comparisons']:
|
|
166
|
+
... print(f"{comp['name']}: p={comp['p_value']}")
|
|
167
|
+
"""
|
|
168
|
+
from scitex.io._bundle import load_bundle
|
|
169
|
+
|
|
170
|
+
bundle = load_bundle(path)
|
|
171
|
+
|
|
172
|
+
if bundle['type'] != 'statsz':
|
|
173
|
+
raise ValueError(f"Not a .statsz bundle: {path}")
|
|
174
|
+
|
|
175
|
+
spec = bundle.get('spec', {})
|
|
176
|
+
|
|
177
|
+
return {
|
|
178
|
+
'comparisons': spec.get('comparisons', []),
|
|
179
|
+
'metadata': spec.get('metadata', {}),
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
69
183
|
__all__ = [
|
|
70
184
|
# Main submodules
|
|
71
185
|
"auto",
|
|
@@ -95,6 +209,9 @@ __all__ = [
|
|
|
95
209
|
"get_stat_style",
|
|
96
210
|
"format_test_line",
|
|
97
211
|
"p_to_stars",
|
|
212
|
+
# .statsz bundle
|
|
213
|
+
"save_statsz",
|
|
214
|
+
"load_statsz",
|
|
98
215
|
]
|
|
99
216
|
|
|
100
217
|
__version__ = "2.1.0"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-12-13 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex-code/src/scitex/stats/io/__init__.py
|
|
5
|
+
|
|
6
|
+
"""
|
|
7
|
+
I/O operations for scitex.stats - Statistical results bundles (.statsz).
|
|
8
|
+
|
|
9
|
+
This module handles:
|
|
10
|
+
- .statsz bundle load/save operations
|
|
11
|
+
- Statistical comparison metadata
|
|
12
|
+
- P-value and effect size validation
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from ._bundle import (
|
|
16
|
+
validate_statsz_spec,
|
|
17
|
+
load_statsz_bundle,
|
|
18
|
+
save_statsz_bundle,
|
|
19
|
+
STATSZ_SCHEMA_SPEC,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
__all__ = [
|
|
23
|
+
"validate_statsz_spec",
|
|
24
|
+
"load_statsz_bundle",
|
|
25
|
+
"save_statsz_bundle",
|
|
26
|
+
"STATSZ_SCHEMA_SPEC",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
# EOF
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-12-13 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex-code/src/scitex/stats/io/_bundle.py
|
|
5
|
+
|
|
6
|
+
"""
|
|
7
|
+
SciTeX .statsz Bundle I/O - Statistics-specific bundle operations.
|
|
8
|
+
|
|
9
|
+
Handles:
|
|
10
|
+
- Statistical results specification validation
|
|
11
|
+
- Comparison metadata management
|
|
12
|
+
- P-value and effect size validation
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import json
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
from typing import Any, Dict, List
|
|
18
|
+
|
|
19
|
+
__all__ = [
|
|
20
|
+
"validate_statsz_spec",
|
|
21
|
+
"load_statsz_bundle",
|
|
22
|
+
"save_statsz_bundle",
|
|
23
|
+
"STATSZ_SCHEMA_SPEC",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
# Schema specification for .statsz bundles
|
|
27
|
+
STATSZ_SCHEMA_SPEC = {
|
|
28
|
+
"name": "scitex.stats.stats",
|
|
29
|
+
"version": "1.0.0",
|
|
30
|
+
"required_fields": ["schema"],
|
|
31
|
+
"optional_fields": ["comparisons", "metadata", "descriptive", "test_results"],
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def validate_statsz_spec(spec: Dict[str, Any]) -> List[str]:
|
|
36
|
+
"""Validate .statsz-specific fields.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
spec: The specification dictionary to validate.
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
List of validation error messages (empty if valid).
|
|
43
|
+
"""
|
|
44
|
+
errors = []
|
|
45
|
+
|
|
46
|
+
if "comparisons" in spec:
|
|
47
|
+
comparisons = spec["comparisons"]
|
|
48
|
+
if not isinstance(comparisons, list):
|
|
49
|
+
errors.append("'comparisons' must be a list")
|
|
50
|
+
else:
|
|
51
|
+
for i, comp in enumerate(comparisons):
|
|
52
|
+
if not isinstance(comp, dict):
|
|
53
|
+
errors.append(f"comparisons[{i}] must be a dictionary")
|
|
54
|
+
continue
|
|
55
|
+
|
|
56
|
+
# Validate p_value if present
|
|
57
|
+
if "p_value" in comp:
|
|
58
|
+
p = comp["p_value"]
|
|
59
|
+
if not isinstance(p, (int, float)):
|
|
60
|
+
errors.append(f"comparisons[{i}].p_value must be numeric")
|
|
61
|
+
elif not (0 <= p <= 1):
|
|
62
|
+
errors.append(
|
|
63
|
+
f"comparisons[{i}].p_value must be between 0 and 1"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Validate effect_size if present
|
|
67
|
+
if "effect_size" in comp:
|
|
68
|
+
es = comp["effect_size"]
|
|
69
|
+
if isinstance(es, dict):
|
|
70
|
+
if "value" in es and not isinstance(es["value"], (int, float)):
|
|
71
|
+
errors.append(
|
|
72
|
+
f"comparisons[{i}].effect_size.value must be numeric"
|
|
73
|
+
)
|
|
74
|
+
elif not isinstance(es, (int, float)):
|
|
75
|
+
errors.append(
|
|
76
|
+
f"comparisons[{i}].effect_size must be numeric or dict"
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# Validate test_results if present
|
|
80
|
+
if "test_results" in spec:
|
|
81
|
+
test_results = spec["test_results"]
|
|
82
|
+
if not isinstance(test_results, (dict, list)):
|
|
83
|
+
errors.append("'test_results' must be a dictionary or list")
|
|
84
|
+
|
|
85
|
+
# Validate descriptive if present
|
|
86
|
+
if "descriptive" in spec:
|
|
87
|
+
descriptive = spec["descriptive"]
|
|
88
|
+
if not isinstance(descriptive, dict):
|
|
89
|
+
errors.append("'descriptive' must be a dictionary")
|
|
90
|
+
|
|
91
|
+
return errors
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def load_statsz_bundle(bundle_dir: Path) -> Dict[str, Any]:
|
|
95
|
+
"""Load .statsz bundle contents from directory.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
bundle_dir: Path to the bundle directory.
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
Dictionary with loaded bundle contents.
|
|
102
|
+
"""
|
|
103
|
+
result = {}
|
|
104
|
+
|
|
105
|
+
# Load specification
|
|
106
|
+
spec_file = bundle_dir / "stats.json"
|
|
107
|
+
if spec_file.exists():
|
|
108
|
+
with open(spec_file, "r") as f:
|
|
109
|
+
result["spec"] = json.load(f)
|
|
110
|
+
else:
|
|
111
|
+
result["spec"] = None
|
|
112
|
+
|
|
113
|
+
# Load supplementary data files if present
|
|
114
|
+
data_file = bundle_dir / "data.csv"
|
|
115
|
+
if data_file.exists():
|
|
116
|
+
try:
|
|
117
|
+
import pandas as pd
|
|
118
|
+
result["data"] = pd.read_csv(data_file)
|
|
119
|
+
except ImportError:
|
|
120
|
+
with open(data_file, "r") as f:
|
|
121
|
+
result["data"] = f.read()
|
|
122
|
+
|
|
123
|
+
return result
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def save_statsz_bundle(data: Dict[str, Any], dir_path: Path) -> None:
|
|
127
|
+
"""Save .statsz bundle contents to directory.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
data: Bundle data dictionary.
|
|
131
|
+
dir_path: Path to the bundle directory.
|
|
132
|
+
"""
|
|
133
|
+
# Save specification
|
|
134
|
+
spec = data.get("spec", {})
|
|
135
|
+
spec_file = dir_path / "stats.json"
|
|
136
|
+
with open(spec_file, "w") as f:
|
|
137
|
+
json.dump(spec, f, indent=2)
|
|
138
|
+
|
|
139
|
+
# Save supplementary data if present
|
|
140
|
+
if "data" in data:
|
|
141
|
+
data_file = dir_path / "data.csv"
|
|
142
|
+
df = data["data"]
|
|
143
|
+
if hasattr(df, "to_csv"):
|
|
144
|
+
df.to_csv(data_file, index=False)
|
|
145
|
+
else:
|
|
146
|
+
with open(data_file, "w") as f:
|
|
147
|
+
f.write(str(df))
|
|
148
|
+
|
|
149
|
+
# Save summary report if present
|
|
150
|
+
if "report" in data:
|
|
151
|
+
report_file = dir_path / "report.md"
|
|
152
|
+
with open(report_file, "w") as f:
|
|
153
|
+
f.write(data["report"])
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
# EOF
|
scitex/tex/__init__.py
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""LaTeX utilities module for scitex."""
|
|
3
3
|
|
|
4
|
+
from ._export import export_tex, compile_tex, CompileResult
|
|
4
5
|
from ._preview import preview
|
|
5
6
|
from ._to_vec import to_vec
|
|
6
7
|
|
|
7
8
|
__all__ = [
|
|
9
|
+
"export_tex",
|
|
10
|
+
"compile_tex",
|
|
11
|
+
"CompileResult",
|
|
8
12
|
"preview",
|
|
9
13
|
"to_vec",
|
|
10
14
|
]
|