jarvisplot 2.0.6__tar.gz → 2.1.1__tar.gz
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.
- jarvisplot-2.1.1/JarvisPLOT.egg-info/PKG-INFO +296 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/JarvisPLOT.egg-info/SOURCES.txt +16 -0
- jarvisplot-2.1.1/PKG-INFO +296 -0
- jarvisplot-2.1.1/README.md +274 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/adapters_rect.py +110 -2
- jarvisplot-2.1.1/jarvisplot/Figure/bin_stat_runtime.py +217 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/colorbar_runtime.py +16 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/config_runtime.py +33 -0
- jarvisplot-2.1.1/jarvisplot/Figure/corr_layout.py +369 -0
- jarvisplot-2.1.1/jarvisplot/Figure/corr_layout_diamond.py +482 -0
- jarvisplot-2.1.1/jarvisplot/Figure/corr_order.py +211 -0
- jarvisplot-2.1.1/jarvisplot/Figure/correlation_runtime.py +428 -0
- jarvisplot-2.1.1/jarvisplot/Figure/corrplot_runtime.py +1001 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/debug_config.py +28 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/design_runtime.py +17 -2
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/figure.py +113 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/figure_types.py +157 -3
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/layer_runtime.py +39 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/layout_runtime.py +180 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/method_registry.py +8 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/preprocessor.py +207 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/preprocessor_runtime.py +160 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/profile_runtime.py +66 -0
- jarvisplot-2.1.1/jarvisplot/Figure/significance_runtime.py +263 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/capabilities.py +104 -5
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/rect.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/rect5x1.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/rect_marginal.json +21 -20
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/rectratio.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/ternary.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/4x1/rect.json +5 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/4x1/ternary.json +1 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +5 -4
- jarvisplot-2.1.1/jarvisplot/cards/corrplot/diamond.json +555 -0
- jarvisplot-2.1.1/jarvisplot/cards/corrplot/matrix.json +542 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/gambit/2x1/rect_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/gambit/2x1/ternary.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/style_preference.json +4 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/column_demand.py +112 -3
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/column_probe.py +6 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/core.py +3 -1
- jarvisplot-2.1.1/jarvisplot/core_runtime.py +1015 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/data_loader.py +34 -4
- jarvisplot-2.1.1/jarvisplot/dataset_types.py +24 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/dryrun_runtime.py +6 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/man_methods.py +153 -19
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/man_render_agent.py +2 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/manifest.yaml +4 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/method_notes.yaml +23 -2
- jarvisplot-2.1.1/jarvisplot/manual_cards/type-correlation-matrix.yaml +141 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/method_contracts.py +5 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/core/dataset.json +13 -3
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/core/figure.json +14 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/core/layer.json +2 -0
- jarvisplot-2.1.1/jarvisplot/schema/core/transform.json +205 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/manifest.json +5 -0
- jarvisplot-2.1.1/jarvisplot/schema/methods/corrplot.json +36 -0
- jarvisplot-2.1.1/jarvisplot/schema/methods/stairs.json +36 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/templates_catalog.py +112 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/transform_contracts.py +273 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/validation.py +195 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/template.py +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/pyproject.toml +1 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_capabilities.py +39 -0
- jarvisplot-2.1.1/tests/test_correlation_runtime.py +192 -0
- jarvisplot-2.1.1/tests/test_corrplot.py +1012 -0
- jarvisplot-2.1.1/tests/test_imshow_adapter.py +104 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_man_cli.py +49 -0
- jarvisplot-2.1.1/tests/test_template_catalog.py +91 -0
- jarvisplot-2.0.6/JarvisPLOT.egg-info/PKG-INFO +0 -197
- jarvisplot-2.0.6/PKG-INFO +0 -197
- jarvisplot-2.0.6/README.md +0 -175
- jarvisplot-2.0.6/jarvisplot/core_runtime.py +0 -263
- jarvisplot-2.0.6/jarvisplot/schema/core/transform.json +0 -77
- jarvisplot-2.0.6/tests/test_template_catalog.py +0 -45
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/JarvisPLOT.egg-info/entry_points.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/JarvisPLOT.egg-info/requires.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/JarvisPLOT.egg-info/top_level.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/adapters_ternary.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/data_pipelines.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/density_cell_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/dynesty_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/helper.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/posterior_hpd.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/posterior_mesh.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/Figure/style_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/agent_digest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/agent_io.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cache_store.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/args.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/colors/colormaps.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/default/output.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/flowchart/default.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/gambit.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cards/icons/gambit_small.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cli.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/cli_help.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/client.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/config.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/config_address.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/core_assets.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/data_access.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/data_loader_hdf5.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/data_loader_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/data_loader_summary.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/diagnostics.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/expr_names.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/fix_apply.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/flowchart.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/inner_func.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/man_catalog.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/man_render_human.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/man_transforms.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/agent-output.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/cli-map.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/data-columns.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/debug-overlay.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/layer-method.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/style-axes.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/validate.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/workflow.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/memtrace.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/render_health.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/core/common.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/bar.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/barh.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/contour.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/contourf.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/errorbar.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/fill.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/fill_between.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/hist.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/hist2d.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/imshow.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/jpcontour.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/jpcontourf.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/jpfield.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/pcolor.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/pcolormesh.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/plot.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/quiver.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/scatter.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/step.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/tricontour.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/tricontourf.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/tripcolor.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/triplot.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/voronoi.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/methods/voronoif.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema/plot-config.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema_catalog.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/schema_diagnostics.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/utils/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/utils/cmaps.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/utils/dataframes.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/utils/expression.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/utils/interpolator.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/utils/pathing.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/cap.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/config_cmd.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/data.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/doctor.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/dryrun.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/explain.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/man.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/suggest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/verbs/validate.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/jarvisplot/yaml_io.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/setup.cfg +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_agent_digest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_agent_envelope.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_axis_title.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_card_debug_shape.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_cli_help.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_cli_verbs.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_cmaps.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_column_existence.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_config_addressing.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_config_edit.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_config_expand.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_data_access.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_data_describe.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_data_head_eval.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_data_loader_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_data_pipelines.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_debug_config.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_debug_switches.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_debug_yaml_override.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_density_cell_transform.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_design_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_docs_status_labels.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_doctor_partial.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_explain.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_figure_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_figure_type_expander.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_fix_application.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_flowchart_renderer.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_interp_2d_transform.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_interpolator_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_jpcontour_methods.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_method_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_parse_data_metadata.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_pathing_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_posterior_hpd.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_render_health.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_row_ledger.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_schema_catalog.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_suggest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_suggest_axes.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_template_json.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_ternary_debug.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_transform_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.1}/tests/test_validate_no_matplotlib.py +0 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: JarvisPLOT
|
|
3
|
+
Version: 2.1.1
|
|
4
|
+
Summary: Jarvis-PLOT: YAML-driven plotting engine
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: loguru
|
|
8
|
+
Requires-Dist: pyyaml
|
|
9
|
+
Requires-Dist: ruamel.yaml>=0.18
|
|
10
|
+
Requires-Dist: jsonschema
|
|
11
|
+
Requires-Dist: Jarvis-Operas>=1.1.4
|
|
12
|
+
Requires-Dist: numpy
|
|
13
|
+
Requires-Dist: pandas
|
|
14
|
+
Requires-Dist: polars
|
|
15
|
+
Requires-Dist: matplotlib
|
|
16
|
+
Requires-Dist: h5py
|
|
17
|
+
Requires-Dist: sympy
|
|
18
|
+
Requires-Dist: scipy
|
|
19
|
+
Requires-Dist: shapely
|
|
20
|
+
Requires-Dist: deepmerge
|
|
21
|
+
Requires-Dist: rich
|
|
22
|
+
|
|
23
|
+
# Jarvis-PLOT
|
|
24
|
+
|
|
25
|
+
Jarvis-PLOT is a lightweight, Python/Matplotlib-based plotting framework developed for **Jarvis-HEP**,
|
|
26
|
+
but it can also be used as a **standalone scientific plotting tool**.
|
|
27
|
+
|
|
28
|
+
It provides a simple command-line interface (CLI) to generate publication-quality figures from YAML configuration files, with most layout and style decisions handled by predefined profiles and style cards.
|
|
29
|
+
|
|
30
|
+
Current release: **2.0.6** (`jplot -v` reports the installed version).
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install JarvisPLOT
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The PyPI / distribution name is `JarvisPLOT` (normalized wheel name: `jarvisplot`).
|
|
41
|
+
The product name remains **Jarvis-PLOT**.
|
|
42
|
+
The Python import package and entrypoint remain unchanged:
|
|
43
|
+
|
|
44
|
+
```python
|
|
45
|
+
import jarvisplot
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
jplot path/to/config.yaml
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If you have an older environment that still uses a historical package name, replace:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
pip uninstall jarvisplot Jarvis-PLOT JarvisPLOT
|
|
56
|
+
pip install JarvisPLOT
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Command-Line Usage
|
|
60
|
+
|
|
61
|
+
Human help uses the same fixed-column Rich panels as Jarvis-HEP V2 / Portal;
|
|
62
|
+
`jplot -h` prints the verb map, and `jplot <verb> -h` opens one verb.
|
|
63
|
+
|
|
64
|
+
Render with a bare path — there is no `jplot run`:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
jplot path/to/config.yaml
|
|
68
|
+
jplot path/to/config.yaml --rebuild-cache
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Everything else is discovery and judgement, in three groups.
|
|
72
|
+
|
|
73
|
+
**Discover** — find out what is legal before writing anything:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
jplot data describe samples.csv # columns, dtypes, ranges (HDF5 tree too)
|
|
77
|
+
jplot data head samples.csv -n 5 # real sample rows
|
|
78
|
+
jplot data eval 'exp(LogL)' --data samples.csv # sandbox an expr
|
|
79
|
+
jplot data suggest-axes samples.csv # scale / lim hints for frame.ax
|
|
80
|
+
jplot cap # section index
|
|
81
|
+
jplot cap methods # all | methods | transforms | types
|
|
82
|
+
jplot cap styles # | styles | cmaps | funcs | cli
|
|
83
|
+
jplot man # manual index
|
|
84
|
+
jplot man workflow # topic page
|
|
85
|
+
jplot man scatter # one method's contract
|
|
86
|
+
jplot explain JP-COL-001 # a diagnostic code
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Draft & edit** — scaffold or address a YAML by name:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
jplot template list # template kinds
|
|
93
|
+
jplot template show posterior_2d # one template + its slots
|
|
94
|
+
jplot suggest --data samples.csv --kind posterior_2d
|
|
95
|
+
jplot config paths plot.yaml # named addresses in this file
|
|
96
|
+
jplot config get plot.yaml 'Figures[p].style'
|
|
97
|
+
jplot config set plot.yaml 'Figures[p].frame.ax.xlim' '[0, 10]' --write
|
|
98
|
+
jplot config expand plot.yaml --figure p --write # type: → layers
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Judge** — check without rendering:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
jplot validate plot.yaml # schema + contracts, no data touched
|
|
105
|
+
jplot dryrun plot.yaml # load data + transforms, row ledger, JP-VIZ health
|
|
106
|
+
jplot doctor plot.yaml # validate + dryrun in one pass
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Every one of these takes `--json`.
|
|
110
|
+
|
|
111
|
+
### Design-Reference Overlay
|
|
112
|
+
|
|
113
|
+
Set `debug: true` on a figure and Jarvis-PLOT draws a dimension overlay on top
|
|
114
|
+
of it: every axes box labelled with its rect and its size in centimetres, page
|
|
115
|
+
margins, the colorbar gap, and an "axes layout" panel. It is meant for checking
|
|
116
|
+
a layout, so a figure with `layers: []` is a legitimate use.
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
Figures:
|
|
120
|
+
- name: layout_check
|
|
121
|
+
debug: true
|
|
122
|
+
style: [a4paper_2x1, rectcmap]
|
|
123
|
+
layers: []
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The style card's `Debug` block decides what the annotations look like and which
|
|
127
|
+
of them appear; a per-figure `debug:` mapping overrides the card for that figure
|
|
128
|
+
only. See `jplot man debug-overlay` and `docs/specs/STYLE_SCHEMA.md`.
|
|
129
|
+
|
|
130
|
+
> `Figures[].debug` is not the `jplot --debug` flag — the flag only raises the
|
|
131
|
+
> log level.
|
|
132
|
+
|
|
133
|
+
## For Coding Agents
|
|
134
|
+
|
|
135
|
+
Jarvis-PLOT is built so a coding agent can drive it without ever seeing a
|
|
136
|
+
rendered figure. The rule is **the agent writes the YAML itself**; the CLI's job
|
|
137
|
+
is to say what is legal and to judge what was written. There is no verb that
|
|
138
|
+
generates a finished config for you.
|
|
139
|
+
|
|
140
|
+
Every discovery and judging verb prints **one JSON envelope on stdout**, with
|
|
141
|
+
humans and logs on stderr:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{"api_version": 1, "kind": "cap.methods", "ok": true,
|
|
145
|
+
"data": {...}, "diagnostics": [], "error": null}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`--json` turns it on, and it is **already the default when stdout is not a
|
|
149
|
+
TTY** — piping is enough.
|
|
150
|
+
|
|
151
|
+
The loop `jplot man` prints is:
|
|
152
|
+
|
|
153
|
+
1. `jplot data describe <file> --json` — column names from the real file. Never
|
|
154
|
+
invent one; a wrong name is a hard error, not a warning.
|
|
155
|
+
2. `jplot cap methods|styles|cmaps|funcs|transforms|types --json` — the legal
|
|
156
|
+
strings, read live from the registries rather than from documentation.
|
|
157
|
+
3. Edit the YAML in an editor (or `jplot config set … --write`). Reach for a
|
|
158
|
+
`type:` macro first, drop to explicit `layers` when the macro cannot say it.
|
|
159
|
+
4. `jplot doctor <file> --json` — validate + dryrun in one pass. Diagnostics
|
|
160
|
+
carry `JP-*` codes; `jplot explain JP-XXX-NNN` expands any of them.
|
|
161
|
+
5. `jplot <file>` — render, only when the figure itself is needed.
|
|
162
|
+
|
|
163
|
+
`jplot man --json` is the machine-readable manual: 15 topics, plus a
|
|
164
|
+
live page for every one of the 28 layer methods and 11 transform steps
|
|
165
|
+
(`jplot man scatter`, `jplot man transform.profile`). Method contracts come from
|
|
166
|
+
the same registry `jplot cap methods` reads, so a man page cannot drift from the
|
|
167
|
+
code.
|
|
168
|
+
|
|
169
|
+
Two things worth knowing before trusting a config:
|
|
170
|
+
|
|
171
|
+
- `jplot validate` checks shape and contracts and never touches the data;
|
|
172
|
+
`jplot dryrun` loads the data and reports the row ledger and JP-VIZ render
|
|
173
|
+
health. Passing the first says nothing about the second.
|
|
174
|
+
- `docs/specs/AGENT_DATA_API.md` describes a *different*, still-frozen bridge
|
|
175
|
+
(a numeric digest channel for Jarvis-Agent). The surface above is what ships
|
|
176
|
+
today.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Flowchart Rendering
|
|
181
|
+
|
|
182
|
+
Render a Jarvis-HEP flowchart scene JSON (produced by HEP scan tooling — this is
|
|
183
|
+
not general plot YAML):
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
jplot flowchart path/to/scene.json
|
|
187
|
+
# optional output path:
|
|
188
|
+
jplot flowchart path/to/scene.json -o path/to/out.png
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Library form:
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
from jarvisplot import render_flowchart, render_flowchart_file
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Project Workdir and Cache
|
|
198
|
+
|
|
199
|
+
- You can set `project.workdir` in YAML.
|
|
200
|
+
- If `output.dir` is omitted, Jarvis-PLOT defaults to `<workdir>/plots/`.
|
|
201
|
+
- Data cache is stored in `<workdir>/.cache/`.
|
|
202
|
+
- Profiling pipelines are prebuilt once and reused from cache when source fingerprint and profile settings are unchanged.
|
|
203
|
+
- Profiling uses a fast two-stage grid reduction (`pregrid` + render `bin`) for large datasets.
|
|
204
|
+
|
|
205
|
+
### Example: SUSYRun2 Ternary Plots
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
jplot ./bin/SUSYRun2_EWMSSM.yaml
|
|
209
|
+
jplot ./bin/SUSYRun2_GEWMSSM.yaml
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
> **Note:** The data file paths inside the YAML files must be updated to match your local setup.
|
|
213
|
+
|
|
214
|
+
### Example: Dynesty Runplot
|
|
215
|
+
|
|
216
|
+
Jarvis-PLOT includes a reusable dynesty runplot format. With a dataset named
|
|
217
|
+
`dynesty`, the figure can use the built-in card without writing axes or layer
|
|
218
|
+
details:
|
|
219
|
+
|
|
220
|
+
```yaml
|
|
221
|
+
DataSet:
|
|
222
|
+
- name: dynesty
|
|
223
|
+
path: path/to/dynesty_result.csv
|
|
224
|
+
type: csv
|
|
225
|
+
|
|
226
|
+
Figures:
|
|
227
|
+
- name: dynesty_logL_vs_logX
|
|
228
|
+
enable: true
|
|
229
|
+
style:
|
|
230
|
+
- a4paper_2x1
|
|
231
|
+
- dynesty_runplot
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
See `docs/specs/DYNESTY_RUNPLOT.md` for the default axes, KDE, scatter overlay,
|
|
235
|
+
and evidence summary behavior.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Notes
|
|
240
|
+
|
|
241
|
+
- Figures are saved automatically to the output paths defined in the YAML configuration.
|
|
242
|
+
- Common output formats include PNG and PDF (backend-dependent).
|
|
243
|
+
- Saved figures include file metadata such as `Creator: Jarvis-PLOT, powered by Jarvis-HEP` and `Jarvis-PLOT version: X.Y.Z`; the PNG `Description` also includes both fields for macOS Finder compatibility.
|
|
244
|
+
- Jarvis-PLOT works in headless environments (SSH, batch jobs) without any GUI backend.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Requirements
|
|
249
|
+
|
|
250
|
+
### Python
|
|
251
|
+
- **Python ≥ 3.10** (tested on 3.10–3.13)
|
|
252
|
+
|
|
253
|
+
### Required Packages
|
|
254
|
+
- `numpy`
|
|
255
|
+
- `pandas`
|
|
256
|
+
- `polars`
|
|
257
|
+
- `matplotlib`
|
|
258
|
+
- `pyyaml`
|
|
259
|
+
- `jsonschema`
|
|
260
|
+
- `scipy` — numerical utilities
|
|
261
|
+
- `h5py` — required for loading HDF5 data files
|
|
262
|
+
- `shapely`
|
|
263
|
+
- `sympy`
|
|
264
|
+
- `loguru`
|
|
265
|
+
- `deepmerge`
|
|
266
|
+
- `ruamel.yaml>=0.18` — round-trip YAML editing for `jplot config set`
|
|
267
|
+
- `rich` — the fixed-column help and manual panels
|
|
268
|
+
- `Jarvis-Operas>=1.1.4`
|
|
269
|
+
|
|
270
|
+
### Github Page
|
|
271
|
+
[https://github.com/Pengxuan-Zhu-Phys/Jarvis-PLOT](https://github.com/Pengxuan-Zhu-Phys/Jarvis-PLOT)
|
|
272
|
+
|
|
273
|
+
### Documentation
|
|
274
|
+
[https://pengxuan-zhu-phys.github.io/Jarvis-Docs/](https://pengxuan-zhu-phys.github.io/Jarvis-Docs/)
|
|
275
|
+
|
|
276
|
+
### Repository Docs
|
|
277
|
+
|
|
278
|
+
Tracked project docs live in `docs/`.
|
|
279
|
+
|
|
280
|
+
- `docs/README.md` - repo doc index
|
|
281
|
+
- `docs/context/JARVIS_PLOT_CONTEXT.md` - primary Codex-facing boundary doc
|
|
282
|
+
- `docs/context/CODE_MAP_JARVIS_PLOT.md` - concrete code owner map
|
|
283
|
+
- `docs/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md` - runtime execution contract
|
|
284
|
+
- `docs/roadmap/IMPLEMENTATION_ROADMAP.md` - active backlog and future work list
|
|
285
|
+
- `docs/specs/AGENT_DATA_API.md` - planned numeric agent bridge (spec only, frozen — not the shipped CLI agent surface above)
|
|
286
|
+
- `docs/specs/STYLE_SCHEMA.md` - style card contract, including the `Debug` overlay block
|
|
287
|
+
- `docs/dev/DEVELOPER_RULES.md` - current pipeline and cache rules
|
|
288
|
+
- `docs/dev/MEMORY_OPTIMIZATION_GUIDE.md` - narrow-table memory notes
|
|
289
|
+
|
|
290
|
+
Read the context docs and roadmap before changing parsing, transforms, rendering, or layout-related behavior.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## License
|
|
295
|
+
|
|
296
|
+
MIT License
|
|
@@ -26,6 +26,7 @@ jarvisplot/data_loader.py
|
|
|
26
26
|
jarvisplot/data_loader_hdf5.py
|
|
27
27
|
jarvisplot/data_loader_runtime.py
|
|
28
28
|
jarvisplot/data_loader_summary.py
|
|
29
|
+
jarvisplot/dataset_types.py
|
|
29
30
|
jarvisplot/diagnostic_guidance.py
|
|
30
31
|
jarvisplot/diagnostics.py
|
|
31
32
|
jarvisplot/dryrun_runtime.py
|
|
@@ -50,8 +51,14 @@ jarvisplot/yaml_io.py
|
|
|
50
51
|
jarvisplot/Figure/__init__.py
|
|
51
52
|
jarvisplot/Figure/adapters_rect.py
|
|
52
53
|
jarvisplot/Figure/adapters_ternary.py
|
|
54
|
+
jarvisplot/Figure/bin_stat_runtime.py
|
|
53
55
|
jarvisplot/Figure/colorbar_runtime.py
|
|
54
56
|
jarvisplot/Figure/config_runtime.py
|
|
57
|
+
jarvisplot/Figure/corr_layout.py
|
|
58
|
+
jarvisplot/Figure/corr_layout_diamond.py
|
|
59
|
+
jarvisplot/Figure/corr_order.py
|
|
60
|
+
jarvisplot/Figure/correlation_runtime.py
|
|
61
|
+
jarvisplot/Figure/corrplot_runtime.py
|
|
55
62
|
jarvisplot/Figure/data_pipelines.py
|
|
56
63
|
jarvisplot/Figure/debug_config.py
|
|
57
64
|
jarvisplot/Figure/density_cell_runtime.py
|
|
@@ -72,6 +79,7 @@ jarvisplot/Figure/posterior_mesh.py
|
|
|
72
79
|
jarvisplot/Figure/preprocessor.py
|
|
73
80
|
jarvisplot/Figure/preprocessor_runtime.py
|
|
74
81
|
jarvisplot/Figure/profile_runtime.py
|
|
82
|
+
jarvisplot/Figure/significance_runtime.py
|
|
75
83
|
jarvisplot/Figure/style_runtime.py
|
|
76
84
|
jarvisplot/Figure/cards/std_axes_adapter_config.json
|
|
77
85
|
jarvisplot/cards/args.json
|
|
@@ -90,6 +98,8 @@ jarvisplot/cards/a4paper/4x1/rect_cmap.json
|
|
|
90
98
|
jarvisplot/cards/a4paper/4x1/ternary.json
|
|
91
99
|
jarvisplot/cards/a4paper/4x1/ternary_cmap.json
|
|
92
100
|
jarvisplot/cards/colors/colormaps.json
|
|
101
|
+
jarvisplot/cards/corrplot/diamond.json
|
|
102
|
+
jarvisplot/cards/corrplot/matrix.json
|
|
93
103
|
jarvisplot/cards/default/output.json
|
|
94
104
|
jarvisplot/cards/flowchart/default.json
|
|
95
105
|
jarvisplot/cards/gambit/1x1/ternary.json
|
|
@@ -115,6 +125,7 @@ jarvisplot/manual_cards/layer-method.yaml
|
|
|
115
125
|
jarvisplot/manual_cards/manifest.yaml
|
|
116
126
|
jarvisplot/manual_cards/method_notes.yaml
|
|
117
127
|
jarvisplot/manual_cards/style-axes.yaml
|
|
128
|
+
jarvisplot/manual_cards/type-correlation-matrix.yaml
|
|
118
129
|
jarvisplot/manual_cards/type-posterior-2d.yaml
|
|
119
130
|
jarvisplot/manual_cards/type-profile-2d.yaml
|
|
120
131
|
jarvisplot/manual_cards/validate.yaml
|
|
@@ -131,6 +142,7 @@ jarvisplot/schema/methods/bar.json
|
|
|
131
142
|
jarvisplot/schema/methods/barh.json
|
|
132
143
|
jarvisplot/schema/methods/contour.json
|
|
133
144
|
jarvisplot/schema/methods/contourf.json
|
|
145
|
+
jarvisplot/schema/methods/corrplot.json
|
|
134
146
|
jarvisplot/schema/methods/dynesty_runplot.json
|
|
135
147
|
jarvisplot/schema/methods/errorbar.json
|
|
136
148
|
jarvisplot/schema/methods/fill.json
|
|
@@ -147,6 +159,7 @@ jarvisplot/schema/methods/pcolormesh.json
|
|
|
147
159
|
jarvisplot/schema/methods/plot.json
|
|
148
160
|
jarvisplot/schema/methods/quiver.json
|
|
149
161
|
jarvisplot/schema/methods/scatter.json
|
|
162
|
+
jarvisplot/schema/methods/stairs.json
|
|
150
163
|
jarvisplot/schema/methods/step.json
|
|
151
164
|
jarvisplot/schema/methods/tricontour.json
|
|
152
165
|
jarvisplot/schema/methods/tricontourf.json
|
|
@@ -184,6 +197,8 @@ tests/test_column_existence.py
|
|
|
184
197
|
tests/test_config_addressing.py
|
|
185
198
|
tests/test_config_edit.py
|
|
186
199
|
tests/test_config_expand.py
|
|
200
|
+
tests/test_correlation_runtime.py
|
|
201
|
+
tests/test_corrplot.py
|
|
187
202
|
tests/test_data_access.py
|
|
188
203
|
tests/test_data_describe.py
|
|
189
204
|
tests/test_data_head_eval.py
|
|
@@ -202,6 +217,7 @@ tests/test_figure_contracts.py
|
|
|
202
217
|
tests/test_figure_type_expander.py
|
|
203
218
|
tests/test_fix_application.py
|
|
204
219
|
tests/test_flowchart_renderer.py
|
|
220
|
+
tests/test_imshow_adapter.py
|
|
205
221
|
tests/test_interp_2d_transform.py
|
|
206
222
|
tests/test_interp_natural_neighbor.py
|
|
207
223
|
tests/test_interpolator_contracts.py
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: JarvisPLOT
|
|
3
|
+
Version: 2.1.1
|
|
4
|
+
Summary: Jarvis-PLOT: YAML-driven plotting engine
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: loguru
|
|
8
|
+
Requires-Dist: pyyaml
|
|
9
|
+
Requires-Dist: ruamel.yaml>=0.18
|
|
10
|
+
Requires-Dist: jsonschema
|
|
11
|
+
Requires-Dist: Jarvis-Operas>=1.1.4
|
|
12
|
+
Requires-Dist: numpy
|
|
13
|
+
Requires-Dist: pandas
|
|
14
|
+
Requires-Dist: polars
|
|
15
|
+
Requires-Dist: matplotlib
|
|
16
|
+
Requires-Dist: h5py
|
|
17
|
+
Requires-Dist: sympy
|
|
18
|
+
Requires-Dist: scipy
|
|
19
|
+
Requires-Dist: shapely
|
|
20
|
+
Requires-Dist: deepmerge
|
|
21
|
+
Requires-Dist: rich
|
|
22
|
+
|
|
23
|
+
# Jarvis-PLOT
|
|
24
|
+
|
|
25
|
+
Jarvis-PLOT is a lightweight, Python/Matplotlib-based plotting framework developed for **Jarvis-HEP**,
|
|
26
|
+
but it can also be used as a **standalone scientific plotting tool**.
|
|
27
|
+
|
|
28
|
+
It provides a simple command-line interface (CLI) to generate publication-quality figures from YAML configuration files, with most layout and style decisions handled by predefined profiles and style cards.
|
|
29
|
+
|
|
30
|
+
Current release: **2.0.6** (`jplot -v` reports the installed version).
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install JarvisPLOT
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The PyPI / distribution name is `JarvisPLOT` (normalized wheel name: `jarvisplot`).
|
|
41
|
+
The product name remains **Jarvis-PLOT**.
|
|
42
|
+
The Python import package and entrypoint remain unchanged:
|
|
43
|
+
|
|
44
|
+
```python
|
|
45
|
+
import jarvisplot
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
jplot path/to/config.yaml
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If you have an older environment that still uses a historical package name, replace:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
pip uninstall jarvisplot Jarvis-PLOT JarvisPLOT
|
|
56
|
+
pip install JarvisPLOT
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Command-Line Usage
|
|
60
|
+
|
|
61
|
+
Human help uses the same fixed-column Rich panels as Jarvis-HEP V2 / Portal;
|
|
62
|
+
`jplot -h` prints the verb map, and `jplot <verb> -h` opens one verb.
|
|
63
|
+
|
|
64
|
+
Render with a bare path — there is no `jplot run`:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
jplot path/to/config.yaml
|
|
68
|
+
jplot path/to/config.yaml --rebuild-cache
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Everything else is discovery and judgement, in three groups.
|
|
72
|
+
|
|
73
|
+
**Discover** — find out what is legal before writing anything:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
jplot data describe samples.csv # columns, dtypes, ranges (HDF5 tree too)
|
|
77
|
+
jplot data head samples.csv -n 5 # real sample rows
|
|
78
|
+
jplot data eval 'exp(LogL)' --data samples.csv # sandbox an expr
|
|
79
|
+
jplot data suggest-axes samples.csv # scale / lim hints for frame.ax
|
|
80
|
+
jplot cap # section index
|
|
81
|
+
jplot cap methods # all | methods | transforms | types
|
|
82
|
+
jplot cap styles # | styles | cmaps | funcs | cli
|
|
83
|
+
jplot man # manual index
|
|
84
|
+
jplot man workflow # topic page
|
|
85
|
+
jplot man scatter # one method's contract
|
|
86
|
+
jplot explain JP-COL-001 # a diagnostic code
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Draft & edit** — scaffold or address a YAML by name:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
jplot template list # template kinds
|
|
93
|
+
jplot template show posterior_2d # one template + its slots
|
|
94
|
+
jplot suggest --data samples.csv --kind posterior_2d
|
|
95
|
+
jplot config paths plot.yaml # named addresses in this file
|
|
96
|
+
jplot config get plot.yaml 'Figures[p].style'
|
|
97
|
+
jplot config set plot.yaml 'Figures[p].frame.ax.xlim' '[0, 10]' --write
|
|
98
|
+
jplot config expand plot.yaml --figure p --write # type: → layers
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Judge** — check without rendering:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
jplot validate plot.yaml # schema + contracts, no data touched
|
|
105
|
+
jplot dryrun plot.yaml # load data + transforms, row ledger, JP-VIZ health
|
|
106
|
+
jplot doctor plot.yaml # validate + dryrun in one pass
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Every one of these takes `--json`.
|
|
110
|
+
|
|
111
|
+
### Design-Reference Overlay
|
|
112
|
+
|
|
113
|
+
Set `debug: true` on a figure and Jarvis-PLOT draws a dimension overlay on top
|
|
114
|
+
of it: every axes box labelled with its rect and its size in centimetres, page
|
|
115
|
+
margins, the colorbar gap, and an "axes layout" panel. It is meant for checking
|
|
116
|
+
a layout, so a figure with `layers: []` is a legitimate use.
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
Figures:
|
|
120
|
+
- name: layout_check
|
|
121
|
+
debug: true
|
|
122
|
+
style: [a4paper_2x1, rectcmap]
|
|
123
|
+
layers: []
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The style card's `Debug` block decides what the annotations look like and which
|
|
127
|
+
of them appear; a per-figure `debug:` mapping overrides the card for that figure
|
|
128
|
+
only. See `jplot man debug-overlay` and `docs/specs/STYLE_SCHEMA.md`.
|
|
129
|
+
|
|
130
|
+
> `Figures[].debug` is not the `jplot --debug` flag — the flag only raises the
|
|
131
|
+
> log level.
|
|
132
|
+
|
|
133
|
+
## For Coding Agents
|
|
134
|
+
|
|
135
|
+
Jarvis-PLOT is built so a coding agent can drive it without ever seeing a
|
|
136
|
+
rendered figure. The rule is **the agent writes the YAML itself**; the CLI's job
|
|
137
|
+
is to say what is legal and to judge what was written. There is no verb that
|
|
138
|
+
generates a finished config for you.
|
|
139
|
+
|
|
140
|
+
Every discovery and judging verb prints **one JSON envelope on stdout**, with
|
|
141
|
+
humans and logs on stderr:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{"api_version": 1, "kind": "cap.methods", "ok": true,
|
|
145
|
+
"data": {...}, "diagnostics": [], "error": null}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`--json` turns it on, and it is **already the default when stdout is not a
|
|
149
|
+
TTY** — piping is enough.
|
|
150
|
+
|
|
151
|
+
The loop `jplot man` prints is:
|
|
152
|
+
|
|
153
|
+
1. `jplot data describe <file> --json` — column names from the real file. Never
|
|
154
|
+
invent one; a wrong name is a hard error, not a warning.
|
|
155
|
+
2. `jplot cap methods|styles|cmaps|funcs|transforms|types --json` — the legal
|
|
156
|
+
strings, read live from the registries rather than from documentation.
|
|
157
|
+
3. Edit the YAML in an editor (or `jplot config set … --write`). Reach for a
|
|
158
|
+
`type:` macro first, drop to explicit `layers` when the macro cannot say it.
|
|
159
|
+
4. `jplot doctor <file> --json` — validate + dryrun in one pass. Diagnostics
|
|
160
|
+
carry `JP-*` codes; `jplot explain JP-XXX-NNN` expands any of them.
|
|
161
|
+
5. `jplot <file>` — render, only when the figure itself is needed.
|
|
162
|
+
|
|
163
|
+
`jplot man --json` is the machine-readable manual: 15 topics, plus a
|
|
164
|
+
live page for every one of the 28 layer methods and 11 transform steps
|
|
165
|
+
(`jplot man scatter`, `jplot man transform.profile`). Method contracts come from
|
|
166
|
+
the same registry `jplot cap methods` reads, so a man page cannot drift from the
|
|
167
|
+
code.
|
|
168
|
+
|
|
169
|
+
Two things worth knowing before trusting a config:
|
|
170
|
+
|
|
171
|
+
- `jplot validate` checks shape and contracts and never touches the data;
|
|
172
|
+
`jplot dryrun` loads the data and reports the row ledger and JP-VIZ render
|
|
173
|
+
health. Passing the first says nothing about the second.
|
|
174
|
+
- `docs/specs/AGENT_DATA_API.md` describes a *different*, still-frozen bridge
|
|
175
|
+
(a numeric digest channel for Jarvis-Agent). The surface above is what ships
|
|
176
|
+
today.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Flowchart Rendering
|
|
181
|
+
|
|
182
|
+
Render a Jarvis-HEP flowchart scene JSON (produced by HEP scan tooling — this is
|
|
183
|
+
not general plot YAML):
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
jplot flowchart path/to/scene.json
|
|
187
|
+
# optional output path:
|
|
188
|
+
jplot flowchart path/to/scene.json -o path/to/out.png
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Library form:
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
from jarvisplot import render_flowchart, render_flowchart_file
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Project Workdir and Cache
|
|
198
|
+
|
|
199
|
+
- You can set `project.workdir` in YAML.
|
|
200
|
+
- If `output.dir` is omitted, Jarvis-PLOT defaults to `<workdir>/plots/`.
|
|
201
|
+
- Data cache is stored in `<workdir>/.cache/`.
|
|
202
|
+
- Profiling pipelines are prebuilt once and reused from cache when source fingerprint and profile settings are unchanged.
|
|
203
|
+
- Profiling uses a fast two-stage grid reduction (`pregrid` + render `bin`) for large datasets.
|
|
204
|
+
|
|
205
|
+
### Example: SUSYRun2 Ternary Plots
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
jplot ./bin/SUSYRun2_EWMSSM.yaml
|
|
209
|
+
jplot ./bin/SUSYRun2_GEWMSSM.yaml
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
> **Note:** The data file paths inside the YAML files must be updated to match your local setup.
|
|
213
|
+
|
|
214
|
+
### Example: Dynesty Runplot
|
|
215
|
+
|
|
216
|
+
Jarvis-PLOT includes a reusable dynesty runplot format. With a dataset named
|
|
217
|
+
`dynesty`, the figure can use the built-in card without writing axes or layer
|
|
218
|
+
details:
|
|
219
|
+
|
|
220
|
+
```yaml
|
|
221
|
+
DataSet:
|
|
222
|
+
- name: dynesty
|
|
223
|
+
path: path/to/dynesty_result.csv
|
|
224
|
+
type: csv
|
|
225
|
+
|
|
226
|
+
Figures:
|
|
227
|
+
- name: dynesty_logL_vs_logX
|
|
228
|
+
enable: true
|
|
229
|
+
style:
|
|
230
|
+
- a4paper_2x1
|
|
231
|
+
- dynesty_runplot
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
See `docs/specs/DYNESTY_RUNPLOT.md` for the default axes, KDE, scatter overlay,
|
|
235
|
+
and evidence summary behavior.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Notes
|
|
240
|
+
|
|
241
|
+
- Figures are saved automatically to the output paths defined in the YAML configuration.
|
|
242
|
+
- Common output formats include PNG and PDF (backend-dependent).
|
|
243
|
+
- Saved figures include file metadata such as `Creator: Jarvis-PLOT, powered by Jarvis-HEP` and `Jarvis-PLOT version: X.Y.Z`; the PNG `Description` also includes both fields for macOS Finder compatibility.
|
|
244
|
+
- Jarvis-PLOT works in headless environments (SSH, batch jobs) without any GUI backend.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Requirements
|
|
249
|
+
|
|
250
|
+
### Python
|
|
251
|
+
- **Python ≥ 3.10** (tested on 3.10–3.13)
|
|
252
|
+
|
|
253
|
+
### Required Packages
|
|
254
|
+
- `numpy`
|
|
255
|
+
- `pandas`
|
|
256
|
+
- `polars`
|
|
257
|
+
- `matplotlib`
|
|
258
|
+
- `pyyaml`
|
|
259
|
+
- `jsonschema`
|
|
260
|
+
- `scipy` — numerical utilities
|
|
261
|
+
- `h5py` — required for loading HDF5 data files
|
|
262
|
+
- `shapely`
|
|
263
|
+
- `sympy`
|
|
264
|
+
- `loguru`
|
|
265
|
+
- `deepmerge`
|
|
266
|
+
- `ruamel.yaml>=0.18` — round-trip YAML editing for `jplot config set`
|
|
267
|
+
- `rich` — the fixed-column help and manual panels
|
|
268
|
+
- `Jarvis-Operas>=1.1.4`
|
|
269
|
+
|
|
270
|
+
### Github Page
|
|
271
|
+
[https://github.com/Pengxuan-Zhu-Phys/Jarvis-PLOT](https://github.com/Pengxuan-Zhu-Phys/Jarvis-PLOT)
|
|
272
|
+
|
|
273
|
+
### Documentation
|
|
274
|
+
[https://pengxuan-zhu-phys.github.io/Jarvis-Docs/](https://pengxuan-zhu-phys.github.io/Jarvis-Docs/)
|
|
275
|
+
|
|
276
|
+
### Repository Docs
|
|
277
|
+
|
|
278
|
+
Tracked project docs live in `docs/`.
|
|
279
|
+
|
|
280
|
+
- `docs/README.md` - repo doc index
|
|
281
|
+
- `docs/context/JARVIS_PLOT_CONTEXT.md` - primary Codex-facing boundary doc
|
|
282
|
+
- `docs/context/CODE_MAP_JARVIS_PLOT.md` - concrete code owner map
|
|
283
|
+
- `docs/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md` - runtime execution contract
|
|
284
|
+
- `docs/roadmap/IMPLEMENTATION_ROADMAP.md` - active backlog and future work list
|
|
285
|
+
- `docs/specs/AGENT_DATA_API.md` - planned numeric agent bridge (spec only, frozen — not the shipped CLI agent surface above)
|
|
286
|
+
- `docs/specs/STYLE_SCHEMA.md` - style card contract, including the `Debug` overlay block
|
|
287
|
+
- `docs/dev/DEVELOPER_RULES.md` - current pipeline and cache rules
|
|
288
|
+
- `docs/dev/MEMORY_OPTIMIZATION_GUIDE.md` - narrow-table memory notes
|
|
289
|
+
|
|
290
|
+
Read the context docs and roadmap before changing parsing, transforms, rendering, or layout-related behavior.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## License
|
|
295
|
+
|
|
296
|
+
MIT License
|