g(r) Pair Distribution Viewer¶
Single-panel viewer for the 2-body g(r) of one supercell or a
regime-ladder comparison of several. The same
g2_viewer.html
template is used for both; behaviour is driven by whether the embedded
JSON payload contains a single profiles array (single-cell mode)
or a series list (compare mode).
Single-cell mode¶
# write a standalone HTML file
cell.export_g2_html("mro_g2.html", r_max=8.0, title="Si MRO g(r)")
# or view inline in Jupyter (returns IPython.display.HTML wrapping an iframe)
cell.plot_g2(r_max=8.0, title="Si MRO g(r)")
Controls:
pair dropdown: picks which species pair is plotted. Binary materials (SiO₂) show Si-Si, Si-O, O-O; ternaries (SrTiO₃) show all six unique pairs; single-element cases show one.
overlay all pairs checkbox: draws every pair on the same axis with an inline legend (useful for quickly finding which pair peaks share radii).
A faint dashed vertical marker at the reference pair_peak from
shell_target (if available) helps locate the expected first-shell
radius on the current curve.
Compare mode¶
cells = {
"liquid": cells_liquid,
"amorphous": cells_amorphous,
"SRO": cells_sro,
"MRO": cells_mro,
"ext. MRO": cells_ext_mro,
"nanocrystalline": cells_nano,
}
# inline Jupyter display
tc.plot_g2_compare(cells, r_max=8.0, title="Silicon regime comparison")
# standalone HTML for docs / sharing
tc.export_g2_compare_html(cells, "si_g2_compare.html", r_max=8.0)
Behaviour:
Stacked y-offset. Each series sits in its own horizontal slot with a small gap (offset = 35 % of the per-curve peak height). The input order is preserved (passing a dict iterates insertion order), so the regen scripts’
liquid → nanocrystallineorder puts the most disordered curve at the bottom and the most ordered at the top. Numeric y-axis ticks are hidden in this mode because a single number no longer maps to one g(r) value.Inline labels. Each series label is drawn in its curve’s colour at the near-origin anchor (r ≈ 0.3 Å), just above the curve. No legend box; the labels double as the legend.
Per-series reference line. A faint dashed
g = 1line is drawn at every series’s baseline so you can read off the over- / under-density of each regime at a glance.
Input shapes¶
tricor.export_g2_compare_html() accepts any of:
# dict (keys become labels; insertion order = stack order)
tc.plot_g2_compare({"liquid": c1, "MRO": c2, "NC": c3})
# list of (cell, label) tuples
tc.plot_g2_compare([(c1, "liquid"), (c2, "MRO")])
# list of cells (uses each cell.label)
tc.plot_g2_compare([c1, c2, c3])
All supplied cells must share the same species set. Measurements
reuse the g3 machinery under the hood (phi_num_bins is set low for
speed because the compare viewer doesn’t plot angular data).
Example: silicon regime ladder¶
The SiO₂ example in this repo opens with exactly this compare viewer embedded under its Overview heading; the silicon analogue is visible on the silicon example page. Pair dropdown switches which species pair is shown; the six stacked curves identify each regime by colour and inline label.