scitex 2.7.0__py3-none-any.whl → 2.7.3__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/fig/__init__.py +352 -0
- scitex/{vis → fig}/backend/_parser.py +1 -1
- scitex/{vis → fig}/canvas.py +1 -1
- scitex/{vis → fig}/editor/_defaults.py +70 -5
- scitex/fig/editor/_edit.py +751 -0
- scitex/{vis → fig}/editor/_qt_editor.py +181 -1
- scitex/fig/editor/flask_editor/_bbox.py +1276 -0
- scitex/fig/editor/flask_editor/_core.py +624 -0
- scitex/{vis → fig}/editor/flask_editor/_plotter.py +38 -4
- scitex/fig/editor/flask_editor/_renderer.py +739 -0
- scitex/{vis → fig}/editor/flask_editor/templates/__init__.py +1 -1
- scitex/fig/editor/flask_editor/templates/_html.py +834 -0
- scitex/fig/editor/flask_editor/templates/_scripts.py +3136 -0
- scitex/{vis → fig}/editor/flask_editor/templates/_styles.py +625 -18
- scitex/{vis → fig}/io/__init__.py +13 -1
- scitex/fig/io/_bundle.py +973 -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 +10 -26
- scitex/io/_bundle.py +434 -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/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.7.3.dist-info}/METADATA +11 -1
- {scitex-2.7.0.dist-info → scitex-2.7.3.dist-info}/RECORD +238 -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/_html.py +0 -513
- scitex/vis/editor/flask_editor/templates/_scripts.py +0 -1261
- /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/__init__.py +0 -0
- /scitex/{vis → fig}/editor/_dearpygui_editor.py +0 -0
- /scitex/{vis → fig}/editor/_flask_editor.py +0 -0
- /scitex/{vis → fig}/editor/_mpl_editor.py +0 -0
- /scitex/{vis → fig}/editor/_tkinter_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.7.3.dist-info}/WHEEL +0 -0
- {scitex-2.7.0.dist-info → scitex-2.7.3.dist-info}/entry_points.txt +0 -0
- {scitex-2.7.0.dist-info → scitex-2.7.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"scitex_schema": "scitex.plt.figure.recipe",
|
|
3
|
-
"scitex_schema_version": "0.2.0",
|
|
4
|
-
"figure_uuid": "1374949e-fb44-4a2d-89ca-8d50e41e1ca9",
|
|
5
|
-
"runtime": {
|
|
6
|
-
"scitex_version": "2.6.0",
|
|
7
|
-
"matplotlib_version": "3.10.7",
|
|
8
|
-
"created_at": "2025-12-09T23:03:43.343053"
|
|
9
|
-
},
|
|
10
|
-
"figure": {
|
|
11
|
-
"size_mm": [
|
|
12
|
-
80.0,
|
|
13
|
-
68.0
|
|
14
|
-
],
|
|
15
|
-
"dpi": 300,
|
|
16
|
-
"auto_crop": true,
|
|
17
|
-
"crop_margin_mm": 1.0,
|
|
18
|
-
"mode": "publication"
|
|
19
|
-
},
|
|
20
|
-
"axes_bbox_px": {
|
|
21
|
-
"x0": 176,
|
|
22
|
-
"y0": 147,
|
|
23
|
-
"x1": 649,
|
|
24
|
-
"y1": 478,
|
|
25
|
-
"width": 472,
|
|
26
|
-
"height": 331
|
|
27
|
-
},
|
|
28
|
-
"axes_bbox_mm": {
|
|
29
|
-
"x0": 20.0,
|
|
30
|
-
"y0": 19.99,
|
|
31
|
-
"x1": 60.0,
|
|
32
|
-
"y1": 47.99,
|
|
33
|
-
"width": 40.0,
|
|
34
|
-
"height": 28.0
|
|
35
|
-
},
|
|
36
|
-
"style": {
|
|
37
|
-
"axis_thickness_mm": 0.2,
|
|
38
|
-
"tick_length_mm": 0.8,
|
|
39
|
-
"tick_thickness_mm": 0.2,
|
|
40
|
-
"trace_thickness_mm": 0.2,
|
|
41
|
-
"marker_size_mm": 0.8,
|
|
42
|
-
"axis_font_size_pt": 7,
|
|
43
|
-
"tick_font_size_pt": 7,
|
|
44
|
-
"title_font_size_pt": 8,
|
|
45
|
-
"legend_font_size_pt": 6,
|
|
46
|
-
"label_pad_pt": 0.5,
|
|
47
|
-
"tick_pad_pt": 2.0,
|
|
48
|
-
"title_pad_pt": 1.0,
|
|
49
|
-
"font_family": "Arial",
|
|
50
|
-
"n_ticks": 4
|
|
51
|
-
},
|
|
52
|
-
"axes": {
|
|
53
|
-
"ax_00": {
|
|
54
|
-
"grid_position": {
|
|
55
|
-
"row": 0,
|
|
56
|
-
"col": 0
|
|
57
|
-
},
|
|
58
|
-
"xaxis": {
|
|
59
|
-
"label": "X",
|
|
60
|
-
"lim": [
|
|
61
|
-
-3.1429,
|
|
62
|
-
3.1429
|
|
63
|
-
]
|
|
64
|
-
},
|
|
65
|
-
"yaxis": {
|
|
66
|
-
"label": "Y",
|
|
67
|
-
"lim": [
|
|
68
|
-
-2.2,
|
|
69
|
-
2.2
|
|
70
|
-
]
|
|
71
|
-
},
|
|
72
|
-
"calls": [
|
|
73
|
-
{
|
|
74
|
-
"id": "ax_00_rotation_field",
|
|
75
|
-
"method": "quiver",
|
|
76
|
-
"data_ref": {
|
|
77
|
-
"x": "ax-row-0-col-0_trace-id-ax_00_rotation_field_variable-x",
|
|
78
|
-
"y": "ax-row-0-col-0_trace-id-ax_00_rotation_field_variable-y",
|
|
79
|
-
"u": "ax-row-0-col-0_trace-id-ax_00_rotation_field_variable-u",
|
|
80
|
-
"v": "ax-row-0-col-0_trace-id-ax_00_rotation_field_variable-v"
|
|
81
|
-
},
|
|
82
|
-
"kwargs": {
|
|
83
|
-
"width": 0.003
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
]
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
"data": {
|
|
90
|
-
"csv_path": "quiver.csv",
|
|
91
|
-
"columns_actual": [
|
|
92
|
-
"ax_00_rotation_field_quiver_x",
|
|
93
|
-
"ax_00_rotation_field_quiver_y",
|
|
94
|
-
"ax_00_rotation_field_quiver_u",
|
|
95
|
-
"ax_00_rotation_field_quiver_v"
|
|
96
|
-
],
|
|
97
|
-
"csv_hash": "fceafd100793c375"
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"scitex_schema": "scitex.plt.figure.recipe",
|
|
3
|
-
"scitex_schema_version": "0.2.0",
|
|
4
|
-
"figure_uuid": "2b093fec-f7c0-44ad-8394-d777161cca82",
|
|
5
|
-
"runtime": {
|
|
6
|
-
"scitex_version": "2.6.0",
|
|
7
|
-
"matplotlib_version": "3.10.7",
|
|
8
|
-
"created_at": "2025-12-09T23:03:44.862947"
|
|
9
|
-
},
|
|
10
|
-
"figure": {
|
|
11
|
-
"size_mm": [
|
|
12
|
-
80.0,
|
|
13
|
-
68.0
|
|
14
|
-
],
|
|
15
|
-
"dpi": 300,
|
|
16
|
-
"auto_crop": true,
|
|
17
|
-
"crop_margin_mm": 1.0,
|
|
18
|
-
"mode": "publication"
|
|
19
|
-
},
|
|
20
|
-
"axes_bbox_px": {
|
|
21
|
-
"x0": 176,
|
|
22
|
-
"y0": 148,
|
|
23
|
-
"x1": 649,
|
|
24
|
-
"y1": 479,
|
|
25
|
-
"width": 472,
|
|
26
|
-
"height": 331
|
|
27
|
-
},
|
|
28
|
-
"axes_bbox_mm": {
|
|
29
|
-
"x0": 20.0,
|
|
30
|
-
"y0": 19.99,
|
|
31
|
-
"x1": 60.0,
|
|
32
|
-
"y1": 47.99,
|
|
33
|
-
"width": 40.0,
|
|
34
|
-
"height": 28.0
|
|
35
|
-
},
|
|
36
|
-
"style": {
|
|
37
|
-
"axis_thickness_mm": 0.2,
|
|
38
|
-
"tick_length_mm": 0.8,
|
|
39
|
-
"tick_thickness_mm": 0.2,
|
|
40
|
-
"trace_thickness_mm": 0.2,
|
|
41
|
-
"marker_size_mm": 0.8,
|
|
42
|
-
"axis_font_size_pt": 7,
|
|
43
|
-
"tick_font_size_pt": 7,
|
|
44
|
-
"title_font_size_pt": 8,
|
|
45
|
-
"legend_font_size_pt": 6,
|
|
46
|
-
"label_pad_pt": 0.5,
|
|
47
|
-
"tick_pad_pt": 2.0,
|
|
48
|
-
"title_pad_pt": 1.0,
|
|
49
|
-
"font_family": "Arial",
|
|
50
|
-
"n_ticks": 4
|
|
51
|
-
},
|
|
52
|
-
"axes": {
|
|
53
|
-
"ax_00": {
|
|
54
|
-
"grid_position": {
|
|
55
|
-
"row": 0,
|
|
56
|
-
"col": 0
|
|
57
|
-
},
|
|
58
|
-
"xaxis": {
|
|
59
|
-
"label": "X",
|
|
60
|
-
"lim": [
|
|
61
|
-
-2.8571,
|
|
62
|
-
2.8571
|
|
63
|
-
]
|
|
64
|
-
},
|
|
65
|
-
"yaxis": {
|
|
66
|
-
"label": "Y",
|
|
67
|
-
"lim": [
|
|
68
|
-
-2.0,
|
|
69
|
-
2.0
|
|
70
|
-
]
|
|
71
|
-
},
|
|
72
|
-
"calls": [
|
|
73
|
-
{
|
|
74
|
-
"id": "ax_00_flow_field",
|
|
75
|
-
"method": "streamplot",
|
|
76
|
-
"data_ref": {
|
|
77
|
-
"x": "ax-row-0-col-0_trace-id-ax_00_flow_field_variable-x",
|
|
78
|
-
"y": "ax-row-0-col-0_trace-id-ax_00_flow_field_variable-y",
|
|
79
|
-
"u": "ax-row-0-col-0_trace-id-ax_00_flow_field_variable-u",
|
|
80
|
-
"v": "ax-row-0-col-0_trace-id-ax_00_flow_field_variable-v"
|
|
81
|
-
},
|
|
82
|
-
"kwargs": {
|
|
83
|
-
"density": 1,
|
|
84
|
-
"linewidth": 0.5669
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
]
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
"data": {
|
|
91
|
-
"csv_path": "streamplot.csv",
|
|
92
|
-
"columns_actual": [
|
|
93
|
-
"ax_00_flow_field_streamplot_x",
|
|
94
|
-
"ax_00_flow_field_streamplot_y",
|
|
95
|
-
"ax_00_flow_field_streamplot_u",
|
|
96
|
-
"ax_00_flow_field_streamplot_v"
|
|
97
|
-
],
|
|
98
|
-
"csv_hash": "f652d8cf630fa60e"
|
|
99
|
-
}
|
|
100
|
-
}
|
scitex/vis/__init__.py
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
# Timestamp: 2025-12-08
|
|
4
|
-
# File: ./src/scitex/vis/__init__.py
|
|
5
|
-
"""
|
|
6
|
-
SciTeX Visualization Module (scitex.vis)
|
|
7
|
-
|
|
8
|
-
Canvas-based composition of publication-quality figures.
|
|
9
|
-
|
|
10
|
-
Terminology:
|
|
11
|
-
- Canvas: A paper figure workspace (e.g., "Figure 1" in publication)
|
|
12
|
-
- Panel: A single component on canvas (stx.plt output or image)
|
|
13
|
-
- Figure: Reserved for matplotlib's fig object (see scitex.plt)
|
|
14
|
-
|
|
15
|
-
Quick Start:
|
|
16
|
-
-----------
|
|
17
|
-
>>> import scitex as stx
|
|
18
|
-
>>>
|
|
19
|
-
>>> # Create canvas and add panels
|
|
20
|
-
>>> stx.vis.create_canvas("/output", "fig1")
|
|
21
|
-
>>> stx.vis.add_panel("/output", "fig1", "panel_a", source="plot.png",
|
|
22
|
-
... position=(10, 10), size=(80, 60), label="A")
|
|
23
|
-
>>>
|
|
24
|
-
>>> # Save with stx.io (auto-exports PNG/PDF/SVG)
|
|
25
|
-
>>> canvas = stx.io.load("/output/fig1.canvas")
|
|
26
|
-
>>> stx.io.save(canvas, "/output/fig1_copy.canvas")
|
|
27
|
-
|
|
28
|
-
Directory Structure:
|
|
29
|
-
-------------------
|
|
30
|
-
{parent_dir}/{canvas_name}.canvas/
|
|
31
|
-
├── canvas.json # Layout, panels, composition
|
|
32
|
-
├── panels/ # Panel directories
|
|
33
|
-
└── exports/ # canvas.png, canvas.pdf, canvas.svg
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
# Submodules for advanced use
|
|
37
|
-
from . import io
|
|
38
|
-
from . import model
|
|
39
|
-
from . import backend
|
|
40
|
-
from . import utils
|
|
41
|
-
from . import editor
|
|
42
|
-
|
|
43
|
-
# Canvas class
|
|
44
|
-
from .canvas import Canvas
|
|
45
|
-
|
|
46
|
-
# =============================================================================
|
|
47
|
-
# Primary API (minimal, reusable, flexible)
|
|
48
|
-
# =============================================================================
|
|
49
|
-
|
|
50
|
-
# Canvas operations
|
|
51
|
-
from .io import (
|
|
52
|
-
ensure_canvas_directory as create_canvas,
|
|
53
|
-
get_canvas_directory_path as get_canvas_path,
|
|
54
|
-
canvas_directory_exists as canvas_exists,
|
|
55
|
-
list_canvas_directories as list_canvases,
|
|
56
|
-
delete_canvas_directory as delete_canvas,
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
# Panel operations
|
|
60
|
-
from .io import (
|
|
61
|
-
add_panel_from_scitex,
|
|
62
|
-
add_panel_from_image,
|
|
63
|
-
update_panel,
|
|
64
|
-
remove_panel,
|
|
65
|
-
list_panels,
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
# Export (usually handled by stx.io.save, but available for explicit use)
|
|
69
|
-
from .io import export_canvas_to_file as export_canvas
|
|
70
|
-
|
|
71
|
-
# Data integrity
|
|
72
|
-
from .io import verify_all_data_hashes as verify_data
|
|
73
|
-
|
|
74
|
-
# Editor
|
|
75
|
-
from .editor import edit
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
# =============================================================================
|
|
79
|
-
# Convenience wrapper for add_panel
|
|
80
|
-
# =============================================================================
|
|
81
|
-
def add_panel(
|
|
82
|
-
parent_dir,
|
|
83
|
-
canvas_name,
|
|
84
|
-
panel_name,
|
|
85
|
-
source,
|
|
86
|
-
position=(0, 0),
|
|
87
|
-
size=(50, 50),
|
|
88
|
-
label="",
|
|
89
|
-
bundle=False,
|
|
90
|
-
**kwargs,
|
|
91
|
-
):
|
|
92
|
-
"""
|
|
93
|
-
Add a panel to canvas (auto-detects scitex vs image type).
|
|
94
|
-
|
|
95
|
-
Parameters
|
|
96
|
-
----------
|
|
97
|
-
parent_dir : str or Path
|
|
98
|
-
Parent directory containing canvas
|
|
99
|
-
canvas_name : str
|
|
100
|
-
Canvas name
|
|
101
|
-
panel_name : str
|
|
102
|
-
Name for the panel
|
|
103
|
-
source : str or Path
|
|
104
|
-
Source file (PNG, JPG, SVG)
|
|
105
|
-
position : tuple
|
|
106
|
-
(x_mm, y_mm) position on canvas
|
|
107
|
-
size : tuple
|
|
108
|
-
(width_mm, height_mm) panel size
|
|
109
|
-
label : str
|
|
110
|
-
Panel label (A, B, C...)
|
|
111
|
-
bundle : bool
|
|
112
|
-
If True, copy files. If False (default), use symlinks.
|
|
113
|
-
**kwargs
|
|
114
|
-
Additional panel properties (rotation_deg, opacity, flip_h, etc.)
|
|
115
|
-
"""
|
|
116
|
-
from pathlib import Path
|
|
117
|
-
|
|
118
|
-
source = Path(source)
|
|
119
|
-
panel_properties = {
|
|
120
|
-
"position": {"x_mm": position[0], "y_mm": position[1]},
|
|
121
|
-
"size": {"width_mm": size[0], "height_mm": size[1]},
|
|
122
|
-
**kwargs,
|
|
123
|
-
}
|
|
124
|
-
if label:
|
|
125
|
-
panel_properties["label"] = {"text": label, "position": "top-left"}
|
|
126
|
-
|
|
127
|
-
# Check if scitex output (has .json/.csv siblings)
|
|
128
|
-
json_sibling = source.parent / f"{source.stem}.json"
|
|
129
|
-
if json_sibling.exists():
|
|
130
|
-
return add_panel_from_scitex(
|
|
131
|
-
project_dir=parent_dir,
|
|
132
|
-
canvas_name=canvas_name,
|
|
133
|
-
panel_name=panel_name,
|
|
134
|
-
source_png=source,
|
|
135
|
-
panel_properties=panel_properties,
|
|
136
|
-
bundle=bundle,
|
|
137
|
-
)
|
|
138
|
-
else:
|
|
139
|
-
return add_panel_from_image(
|
|
140
|
-
project_dir=parent_dir,
|
|
141
|
-
canvas_name=canvas_name,
|
|
142
|
-
panel_name=panel_name,
|
|
143
|
-
source_image=source,
|
|
144
|
-
panel_properties=panel_properties,
|
|
145
|
-
bundle=bundle,
|
|
146
|
-
)
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
__all__ = [
|
|
150
|
-
# Canvas class
|
|
151
|
-
"Canvas",
|
|
152
|
-
# Submodules (advanced)
|
|
153
|
-
"io",
|
|
154
|
-
"model",
|
|
155
|
-
"backend",
|
|
156
|
-
"utils",
|
|
157
|
-
"editor",
|
|
158
|
-
# Canvas operations
|
|
159
|
-
"create_canvas",
|
|
160
|
-
"get_canvas_path",
|
|
161
|
-
"canvas_exists",
|
|
162
|
-
"list_canvases",
|
|
163
|
-
"delete_canvas",
|
|
164
|
-
# Panel operations
|
|
165
|
-
"add_panel",
|
|
166
|
-
"update_panel",
|
|
167
|
-
"remove_panel",
|
|
168
|
-
"list_panels",
|
|
169
|
-
# Export
|
|
170
|
-
"export_canvas",
|
|
171
|
-
# Data integrity
|
|
172
|
-
"verify_data",
|
|
173
|
-
# Editor
|
|
174
|
-
"edit",
|
|
175
|
-
]
|
|
176
|
-
|
|
177
|
-
# EOF
|