From 33318ca59173da2b9a9acf11ec166ad44ee28b33 Mon Sep 17 00:00:00 2001 From: Zhihao Deng Date: Tue, 28 Jul 2026 17:12:47 -0400 Subject: [PATCH] Add diagram_gen: Goldstone diagrams from SeQuant term strings Python renderer that turns a SeQuant CC term string into a Goldstone diagram PNG, with the CSV/PNO-DF overlay (C / CsC boxes, domain superscripts, DF auxiliary label) toggleable down to the canonical CC skeleton. Includes a batch driver and examples --- utilities/diagram_gen/README.md | 282 ++++ utilities/diagram_gen/audit_diagrams.py | 134 ++ utilities/diagram_gen/csv-cc-diagram-rules.md | 214 +++ utilities/diagram_gen/csv_diagram.py | 1181 +++++++++++++++++ .../examples/ccsd_E3_fock_bubble.png | Bin 0 -> 44742 bytes .../examples/ccsd_R2t30_oooo_csc_bridge.png | Bin 0 -> 81260 bytes .../examples/ccsd_R2t49_canonical.png | Bin 0 -> 75118 bytes .../examples/ccsd_R2t49_vvvv_ladder.png | Bin 0 -> 79180 bytes .../examples/ccsdt_R1t1_with_T3.png | Bin 0 -> 94462 bytes utilities/diagram_gen/render_all.py | 167 +++ utilities/diagram_gen/sample_terms.txt | 10 + 11 files changed, 1988 insertions(+) create mode 100644 utilities/diagram_gen/README.md create mode 100644 utilities/diagram_gen/audit_diagrams.py create mode 100644 utilities/diagram_gen/csv-cc-diagram-rules.md create mode 100644 utilities/diagram_gen/csv_diagram.py create mode 100644 utilities/diagram_gen/examples/ccsd_E3_fock_bubble.png create mode 100644 utilities/diagram_gen/examples/ccsd_R2t30_oooo_csc_bridge.png create mode 100644 utilities/diagram_gen/examples/ccsd_R2t49_canonical.png create mode 100644 utilities/diagram_gen/examples/ccsd_R2t49_vvvv_ladder.png create mode 100644 utilities/diagram_gen/examples/ccsdt_R1t1_with_T3.png create mode 100644 utilities/diagram_gen/render_all.py create mode 100644 utilities/diagram_gen/sample_terms.txt diff --git a/utilities/diagram_gen/README.md b/utilities/diagram_gen/README.md new file mode 100644 index 0000000000..962a466338 --- /dev/null +++ b/utilities/diagram_gen/README.md @@ -0,0 +1,282 @@ +# diagram_gen — Goldstone diagrams from SeQuant term strings + +Turn a SeQuant coupled-cluster term into a publication-style Goldstone diagram (PNG). + +``` +python3 csv_diagram.py '' out.png +``` + +Everything is driven by the **term string** that SeQuant prints — you paste it in, you +get a diagram out. The renderer understands the CSV/PNO–DF flavour of those strings +(PAO→PNO transforms `C`, PAO overlaps `s`, density-fitting auxiliary index `Κ`) and can +either draw them as annotations or drop them to leave a plain textbook CC diagram. + +--- + +## 1. Requirements + +Python 3 with `matplotlib` and `numpy`. Nothing else; no SeQuant build, no LaTeX +installation (matplotlib's built-in mathtext renders the labels). + +```bash +python3 -c "import matplotlib, numpy; print('ok')" +``` + +--- + +## 2. Quick start + +```bash +cd utilities/diagram_gen + +# a) one term, given inline +python3 csv_diagram.py '2 (f{i_1;μ̃_1} * C{μ̃_1;a_1}) * t{a_1;i_1}' bubble.png + +# b) one term, from a file +python3 csv_diagram.py --file term.txt out.png + +# c) many terms: one file, one PNG per line -> term001.png, term002.png, ... +python3 csv_diagram.py --file sample_terms.txt outdir/ + +# d) the canonical CC skeleton instead of the CSV/DF overlay +python3 csv_diagram.py --file term.txt out.png --no-csv +``` + +`sample_terms.txt` in this folder holds four real terms to try; `examples/` shows what +they render to. + +| example | what it shows | +|---|---| +| `examples/ccsd_E3_fock_bubble.png` | one-body `—×` vertex, T1, particle+hole drawn as a lens | +| `examples/ccsd_R2t49_vvvv_ladder.png` | (vv\|vv) ladder + T2, four `C` boxes, `K` on the interaction | +| `examples/ccsd_R2t30_oooo_csc_bridge.png` | (oo\|oo) + two T1, `CsC` domain-changing bridges | +| `examples/ccsdt_R1t1_with_T3.png` | a T3 amplitude bar (three excitation apexes) | +| `examples/ccsd_R2t49_canonical.png` | same term as the ladder above, with `--no-csv` | + +--- + +## 3. The input: what a term string looks like + +A term is a product of tensors, written `label{bra;ket}` (or `label{bra;ket;aux}`), +joined by `*`. Parentheses are irrelevant — the renderer ignores the association. + +``` +1/2 Ŝ{i_1,i_2;a_1,a_2} * g{μ̃_1;μ̃_2;Κ_1} * C{a_1;μ̃_1} * … * t{a_3,a_4;i_1,i_2} + ↑ coefficient ↑ external indices (projector) ↑ interaction ↑ PAO→PNO transform ↑ amplitude +``` + +### Tensors understood + +| label | slots | meaning | drawn as | +|---|---|---|---| +| `g{p;q;Κ}` | bra, ket, auxiliary | one half of a two-body interaction (a DF three-centre factor) | a dot; the two `g`'s sharing a `Κ` are joined by the dashed interaction line | +| `f{p;q}` | bra, ket | one-body (Fock) operator | a dot joined by a dashed line to a `×` | +| `t{virt…;occ…}` | bra=virtuals, ket=occupieds | cluster amplitude T₁…T₄ | solid horizontal bar at the bottom, one V-shaped particle/hole pair per excitation | +| `C{p;q}` | bra, ket | PAO→PNO transform | *not* a vertex — it splices two indices into one fermion line and puts a `C` box on it | +| `s{μ̃;μ̃}` | bra, ket | PAO–PAO overlap metric | same, part of a `CsC` bridge | + +### Index naming (this is how line types are decided) + +| starts with | kind | drawn as | +|---|---|---| +| `i…` | occupied | **hole** line — blue, arrow pointing down | +| `a…` | PNO virtual | **particle** line — red, arrow pointing up | +| `μ̃…` | PAO virtual | internal to a `C`/`s` chain; never a line end in the picture | +| `Κ…` | DF auxiliary | the `K` label on the dashed interaction line | + +`a_3` means "virtual `a_3` restricted to pair domain (i₁i₂)"; the `<…>` part is +printed as the superscript `a₃^{i₁i₂}`. + +### What gets cleaned up automatically + +all of these are stripped for you: + +* `:N-C-S` (and similar) suffixes after a tensor +* markdown list numbering and backticks: ``12. `` `` +* surrounding whitespace, a leading `+` +* any parenthesisation + +So this works as a single argument, unchanged: + +``` +1. `-6 Ŝ{i_1,i_2,i_3;a_1,…}:N-C-S * g{i_4;μ̃_1;Κ_1}:N-C-S * …` +``` + +### Rules the term must satisfy + +1. **Every index appears exactly twice** — once in a bra slot, once in a ket slot. + A truncated paste is the usual cause of failure here. +2. **At most one interaction**: either two `g`'s sharing one `Κ`, or one `f`. + True of every CC residual term SeQuant emits. +3. Amplitudes may be T₁…T₄ (verified up to T₄; the bar just grows an apex per excitation). + +--- + +## 4. `csv_diagram.py` — render one term (or a small batch) + +``` +python3 csv_diagram.py [TERM] [OUT.png] [options] +python3 csv_diagram.py --file PATH [OUT.png|OUTDIR/] [options] +``` + +| option | effect | +|---|---| +| `TERM` | the term string; use `-` to read it from stdin | +| `OUT.png` | output path (default `diagram.png`). With `--file` and several terms, this is a **directory** and files are named `term001.png`, … | +| `--file PATH` | read term(s) from a file (`-` = stdin). Every line containing `{…}` is rendered; other lines (comments, blanks) are skipped | +| `--title TEXT` | figure title. The coefficient is appended automatically | +| `--no-csv` | **canonical CC skeleton**: drop the `C`/`CsC`/`s` boxes, the domain superscripts and the `K` / `g_L,g_R` tags | +| `--no-dom` | drop the domain superscripts only (`a₃^{i₁i₂}` → `a₃`) | +| `--no-aux` | drop the `K` label and the `g_L`/`g_R` tags only | +| `--no-legend` | omit the legend strip at the bottom | + +With no arguments at all it renders three built-in demo terms into the current directory. + +### The overlay knob + +`--no-csv` implements rule **B0** of `csv-cc-diagram-rules.md` (skeleton invariance): +deleting every domain superscript, `C`/`CsC` box and the `K` label must leave a textbook +Goldstone diagram. Compare `examples/ccsd_R2t49_vvvv_ladder.png` with +`examples/ccsd_R2t49_canonical.png` — same skeleton, no annotations. The three layers +(`--no-csv`, `--no-dom`, `--no-aux`) can be mixed freely. + +--- + +## 5. `render_all.py` — batch a whole equation file + +Renders every numbered term of an equation markdown file (sections `E`, `R1`, `R2`, +`R3`, `R4`) and writes an `INDEX.md` manifest next to the PNGs. + +```bash +# whole CCSD file, CSV overlay + canonical skeleton +python3 render_all.py --src pao-ccsd-df.md --variant both + +# just the triples section of the CCSDT file +python3 render_all.py --src pao-ccsdt-df.md --only R3 + +# three specific R4 terms into a scratch directory +python3 render_all.py --src pao-ccsdtq-df.md --only R4:1,2,3 --outdir /tmp/q +``` + +| option | effect | +|---|---| +| `--src FILE` | the equation markdown file. Defaults to `pao-ccsd-df.md` next to the script or one directory up | +| `--variant csv\|canonical\|both` | overlay, plain skeleton, or both (default `csv`) | +| `--only TAG[:N,N,…]` | restrict to a section (`R3`) or specific terms (`R2:16,49`) | +| `--outdir DIR` | output directory (single-variant runs). Default: `ccsd_all`, `ccsdt_all`, `ccsdtq_all`, … derived from the file name, with `_canonical` appended for the skeleton variant | +| `--kind TEXT` | title prefix (default derived from the file name, e.g. `CSV-CCSDT`) | + +It expects terms formatted as a markdown numbered list under a `## E`/`## R1`/… heading: + +```markdown +## R2 — doubles residual + +1. `` +2. `` +``` + +Failures never abort the run — the offending term is listed in `INDEX.md` with its error. + +--- + +## 6. `audit_diagrams.py` — check the output is clean + +Re-runs the layout for every term of a file and reports anything unreadable: overlapping +labels, labels sitting on a vertex or a bar, labels on a foreign line, and fermion lines +drawn on top of each other. + +```bash +python3 audit_diagrams.py --src pao-ccsdtq-df.md +python3 audit_diagrams.py --src pao-ccsd-df.md --no-csv +``` + +Over the CCSD/CCSDT/CCSDTQ equation files the renderer was developed against (660 terms, +both variants) the audit reports **no label/label, label/vertex or line/line overlaps**. +The only remaining reports are labels sitting on top of one *foreign* line — 1 of 86 +CCSD terms, 8 of 201 CCSDT, 32 of 373 CCSDTQ. Those labels keep an opaque background, +so they stay readable. + +--- + +## 7. Using it from Python + +```python +import csv_diagram as cd + +cd.draw(term_string, title="R2 term 49", out="out.png", + show_csv=True, # C / CsC / s boxes + show_dom=None, # domain superscripts (None = follow show_csv) + show_aux=None, # K and g_L/g_R tags (None = follow show_csv) + legend=True, dpi=170, verbose=False) # -> returns the output path +``` + +The parsing/graph layer is reusable on its own: + +```python +coeff, tensors = cd.parse_term(term_string) +nodes, lines, hvs, pair, ext = cd.build_graph(tensors) +for L in lines: + print("hole" if L.is_hole else "particle", + L.src, L.src_idx[0], "->", L.dst, L.dst_idx[0], L.annotation) +``` + +`build_graph` collapses every `C`/`s` chain, so `lines` is the physical fermion-line +graph: each `FermionLine` runs from the vertex where its index sits in a **bra** slot to +the one where it sits in a **ket** slot, and `.annotation` is `None`, `"C"` or `"CsC"` +depending on what the chain contained. + +--- + +## 8. How to read the diagram + +| element | meaning | +|---|---| +| red line, arrow up | particle line (virtual index) | +| blue line, arrow down | hole line (occupied index) | +| solid black bar | a cluster amplitude T_m; each excitation is one V of a particle + a hole leg meeting at an apex on the bar. The label under the bar is `t̂` with its occupied indices as subscripts and virtuals as superscripts | +| two grey dots joined by a dashed line | **one** two-body interaction vertex (its two half-vertices); `g_L`/`g_R` tag the left/right half | +| `K` on the dashed line | the density-fitting auxiliary index shared by the two `g` factors | +| dot + dashed line + `×` | the one-body (Fock) vertex | +| `C` box on a line | a PAO→PNO transform on that interaction leg | +| `CsC` box on a line | a domain-changing bridge C·s·C joining two PNOs of different domains | +| two lines bowed into a slim pointy ellipse | a particle and a hole line connecting the *same* two points — the canonical Goldstone bubble (they would otherwise be drawn on top of each other) | +| faint dotted line across the top | the projection boundary; lines crossing it are the external indices of `Ŝ` | + +Conventions and their textbook citations are in `csv-cc-diagram-rules.md`. Sign/weight +rules are **not** applied — the coefficient printed in the title is whatever the term +carried. + +--- + +## 9. When it fails + +Errors are raised as `ValueError` with a specific message: + +| message | cause | +|---|---| +| `no tensor found in input: …` | the string had no `{…}` — wrong argument, or the shell ate it (quote with single quotes) | +| `chain has N terminals (want 2)` | an index appears once, or three or more times — usually a truncated paste | +| `chain : both terminals are bra slots` | the same index used twice on the same side | +| `unknown index kind: 'x_1'` | an index name that starts with something other than `i`, `a`, `μ̃`, `Κ` | +| `>2 interaction half-vertices not supported` | more than one interaction in the term | + +Shell tip: always wrap the term in **single** quotes — it contains `*`, `{`, `}` and +backticks, all of which the shell would otherwise interpret. If quoting gets awkward, +put the term in a file and use `--file`. + +--- + +## 10. Files + +| file | role | +|---|---| +| `csv_diagram.py` | the renderer: parser, fermion-line graph, layout, drawing, CLI. Self-contained | +| `render_all.py` | batch driver over an equation markdown file; writes `INDEX.md` | +| `audit_diagrams.py` | machine check for overlapping labels/lines (imports the other two) | +| `csv-cc-diagram-rules.md` | the diagram conventions with citations (Shavitt & Bartlett, Crawford & Schaefer) | +| `sample_terms.txt` | four real terms to try | +| `examples/` | what those terms render to | + +`render_all.py` and `audit_diagrams.py` operate on equation markdown files +(`pao-ccsd-df.md`, `pao-ccsdt-df.md`, `pao-ccsdtq-df.md`) that are not part of this +repository; point them at your own with `--src`. diff --git a/utilities/diagram_gen/audit_diagrams.py b/utilities/diagram_gen/audit_diagrams.py new file mode 100644 index 0000000000..17224a8d10 --- /dev/null +++ b/utilities/diagram_gen/audit_diagrams.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 +""" +audit_diagrams.py — machine check that every rendered CSV-CC diagram is clean. + +For each term of pao-ccsd-df.md it re-runs the layout and reports + 1. label/label overlaps (two text boxes sharing area) + 2. label/vertex-or-bar overlaps + 3. labels sitting on top of a fermion line that is not their own + 4. fermion lines drawn on top of each other (identical endpoints not bowed + apart, or two segments nearly collinear over a long stretch) + +Exit status 0 iff nothing is reported. Run for both variants: + python3 audit_diagrams.py # CSV overlay + python3 audit_diagrams.py --no-csv # canonical skeleton +""" + +import argparse +import os +import sys +import tempfile + +import numpy as np + +import csv_diagram as cd +from render_all import SRC, extract_terms, filter_sections, section_order + + +_TMP = os.path.join(tempfile.gettempdir(), "_csvdiag_audit.png") + + +def overlaps(a, b): + dx = min(a[2], b[2]) - max(a[0], b[0]) + dy = min(a[3], b[3]) - max(a[1], b[1]) + return dx * dy if (dx > 0 and dy > 0) else 0.0 + + +def audit_term(expr, show_csv): + cd.draw(expr, title=None, out=_TMP, verbose=False, + show_csv=show_csv, legend=False) + A = cd.LAST_AUDIT + boxes, tags, segs = A["boxes"], A["tags"], A["segs"] + issues = [] + + lab = [(b, t, ow) for b, (t, is_lab, ow) in zip(boxes, tags) if is_lab] + obs = [(b, t) for b, (t, is_lab, ow) in zip(boxes, tags) if not is_lab] + + for i in range(len(lab)): + for j in range(i + 1, len(lab)): + ov = overlaps(lab[i][0], lab[j][0]) + if ov > 1e-4: + issues.append(f"label/label {lab[i][1]} ~ {lab[j][1]} ({ov:.3f})") + for b, t, _ in lab: + for ob, ot in obs: + ov = overlaps(b, ob) + if ov > 1e-4: + issues.append(f"label/{ot} {t} ({ov:.3f})") + + # a label box sitting on a fermion line OTHER than the one it belongs to + for b, t, own in lab: + foreign = set() + for p, q, o in segs: + if o in ("dash", None) or id(o) == own: + continue + if cd._seg_hits_box(np.array(p), np.array(q), b): + foreign.add(id(o)) + if foreign: + issues.append(f"label sits on {len(foreign)} foreign line(s): {t}") + + # duplicated / overlapping fermion strokes: sample each line's polyline and + # measure how much of it runs within HAIR of another line + paths = {} + for p, q, o in segs: + if o in ("dash", None): + continue + paths.setdefault(id(o), []).append((np.array(p), np.array(q))) + sampled = {} + for k, ss in paths.items(): + pts = [ss[0][0]] + [b for _, b in ss] + pts = np.array(pts) + d = np.cumsum(np.r_[0, np.hypot(*np.diff(pts, axis=0).T)]) + if d[-1] < 1e-9: + continue + u = np.linspace(0, d[-1], 60) + sampled[k] = np.column_stack([np.interp(u, d, pts[:, 0]), + np.interp(u, d, pts[:, 1])]) + HAIR = 0.07 + keys = list(sampled) + for i in range(len(keys)): + for j in range(i + 1, len(keys)): + A, B = sampled[keys[i]], sampled[keys[j]] + dist = np.hypot(A[:, None, 0] - B[None, :, 0], A[:, None, 1] - B[None, :, 1]) + frac = float((dist.min(axis=1) < HAIR).mean()) + if frac > 0.35: + issues.append(f"two fermion lines coincide over {frac:.0%} of a line") + return issues + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--src", default=SRC, help="SeQuant equation markdown file") + ap.add_argument("--only", default=None, help="e.g. R3 or R4:1,2") + ap.add_argument("--no-csv", action="store_true") + args = ap.parse_args() + show_csv = not args.no_csv + + src = os.path.abspath(os.path.expanduser(args.src)) + if not os.path.exists(src): + ap.error(f"equation file not found: {src} (pass one with --src )") + sections = extract_terms(src) + if args.only: + sections = filter_sections(sections, args.only) + bad = n = 0 + for tag in section_order(sections): + for num, expr in sections.get(tag, []): + n += 1 + try: + issues = audit_term(expr, show_csv) + except Exception as exc: # noqa: BLE001 + print(f"{tag} term {num}: RENDER FAILED {type(exc).__name__}: {exc}") + bad += 1 + continue + if issues: + bad += 1 + print(f"{tag} term {num}:") + for it in issues: + print(f" {it}") + variant = "CSV overlay" if show_csv else "canonical" + print(f"\n[{variant}] {os.path.basename(args.src)}: " + f"{bad} of {n} term(s) with issues") + return 1 if bad else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/utilities/diagram_gen/csv-cc-diagram-rules.md b/utilities/diagram_gen/csv-cc-diagram-rules.md new file mode 100644 index 0000000000..92decc4820 --- /dev/null +++ b/utilities/diagram_gen/csv-cc-diagram-rules.md @@ -0,0 +1,214 @@ +# CSV-CC Goldstone diagram rules + +Rule set for drawing and interpreting CSV-CCSD (cluster-specific-virtual, locally +density-fitted) Goldstone diagrams. Part A is the canonical textbook layer; Part B is +exactly what the CSV/DF overlay adds. Strip every Part-B annotation and a valid +CSV-CC diagram must reduce to the textbook diagram of Part A. + +Citations: +- **C&S** = Crawford & Schaefer 2000, *An Introduction to Coupled Cluster Theory*, + chapter "An Introduction to Coupled Cluster Diagrams", printed pp. 77–95 + (PDF page = printed − 32; formalism credited to Kucharski & Bartlett, p. 77). +- **S&B** = Shavitt & Bartlett 2009, *Many-Body Methods in Chemistry and Physics*, + Ch. 4 (printed page = PDF − 16), plus the CC rules of Ch. 9–10 (Fig. 10.1, p. 296). +- **KST** = K. S. Thanthiriwatte, *Diagrammatic techniques in Coupled-Cluster + Theory*, slides, Aug 2010 (18 slides). + +--- + +## Part A — canonical skeleton rules + +### A1. Line direction and labels +Upward-directed lines are **particle** lines (virtuals a, b, c, …); downward-directed +lines are **hole** lines (occupieds i, j, k, …). "Downward-directed lines represent +hole states (orbitals occupied in the reference) and upward directed lines represent +particle states" (C&S p. 78, Fig. 1; S&B p. 91: "pointing upward for particles and +downward for holes"; KST slide 4). The horizontal position of a line "has no +significance" (S&B p. 91). The reference |0⟩ is drawn as nothing (C&S Fig. 1c; +KST slide 4). + +### A2. Vertex inventory +- **One-body operator (Fock)**: a dot joined by a horizontal *dashed* line to a + marker "×" (C&S Fig. 2, p. 79; S&B p. 93 "the point of action … marked by the + interaction line —×"; KST slide 5). Four fragments f_ab, f_ij, f_ia, f_ai with + excitation levels 0, 0, −1, +1. +- **Two-body operator**: ONE vertex = **two half-vertices at the same level joined by + a horizontal dashed interaction line** ("The two half-vertices and the interaction + line constitute a single vertex", S&B p. 111, Eq. 4.28; C&S Fig. 3, p. 80: the nine + V_N fragments; KST slide 6). Electron assignment: "electron 1 ↔ left half-vertex; + electron 2 ↔ right half-vertex" (S&B p. 111, boxed). +- **Cluster operators T_m**: a **solid horizontal bar** with m hole–particle line + pairs rising from it; no lines below the bar ("the cluster operators contain only + q-creation strings … they contain no lines below the horizontal bar", C&S p. 80, + Fig. 4; S&B pp. 273–274, Eqs. 9.84–9.87 "solid horizontal lines to represent the + T̂_m operators"; KST slides 4, 8). + +### A3. Half-vertex degree rule +"**Each individual half-vertex will have one incoming and one outgoing line**, each of +which may be a particle line or a hole line" (S&B p. 111, verbatim). This holds for +every interaction dot (one-body or half of two-body). + +### A4. Bra = outgoing = creation; ket = incoming = annihilation +"incoming line ↔ annihilation operator ↔ ket state (IAK); outgoing line ↔ creation +operator ↔ bra state (OCB)" (S&B p. 98, mnemonics; also p. 95 rule 1 and the boxed +table on p. 111). Creation operators lie above the interaction line, annihilation +below (C&S p. 78; KST slide 4). Consequently: a particle line above a vertex with +arrow leaving it = created particle; a hole line below a vertex with arrow leaving +it = created hole; etc. + +### A5. Integral assignment +- One-body: **f = ⟨out | f | in⟩** — "(out|f|in), where out indicates the index of the + outgoing directed line and in the incoming" (C&S p. 84; KST slide 14 rule 2; + S&B p. 93: bra = leaving line, ket = entering line). +- Two-body: **⟨left-out right-out ‖ left-in right-in⟩**, with operator product + {(left-out)† (right-out)† (right-in)(left-in)} (S&B p. 112, boxed, verbatim; + C&S p. 85; KST slide 6, verbatim). Goldstone diagrams proper use the + non-antisymmetrized ⟨pq|rs⟩ (S&B p. 112); antisymmetrized-Goldstone (Brandow/ASG) + and Hugenholtz variants use ⟨pq‖rs⟩ (S&B pp. 118–123). *The CSV-CCSD spin-traced + equations are in the non-antisymmetrized (Goldstone-proper) regime.* + +### A6. Amplitude assignment +"With every T_m vertex associate an amplitude t^{ab…}_{ij…}" where the (hole, +particle) pairs are read off the bar **left to right**, each vertical pair supplying +one (subscript, superscript) column (KST slide 14 rule 4; C&S pp. 84–85 "hole and +particle indices in their left-to-right order in the diagram"; S&B p. 282 and +Fig. 10.1 rule 4). External pairing matches the bra determinant: "surviving hole and +particle lines at the top are paired vertically in |Φ…⟩ if they are part of the same +path" (S&B p. 104). + +### A7. Vertical placement (fictitious time) +Operators act bottom-to-top: rightmost operator (a T) at the bottom, Hamiltonian +fragment above it, resulting/bra state at the top (C&S p. 81, p. 83 "the rightmost +operator's interaction line must lie at the bottom"; S&B p. 91; KST slide 9). +T1 vertices commute, so the relative order/side-by-side placement of T bars is +immaterial (C&S p. 86; S&B p. 274, Eq. 9.88). External lines run to the top edge; +energy diagrams "can contain no external lines" (C&S p. 83); the R1/R2 equations have +exactly 2/4 external lines (C&S p. 88). + +### A8. Internal summation +"Summations are included over all 'internal' indices — lines that begin and end at +operator interaction lines and do not extend to infinity above or below" (C&S p. 84; +KST slide 14 rule 5: "Sum over all internal line labels, i.e. lines terminating +below the last Ĥ_N"; S&B p. 100, Eq. 4.19). + +### A9. Sign rule: (−1)^{h+l} with quasi-loops +Sign = (−1)^{h+l}, h = number of hole lines, l = number of loops. "A loop is a route +along a series of directed lines that either returns to its beginning or begins at +one external line and ends at another" (C&S p. 84). Open diagrams: "for open diagrams +fictitious external loop should be included" (KST slide 14 rule 6); S&B formalizes +this as **quasiloops** — "open lines … paired at the top according to the pairing +pattern in the corresponding Slater determinant" (S&B p. 135, Eq. 5.15; Fig. 10.1 +rule 8, p. 296). S&B writes the equivalent form (−1)^{h−l} (p. 109, Eq. 4.26). + +### A10. Equivalent lines → factor 1/2 +"A pair of lines is equivalent if they connect the same pair of vertices in the same +direction. Each pair … contributes a factor 1/2" (S&B p. 120; C&S p. 85: lines +"beginning at the same operator interaction line and ending at the same interaction +line"; KST slide 15 rule 7: weight (1/2)^m). Groups of n ≥ 3 equivalent lines +(MBPT/UCC only) give 1/n! (C&S p. 85, footnote q). + +### A11. Equivalent T vertices → factor 1/n! +"If there are n equivalent vertices in the diagram, they contribute a prefactor of +1/n!" (C&S p. 87). Two T vertices are equivalent when they have the same m and +"are connected to the interaction vertex with the same number … of particle lines +and the same number of hole lines" (S&B p. 287; KST slide 15 rule 9). + +### A12. Permutation operators for external lines +"Each pair of unique, external hole or particle lines introduces a permutation +function P(pq)", P(pq) f(p,q) = f(p,q) − f(q,p); pairs originating from the *same* +interaction line are not unique (already antisymmetric) (C&S p. 91, Eq. 154 p. 76; +KST slide 15 rule 8; S&B Fig. 10.1 rule 10). *In the spin-traced biorthogonal +CSV equations this role is played by the projector Ŝ at the head of each term.* + +### A13. Connected-cluster requirement +Every Hamiltonian fragment "must share at least one index with every cluster operator +on its right" (C&S p. 92); diagrams in which any T bar fails to contract with the +interaction are discarded. All T-vertex lines that do not reach the interaction must +be external. + +### A14. Kucharski–Bartlett sign sequences (enumeration bookkeeping) +Unique connectivities are enumerated by assigning "+" to particle and "−" to hole +lines below the Hamiltonian interaction line / above the cluster bars, and combining +the signs in all unique ways, e.g. the five unique sequences of (V_N T1 T1 T2)_c +in the T2 equation (C&S pp. 93–95; same idea as KST slides 17–18 "signatures": +T1 = +−, T2 = ++−−, V fragments = ++−−, etc.). + +--- + +## Part B — what CSV + DF adds (overlay annotations only) + +**B0. Skeleton invariance.** The CSV-CC diagram is a canonical Goldstone diagram +(Part A) plus annotations. Deleting all domain superscripts, C / CsC boxes and the +K label must leave a textbook diagram (e.g. R2 term 43 → the (V_N T1^4)_C doubles +diagram, C&S pp. 93–95). + +**B1. Domain superscripts.** A PNO virtual is written a^{ij} = virtual a restricted +to pair domain ⟨ij⟩ (SeQuant `a_1`; pao-ccsd-df.md Notation). Particle-line +labels always carry their domain. Occupied indices are ordinary MOs (no domain). + +**B2. DF split of the interaction (K).** Under density fitting +g_{pq,rs} = Σ_K B^K_{pq} B^K_{rs}: each half-vertex is one three-center factor +`g{bra;ket;Κ}` and **the dashed interaction line between the two half-vertices +carries the auxiliary label K** (write just "K"). The two `g` factors of a term are +identified by their shared Κ index. A term with `f{...}` instead has the one-body +×-vertex and no K. + +**B3. Slot → line mapping.** Every SeQuant tensor prints as `label{bra;ket[;aux]}`. +Apply A4 directly: **bra slot = outgoing line, ket slot = incoming line** at that +vertex. For amplitudes `t{virtuals;occupieds}`: virtuals are bra (created particles, +arrows leaving the bar upward), occupieds are ket (created holes: downward arrows +entering the bar from above). For the projector `Ŝ{occ;virt}` the occupieds are +bra-side (external hole lines flow from the top edge down into the diagram) and the +virtuals ket-side (external particle lines flow up out of the diagram). + +**B4. C annotation (PAO→PNO transform on an interaction leg).** g and f store their +*virtual* indices in the PAO basis (μ̃); a factor `C{μ̃;a}` (or transposed) +converts that leg to a PNO. Draw ONE fermion line for the chain g—C—a and put a +boxed **C** on the arrow near the g end: g —C→ a^{ij}. Occupied legs of g/f are MO +indices — never annotated. A leg with C is always a particle line. + +**B5. CsC annotation (domain-changing bridge).** A chain +`C{a;μ̃} · s{μ̃;μ̃'} · C{μ̃';a'}` (s = the PAO–PAO overlap metric) joins +two PNO indices of *different* domains into one particle line. Draw one line and put +a boxed **CsC** at mid-height. Typical use: connecting an external a_1^{i1 i2} to an +amplitude virtual a_5^{i3}. + +**B6. Fermion lines = connector chains.** Formally: C and s are not vertices. A +fermion line is a maximal chain of indices linked through C and s factors whose two +endpoints are slots of *terminal* tensors (g, f, t, Ŝ) — always exactly one bra slot +and one ket slot (this is the CSV image of A3/A4). Chain content ⇒ annotation: +one C → "C"; C·s·C → "CsC"; none → bare line. + +**B7. Amplitude vertex label.** `\hat{t}_{occ…}^{csv-virt…}` under the bar, e.g. +t{a_3;i_1} → t̂_{i1}^{a3^{i1}}; t{a_1,a_2;i_1,i_2} → +t̂_{i1 i2}^{a1^{i1 i2} a2^{i1 i2}}. Amplitudes are kept in CSV/PNO form — never +expanded into PAO (pao-ccsd-df.md Notation) — so C/CsC boxes never sit *between* a +T bar and its own index label; they sit on the line above it. + +**B8. External lines and Ŝ.** The external indices are exactly those listed in +`Ŝ{i…;a…}`; Ŝ is the biorthogonal particle-symmetrizer/projector marking +R = ⟨P|H̄|0⟩ — not a contracted tensor (pao-ccsd-df.md Notation). It replaces the +P(pq) machinery of A12 in the spin-traced biorthogonal formulation. + +**B9. Signs/weights.** The printed rational coefficient of each SeQuant term already +absorbs the (−1)^{h+l} sign (A9), the equivalent-line/vertex weights (A10/A11) and +the closed-shell spin-tracing factors; the diagram is drawn for structure, and the +A9–A11 count can be used as a consistency check (e.g. term 43: h = 4 hole lines, +l = 2 quasiloops pairing (i1,a1),(i2,a2) ⇒ (−1)^6 = +1, matching its coefficient +1). + +--- + +## Quick checklist for auditing a drawn CSV-CC diagram + +1. Every interaction half-vertex: exactly 1 in + 1 out (A3). +2. Every T1 bar: one particle up-arrow leaving + one hole down-arrow entering; + T_m bar: m of each (A2/A6). +3. Arrow directions: particles up, holes down, everywhere along a path (A1). +4. bra/ket of every SeQuant slot honored as out/in (A4/B3). +5. External lines = Ŝ indices only, run to the top edge, paired (i_k, a_k) + per the bra determinant (A7/B8). +6. Connectedness: every T bar shares ≥1 line with the interaction (A13). +7. K on the dashed line iff the term has two `g` factors sharing a Κ (B2). +8. C on every g/f particle leg; CsC on every C·s·C bridge; domains on every + particle label; no annotation on occupied lines (B1, B4, B5). +9. Strip annotations → a textbook Goldstone diagram (B0). diff --git a/utilities/diagram_gen/csv_diagram.py b/utilities/diagram_gen/csv_diagram.py new file mode 100644 index 0000000000..952cabebec --- /dev/null +++ b/utilities/diagram_gen/csv_diagram.py @@ -0,0 +1,1181 @@ +#!/usr/bin/env python3 +""" +csv_diagram.py — parse a SeQuant CSV-CCSD(-DF) term string (format of pao-ccsd-df.md) +and render the corresponding CSV-CC Goldstone diagram with matplotlib. + +Conventions implemented (see csv-cc-diagram-rules.md in this directory for citations): + * hole line = downward arrow (blue), occupied labels i_n + * particle line = upward arrow (red), PNO labels a_n^{dom} + * two-electron interaction = ONE vertex = two half-vertices (dots) joined by a + dashed line; under DF the dashed line carries the auxiliary label K + * one-body (Fock) interaction = a dot joined by a dashed line to a "×" marker + (A2: "the point of action ... marked by the interaction line —×") + * bra index = outgoing (creation); ket index = incoming (annihilation); + every half-vertex has exactly 1 incoming + 1 outgoing line + * fermion flow of a line: from the terminal node where its index sits in a BRA + slot to the terminal node where it sits in a KET slot + * amplitude vertex = solid horizontal bar at the bottom, label \\hat{t}_{occ}^{csv-virts} + * CSV overlay: PNO domain as superscript a^{ij}; PAO->PNO transform on a g/f leg + annotated "C"; a domain-changing bridge C·s·C annotated "CsC"; DF split of the + interaction annotated "K" on the dashed line + * external lines = indices listed in the projector Ŝ{occ;virt}; drawn to the top + +CSV OVERLAY KNOB (rule B0, skeleton invariance) + draw(..., show_csv=False) removes every CSV/DF annotation — domain superscripts, + C / CsC / s boxes, the K label and the g_L/g_R half-vertex tags — leaving the + plain canonical CC Goldstone diagram. show_aux= overrides the K/g_L/g_R + part alone (it defaults to show_csv). + +INPUT + Any SeQuant term string is accepted — inline, from a file, or on stdin. The + ':N-C-S' suffixes, markdown list numbering and backticks are stripped, so a + line copied straight out of pao-ccsd*.md works as-is: + + python3 csv_diagram.py '' out.png # inline + python3 csv_diagram.py --file term.txt out.png # from a file + sed -n '281p' ../pao-ccsdt-df.md | python3 csv_diagram.py - out.png + python3 csv_diagram.py --file many.txt outdir/ # N terms -> outdir/ + python3 render_all.py --src ../pao-ccsdtq-df.md --only R4 # whole section + +LAYOUT + * geometry is computed analytically (no renderer round-trip): text extents come + from a scratch canvas in DATA units, so the figure is built at exactly 1 data + unit = UNIT inches and every label is placed by a collision-avoiding greedy + search against vertices, bars, other labels and the fermion lines themselves. + * amplitude bars, half-vertices and external stubs are all centred on a common + axis, so mirror-image terms render as mirror images. + * two fermion lines joining the SAME pair of endpoints (e.g. the particle+hole + pair of a T1 hanging off a single interaction dot) are bowed apart into a + slim pointy ellipse (the canonical Goldstone bubble); lines that merely run + together (a shared apex, an external stub grazing a half-vertex) are fanned + apart by the same mechanism, so no two lines are ever drawn on top of one + another. + * C / CsC / s ride ON their fermion line and slide along it to dodge obstacles. + +VERIFIED ON + pao-ccsd-df.md (86), pao-ccsdt-df.md (201) and pao-ccsdtq-df.md (373 terms, + T1..T4 amplitude bars) — see audit_diagrams.py: no label/label, label/vertex or + line/line overlaps in any of them, in either variant. + +LIMITATIONS (not yet handled): + * line-crossing minimisation is only heuristic (amplitude/vertex ordering by + mean partner position); very crowded terms may still cross lines, which is + legal but not always pretty. Lines never coincide and labels never overlap, + but a label box may sit on top of one foreign line (1/86 CCSD, 8/201 CCSDT + and 32/373 CCSDTQ terms); it keeps an opaque background and stays readable. + * assumes at most ONE interaction (<=2 g half-vertices sharing one Κ, or one f). + True for every CCSD/CCSDT/CCSDTQ residual term in the files above. + * does not compute the diagram sign/weight (h, loops, equivalent lines); + it draws and annotates only. The printed coefficient is taken verbatim. + * an s{μ̃;μ̃} that is NOT flanked by two C's (never occurs in the files) would + be annotated as a bare "s". +""" + +import argparse +import os +import re +import sys +import unicodedata +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.lines import Line2D +import numpy as np + +HOLE = "#1f4fd8" # blue, arrow down +PART = "#c0281f" # red, arrow up +INT = "#555555" # gray dashed interaction + +Y_T, Y_HV, Y_EXT = 1.0, 3.9, 6.5 + +UNIT = 1.0 # inches per data unit => 72 pt per data unit +FS_IDX, FS_ANN, FS_T, FS_V, FS_TITLE, FS_LEG = 12, 11, 11, 12, 13, 10 + +APEX_STEP = 0.85 # spacing of the excitation apexes on one amplitude bar +BAR_HALF = 0.30 # bar overhang beyond the outermost apex +T_GAP = 0.75 # clear space between neighbouring amplitude bars/labels +HV_GAP = 3.4 # minimum separation of the two interaction half-vertices +EXT_BIAS = 0.14 # tie-break only: holes lean left of their anchor, particles right +EXT_GAP = 0.55 # clear space between neighbouring external labels +STUB = 1.15 # length of the Fock ---x stub + +LAST_AUDIT = None # geometry of the most recent draw() — used by audit_diagrams.py + +# ---------------------------------------------------------------------------- +# parsing +# ---------------------------------------------------------------------------- + +TENSOR_RE = re.compile(r"([^\s*(){}]+)\{([^{}]*)\}(?::[A-ZN\-]+)?") +COEFF_RE = re.compile(r"^\s*([+-]?\d+(?:/\d+)?)\s+") +MD_ITEM = re.compile(r"^\s*\d+\.\s+(.*)$") # "12. ``" markdown list line + + +def clean_term(s): + """Accept a raw SeQuant term as pasted from anywhere: a bare expression, a + markdown list item (``12. `...` ``), backtick-quoted, or with stray + surrounding whitespace / a leading '+'.""" + s = s.strip() + m = MD_ITEM.match(s) + if m and "{" in m.group(1): + s = m.group(1).strip() + s = s.strip("`").strip() + if s.startswith("+") and not s[1:2].isdigit(): + s = s[1:].strip() + return s + + +def _norm(s): + return unicodedata.normalize("NFC", s) + + +def kind_of(idx): + """occ / pno / pao / aux from the index name.""" + if idx.startswith("i"): + return "occ" + if idx.startswith("a"): + return "pno" + if "μ" in idx: + return "pao" + if "Κ" in idx or "K" in idx: + return "aux" + raise ValueError(f"unknown index kind: {idx!r}") + + +def split_outside(s, sep): + """split on sep, but not inside <...> (PNO domain brackets).""" + parts, depth, cur = [], 0, [] + for ch in s: + if ch == "<": + depth += 1 + elif ch == ">": + depth -= 1 + if ch == sep and depth == 0: + parts.append("".join(cur)); cur = [] + else: + cur.append(ch) + parts.append("".join(cur)) + return parts + + +def parse_index(tok): + """'a_3' -> ('a_3', ['i_1','i_2']); 'i_1' -> ('i_1', [])""" + tok = tok.strip() + m = re.match(r"([^<>]+)(?:<([^<>]*)>)?$", tok) + name = m.group(1).strip() + dom = [d.strip() for d in m.group(2).split(",")] if m.group(2) else [] + return name, dom + + +class Tensor: + def __init__(self, label, slots): + self.label = label # 'g','f','t','s','C','S^' + self.bra, self.ket = slots[0], slots[1] # lists of (name, dom) + self.aux = slots[2] if len(slots) > 2 else [] + + def __repr__(self): + return f"{self.label}{{{self.bra};{self.ket};{self.aux}}}" + + +def parse_term(term): + """Return (coeff:str, tensors:[Tensor]). Parens are irrelevant (associativity).""" + term = _norm(clean_term(term)) + if "{" not in term: + raise ValueError(f"no tensor found in input: {term[:80]!r}") + m = COEFF_RE.match(term) + coeff = m.group(1) if m else "1" + tensors = [] + for lab, body in TENSOR_RE.findall(term): + lab = _norm(lab) + if lab in ("Ŝ", "Ŝ", "S^"): + lab = "S^" + slots = [[parse_index(t) for t in split_outside(part, ",") if t.strip()] + for part in body.split(";")] + while len(slots) < 2: + slots.append([]) + tensors.append(Tensor(lab, slots)) + return coeff, tensors + + +# ---------------------------------------------------------------------------- +# graph construction: terminals + C/s connector chains -> fermion lines +# ---------------------------------------------------------------------------- + +TERMINALS = {"g", "f", "t", "S^"} + + +class Node: + """A drawable vertex: half-vertex ('hv'), amplitude ('t'), or external ('ext').""" + def __init__(self, kind, tag, tensor=None): + self.kind, self.tag, self.tensor = kind, tag, tensor + self.x = self.y = 0.0 + + def __repr__(self): + return f"<{self.kind}:{self.tag}>" + + +class FermionLine: + def __init__(self, src, dst, src_idx, dst_idx, nC, nS): + self.src, self.dst = src, dst # Node (bra end -> ket end) + self.src_idx, self.dst_idx = src_idx, dst_idx # (name, dom) at each end + self.nC, self.nS = nC, nS # of C / s tensors on the chain + # hole vs particle from terminal index kinds + kinds = {kind_of(src_idx[0]), kind_of(dst_idx[0])} + self.is_hole = "occ" in kinds + + @property + def annotation(self): + if self.nS: + return "CsC" if self.nC >= 2 else "sC" if self.nC else "s" + return "C" if self.nC == 1 else ("CC" if self.nC else None) + + +class UF: + def __init__(self): + self.p = {} + + def find(self, x): + self.p.setdefault(x, x) + while self.p[x] != x: + self.p[x] = self.p[self.p[x]] + x = self.p[x] + return x + + def union(self, a, b): + self.p[self.find(a)] = self.find(b) + + +def build_graph(tensors): + """Returns (nodes, lines, hvs, hv_pair_or_None, externals dict).""" + uf = UF() + conn_count = {} # root -> [nC, nS] (filled after unions) + connectors = [] # (label, p, q) + terminal_occ = {} # index name -> list of (node, 'bra'|'ket', (name,dom)) + nodes, hvs, tnodes = [], [], [] + S_hat = None + + for T in tensors: + if T.label in ("C", "s"): + p, q = T.bra[0][0], T.ket[0][0] + uf.union(p, q) + connectors.append((T.label, p, q)) + elif T.label in ("g", "f"): + n = Node("hv", f"{T.label}{len(hvs)}", T) + hvs.append(n); nodes.append(n) + elif T.label == "t": + n = Node("t", f"t{len(tnodes)}", T) + tnodes.append(n); nodes.append(n) + elif T.label == "S^": + S_hat = T + else: + raise ValueError(f"unhandled tensor {T}") + + def add_term(node, side, idx): + terminal_occ.setdefault(uf.find(idx[0]), []).append((node, side, idx)) + + for n in nodes: + for idx in n.tensor.bra: + add_term(n, "bra", idx) + for idx in n.tensor.ket: + add_term(n, "ket", idx) + + # externals: one ext node per Ŝ index. Ŝ bra=occ (creation at top edge), + # Ŝ ket=virt. Fermion flow: occ Ŝ->partner (down); virt partner->Ŝ (up). + ext_nodes = {} + if S_hat is not None: + for idx in S_hat.bra: # occupied externals + en = Node("ext", idx[0]); en.ext_idx = idx + ext_nodes[idx[0]] = en + add_term(en, "bra", idx) + for idx in S_hat.ket: # virtual externals + en = Node("ext", idx[0]); en.ext_idx = idx + ext_nodes[idx[0]] = en + add_term(en, "ket", idx) + + # count connectors per chain + for lab, p, q in connectors: + r = uf.find(p) + c = conn_count.setdefault(r, [0, 0]) + c[0 if lab == "C" else 1] += 1 + + lines = [] + for root, occs in terminal_occ.items(): + if len(occs) != 2: + raise ValueError(f"chain {root} has {len(occs)} terminals (want 2): {occs}") + (n1, s1, i1), (n2, s2, i2) = occs + if s1 == s2: + raise ValueError(f"chain {root}: both terminals are {s1} slots") + if s1 == "ket": + (n1, s1, i1), (n2, s2, i2) = (n2, s2, i2), (n1, s1, i1) + nC, nS = conn_count.get(root, [0, 0]) + lines.append(FermionLine(n1, n2, i1, i2, nC, nS)) + + # interaction pairing: g's sharing an aux index (DF), else lone f/g + hv_pair = None + if len(hvs) == 2: + hv_pair = (hvs[0], hvs[1]) + elif len(hvs) > 2: + raise ValueError(">2 interaction half-vertices not supported") + return nodes + list(ext_nodes.values()), lines, hvs, hv_pair, ext_nodes + + +# ---------------------------------------------------------------------------- +# labels +# ---------------------------------------------------------------------------- + +class Opts: + """Rendering knobs. show_csv=False => canonical CC Goldstone skeleton (rule B0). + + The three overlay layers can also be toggled independently: + csv C / CsC / s boxes on the fermion lines + dom PNO domain superscripts a^{ij} + aux the DF label K on the interaction line (+ the g_L/g_R half-vertex tags) + """ + def __init__(self, show_csv=True, show_aux=None, show_dom=None): + self.csv = bool(show_csv) + self.aux = self.csv if show_aux is None else bool(show_aux) + self.dom = self.csv if show_dom is None else bool(show_dom) + + +def _sub(name): + """'a_3' -> 'a_3' latex; 'μ̃_1' -> '\\tilde{\\mu}_1'""" + if "μ" in name: + n = name.split("_")[-1] + return rf"\tilde{{\mu}}_{{{n}}}" + base, _, n = name.partition("_") + return rf"{base}_{{{n}}}" if n else base + + +def idx_latex(idx, opts): + name, dom = idx + s = _sub(name) + if dom and opts.dom: + s += "^{\\," + "\\,".join(_sub(d) for d in dom) + "}" + return f"${s}$" + + +def t_label(tensor, opts): + occ = "\\,".join(_sub(n) for n, _ in tensor.ket) + vir = "\\,".join(_sub(n) + ("^{" + "\\,".join(_sub(d) for d in dom) + "}" + if (dom and opts.dom) else "") + for n, dom in tensor.bra) + return rf"$\hat{{t}}_{{\,{occ}}}^{{\,{vir}}}$" + + +# ---------------------------------------------------------------------------- +# text metrics (DATA units) — measured once on a scratch canvas +# ---------------------------------------------------------------------------- + +_SCRATCH = None +_SIZE_CACHE = {} + + +def text_size(s, fontsize): + """(width, height) of a rendered (math)text string, in data units.""" + key = (s, fontsize) + hit = _SIZE_CACHE.get(key) + if hit is not None: + return hit + global _SCRATCH + if _SCRATCH is None: + _SCRATCH = plt.figure(figsize=(2, 2), dpi=100) + _SCRATCH.canvas.draw() + art = _SCRATCH.text(0.5, 0.5, s, fontsize=fontsize) + bb = art.get_window_extent(_SCRATCH.canvas.get_renderer()) + art.remove() + res = (bb.width / _SCRATCH.dpi / UNIT, bb.height / _SCRATCH.dpi / UNIT) + _SIZE_CACHE[key] = res + return res + + +def box_of(x, y, w, h, ha="center", va="center", pad=0.06): + if ha == "center": + x0, x1 = x - w / 2, x + w / 2 + elif ha == "left": + x0, x1 = x, x + w + else: + x0, x1 = x - w, x + if va == "center": + y0, y1 = y - h / 2, y + h / 2 + elif va == "bottom": + y0, y1 = y, y + h + else: + y0, y1 = y - h, y + return (x0 - pad, y0 - pad, x1 + pad, y1 + pad) + + +# ---------------------------------------------------------------------------- +# geometry helpers +# ---------------------------------------------------------------------------- + +def _perp(u): + return np.array([u[1], -u[0]]) + + +def bow_path(p0, p1, bow, n=41): + """Quadratic-Bezier arc from p0 to p1 bulging by `bow` (perp, +=right of p0->p1). + Two opposite bows between the same endpoints make a pointy ellipse (lens).""" + p0 = np.asarray(p0, float); p1 = np.asarray(p1, float) + d = p1 - p0 + L = float(np.hypot(*d)) + if L < 1e-9 or abs(bow) < 1e-9: + return np.array([p0, p1]) + ctrl = (p0 + p1) / 2 + _perp(d / L) * 2.0 * bow + t = np.linspace(0, 1, n)[:, None] + return (1 - t) ** 2 * p0 + 2 * (1 - t) * t * ctrl + t ** 2 * p1 + + +def path_at(pts, f): + """point + unit tangent at arc-length fraction f of a polyline.""" + seg = np.diff(pts, axis=0) + ln = np.hypot(seg[:, 0], seg[:, 1]) + cum = np.concatenate([[0.0], np.cumsum(ln)]) + tot = cum[-1] + if tot < 1e-9: + return pts[0].copy(), np.array([0.0, 1.0]) + s = float(np.clip(f, 0.0, 1.0)) * tot + k = int(np.clip(np.searchsorted(cum, s) - 1, 0, len(seg) - 1)) + u = (s - cum[k]) / max(ln[k], 1e-12) + return pts[k] + seg[k] * u, seg[k] / max(ln[k], 1e-12) + + +def _overlap(a, b): + dx = min(a[2], b[2]) - max(a[0], b[0]) + dy = min(a[3], b[3]) - max(a[1], b[1]) + return dx * dy if (dx > 0 and dy > 0) else 0.0 + + +def _seg_hits_box(p, q, box): + """Liang-Barsky segment/AABB test.""" + x0, y0, x1, y1 = box + tmin, tmax = 0.0, 1.0 + dx, dy = q[0] - p[0], q[1] - p[1] + for pp, qq in ((-dx, p[0] - x0), (dx, x1 - p[0]), + (-dy, p[1] - y0), (dy, y1 - p[1])): + if abs(pp) < 1e-12: + if qq < 0: + return False + else: + r = qq / pp + if pp < 0: + if r > tmax: + return False + tmin = max(tmin, r) + else: + if r < tmin: + return False + tmax = min(tmax, r) + return tmin <= tmax + + +class Placer: + """Greedy collision-avoiding label placement against boxes and line segments.""" + + def __init__(self): + self.boxes = [] # occupied rectangles + self.segs = [] # (p, q, owner) + self.tags = [] # parallel to boxes: (tag, is_label) + + def block(self, box, tag="obstacle", is_label=False, owner=None): + self.boxes.append(box) + self.tags.append((tag, is_label, id(owner) if owner is not None else None)) + return box + + def block_text(self, x, y, s, fs, ha="center", va="center", pad=0.06): + w, h = text_size(s, fs) + return self.block(box_of(x, y, w, h, ha, va, pad)) + + def add_path(self, pts, owner, k=12): + pts = np.asarray(pts, float) + idx = np.unique(np.linspace(0, len(pts) - 1, min(k + 1, len(pts))).astype(int)) + for a, b in zip(idx[:-1], idx[1:]): + self.segs.append((pts[a], pts[b], owner)) + + def cost(self, box, owner=None): + """Any overlap with an existing box is disqualifying-expensive; sitting on + a foreign fermion line is merely ugly.""" + c = 0.0 + for b in self.boxes: + ov = _overlap(box, b) + if ov > 1e-9: + c += 3.0 + 25.0 * ov + for p, q, o in self.segs: + if _seg_hits_box(p, q, box): + c += 0.30 if o is owner else 0.85 + return c + + def place(self, cands, w, h, owner=None, pad=0.06, tag="label"): + """cands: [((x, y), preference_penalty)] — lower penalty = more wanted.""" + best = None + for x, y, pen in cands: + box = box_of(x, y, w, h, "center", "center", pad) + c = self.cost(box, owner) + pen + if best is None or c < best[0]: + best = (c, (x, y), box) + self.block(best[2], tag, True, owner) + return best[1] + + +# ---------------------------------------------------------------------------- +# layout +# ---------------------------------------------------------------------------- + +def _bar_half(tensor): + m = max(len(tensor.bra), len(tensor.ket), 1) + return APEX_STEP * (m - 1) / 2 + BAR_HALF + + +def assign_apexes(tnodes, lines): + """Map (t-node, line) -> apex point on the bar. The legs of one excitation + (particle+hole pair) MEET at a shared apex: a T_m vertex is m V-shapes.""" + slots = {} + for n in tnodes: + bra_names = [nm for nm, _ in n.tensor.bra] # virtuals -> particle legs + ket_names = [nm for nm, _ in n.tensor.ket] # occupieds -> hole legs + m = max(len(bra_names), len(ket_names), 1) + bra_line = [None] * len(bra_names) + ket_line = [None] * len(ket_names) + for L in lines: + if L.src is n: + idx = L.src_idx + elif L.dst is n: + idx = L.dst_idx + else: + continue + nm = idx[0] + if nm in bra_names: + bra_line[bra_names.index(nm)] = L + elif nm in ket_names: + ket_line[ket_names.index(nm)] = L + + def other_x(L): + if L is None: + return n.x + o = L.dst if L.src is n else L.src + return o.x + + pairs = [(bra_line[k] if k < len(bra_line) else None, + ket_line[k] if k < len(ket_line) else None) for k in range(m)] + pairs.sort(key=lambda pr: float(np.mean([other_x(L) for L in pr + if L is not None] or [n.x]))) + if m == 1: + apex_xs = [n.x] + else: + apex_xs = [n.x - APEX_STEP * (m - 1) / 2 + APEX_STEP * k for k in range(m)] + for k, (bl, kl) in enumerate(pairs): + for L in (bl, kl): + if L is not None: + slots[(n, id(L))] = (apex_xs[k], n.y) + for L in lines: # safety: stray leg -> centre + if (L.src is n or L.dst is n) and (n, id(L)) not in slots: + slots[(n, id(L))] = (n.x, n.y) + n.apex_xs = apex_xs + return slots + + +def _spread(pos, half, gap): + """Push overlapping items apart symmetrically (centroid preserving).""" + pos = list(pos) + for _ in range(400): + moved = False + for k in range(len(pos) - 1): + need = half[k] + half[k + 1] + gap + d = pos[k + 1] - pos[k] + if d < need - 1e-9: + push = (need - d) / 2.0 + pos[k] -= push + pos[k + 1] += push + moved = True + if not moved: + break + return pos + + +def _symmetrize(hvs): + if len(hvs) != 2: + return + a, b = hvs + if a.x > b.x: + a.x, b.x = b.x, a.x + mid = (a.x + b.x) / 2.0 + halfgap = max(HV_GAP, b.x - a.x) / 2.0 + a.x, b.x = mid - halfgap, mid + halfgap + + +def layout(nodes, lines, hvs, opts): + """Place every node; returns the apex map.""" + tnodes = [n for n in nodes if n.kind == "t"] + exts = [n for n in nodes if n.kind == "ext"] + + # which half-vertices does each amplitude touch? (left / straddling / right) + touch = {n: set() for n in tnodes} + for L in lines: + for a, b in ((L.src, L.dst), (L.dst, L.src)): + if a.kind == "t" and b.kind == "hv": + touch[a].add(b.tag) + + def group(n): + s = touch[n] + if len(hvs) == 2: + if s == {hvs[0].tag}: + return 0 + if s == {hvs[0].tag, hvs[1].tag}: + return 1 + if s == {hvs[1].tag}: + return 2 + return 1 + tnodes.sort(key=group) + + # --- bottom row: spacing driven by bar width AND amplitude-label width + half = [max(text_size(t_label(n.tensor, opts), FS_T)[0] / 2, _bar_half(n.tensor)) + for n in tnodes] + x = 0.0 + for k, n in enumerate(tnodes): + if k: + x += half[k - 1] + half[k] + T_GAP + n.x, n.y = x, Y_T + if tnodes: # centre the row on 0 + c = (tnodes[0].x + tnodes[-1].x) / 2 + for n in tnodes: + n.x -= c + + def hv_partner_xs(hv, slots=None): + out = [] + for L in lines: + for a, b in ((L.src, L.dst), (L.dst, L.src)): + if a is hv and b.kind == "t": + out.append(slots[(b, id(L))][0] if slots else b.x) + return out + + partner_of = {} + line_of = {} + for en in exts: + for L in lines: + if L.src is en or L.dst is en: + partner_of[en] = L.dst if L.src is en else L.src + line_of[en] = L + + def place_hvs(slots=None): + for j, hv in enumerate(hvs): + px = hv_partner_xs(hv, slots) + hv.x = float(np.mean(px)) if px else (HV_GAP * (j - 0.5)) + hv.y = Y_HV + _symmetrize(hvs) + + def ext_pref(en, slots=None): + p = partner_of.get(en) + if p is None: + return 0.0 + if p.kind == "t" and slots is not None: + px = slots[(p, id(line_of[en]))][0] + else: + px = p.x + return px + (-EXT_BIAS if kind_of(en.tag) == "occ" else EXT_BIAS) + + # provisional -> apexes -> refined half-vertices -> apexes -> externals + place_hvs() + for en in exts: + en.x, en.y = ext_pref(en), Y_EXT + slots = assign_apexes(tnodes, lines) + place_hvs(slots) + slots = assign_apexes(tnodes, lines) + + if exts: + exts.sort(key=lambda e: (ext_pref(e, slots), e.tag)) + halfw = [text_size(idx_latex(e.ext_idx, opts), FS_IDX)[0] / 2 for e in exts] + prefs = [ext_pref(e, slots) for e in exts] + for _ in range(3): + pos = _spread(prefs, halfw, EXT_GAP) + # keep external stubs from spearing an interaction dot + bumped = False + for k, en in enumerate(exts): + p = partner_of.get(en) + if p is None or p.kind == "hv": + continue + p0 = slots[(p, id(line_of[en]))] if p.kind == "t" else (p.x, p.y) + if abs(Y_EXT - p0[1]) < 1e-9: + continue + f = (Y_HV - p0[1]) / (Y_EXT - p0[1]) + xh = p0[0] + (pos[k] - p0[0]) * f + for hv in hvs: + if abs(xh - hv.x) < 0.45: + d = 0.45 - abs(xh - hv.x) + s = 1.0 if pos[k] >= hv.x else -1.0 + prefs[k] = pos[k] + s * (d / max(f, 0.2) + 0.15) + bumped = True + if not bumped: + break + pos = _spread(prefs, halfw, EXT_GAP) + for en, x in zip(exts, pos): + en.x, en.y = x, Y_EXT + + # --- global centring: mirror-image terms come out as mirror images + allx = [n.x for n in tnodes + exts + hvs] + for n in tnodes: + allx += list(getattr(n, "apex_xs", [])) + if allx: + c = (min(allx) + max(allx)) / 2.0 + for n in tnodes + exts + hvs: + n.x -= c + slots = assign_apexes(tnodes, lines) + return slots + + +# ---------------------------------------------------------------------------- +# drawing +# ---------------------------------------------------------------------------- + +def _sides(bow, p, q): + """Perpendicular sides to try first: the bulge side of a bowed line, else the + side pointing away from the diagram axis (keeps mirror terms mirror-imaged).""" + if abs(bow) > 1e-9: + return (1, -1) if bow > 0 else (-1, 1) + want = 1.0 if p[0] >= 0 else -1.0 + first = 1 if q[0] * want >= 0 else -1 + return (first, -first) + + +def _line_label_pairs(L, opts): + """(text_near_src, text_near_dst) — a bridge shows a different index at each + end, an ordinary line shows one label. PAO ends borrow the other end's name.""" + ks, kd = kind_of(L.src_idx[0]), kind_of(L.dst_idx[0]) + a = L.src_idx if ks != "pao" else (L.dst_idx if kd != "pao" else L.src_idx) + b = L.dst_idx if kd != "pao" else (L.src_idx if ks != "pao" else L.dst_idx) + ta, tb = idx_latex(a, opts), idx_latex(b, opts) + return (ta, tb) if ta != tb else (ta, None) + + +def draw(term, title=None, out="diagram.png", verbose=True, + show_csv=True, show_aux=None, show_dom=None, legend=True, dpi=170): + opts = Opts(show_csv, show_aux, show_dom) + coeff, tensors = parse_term(term) + nodes, lines, hvs, hv_pair, ext_nodes = build_graph(tensors) + slots = layout(nodes, lines, hvs, opts) + tnodes = [n for n in nodes if n.kind == "t"] + + if verbose: + print(f"coeff={coeff}; {len(hvs)} half-vertices; {len(tnodes)} amplitudes; " + f"{len(ext_nodes)} external lines") + for L in lines: + print(f" {'hole' if L.is_hole else 'part'} " + f"{L.src}({L.src_idx[0]}) -> {L.dst}({L.dst_idx[0]})" + f" ann={L.annotation}") + + def endpoint(node, L): + return np.array(slots[(node, id(L))] if node.kind == "t" else (node.x, node.y), + float) + + # ---- fermion-line geometry (bowing lines that share both endpoints) ----- + geo = {} + groups = {} + for L in lines: + p, q = endpoint(L.src, L), endpoint(L.dst, L) + key = tuple(sorted([tuple(np.round(p, 4)), tuple(np.round(q, 4))])) + groups.setdefault(key, []).append(L) + def _bow_line(L, bw): + """(re)build L's polyline as an arc bulging `bw` off the straight chord.""" + p, q = endpoint(L.src, L), endpoint(L.dst, L) + lo, hi = (p, q) if (p[1], p[0]) <= (q[1], q[0]) else (q, p) + pts = bow_path(lo, hi, bw) + if np.hypot(*(pts[0] - p)) > np.hypot(*(pts[-1] - p)): + pts = pts[::-1] + geo[id(L)] = dict(pts=pts, bow=bw, color=HOLE if L.is_hole else PART) + + # (a) lines sharing BOTH endpoints -> pointy ellipse (Goldstone bubble) + lens = set() + for key, grp in groups.items(): + n = len(grp) + if n == 1: + _bow_line(grp[0], 0.0) + continue + grp.sort(key=lambda L: (not L.is_hole, L.src_idx[0])) + chord = np.hypot(*(np.array(key[1]) - np.array(key[0]))) + span = float(np.clip(0.10 * chord, 0.14, 0.30)) # slim lens + for k, L in enumerate(grp): + _bow_line(L, -span + 2 * span * k / (n - 1)) + lens.add(id(L)) + + # (b) lines that merely RUN TOGETHER (sharing one endpoint, or an external + # stub grazing a half-vertex) are bowed apart too — just enough to read + # as two lines. Iterated, because bowing can uncover a new near-miss. + def _samples(pts, n=24): + d = np.cumsum(np.r_[0.0, np.hypot(*np.diff(pts, axis=0).T)]) + if d[-1] < 1e-9: + return np.repeat(pts[:1], n, axis=0) + u = np.linspace(0, d[-1], n) + return np.column_stack([np.interp(u, d, pts[:, 0]), + np.interp(u, d, pts[:, 1])]) + + def _runs_together(A, B, smp, hair=0.11, frac=0.30): + a, b = smp[id(A)], smp[id(B)] + d = np.hypot(a[:, None, 0] - b[None, :, 0], a[:, None, 1] - b[None, :, 1]) + return max((d.min(axis=1) < hair).mean(), (d.min(axis=0) < hair).mean()) > frac + + def _key(L): + return (not L.is_hole, L.src_idx[0], L.dst_idx[0]) + + # A bundle is fanned as a whole; the bundle graph only ever GROWS (so the + # fan never oscillates), and the fan widens only once membership is stable. + uf2, sep = UF(), 0.48 + for _ in range(6): + smp = {id(L): _samples(geo[id(L)]["pts"]) for L in lines} + hits = [(A, B) for i, A in enumerate(lines) for B in lines[i + 1:] + if _runs_together(A, B, smp)] + if not hits: + break + grew = False + for A, B in hits: + if uf2.find(id(A)) != uf2.find(id(B)): + uf2.union(id(A), id(B)) + grew = True + if not grew: + sep = min(sep * 1.3, 0.95) + comps = {} + for L in lines: + comps.setdefault(uf2.find(id(L)), []).append(L) + for grp in comps.values(): + if len(grp) < 2: + continue + free = [L for L in sorted(grp, key=_key) if id(L) not in lens] + if len(free) == 1: # push it off whatever it runs with + other = [L for L in grp if L is not free[0]] + b0 = np.sign(geo[id(other[0])]["bow"] or 1.0) if other else 1.0 + _bow_line(free[0], -b0 * sep) + elif free: + bows = [(k - (len(free) - 1) / 2) * sep for k in range(len(free))] + cap = max(abs(b) for b in bows) # keep arcs from wandering + if cap > 0.55: + bows = [b * 0.55 / cap for b in bows] + for L, bw in zip(free, bows): + _bow_line(L, bw) + + # ---- obstacles --------------------------------------------------------- + P = Placer() + texts = [] # (x, y, s, color, fs, ha, va, style) + + for n in tnodes: + x0, x1 = n.apex_xs[0] - BAR_HALF, n.apex_xs[-1] + BAR_HALF + P.block((x0 - 0.10, n.y - 0.14, x1 + 0.10, n.y + 0.14), "bar") + s = t_label(n.tensor, opts) + w, h = text_size(s, FS_T) + P.block(box_of(n.x, n.y - 0.34, w, h, "center", "top"), f"t:{s}", True) + texts.append((n.x, n.y - 0.34, s, "black", FS_T, "center", "top", "t")) + + for hv in hvs: + P.block((hv.x - 0.20, hv.y - 0.20, hv.x + 0.20, hv.y + 0.20), "dot") + + for en in [n for n in nodes if n.kind == "ext"]: + s = idx_latex(en.ext_idx, opts) + w, h = text_size(s, FS_IDX) + col = HOLE if kind_of(en.tag) == "occ" else PART + P.block(box_of(en.x, en.y + 0.22, w, h, "center", "bottom"), f"ext:{s}", True) + texts.append((en.x, en.y + 0.22, s, col, FS_IDX, "center", "bottom", "ext")) + + for L in lines: + P.add_path(geo[id(L)]["pts"], owner=L) + + # ---- interaction ------------------------------------------------------- + dash_seg = None + xmark = None + if len(hvs) == 2: + a, b = hvs + dash_seg = ((a.x, a.y), (b.x, b.y)) + P.segs.append((np.array(dash_seg[0]), np.array(dash_seg[1]), "dash")) + if opts.aux: + aux = a.tensor.aux[0][0] if a.tensor.aux else None + if aux: + w, h = text_size("$K$", FS_V) + # K belongs ON the dashed line; step sideways before stepping off it + cands = [((a.x + b.x) / 2 + d, a.y + dy, 0.30 * abs(d) + 1.30 * abs(dy)) + for d in (0, -0.55, 0.55, -1.1, 1.1, -1.65, 1.65) + for dy in (0, 0.42, -0.42)] + x, y = P.place(cands, w, h, owner="dash", tag="K") + texts.append((x, y, "$K$", INT, FS_V, "center", "center", "anno_int")) + for hv, lbl, side in ((a, "$g_L$", -1.0), (b, "$g_R$", 1.0)): + w, h = text_size(lbl, FS_V) + r = 0.30 + w / 2 + cands = [] + for k, (dx, dy) in enumerate(((side * r, 0.44), (side * r, -0.44), + (-side * r, 0.44), (-side * r, -0.44))): + for grow in (0.0, 0.45, 0.95): + cands.append((hv.x + dx + np.sign(dx) * grow, hv.y + dy, + 0.18 * k + 0.55 * grow)) + x, y = P.place(cands, w, h, owner="dash", tag=lbl) + texts.append((x, y, lbl, INT, FS_V, "center", "center", "hv")) + elif len(hvs) == 1: + hv = hvs[0] + best, bestc = (1.0, STUB), None + for s in (1.0, -1.0): + for ln in (STUB, STUB + 0.45, STUB + 0.9): + tip = hv.x + s * ln + box = (min(hv.x, tip) - 0.1, hv.y - 0.28, + max(hv.x, tip) + 0.24, hv.y + 0.28) + # the x marker itself must sit clear of everything + c = P.cost(box) + 3.0 * P.cost((tip - 0.26, hv.y - 0.26, + tip + 0.26, hv.y + 0.26)) + if bestc is None or c < bestc - 1e-9: + best, bestc = (s, ln), c + s, ln = best + dash_seg = ((hv.x, hv.y), (hv.x + s * ln, hv.y)) + xmark = (hv.x + s * ln, hv.y) + P.block((min(hv.x, xmark[0]) - 0.05, hv.y - 0.22, + max(hv.x, xmark[0]) + 0.22, hv.y + 0.22)) + + # ---- CSV annotations (C / CsC / s) ------------------------------------- + for L in lines: + ann = L.annotation if opts.csv else None + if not ann: + continue + g = geo[id(L)] + pts = g["pts"] + w, h = text_size(f"${ann}$", FS_ANN) + # "C" belongs next to the g/f end; bridges sit mid-line + # C / CsC / s ride ON the line (a bead threaded on the fermion line); + # they slide ALONG it to dodge obstacles, and only step aside as a + # last resort. "C" stays near its g/f end (rule B4). + if ann == "C" and (L.src.kind == "hv" or L.dst.kind == "hv"): + near_src = L.src.kind == "hv" + fr = [0.18, 0.26, 0.34, 0.42, 0.12, 0.50, 0.58, 0.66] + if not near_src: + fr = [1.0 - f for f in fr] + else: + fr = [0.50, 0.42, 0.58, 0.34, 0.66, 0.26, 0.74, 0.18, 0.82] + cands = [(*path_at(pts, f)[0], 0.12 * j) for j, f in enumerate(fr)] + for j, f in enumerate(fr[:4]): # last-resort step-aside + p, t = path_at(pts, f) + q = _perp(t) + off = abs(q[0]) * w / 2 + abs(q[1]) * h / 2 + 0.16 + for k, s in enumerate(_sides(g["bow"], p, q)): + cands.append((p[0] + s * q[0] * off, p[1] + s * q[1] * off, + 2.2 + 0.12 * j + 0.14 * k)) + x, y = P.place(cands, w, h, owner=L, tag=f"ann:{ann}") + texts.append((x, y, f"${ann}$", g["color"], FS_ANN, "center", "center", "anno")) + + # ---- index labels ------------------------------------------------------ + for L in lines: + g = geo[id(L)] + pts = g["pts"] + ta, tb = _line_label_pairs(L, opts) + jobs = [] + src_ext = L.src.kind == "ext" + dst_ext = L.dst.kind == "ext" + if tb is None: # one name for the line + if not (src_ext or dst_ext): # externals label at the top + jobs.append((ta, [0.38, 0.52, 0.26, 0.64, 0.14, 0.76, 0.88])) + else: # bridge: name at each end + if not src_ext: + jobs.append((ta, [0.24, 0.34, 0.16, 0.44, 0.08, 0.52])) + if not dst_ext: + jobs.append((tb, [0.76, 0.66, 0.84, 0.56, 0.92, 0.48])) + for s, fr in jobs: + w, h = text_size(s, FS_IDX) + cands = [] + for extra in (0.17, 0.52, 0.95, 1.55): # progressively roomier + for j, f in enumerate(fr): + p, t = path_at(pts, f) + q = _perp(t) + off = abs(q[0]) * w / 2 + abs(q[1]) * h / 2 + extra + for k, sg in enumerate(_sides(g["bow"], p, q)): + cands.append((p[0] + sg * q[0] * off, p[1] + sg * q[1] * off, + 1.40 * (extra - 0.17) + 0.09 * j + 0.13 * k)) + x, y = P.place(cands, w, h, owner=L, tag=f"idx:{s}") + texts.append((x, y, s, g["color"], FS_IDX, "center", "center", "idx")) + + # ---- audit record (see audit_diagrams.py) ------------------------------ + global LAST_AUDIT + LAST_AUDIT = dict(boxes=list(P.boxes), tags=list(P.tags), + segs=[(tuple(p), tuple(q), o) for p, q, o in P.segs]) + + # ---- extents ----------------------------------------------------------- + xs, ys = [], [] + for L in lines: + pts = geo[id(L)]["pts"] + xs += [pts[:, 0].min(), pts[:, 0].max()] + ys += [pts[:, 1].min(), pts[:, 1].max()] + for b in P.boxes: + xs += [b[0], b[2]]; ys += [b[1], b[3]] + if dash_seg: + xs += [dash_seg[0][0], dash_seg[1][0]]; ys += [dash_seg[0][1], dash_seg[1][1]] + xs = xs or [-1.0, 1.0]; ys = ys or [0.0, 1.0] + m = 0.30 + xr = max(abs(min(xs) - m), abs(max(xs) + m)) + xmin, xmax = -xr, xr # symmetric frame about the diagram axis + ymin, ymax = min(ys) - m, max(ys) + m + if ext_nodes: + ymax = max(ymax, Y_EXT + 0.60) + + # ---- figure ------------------------------------------------------------ + LM = RM = 0.14 + TM = 0.52 if title else 0.14 + BM = 0.62 if legend else 0.14 + figw = (xmax - xmin) * UNIT + LM + RM + figh = (ymax - ymin) * UNIT + TM + BM + + need = 0.6 + if title: + need = max(need, text_size(title, FS_TITLE)[0] * UNIT + 0.4) + if legend: + need = max(need, 6.1) + if figw < need: # widen symmetrically + extra = (need - figw) / UNIT + xmin -= extra / 2; xmax += extra / 2 + figw = (xmax - xmin) * UNIT + LM + RM + + fig = plt.figure(figsize=(figw, figh), dpi=dpi) + ax = fig.add_axes([LM / figw, BM / figh, + (xmax - xmin) * UNIT / figw, (ymax - ymin) * UNIT / figh]) + ax.set_xlim(xmin, xmax); ax.set_ylim(ymin, ymax) + ax.axis("off") + + if ext_nodes: # projection boundary (no caption) + ax.axhline(Y_EXT, color="black", lw=0.6, ls=(0, (1, 4)), alpha=0.35, zorder=1) + + # amplitude bars + for n in tnodes: + ax.plot([n.apex_xs[0] - BAR_HALF, n.apex_xs[-1] + BAR_HALF], [n.y, n.y], + color="black", lw=4, solid_capstyle="butt", zorder=5) + + # interaction + if dash_seg: + ax.plot([dash_seg[0][0], dash_seg[1][0]], [dash_seg[0][1], dash_seg[1][1]], + color=INT, lw=1.6, ls=(0, (6, 4)), zorder=2) + for hv in hvs: + ax.plot([hv.x], [hv.y], "o", color=INT, ms=11, zorder=6) + if xmark is not None: # one-body vertex: ---x + ax.plot([xmark[0]], [xmark[1]], marker="x", color=INT, ms=13, mew=2.6, + zorder=6, ls="none") + + # fermion lines + arrows + for L in lines: + g = geo[id(L)] + pts = g["pts"] + ax.plot(pts[:, 0], pts[:, 1], color=g["color"], lw=1.8, zorder=3, + solid_capstyle="round") + p, t = path_at(pts, 0.5) + ax.annotate("", xy=p + t * 0.28, xytext=p - t * 0.28, + arrowprops=dict(arrowstyle="-|>", color=g["color"], lw=0, + mutation_scale=22), zorder=6) + + # labels + for x, y, s, col, fs, ha, va, style in texts: + if style in ("anno", "anno_int"): + ax.text(x, y, s, ha=ha, va=va, fontsize=fs, color=col, zorder=9, + bbox=dict(boxstyle="round,pad=0.16", fc="#fff7d6", ec=col, + alpha=0.96)) + elif style == "t": + ax.text(x, y, s, ha=ha, va=va, fontsize=fs, color=col, + fontweight="bold", zorder=9) + elif style == "hv": + ax.text(x, y, s, ha=ha, va=va, fontsize=fs, color=col, + fontweight="bold", zorder=9) + else: + ax.text(x, y, s, ha=ha, va=va, fontsize=fs, color=col, zorder=8, + bbox=dict(boxstyle="round,pad=0.10", fc="white", ec="none", + alpha=0.80)) + + if legend: + if len(hvs) == 2: + ilab = "two-body vertex" + (" ($K$)" if opts.aux else "") + ihandle = Line2D([0], [0], color=INT, lw=1.6, ls="--") + else: + ilab = "one-body vertex ($-\\!-\\!\\times$)" + ihandle = Line2D([0], [0], color=INT, lw=1.6, ls="--") + leg = [Line2D([0], [0], color=PART, lw=2, label="particle line (up)"), + Line2D([0], [0], color=HOLE, lw=2, label="hole line (down)"), + (ihandle, ilab)] + fig.legend(handles=[leg[0], leg[1], leg[2][0]], + labels=[leg[0].get_label(), leg[1].get_label(), leg[2][1]], + loc="lower center", ncol=3, frameon=False, fontsize=FS_LEG, + bbox_to_anchor=(0.5, 0.004)) + if title: + ax.set_title(f"{title} (coefficient {coeff})", fontsize=FS_TITLE, pad=8) + + out = os.path.expanduser(out) + fig.savefig(out, dpi=dpi) + plt.close(fig) + if verbose: + print("saved:", out) + return out + + +# ---------------------------------------------------------------------------- +# demo: R2 terms from pao-ccsd-df.md +# ---------------------------------------------------------------------------- + +TERM43 = ("Ŝ{i_1,i_2;a_1,a_2}:N-C-S * g{i_3;μ̃_1;Κ_1}:N-C-S * " + "C{μ̃_1;a_3}:N-C-S * g{i_4;μ̃_2;Κ_1}:N-C-S * C{μ̃_2;a_4}:N-C-S * " + "s{μ̃_3;μ̃_4}:N-C-S * C{a_1;μ̃_3}:N-C-S * C{μ̃_4;a_5}:N-C-S * " + "s{μ̃_5;μ̃_6}:N-C-S * C{a_2;μ̃_5}:N-C-S * C{μ̃_6;a_6}:N-C-S * " + "t{a_3;i_1}:N-C-S * t{a_4;i_2}:N-C-S * t{a_5;i_3}:N-C-S * " + "t{a_6;i_4}:N-C-S") + +# R2 term 30: (oo|oo) interaction — both half-vertices carry two HOLE legs; +# both external particles reach the amplitudes only through CsC bridges. +TERM30 = ("((Ŝ{i_1,i_2;a_1,a_2}:N-C-S * ((s{μ̃_1;μ̃_2}:N-C-S * " + "(C{μ̃_2;a_3}:N-C-S * t{a_3;i_3}:N-C-S)) * " + "C{a_1;μ̃_1}:N-C-S)) * (g{i_3;i_1;Κ_1}:N-C-S * " + "g{i_4;i_2;Κ_1}:N-C-S)) * ((s{μ̃_3;μ̃_4}:N-C-S * (C{μ̃_4;a_4}:N-C-S * " + "t{a_4;i_4}:N-C-S)) * C{a_2;μ̃_3}:N-C-S)") + +# R2 term 49: (vv|vv) interaction + one T2 — each half-vertex has particle-in +# (from the T2, via C) and particle-out (external, via C); the T2 also carries +# both external hole lines directly. +TERM49 = ("(Ŝ{i_1,i_2;a_1,a_2}:N-C-S * (((g{μ̃_1;μ̃_2;Κ_1}:N-C-S * " + "C{a_1;μ̃_1}:N-C-S) * C{μ̃_2;a_3}:N-C-S) * " + "((g{μ̃_3;μ̃_4;Κ_1}:N-C-S * C{a_2;μ̃_3}:N-C-S) * " + "C{μ̃_4;a_4}:N-C-S))) * t{a_3,a_4;i_1,i_2}:N-C-S") + + +def _cli(): + ap = argparse.ArgumentParser( + description="render CSV-CC Goldstone diagram(s) from SeQuant term string(s)", + epilog="the term may be given inline, with --file, or on stdin; markdown " + "list numbering and backticks are stripped automatically") + ap.add_argument("term", nargs="?", help="SeQuant term string ('-' = read stdin)") + ap.add_argument("out", nargs="?", default="diagram.png", + help="output PNG (or output DIRECTORY when --file holds many terms)") + ap.add_argument("--file", metavar="PATH", + help="read the term(s) from a file ('-' = stdin); every line " + "holding a tensor expression is rendered") + ap.add_argument("--title", default=None) + ap.add_argument("--no-csv", action="store_true", + help="canonical CC skeleton: drop C/CsC/s, domains and K") + ap.add_argument("--no-dom", action="store_true", help="drop domain superscripts only") + ap.add_argument("--no-aux", action="store_true", help="drop the K / g_L,g_R tags only") + ap.add_argument("--no-legend", action="store_true") + args = ap.parse_args() + kw = dict(show_csv=not args.no_csv, + show_dom=False if args.no_dom else None, + show_aux=False if args.no_aux else None, + legend=not args.no_legend) + + src = args.file or ("-" if args.term == "-" else None) + if src is not None: # file / stdin: 1..N terms + # with --file the single positional is the OUTPUT ("--file in.txt out.png") + out = args.out if (args.out != "diagram.png" or not args.file) else \ + (args.term or args.out) + text = sys.stdin.read() if src == "-" else open(src, encoding="utf-8").read() + terms = [ln for ln in text.splitlines() if "{" in ln and "}" in ln] + if not terms: + ap.error(f"no tensor expression found in {src}") + if len(terms) == 1: + draw(terms[0], title=args.title, out=out, **kw) + else: + outdir = out if (out.endswith("/") or "." not in os.path.basename(out)) \ + else (os.path.dirname(out) or ".") + os.makedirs(outdir, exist_ok=True) + print(f"{len(terms)} terms -> {outdir}/") + for k, t in enumerate(terms, 1): + draw(t, title=(args.title or "term") + f" {k}", verbose=False, + out=os.path.join(outdir, f"term{k:03d}.png"), **kw) + elif args.term: + draw(args.term, title=args.title, out=args.out, **kw) + else: + print("no term given — drawing the three built-in demo terms here:") + for nm, tm, ti in (("term43", TERM43, r"CSV-CCSD $R_2$ term 43"), + ("term30", TERM30, r"CSV-CCSD $R_2$ term 30 (oo|oo)"), + ("term49", TERM49, r"CSV-CCSD $R_2$ term 49 (vv|vv)")): + draw(tm, title=ti, out=f"csv_ccsd_{nm}.png", verbose=False, **kw) + + +if __name__ == "__main__": + _cli() diff --git a/utilities/diagram_gen/examples/ccsd_E3_fock_bubble.png b/utilities/diagram_gen/examples/ccsd_E3_fock_bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0115b811ebd9df71264c52c15d0c76b4191c9b GIT binary patch literal 44742 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ĎtRPT)OaVp&LIdIEbI5k7+KP{kbGrQ+D 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 KWa0^(8~+agwIh!J literal 0 HcmV?d00001 diff --git a/utilities/diagram_gen/examples/ccsd_R2t30_oooo_csc_bridge.png b/utilities/diagram_gen/examples/ccsd_R2t30_oooo_csc_bridge.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c988ee02f9355ca8e04f71d5ec0a141c443b03 GIT binary patch literal 81260 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 P2qG&be>?N0?(6>rWo=-| literal 0 HcmV?d00001 diff --git a/utilities/diagram_gen/examples/ccsd_R2t49_canonical.png b/utilities/diagram_gen/examples/ccsd_R2t49_canonical.png new file mode 100644 index 0000000000000000000000000000000000000000..f584c20f1f55f60844e558b7736629c5a912d900 GIT binary patch literal 75118 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�}AhRN%&_%NZ@PrAdJ+_ds8M>JhUD$;^ z_`1AmkQki@Y^Ct`p@;7&d*B+1(VHV=7M7NC(6Y?AM4N6*7)xZF%r)7=*um$#%@Wmg z503vBC`{=PolX?GI}e?piU!uM9b@qt^0!j!SP2%q$>6vUUYFAv~Mo<+{dZ8H#@Mu^d@SYB^~i; zP@?466lc=JwVGwH?iR~9tf6kcv-gOAvv&^?#!DAp$s0mnzr;rd^Yb)m9?Ey)6FGe zxUMdk?z|FsFN!PVIH3qWML_pGY|k$^`&#eJHJAd_6%Ia{h0kNtzqpND`T1lo zeT=>^_pBke;_!tXSMB}9dy}q9-&WNy zFp+=hN_-BT`$lQbN!BsZilNMmi*}zHyXzeesH)-7vI>X1Tkn6Bn|c24`X}>~`1Rh| zhj2A`>WsZze-1U5o6)BvWhz*_P(FoQ{T4h|48r#!-Ut}k{f=sysI?!c3aw-mZh>Il ziW{-m>+$YaKM#CM5-<5#dII4p0_RiW5KzdEBSyRA1vK!vHIR15sp($Qod>vYQ{l~B z*Wi6;emMRxfhGxGVa!YkmiKSnF8O?g4dwuZt6}pyiUV@l$B*Ssm!AVd$)^nb5w^s} zL9_H?V{SCp?;m)vm+{O0U2-ngXCP!Vm+*Q#WP?`t`cUJ75#7;)2S3_#Bxihn`DHw$ zzDRFn-v~Hnq@`;*tGa4%aI7?8S+VAmQ#k{^YZD>S9sAPH zqxW5{<$S6rtG;Sl`+P?QdUW9}N_O|%^gkD!krKcD^Y^bRK~{_%`XDzg*)kcuDow->gnyHAH;g+CAMd8(76Y$Usf<34B@V1leK$WiZGvPVvDcvAzzh{yuxC7WA@ zbVtX4kHzK^HO_;7*PilguP~~zenX{p+Zy%*QSLZX3p6%m_TBxW4&{P$^$d51P`o<{ zTUL_O)v}-K;^YGB2Sy3;U&qa35Uo|Fwxx$MSco9#zeZyb-1rD%K z6;@Y*g;Y~0@8nM$mCtkRtO0rXXn`ScSAcKD6`_v~VcJzY_g{(wAMi3X?A>+;AR71Y zL)E?Y6$Q?t>g_S@PEEg5D$xfJjwlN&yLxY3>rFSu2ZoXLap%Lau@!=>%&xbcRiNG- zO3NUrT+n&;sqc%3pLln4rp^4|XN)}rQjk~mU?PsTfnJob2k-;q47+z07Ps zQGAitb8C;e_J6g4j&;oIS4WX-~R|zyf3K9RX`9$Fkc%K{zK$W+IBz|Wc3*K{Qrp>n*Bw?OF zq1)-Oq=M1u#yb8b!|nK%+PxN-m0hQyeg|->kn{x_hL`FLUvDN&$`kQ^yY;}9x$a*0 z6G!Ae)9)oa#T2Ws`+)iQhAOfUfr3=S45V|Kk}FjFgU}P{DO3xp<+ejM>omMwZiej~ zV^CHOb*gqw*zz^Z^izcldutiI1%JkjO+pe^3keMNGn`kW(?-mPyht8G(=faHH*-Dk zaEB=l7zIcBo$5PUrS^88`EyC&i!ccJUp>UZLyeN0n!KRylT}+ARk(_~)cPZuLDYF- zvO2k@Z)3X~ETj(&TKdbajBPkj%E~3s;0eAhu#)|EU0g?$=kI8@GrK&Cx=U;S;|xn$ zfFtjY1IwNe+gm51CL0xB9Q?(pwrq0Py2()gjN-Qd^o3~rGz9G!k2ccS*M|>(T6_8$ z?PMWR978BiObJ}+BcSH4)1GNs1KZdo)b?T$rG3@jt>QxwZpkdKLCIwM0N76vyXxYR zJC4?JnCgdc^zo{Ke^=bDbO{zOds{L^u`CYX)*zq)E-PkayG;vfVx<^~@Mq}+@S5Gh zdNMV)v}+a;Pd74f|6G>T&c8m>;o~EO-~u+`MIIKVpdAfzLe}$rsODRr2OupUs7=M( zPa7DT<_wFZzhnD5>LUot%5&;}ZW=~gI|>cz+OAsSt*3^|PUQz1*lheJKmTi~^40=R z)(no9xi(yz=XdKCX|&E|?Mm*nc6O735yL!f`dcOUWP_DY9jdlywK)gImGVy8=YSK^ zQ-^6?H1Y16H3kpd0(EJq?YK3d>fgDeCCVUPDSVn)@$0^NdR6jp?lXPa(r=aIx6ebF zsNJBtg{#)w8{dh=$Y}OU>HVRxk-VPUgP7|;n72MsQig+cX zE#-G!4~KJDF6!J$L&&cQzN)Mn-+k_YHGeF{R1g&X^+O2t;(1-dPIt`*(xw75(o-h; z$Li(psa2moV@*+z+e6N$qEn}Q=8lt=^zC08%~wBm1RUonRQYuwn4N@eX8jw30qt+&~(3Jvp-l4!M}4bY3A2{aZadX z37cvQj&`ne=>vy4-(!VwKMERY`Ael*WO43UdqT-VfiP&?jZPL1njhP;M;N3!;@&?I z%ob+a7U*8;TgmmT?mc#DYN<6$Gcvxv2xrIx9_Y1xKm2BUPo6y`-~AdFMjsy3%$Si|^EueaUkD#ftITe1D{ux*#`5yx)U$ zga=mvkj(OP;2Q5G^0O=smc6kAJa!Kp=3ws|kCz<`z1^F?H<_Zc(#fFYB_pq6F|FEg zXU;HN0FwdPVyiFZ7;I!T)TE$ zk;7aFE;-uE;TR8@++xb^cz+oTE#^9K!plV$BF764%eAzW-2Lzb&h@LM2u-mZ=bamC z!cpsay<*(7-|?8dJ{5_?t*g@2R9Vbrq#KO-P$|$<)ovSF7@r9g@88)yLft%WhJ&$5 zWWX@lNUbwdGo2L#Gnf-;A(y^LLi8%9oH?7j!)j0Vt9{Z#F*^~a?XVy3BE_uVsJ3$? zd)>WdIcXm0f-9sFSSZkJ|MfcTCVVQ2*+yn{x~-2u+oo<{b88BHU|j3maOAb1$uXwwuJYF*OQ|@L&UC-`9&@;A zcrmh&zcLxt)OdfZ;l`_%MFJSX2Y1x#r;Bgj{xtVl(W%MJYcmI0FCss%qslaTU1}!5 z=4VYHhntqu#oM0bVez+%@qR5-^ap0WbHlkJQDk57N!EPfg9!^;PgBr>_(hjCC-n9-Fi!19Kd2O6r>1JE` z6^B_7>XTdXdqva5Gri9GG|_fv_p2qHypzA}^ZXWUBbt;NnpE1>Pnr*&cAxsKCSI#S z!Df9eTwDAWZ*@Fmq3`RxkGMA`UwN)kg}8EMwqOSLMh&$KeqUIm)h571poAOMAq198 zq@IYEtqfTQUDE;7RA0N8G?90Bcyd+f@%Ksn`Bzuzg$!wl$9Sjgj;{d*8wfW;F0zh= z4zDNRXYNJ2k8XC!8@T{>=3Co|8$69PTL~|)bxL?cp@@3zuFb-BCkF~;#1-{KgO@~b zF{A)FdlbN+YJE$7G!bGKx9UssDD}i%Sfrg29V)Q)W8XGdeHK)`HZaV2?i~VT;p2dP>e_Yj4Y8fi6?%I{v1XELtnib0><*#c{P zY%`p2yP_({j>O+u%h%C1D3)BL1-oWN44DwRmW8qeH+qlTpNp=XGuB$@NJ3~j1SPMa zJ{Z!{faoGf-YX2=EOP98JL|q3j#ia|=BLG^DcfLW@dEnYoq#p5{RK5!KdVHF`l^&n z^oCOZ+Ds@ntKqng+6xhrV+2vbL}t+Ds1AeIJ@?N=!M({EC1w4fgYD-W;+p_MM!&M- za3(roRg=@goaId8Dm62W@Yh!~UfkUUQ}j8_!om=O87OBF1Ow?5-7HlaO`r$2G&Ie{ zU6_Pm?H#mP{T73rpI#d8mzz!Hk^96ReEbkL1F+Wo^T2~dLlCY66lF5=0*vX=Wv10i zS>t;ueyz;B$jx)50$%eB)i(b%r3|-eRl8>^5OsX{kevV7z6v4y8T2LSRAq{r-@{9d zPEGw%8|9!X&u-Q#sZ4te0%amFM9wFXZe?NdncvyW9P9y<0@DLFeMPDGUJuZeUUek4+#`6n`yK>M*J9}pd0Pg zlcs`yWwoGeSP067eU6Vnv`m}y-=0egTIVU{gnx)&C-#YB0>7Jc)ShW}}q z47Dd&y*&t3&gZr0nDOHBNI+n-Uc-ogkgf#U!8`yA2Y4Lu(>l=ZmwlNHAZJU=#+fa&W!z2t_+h<&ywa(a^HR zhjgkz)2;w&n>EZQ);TrURwo|h^K4wWlLqcK%nhxPjhlmmC2VkIMxM*K2)WIbwxlI? z;6l`(&=)2ed`X7o_wu`Q04%^cxYg{y=W>{t0N6y6dm&QtdJDsi5S>{RgV4tHc-6Am zq2>-Y<9|czEv?W1nfgvX^gX7lIFBhI0l~cg?lPafnDrFQ-Q9kbKHIOr3ivQVn;9*r zh!cu~0t!Wr3{L36O3+LBe*Cw8Hbj4jq?kd+`T=0Jvx_$AnV0EPJcnUNq*{QbAY(_> zNMV^uqbXS}O9Nm*Bv(+!gz2joM~DN$9vpW2Dw`B~g7J>+#5px?ea!{H_4`Hh==)mu zasVPz)}oxn5}OSrWZ90};DdJ{^#K`|AiZmr($UaZU+ zs=bn6+5S|#|96yA%gkUmpic#qKqe_0`IyC(r8y0oui7S^3r#Sf^2f*J4OmBkTerqT z;^|M~N!vhFY5wX)mD}vy{t7sGoe6m@OLfkc(mp&~q}yGD^sAuYZA=;AR#!@eE{LCB z)P*2E@5YuSVh&WKdoaz8h$)eN|3Ps-rA9n7G*@DOfB!NwgCY=DGNl>At}C zM9~K-HzUrSyDP~=&P49q-WJcj;x?5ySKHx9pB^D^=@COdX4vcVc%FjHG7D#dFwlJZ zNN29wmc2o~<7~kd33^Q0qcohZju%r?TwA$wwnYodG<)UQD|;}f^bc(1MgI2m6lhK8A%7tFqyNo$hYiwSJ0 zP%o;}w4A)|oi0Cwu~LIa!q}*<)U}@GCT0GiptMI@**GMEEE-wCA&vC$*vYND8}H1QC~>=9s-v!@#rH2zt3JE=gu!sFmdvZXKk|N;S5YPo>$j6q zlx9RL1t1?g%`M}0Q^(r|oIs}nx7#D-fx5nXzYuTP&u5a4T&g#%C6 z?od6U7P&uo-1*E65==oL`rGeqJd?pEET1ggn>nPtG`M*6vQ?-|5J4N|DUy!I6zpQ8 z6m=>_Nzik=tns#AVnO~MUbP~Tbd_8;#^=hn3~P;^?oa|vovesM&Na$J3n8y-67@`d z-&atiHISVQFs_QN%b#6fFVj70M1UEl1xW}o1gWYIgvXAUj?nO_*QB4PwBpUlxAq}I z`=uda>9;Ull1BAuGNM(Yg+SWlQa47LXu2lCm5?lZeue}7+d^>4c~T0TI%VvVevJ9s zxH`7)l3CaoPM$cOf|6LV zIzPr8-h|OnzHc{hr5_{p)R1>#cJD;1VG)3bgQ@-4}Fxs`Z? zw*1q$jhL<&&|9krP-Iso*GS%Ln{66>^Is-F66Cusbj&gb&v2+Pr=r0k;1)n3!%JL<3rNlWyDC!$7JI`eAUBMv*)$#_ud`nes(*Lhufuq z3~2ddq?nVMms2A9tOqZZ>CQZ?IQ&V=BkCxnkpfmEkq0YdCdjrWp0o^7Q?Be zq__g27kLP}J25M0Ti&BKYxab?GoHmvQx$hM@Be{4V!l89c8AAW51jMM_qV?$$%M}%swed=>SRAJsF2)bBKym{SX`Vlzq;<{KY8FznVoYDWK*V_WkSQ5-uaQy0w3cBq7yWD z>-(`dA~KZV>D719_4$8nD+Qp#|fEF7?6cwi=I2uD41Ch7Y}Odm&PwHC`r5#rRNef4Fxsh74$IsfT6 z_g$AV70(*^6D-{#OY*UCoR{4pHMa6@$RaGU_bN#4Bgnd*0gdA9Mz0lp%w}s<2M%qZ z9~`A1RlJ5rEp`T_)7m?CEceO{zRz{Ng;^c^{hZk9?HAO?hfEutEd^I>nI-I#2zY!0 z9HH7^{Nl%Iy$De;p@Q$`)T088@BcjW8Z4v=vXJ-p>%>YHWgRGGWE7wGVvgPpVfjFA zdgaUWM=WzVu2rjaFWfqjF}9+Esqscg{kr+H2mHu*#W^qlfemoRpIq=|$>{Z2c|`kq zBCs)6%FyHqGWbY!2GKDJ|DJC<8C*Mbe57<Nb;obHt7om{X_& zTW41^|JsiW1m-}A>obuGJJooY<4Po*-4Tn~S*=RP(3I*J1pJddnkN1gENej)F*v)0deQaVBC zW81K*0ELb&=cu8=I^JsncQT)TV`Jc*uKqER?BaVW8jNgu;t_(Ko^w%4x=chEQ&KcS z5s&iY5c@~(Qyh9~h4;XgDB!a!Otu|6MdAemJ<7ckV?9tjZCg~`Z5Evvy#SW0O9C`V zj%RDuCc39I0nD-GWvWhs5WdIprg9)|U9HL+FI9}bbo*H3IQF=J_w%_4>dkDb$eF_x zcNXORW>zY9a6KM$Zj@j1seNN=ZLNUm_Z}mMuG1BRG^_)gkoFF$)QOrAeurOMpZ;bPY zN;Rvl-+P;GOHn9uGiXLonl^DlK5YaunhiqQEGTxkXn5A7I6^}M8L)%LTx%W6#nxx- z{<4!M@@t}&L3tHpvglD$emVE|70j=qBhq$PsL)vY2t;HTM?}c<3!OIJ4<~!+1sX#U zTF$``uHZT&ICh+-q;%MGM{9Fk!ytdhRha9AGYt|-%yZbd*~(D5g71kZ4chLiaX9kW z#`_~ErmJ4*{s6bHuS_?5;`jwj03i~45}%~ePcx1|Qv?%Q#_hmhy2}FEd;5%FSwA)N z@{1!=!=?4bP#{*S7ce?>) zzU-Tp@qqX?ghGpPe41gSy0|pfR{Iu$^6ZKjLZvb*S7p&iDXr?6h-ojO(02=VqlowLiQzl6KRq;w5 zgOG-6b}bBeyyx+M_Vl7HW<{EjH+ye}TB)6{q;b&eXcJYX$3yu*X8R&M!fJJp5ocF+ z^UNB99xW|q9AU767A4hd-`IADdmn6#_C4R2lV~AY@j(`vL8PmHwuRifX(DvU^vla~ z{hYf$k&Eg^4lb{i>71%!NPk-d)@-i$e4(Pq>EZ_{SYXrC!=77s`c32D&7;z+$msR4 zTTY)|`cPCh*kRF`dv975U{1a>Xc7;o`xxeDNZeG9 zBQq8IyCdB-4f1*(uT?7(@dxj8ALaZ&G2D|(y??E*te}h*z$7KY{dTOs8?MjZUQsZx z-7#C!HrAemvt;o(G(>^luPY|;$ZqBoP43(a9rq~EHX8Imrem(>PUEnrN9o#7R<$Al zf3TjZToAu+*=?)eVhrv}Mi7wnXz6{#I_7SKJ`-l#H}AHHl%{~`LN?Nz(G38XMhCxE zJFN`2)0z2%sN|Qs{1f2iFlnK1a)iwEVuCUUt4PTlerfHD8lpLA+jD=_G?WpM`9N_A zujJuul6a}}&}#sb!C)qnzye?>JmEx?@ig*p&#ip=zZ=#Me0`C3 zyRfzc{B)`-;Qq1rG|o3eUN1REo`2!18-pdW1CD_B!cpXi+EXUERuGW&(j2#45r`}* z>e-ay1x(j48cSvR+o?~_vpl0`AjGsF;n-S8N`WKMTtUG)LD)TRSU#|tm3?D3&RA zp`o-!Nz-B5!5)h*QeWDcD4R4rPvc4S=yh-EGZ4p(orpt+wX}y!J05%DFn5Ci8{;&- z?6>+s7-UoWc_(x9`AvV(p2Zl8I}fo%QrX%XIM{y*E#D&fh3jsteBxJ&iSG-MnMh~(fv$8 zs`{5RRXxW?_O@C3w4(sYn_dk1x<}mz{_SEGPTEIoC~j9oCh3v0wtN&jm_MjvoVsA& z1p`g*A7L%Y_dkQhJOU8|n~a+pU>01$ftUTyLod7nM5GoQ-2nVnLlXysPh6Pf4;2g2 zljfj?3G7rv?vWG{)ANEiS|xlR!4_zKH1vqQc-yUP)t(lNBBrYhgcxw5!~RijfkBDo zbYIseG<|TD;hY4^u(~>u-3)c$)Dx3GeU!(5$7YP# zf?TW@A!T|rx5RfJd+nqWhUucu-20SnJ4QXN!Vh@=WXH-Wem{z2N$%LZTXV+^o}R(O zEF4AC;-~?i#^@Eud#%!{7Pn6uHj6IfcaVq%5)pE=u7t(gyB_o z!LZ>E!DeZ-zf2mQ`C;2yW%6`aR21pgD8hv|UF$aQ{S?1b)EG3~wtSktA4iz@~M9i#V>awA^D6!yM9gM*0aMO)JhsRYd3Sr9QNL&KkbS^TB$K4iNi~g z{Za!kcA4(&>feN%SbfKe)f*)B-W_jv3&zxZV6Y~0|6>S zMHE}LzAR~Ulc-hSpr!`=*8h&xE#TM}E)mA*hm|0m+}34fLd&=5_cN3`xNr@BdO z_{tBZmX_PaT9VLsT3skJY$!TuSfvl50ixnc@|o6Y6p030L7I~^f6#v<@C8F#`V{U7RLKA z2vp3Y1NxHsO1%Bf(5Fw?F5T%s$XWp&4~Jtavfyd=nCp#gS>xfX&s?pCe^=vRP9gwn zsJ!$=K8de-@Hn^8b~f($zEL*cY;;cHLDh~!&YG3Ls8ECU!u$!*>aTzMG-4|?usBqZ z)F}maFyJ`Aqic2YB0zcsM|&4v-1+MD9s)d(ONw4~XkPaLR535Qih0NN>?E2#u}k== zcH;dZ842eR$p`Vki;DWuN-Y?yO!(4}5%%v93`4i7@E?C#Y&^FOZ0U?}8aTNQ{Z2EL?%akVW{TlyKe znXd~hZUDieqC6X|R9MEUn((c5UNbiNt$1e^Ba9DX5-A_@@m`6~+I&MeH&?niV%%MJ zVt?$~V-fJ~;IZB=>KJzq6AS0;bzL<0{59uwkH^-^X>LpaAM7mK)Aj2$vX4IectYrv zuI6={L!7ID1=-*O5@{ip|FQwo&xC&OX`5WB`y$_+ykpNWnjgZfAi5d9XZ_H{Ax*U( zk8-HAUVG@!Pd!q2A)xt`$agV$>?*63=7U)-&(#Sgt2HJsn%l}Uc&)LYKj`5|?;_K0 z@=06kk^byXCgU=D4H_3_ibf1XF(% zJLg|Ps}mQp?s)|EtDH>#vhS5cDj<`A0$L&lDMt2(LQX#>T=gXv2^fCeXm?66@J?hs zcfc7^`i*$z+2i_?+x)&$_mX#i`^XWt4&Di7q`yOeG@A*_tS+A zBfSPNH0?rFclm-#-nkD&ii8!M+SBc)+ zy{dM%cgbM$UL`58lt>Y1d28f1y8M}}+RLwsm3SFNos-GXh}7%F@J@gBlua99zN)pv z(@UuN!5UCU$u@11fdtI~1511=LN6Wp2)7#7WugofPr? z`#rP!%nAnp!3F#fX*VJyJfNj1ALis~rdEojnc+h(#c%R=e$+qPN{^yuo%}2i3gPa1 zQ7^Wfn0K0nd7~AYbG5&<`{sF`Z0mk|`3L|CHK;x@OOKGIH&8G?7e-tcSB0a_ZRel1 zc&vcZH~>-PvMyFDx3~8VwO-5a?DWbZX1x%c=73x8NnMdv?h*5L`7wHX`%x7 z;2T<;_x`1xE4T*v5EffCzvi2JD*EJ;#dix9Bckv#sYed-X~Zn<4!NCK z_BzH{Z=WQ88hfnVx6oo^&d!lHHbtzYbfxtF?7d}JRbBT!y6r@mql=hKht@`K9Sd#yRg9C6>{ z9;+}0GSibc1vwCUK9`@=Edyua&UHJT_=ywbklrJ|o8CM>WyaQ5=P@=#ET8anffXQE zs%P+09##~@j(ispZ#|;E{-)Mu*dlmk^R2H#+2gK30Nz_1nh_AkA}X6tbhUqhQ$16Dv;}}}Qg(Q~OD+;-+hLtBA+Iqk%Hv8%C73fCp;?j_s zS)uK2U%5yXlimX7Yj4x6Z6gDN%bbU(Vk_nwSp2p0!%k|| zH?ik(Sn)3_=a#odthz4qV&2(-3&}iB>HwtU6XFgHfTgZWN&~jZaRFA9woGz>?jNMa zCu=y3dh&P_z`%00F-5x$f{OcFJl5dTew}X62p z@zJ0Rmx>XNQ)e_(*xJWPX%CBy{a2_-^e{r zKWgef@Z>(`6GGiqHc?KL|2fDv zxuAi)OC#TpH+CYO0utSWCWd5RH+Z4WzpZg&dHFh!J`8@aPTB+{DCwwohi}3NBcSdh zcJii$#dTGVy8Krc-$Px&$mY*RaQgeqaB5sa6e60nj$!mD!0rU3-d^Bs0b186tx*u5 zIz`AzKOyh2$ZZPPKneBe-Yossf)l_3A=q~1H2@b|l%q+qJukMe185I5J{9#QJvC=h zJe0{CLD@Ms90%&cEhs1YHg~g1k6sn?9$vITl|D*R`gVto^9uQIZ**yZm#!pXyos;g z?*SJn=#n$2@}>22NVt7D7c0iO6$&fNj)%75b#wFcD~0ovP>rAElCBn{`~e~N z8ds_BM6fm(EvGWQ>5>Aqt~RprOn&&HFwbsy_pnHt307e~h!p&a@e77U!XqEV=aV6$ z_Rq_U+*2jhA2r@fy&p3T*dIoZik4dTz?rLE8k=(4Lgxbcpcr`dn>Og9=VEpo5c)S} zgAZ&E^A_-V?dYg>4eCW5NSrgVpV$asEl5cC=M$$oXk@J(1CPTxe9P2pkFzBdOBjwQ z^O=a5Hk=k@)rB%yn=7_Hk2cFtz61|NR&qeoO@#c|MV*z&)S&QDJW8StkMvEjL2HvY z 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 E0g*jadjJ3c literal 0 HcmV?d00001 diff --git a/utilities/diagram_gen/examples/ccsdt_R1t1_with_T3.png b/utilities/diagram_gen/examples/ccsdt_R1t1_with_T3.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b94094ad799fa7e9be110fb8666e05cff0950d GIT binary patch literal 94462 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

1xW*K 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 ByVU>y literal 0 HcmV?d00001 diff --git a/utilities/diagram_gen/render_all.py b/utilities/diagram_gen/render_all.py new file mode 100644 index 0000000000..8a767a6fb9 --- /dev/null +++ b/utilities/diagram_gen/render_all.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +""" +render_all.py — batch-render every term of a SeQuant equation file (sections +E / R1 / R2 / R3 / R4 of pao-ccsd-df.md, pao-ccsdt-df.md, pao-ccsdtq-df.md, ...) +to a CSV-CC Goldstone diagram PNG using the csv_diagram renderer. + +Two variants (rule B0, skeleton invariance): + --variant csv (default) full CSV/DF overlay: domains, C/CsC boxes, K + --variant canonical plain CC Goldstone skeleton (no C/s, no K) + --variant both render both sets + + python3 render_all.py # CCSD, CSV overlay + python3 render_all.py --variant both + python3 render_all.py --src ../pao-ccsdt-df.md --only R3 + python3 render_all.py --src ../pao-ccsdtq-df.md --only R4:1,2,3 --outdir /tmp/q + +Outputs go to diagrams//
_term.png (zero-padded); the default +outdir is derived from the source file name and the variant. A manifest INDEX.md +is written summarizing successes/failures per section. +""" + +import argparse +import os +import re + +from csv_diagram import draw # parse_term is used internally by draw + +HERE = os.path.dirname(os.path.abspath(__file__)) + +# Default equation file: the CCSD one, wherever this script happens to live. +SRC_CANDIDATES = [ + os.path.join(HERE, "pao-ccsd-df.md"), # alongside the script + os.path.join(os.path.dirname(HERE), "pao-ccsd-df.md"), # one directory up +] +SRC = next((p for p in SRC_CANDIDATES if os.path.exists(p)), SRC_CANDIDATES[0]) + +# "## E — ...", "## R1 — ...", ... "## R4 — ..." (CCSD / CCSDT / CCSDTQ files) +SECTION_RE = re.compile(r"^##\s+(E|R\d+)\b") +TERM_RE = re.compile(r"^\s*(\d+)\.\s+`(.+?)`\s*$") + + +def extract_terms(path): + """Return {section_tag: [(num, expr), ...]} in file order.""" + with open(path, encoding="utf-8") as fh: + lines = fh.readlines() + + sections = {} + current = None + for line in lines: + stripped = line.rstrip("\n") + if stripped.startswith("## "): + m = SECTION_RE.match(stripped) + current = m.group(1) if m else None # Notation etc. -> no section + if current: + sections.setdefault(current, []) + continue + if current is None: + continue + m = TERM_RE.match(stripped) + if m: + sections[current].append((int(m.group(1)), m.group(2))) + return sections + + +def section_order(sections): + """E first, then R1, R2, R3, ... in numeric order.""" + return ([t for t in ("E",) if t in sections] + + sorted((t for t in sections if t != "E"), key=lambda t: int(t[1:]))) + + +def render_set(sections, outdir, show_csv, kind="CSV-CCSD"): + os.makedirs(outdir, exist_ok=True) + results = {} # tag -> list of (num, filename_or_None, error_or_None) + for tag in section_order(sections): + terms = sections.get(tag, []) + results[tag] = [] + for num, expr in terms: + fname = f"{tag}_term{num:02d}.png" + out = os.path.join(outdir, fname) + title = f"{kind} {tag} term {num}" + try: + draw(expr, title=title, out=out, verbose=False, show_csv=show_csv) + results[tag].append((num, fname, None)) + except Exception as exc: # noqa: BLE001 - want to keep going + msg = f"{type(exc).__name__}: {exc}" + results[tag].append((num, None, msg)) + print(f"FAILED {tag} term {num}: {msg}") + write_index(results, outdir, show_csv, kind) + return results + + +def write_index(results, outdir, show_csv, kind="CSV-CCSD"): + head = f"# {kind} diagram batch — INDEX" + if not show_csv: + head += " (canonical skeleton)" + lines = [head, ""] + grand_ok = grand_fail = 0 + for tag in section_order(results): + rows = results.get(tag, []) + ok = [r for r in rows if r[2] is None] + fail = [r for r in rows if r[2] is not None] + grand_ok += len(ok) + grand_fail += len(fail) + lines.append(f"## {tag} ({len(ok)} rendered / {len(fail)} failed of {len(rows)})") + lines.append("") + for num, fname, err in rows: + if err is None: + lines.append(f"- term {num}: `{fname}`") + else: + lines.append(f"- term {num}: FAILED: {err}") + lines.append("") + lines.insert(1, "") + lines.insert(2, f"**Totals:** {grand_ok} rendered / {grand_fail} failed " + f"(of {grand_ok + grand_fail} terms).") + with open(os.path.join(outdir, "INDEX.md"), "w", encoding="utf-8") as fh: + fh.write("\n".join(lines) + "\n") + print(f"{outdir}: {grand_ok} rendered / {grand_fail} failed") + + +def filter_sections(sections, only): + """only = 'R2' or 'R2:16' or 'R2:16,49'""" + tag, _, nums = only.partition(":") + keep = {int(n) for n in nums.split(",") if n} if nums else None + return {t: [(n, e) for n, e in v if keep is None or n in keep] + for t, v in sections.items() if t == tag} + + +def main(): + ap = argparse.ArgumentParser(description=__doc__.splitlines()[1]) + ap.add_argument("--src", default=SRC, help="SeQuant equation markdown file") + ap.add_argument("--variant", choices=("csv", "canonical", "both"), default="csv") + ap.add_argument("--outdir", default=None, + help="output directory (single-variant runs only)") + ap.add_argument("--only", default=None, + help="restrict to e.g. R2 or R2:16 or R2:16,49") + ap.add_argument("--kind", default=None, + help="title prefix (default: derived from --src)") + args = ap.parse_args() + + src = os.path.abspath(os.path.expanduser(args.src)) + if not os.path.exists(src): + ap.error("equation file not found: %s\nlooked for a default in:\n %s\n" + "pass one explicitly with --src " + % (src, "\n ".join(SRC_CANDIDATES))) + sections = extract_terms(src) + if args.only: + sections = filter_sections(sections, args.only) + + stem = os.path.splitext(os.path.basename(src))[0] # e.g. pao-ccsdt-df + theory = stem.replace("pao-", "").replace("-df", "").upper() # CCSDT + kind = args.kind or f"CSV-{theory}" + base = "ccsd_all" if stem == "pao-ccsd-df" else f"{theory.lower()}_all" + + out = {} + if args.variant in ("csv", "both"): + d = (args.outdir if (args.outdir and args.variant == "csv") + else os.path.join(HERE, base)) + out["csv"] = render_set(sections, d, True, kind) + if args.variant in ("canonical", "both"): + d = (args.outdir if (args.outdir and args.variant == "canonical") + else os.path.join(HERE, base + "_canonical")) + out["canonical"] = render_set(sections, d, False, theory) + return out + + +if __name__ == "__main__": + main() diff --git a/utilities/diagram_gen/sample_terms.txt b/utilities/diagram_gen/sample_terms.txt new file mode 100644 index 0000000000..0541ea0150 --- /dev/null +++ b/utilities/diagram_gen/sample_terms.txt @@ -0,0 +1,10 @@ +# One SeQuant term per line; '#' lines are ignored (no braces). +# Rendered with: python3 csv_diagram.py --file sample_terms.txt out/ +# CCSD E term 3 — T1 + Fock vertex (bubble) +2 (f{i_1;μ̃_1}:N-C-S * C{μ̃_1;a_1}:N-C-S) * t{a_1;i_1}:N-C-S +# CCSD R2 term 49 — (vv|vv) ladder + T2 +(Ŝ{i_1,i_2;a_1,a_2}:N-C-S * (((g{μ̃_1;μ̃_2;Κ_1}:N-C-S * C{a_1;μ̃_1}:N-C-S) * C{μ̃_2;a_3}:N-C-S) * ((g{μ̃_3;μ̃_4;Κ_1}:N-C-S * C{a_2;μ̃_3}:N-C-S) * C{μ̃_4;a_4}:N-C-S))) * t{a_3,a_4;i_1,i_2}:N-C-S +# CCSD R2 term 30 — (oo|oo) + two T1 via CsC bridge +((Ŝ{i_1,i_2;a_1,a_2}:N-C-S * ((s{μ̃_1;μ̃_2}:N-C-S * (C{μ̃_2;a_3}:N-C-S * t{a_3;i_3}:N-C-S)) * C{a_1;μ̃_1}:N-C-S)) * (g{i_3;i_1;Κ_1}:N-C-S * g{i_4;i_2;Κ_1}:N-C-S)) * ((s{μ̃_3;μ̃_4}:N-C-S * (C{μ̃_4;a_4}:N-C-S * t{a_4;i_4}:N-C-S)) * C{a_2;μ̃_3}:N-C-S) +# CCSDT R1 term 1 — T3 amplitude +Ŝ{i_1;a_1}:N-C-S * ((((((g{i_2;μ̃_1;Κ_1}:N-C-S * C{μ̃_1;a_2}:N-C-S) * (g{i_3;μ̃_2;Κ_1}:N-C-S * C{μ̃_2;a_3}:N-C-S)) * t{a_2,a_3,a_4;i_3,i_1,i_2}:N-C-S) * C{μ̃_3;a_4}:N-C-S) * s{μ̃_4;μ̃_3}:N-C-S) * C{a_1;μ̃_4}:N-C-S)