jarvisplot 2.0.6__tar.gz → 2.1.0__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.0/JarvisPLOT.egg-info/PKG-INFO +296 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/SOURCES.txt +14 -0
- jarvisplot-2.1.0/PKG-INFO +296 -0
- jarvisplot-2.1.0/README.md +274 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/adapters_rect.py +110 -2
- jarvisplot-2.1.0/jarvisplot/Figure/bin_stat_runtime.py +217 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/colorbar_runtime.py +16 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/config_runtime.py +33 -0
- jarvisplot-2.1.0/jarvisplot/Figure/corr_layout.py +369 -0
- jarvisplot-2.1.0/jarvisplot/Figure/corr_order.py +211 -0
- jarvisplot-2.1.0/jarvisplot/Figure/correlation_runtime.py +428 -0
- jarvisplot-2.1.0/jarvisplot/Figure/corrplot_runtime.py +556 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/debug_config.py +28 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/design_runtime.py +17 -2
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/figure.py +95 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/figure_types.py +157 -3
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/layer_runtime.py +39 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/layout_runtime.py +180 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/method_registry.py +8 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/preprocessor.py +207 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/preprocessor_runtime.py +160 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/profile_runtime.py +66 -0
- jarvisplot-2.1.0/jarvisplot/Figure/significance_runtime.py +263 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/capabilities.py +29 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect5x1.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect_marginal.json +21 -20
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rectratio.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/ternary.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/rect.json +5 -4
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/ternary.json +1 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +5 -4
- jarvisplot-2.1.0/jarvisplot/cards/corrplot/matrix.json +529 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/2x1/rect_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/2x1/ternary.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +1 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/style_preference.json +3 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/column_demand.py +112 -3
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/column_probe.py +6 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/core.py +3 -1
- jarvisplot-2.1.0/jarvisplot/core_runtime.py +826 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader.py +34 -4
- jarvisplot-2.1.0/jarvisplot/dataset_types.py +24 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/dryrun_runtime.py +6 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/manifest.yaml +4 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/method_notes.yaml +21 -2
- jarvisplot-2.1.0/jarvisplot/manual_cards/type-correlation-matrix.yaml +65 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/method_contracts.py +5 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/dataset.json +13 -3
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/figure.json +14 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/layer.json +2 -0
- jarvisplot-2.1.0/jarvisplot/schema/core/transform.json +205 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/manifest.json +5 -0
- jarvisplot-2.1.0/jarvisplot/schema/methods/corrplot.json +36 -0
- jarvisplot-2.1.0/jarvisplot/schema/methods/stairs.json +36 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/templates_catalog.py +74 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/transform_contracts.py +273 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/validation.py +22 -1
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/pyproject.toml +1 -1
- jarvisplot-2.1.0/tests/test_correlation_runtime.py +192 -0
- jarvisplot-2.1.0/tests/test_corrplot.py +596 -0
- jarvisplot-2.1.0/tests/test_imshow_adapter.py +104 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_template_catalog.py +18 -1
- 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 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/entry_points.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/requires.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/top_level.txt +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/adapters_ternary.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/data_pipelines.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/density_cell_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/dynesty_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/helper.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/posterior_hpd.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/posterior_mesh.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/style_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/agent_digest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/agent_io.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cache_store.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/args.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/colors/colormaps.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/default/output.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/flowchart/default.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/gambit.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/gambit_small.png +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cli.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cli_help.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/client.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/config.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/config_address.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/core_assets.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_access.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader_hdf5.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader_summary.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/diagnostics.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/expr_names.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/fix_apply.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/flowchart.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/inner_func.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_catalog.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_methods.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_render_agent.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_render_human.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_transforms.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/agent-output.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/cli-map.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/data-columns.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/debug-overlay.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/layer-method.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/style-axes.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/validate.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/workflow.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/memtrace.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/render_health.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/common.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/bar.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/barh.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/contour.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/contourf.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/errorbar.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/fill.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/fill_between.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/hist.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/hist2d.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/imshow.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/jpcontour.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/jpcontourf.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/jpfield.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/pcolor.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/pcolormesh.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/plot.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/quiver.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/scatter.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/step.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tricontour.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tricontourf.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tripcolor.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/triplot.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/voronoi.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/voronoif.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/plot-config.json +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema_catalog.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema_diagnostics.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/cmaps.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/dataframes.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/expression.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/interpolator.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/pathing.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/__init__.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/cap.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/config_cmd.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/data.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/doctor.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/dryrun.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/explain.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/man.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/suggest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/template.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/validate.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/yaml_io.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/setup.cfg +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_agent_digest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_agent_envelope.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_axis_title.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_capabilities.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_card_debug_shape.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_cli_help.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_cli_verbs.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_cmaps.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_column_existence.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_config_addressing.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_config_edit.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_config_expand.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_access.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_describe.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_head_eval.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_loader_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_pipelines.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_debug_config.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_debug_switches.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_debug_yaml_override.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_density_cell_transform.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_design_runtime.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_docs_status_labels.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_doctor_partial.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_explain.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_figure_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_figure_type_expander.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_fix_application.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_flowchart_renderer.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_interp_2d_transform.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_interpolator_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_jpcontour_methods.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_man_cli.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_method_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_parse_data_metadata.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_pathing_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_posterior_hpd.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_render_health.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_row_ledger.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_schema_catalog.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_suggest.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_suggest_axes.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_template_json.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_ternary_debug.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_transform_contracts.py +0 -0
- {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_validate_no_matplotlib.py +0 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: JarvisPLOT
|
|
3
|
+
Version: 2.1.0
|
|
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,13 @@ 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_order.py
|
|
59
|
+
jarvisplot/Figure/correlation_runtime.py
|
|
60
|
+
jarvisplot/Figure/corrplot_runtime.py
|
|
55
61
|
jarvisplot/Figure/data_pipelines.py
|
|
56
62
|
jarvisplot/Figure/debug_config.py
|
|
57
63
|
jarvisplot/Figure/density_cell_runtime.py
|
|
@@ -72,6 +78,7 @@ jarvisplot/Figure/posterior_mesh.py
|
|
|
72
78
|
jarvisplot/Figure/preprocessor.py
|
|
73
79
|
jarvisplot/Figure/preprocessor_runtime.py
|
|
74
80
|
jarvisplot/Figure/profile_runtime.py
|
|
81
|
+
jarvisplot/Figure/significance_runtime.py
|
|
75
82
|
jarvisplot/Figure/style_runtime.py
|
|
76
83
|
jarvisplot/Figure/cards/std_axes_adapter_config.json
|
|
77
84
|
jarvisplot/cards/args.json
|
|
@@ -90,6 +97,7 @@ jarvisplot/cards/a4paper/4x1/rect_cmap.json
|
|
|
90
97
|
jarvisplot/cards/a4paper/4x1/ternary.json
|
|
91
98
|
jarvisplot/cards/a4paper/4x1/ternary_cmap.json
|
|
92
99
|
jarvisplot/cards/colors/colormaps.json
|
|
100
|
+
jarvisplot/cards/corrplot/matrix.json
|
|
93
101
|
jarvisplot/cards/default/output.json
|
|
94
102
|
jarvisplot/cards/flowchart/default.json
|
|
95
103
|
jarvisplot/cards/gambit/1x1/ternary.json
|
|
@@ -115,6 +123,7 @@ jarvisplot/manual_cards/layer-method.yaml
|
|
|
115
123
|
jarvisplot/manual_cards/manifest.yaml
|
|
116
124
|
jarvisplot/manual_cards/method_notes.yaml
|
|
117
125
|
jarvisplot/manual_cards/style-axes.yaml
|
|
126
|
+
jarvisplot/manual_cards/type-correlation-matrix.yaml
|
|
118
127
|
jarvisplot/manual_cards/type-posterior-2d.yaml
|
|
119
128
|
jarvisplot/manual_cards/type-profile-2d.yaml
|
|
120
129
|
jarvisplot/manual_cards/validate.yaml
|
|
@@ -131,6 +140,7 @@ jarvisplot/schema/methods/bar.json
|
|
|
131
140
|
jarvisplot/schema/methods/barh.json
|
|
132
141
|
jarvisplot/schema/methods/contour.json
|
|
133
142
|
jarvisplot/schema/methods/contourf.json
|
|
143
|
+
jarvisplot/schema/methods/corrplot.json
|
|
134
144
|
jarvisplot/schema/methods/dynesty_runplot.json
|
|
135
145
|
jarvisplot/schema/methods/errorbar.json
|
|
136
146
|
jarvisplot/schema/methods/fill.json
|
|
@@ -147,6 +157,7 @@ jarvisplot/schema/methods/pcolormesh.json
|
|
|
147
157
|
jarvisplot/schema/methods/plot.json
|
|
148
158
|
jarvisplot/schema/methods/quiver.json
|
|
149
159
|
jarvisplot/schema/methods/scatter.json
|
|
160
|
+
jarvisplot/schema/methods/stairs.json
|
|
150
161
|
jarvisplot/schema/methods/step.json
|
|
151
162
|
jarvisplot/schema/methods/tricontour.json
|
|
152
163
|
jarvisplot/schema/methods/tricontourf.json
|
|
@@ -184,6 +195,8 @@ tests/test_column_existence.py
|
|
|
184
195
|
tests/test_config_addressing.py
|
|
185
196
|
tests/test_config_edit.py
|
|
186
197
|
tests/test_config_expand.py
|
|
198
|
+
tests/test_correlation_runtime.py
|
|
199
|
+
tests/test_corrplot.py
|
|
187
200
|
tests/test_data_access.py
|
|
188
201
|
tests/test_data_describe.py
|
|
189
202
|
tests/test_data_head_eval.py
|
|
@@ -202,6 +215,7 @@ tests/test_figure_contracts.py
|
|
|
202
215
|
tests/test_figure_type_expander.py
|
|
203
216
|
tests/test_fix_application.py
|
|
204
217
|
tests/test_flowchart_renderer.py
|
|
218
|
+
tests/test_imshow_adapter.py
|
|
205
219
|
tests/test_interp_2d_transform.py
|
|
206
220
|
tests/test_interp_natural_neighbor.py
|
|
207
221
|
tests/test_interpolator_contracts.py
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: JarvisPLOT
|
|
3
|
+
Version: 2.1.0
|
|
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
|