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.
Files changed (244) hide show
  1. jarvisplot-2.1.0/JarvisPLOT.egg-info/PKG-INFO +296 -0
  2. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/SOURCES.txt +14 -0
  3. jarvisplot-2.1.0/PKG-INFO +296 -0
  4. jarvisplot-2.1.0/README.md +274 -0
  5. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/adapters_rect.py +110 -2
  6. jarvisplot-2.1.0/jarvisplot/Figure/bin_stat_runtime.py +217 -0
  7. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/colorbar_runtime.py +16 -1
  8. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/config_runtime.py +33 -0
  9. jarvisplot-2.1.0/jarvisplot/Figure/corr_layout.py +369 -0
  10. jarvisplot-2.1.0/jarvisplot/Figure/corr_order.py +211 -0
  11. jarvisplot-2.1.0/jarvisplot/Figure/correlation_runtime.py +428 -0
  12. jarvisplot-2.1.0/jarvisplot/Figure/corrplot_runtime.py +556 -0
  13. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/debug_config.py +28 -0
  14. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/design_runtime.py +17 -2
  15. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/figure.py +95 -4
  16. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/figure_types.py +157 -3
  17. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/layer_runtime.py +39 -4
  18. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/layout_runtime.py +180 -4
  19. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/method_registry.py +8 -1
  20. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/preprocessor.py +207 -1
  21. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/preprocessor_runtime.py +160 -4
  22. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/profile_runtime.py +66 -0
  23. jarvisplot-2.1.0/jarvisplot/Figure/significance_runtime.py +263 -0
  24. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/capabilities.py +29 -1
  25. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +1 -0
  26. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect.json +1 -0
  27. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect5x1.json +1 -0
  28. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +1 -0
  29. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rect_marginal.json +21 -20
  30. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/rectratio.json +1 -0
  31. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/ternary.json +1 -0
  32. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +1 -0
  33. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/rect.json +5 -4
  34. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +1 -0
  35. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/ternary.json +1 -1
  36. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +5 -4
  37. jarvisplot-2.1.0/jarvisplot/cards/corrplot/matrix.json +529 -0
  38. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/2x1/rect_cmap.json +1 -0
  39. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/2x1/ternary.json +1 -0
  40. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +1 -0
  41. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/style_preference.json +3 -0
  42. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/column_demand.py +112 -3
  43. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/column_probe.py +6 -0
  44. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/core.py +3 -1
  45. jarvisplot-2.1.0/jarvisplot/core_runtime.py +826 -0
  46. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader.py +34 -4
  47. jarvisplot-2.1.0/jarvisplot/dataset_types.py +24 -0
  48. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/dryrun_runtime.py +6 -0
  49. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/manifest.yaml +4 -0
  50. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/method_notes.yaml +21 -2
  51. jarvisplot-2.1.0/jarvisplot/manual_cards/type-correlation-matrix.yaml +65 -0
  52. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/method_contracts.py +5 -0
  53. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/dataset.json +13 -3
  54. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/figure.json +14 -0
  55. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/layer.json +2 -0
  56. jarvisplot-2.1.0/jarvisplot/schema/core/transform.json +205 -0
  57. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/manifest.json +5 -0
  58. jarvisplot-2.1.0/jarvisplot/schema/methods/corrplot.json +36 -0
  59. jarvisplot-2.1.0/jarvisplot/schema/methods/stairs.json +36 -0
  60. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/templates_catalog.py +74 -0
  61. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/transform_contracts.py +273 -0
  62. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/validation.py +22 -1
  63. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/pyproject.toml +1 -1
  64. jarvisplot-2.1.0/tests/test_correlation_runtime.py +192 -0
  65. jarvisplot-2.1.0/tests/test_corrplot.py +596 -0
  66. jarvisplot-2.1.0/tests/test_imshow_adapter.py +104 -0
  67. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_template_catalog.py +18 -1
  68. jarvisplot-2.0.6/JarvisPLOT.egg-info/PKG-INFO +0 -197
  69. jarvisplot-2.0.6/PKG-INFO +0 -197
  70. jarvisplot-2.0.6/README.md +0 -175
  71. jarvisplot-2.0.6/jarvisplot/core_runtime.py +0 -263
  72. jarvisplot-2.0.6/jarvisplot/schema/core/transform.json +0 -77
  73. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
  74. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/entry_points.txt +0 -0
  75. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/requires.txt +0 -0
  76. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/JarvisPLOT.egg-info/top_level.txt +0 -0
  77. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/__init__.py +0 -0
  78. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/adapters_ternary.py +0 -0
  79. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
  80. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/data_pipelines.py +0 -0
  81. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/density_cell_runtime.py +0 -0
  82. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/dynesty_runtime.py +0 -0
  83. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/helper.py +0 -0
  84. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
  85. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
  86. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
  87. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
  88. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/posterior_hpd.py +0 -0
  89. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/posterior_mesh.py +0 -0
  90. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/Figure/style_runtime.py +0 -0
  91. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/__init__.py +0 -0
  92. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/agent_digest.py +0 -0
  93. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/agent_io.py +0 -0
  94. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cache_store.py +0 -0
  95. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
  96. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/args.json +0 -0
  97. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/colors/colormaps.json +0 -0
  98. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/default/output.json +0 -0
  99. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/flowchart/default.json +0 -0
  100. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
  101. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
  102. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
  103. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
  104. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
  105. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
  106. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
  107. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
  108. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/gambit.png +0 -0
  109. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cards/icons/gambit_small.png +0 -0
  110. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cli.py +0 -0
  111. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/cli_help.py +0 -0
  112. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/client.py +0 -0
  113. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/config.py +0 -0
  114. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/config_address.py +0 -0
  115. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/core_assets.py +0 -0
  116. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_access.py +0 -0
  117. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader_hdf5.py +0 -0
  118. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader_runtime.py +0 -0
  119. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/data_loader_summary.py +0 -0
  120. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/diagnostic_guidance.py +0 -0
  121. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/diagnostics.py +0 -0
  122. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/expr_names.py +0 -0
  123. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/fix_apply.py +0 -0
  124. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/flowchart.py +0 -0
  125. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/inner_func.py +0 -0
  126. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_catalog.py +0 -0
  127. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_methods.py +0 -0
  128. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_render_agent.py +0 -0
  129. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_render_human.py +0 -0
  130. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/man_transforms.py +0 -0
  131. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/agent-output.yaml +0 -0
  132. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/cli-map.yaml +0 -0
  133. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/data-columns.yaml +0 -0
  134. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/debug-overlay.yaml +0 -0
  135. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
  136. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
  137. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/layer-method.yaml +0 -0
  138. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/style-axes.yaml +0 -0
  139. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
  140. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
  141. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/validate.yaml +0 -0
  142. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/workflow.yaml +0 -0
  143. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
  144. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/memtrace.py +0 -0
  145. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/render_health.py +0 -0
  146. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/core/common.json +0 -0
  147. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/bar.json +0 -0
  148. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/barh.json +0 -0
  149. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/contour.json +0 -0
  150. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/contourf.json +0 -0
  151. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
  152. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/errorbar.json +0 -0
  153. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/fill.json +0 -0
  154. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/fill_between.json +0 -0
  155. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
  156. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/hist.json +0 -0
  157. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/hist2d.json +0 -0
  158. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/imshow.json +0 -0
  159. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/jpcontour.json +0 -0
  160. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/jpcontourf.json +0 -0
  161. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/jpfield.json +0 -0
  162. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/pcolor.json +0 -0
  163. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/pcolormesh.json +0 -0
  164. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/plot.json +0 -0
  165. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/quiver.json +0 -0
  166. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/scatter.json +0 -0
  167. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/step.json +0 -0
  168. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tricontour.json +0 -0
  169. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tricontourf.json +0 -0
  170. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tripcolor.json +0 -0
  171. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
  172. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/triplot.json +0 -0
  173. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/voronoi.json +0 -0
  174. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/methods/voronoif.json +0 -0
  175. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema/plot-config.json +0 -0
  176. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema_catalog.py +0 -0
  177. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/schema_diagnostics.py +0 -0
  178. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/__init__.py +0 -0
  179. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/cmaps.py +0 -0
  180. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/dataframes.py +0 -0
  181. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/expression.py +0 -0
  182. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/interpolator.py +0 -0
  183. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/utils/pathing.py +0 -0
  184. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/__init__.py +0 -0
  185. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/cap.py +0 -0
  186. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/config_cmd.py +0 -0
  187. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/data.py +0 -0
  188. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/doctor.py +0 -0
  189. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/dryrun.py +0 -0
  190. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/explain.py +0 -0
  191. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/man.py +0 -0
  192. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/suggest.py +0 -0
  193. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/template.py +0 -0
  194. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/verbs/validate.py +0 -0
  195. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/jarvisplot/yaml_io.py +0 -0
  196. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/setup.cfg +0 -0
  197. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_agent_digest.py +0 -0
  198. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_agent_envelope.py +0 -0
  199. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_axis_title.py +0 -0
  200. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_capabilities.py +0 -0
  201. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_card_debug_shape.py +0 -0
  202. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_cli_help.py +0 -0
  203. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_cli_verbs.py +0 -0
  204. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_cmaps.py +0 -0
  205. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_column_existence.py +0 -0
  206. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_config_addressing.py +0 -0
  207. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_config_edit.py +0 -0
  208. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_config_expand.py +0 -0
  209. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_access.py +0 -0
  210. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_describe.py +0 -0
  211. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_head_eval.py +0 -0
  212. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_loader_contracts.py +0 -0
  213. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_data_pipelines.py +0 -0
  214. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_debug_config.py +0 -0
  215. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_debug_switches.py +0 -0
  216. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_debug_yaml_override.py +0 -0
  217. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_density_cell_transform.py +0 -0
  218. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_design_runtime.py +0 -0
  219. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_diagnostic_guidance.py +0 -0
  220. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_docs_status_labels.py +0 -0
  221. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_doctor_partial.py +0 -0
  222. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_explain.py +0 -0
  223. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_figure_contracts.py +0 -0
  224. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_figure_type_expander.py +0 -0
  225. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_fix_application.py +0 -0
  226. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_flowchart_renderer.py +0 -0
  227. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_interp_2d_transform.py +0 -0
  228. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_interp_natural_neighbor.py +0 -0
  229. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_interpolator_contracts.py +0 -0
  230. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_jpcontour_methods.py +0 -0
  231. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_man_cli.py +0 -0
  232. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_method_contracts.py +0 -0
  233. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_parse_data_metadata.py +0 -0
  234. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_pathing_contracts.py +0 -0
  235. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_posterior_hpd.py +0 -0
  236. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_render_health.py +0 -0
  237. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_row_ledger.py +0 -0
  238. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_schema_catalog.py +0 -0
  239. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_suggest.py +0 -0
  240. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_suggest_axes.py +0 -0
  241. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_template_json.py +0 -0
  242. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_ternary_debug.py +0 -0
  243. {jarvisplot-2.0.6 → jarvisplot-2.1.0}/tests/test_transform_contracts.py +0 -0
  244. {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