diff --git a/debug/demo.svg b/debug/demo.svg
new file mode 100644
index 000000000..a84ad617c
--- /dev/null
+++ b/debug/demo.svg
@@ -0,0 +1 @@
+
diff --git a/debug/mermaid.ipynb b/debug/mermaid.ipynb
new file mode 100644
index 000000000..dc8686ff6
--- /dev/null
+++ b/debug/mermaid.ipynb
@@ -0,0 +1,127 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "0979974d-ce8f-4ebb-8653-62335681e221",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pyfeyn2\n",
+ "from feynml import *\n",
+ "from pyfeyn2.render.js.mermaid import MermaidRender"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "3a08b0f2-2131-4811-8486-c0a03cecd126",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "graph LR;\n",
+ "Vertex9(vertex);\n",
+ "Vertex10(vertex);\n",
+ "Leg12(leg);\n",
+ "Leg13(leg);\n",
+ "Leg14(leg);\n",
+ "Leg15(leg);\n",
+ "Leg12 --> Vertex9;\n",
+ "Leg13 --> Vertex9;\n",
+ "Vertex10 --> Leg14;\n",
+ "Vertex10 --> Leg15;\n",
+ "Vertex9 --> Vertex10;\n",
+ "\n",
+ "graph: graph LR;\n",
+ "Vertex9(vertex);\n",
+ "Vertex10(vertex);\n",
+ "Leg12(leg);\n",
+ "Leg13(leg);\n",
+ "Leg14(leg);\n",
+ "Leg15(leg);\n",
+ "Leg12 --> Vertex9;\n",
+ "Leg13 --> Vertex9;\n",
+ "Vertex10 --> Leg14;\n",
+ "Vertex10 --> Leg15;\n",
+ "Vertex9 --> Vertex10;\n",
+ "\n",
+ "b64: Z3JhcGggTFI7ClZlcnRleDkodmVydGV4KTsKVmVydGV4MTAodmVydGV4KTsKTGVnMTIobGVnKTsKTGVnMTMobGVnKTsKTGVnMTQobGVnKTsKTGVnMTUobGVnKTsKTGVnMTIgLS0+IFZlcnRleDk7CkxlZzEzIC0tPiBWZXJ0ZXg5OwpWZXJ0ZXgxMCAtLT4gTGVnMTQ7ClZlcnRleDEwIC0tPiBMZWcxNTsKVmVydGV4OSAtLT4gVmVydGV4MTA7Cg==\n"
+ ]
+ },
+ {
+ "data": {
+ "image/svg+xml": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/svg+xml": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "fd = FeynmanDiagram().add(\n",
+ " v1 := Vertex(),\n",
+ " v2 := Vertex(),\n",
+ " Propagator(pdgid=23).connect(v1,v2),\n",
+ " Leg(pdgid=1,target=v1,sense='incoming'),\n",
+ " Leg(pdgid=-1,target=v1).with_incoming(),\n",
+ " Leg(pdgid=11,sense='outgoing').with_target(v2),\n",
+ " Leg(pdgid=-11).with_target(v2).with_outgoing(),\n",
+ ")\n",
+ "\n",
+ "\n",
+ "MermaidRender(fd).render(file=\"demo\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5060382d-34ca-4d23-862b-0deddc422fb0",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/pyfeyn2/render/js/mermaid.py b/pyfeyn2/render/js/mermaid.py
index 9193ed5b1..0fb60de70 100644
--- a/pyfeyn2/render/js/mermaid.py
+++ b/pyfeyn2/render/js/mermaid.py
@@ -2,7 +2,7 @@
from typing import List
import requests
-from IPython.display import Image, display
+from IPython.display import SVG, display
from pyfeyn2.render.render import Render
@@ -11,6 +11,8 @@ def mm(graph):
graphbytes = graph.encode("utf8")
base64_bytes = base64.b64encode(graphbytes)
base64_string = base64_bytes.decode("ascii")
+ # print("graph: ", graph)
+ # print("b64: ", base64_string)
r = requests.get("https://mermaid.ink/svg/" + base64_string)
return r.content
@@ -24,9 +26,15 @@ def feynman_to_mm(fd):
for l in fd.legs:
src += f"{l.id}(leg);\n"
for l in fd.legs:
- src += f"{l.id} --> {l.target};\n"
+ if l.is_incoming():
+ src += f"{l.id} --> {l.target};\n"
+ elif l.is_outgoing():
+ src += f"{l.target} --> {l.id};\n"
+ else:
+ raise Exception("Unknown leg sense. Should be either incoming or outgoing.")
for p in fd.propagators:
src += f"{p.source} --> {p.target};\n"
+ # print(src)
return src
@@ -37,7 +45,8 @@ def __init__(
*args,
**kwargs,
):
- super().__init__(self, fd)
+ super().__init__(fd)
+ self.set_feynman_diagram(fd)
def render(
self,
@@ -48,7 +57,7 @@ def render(
if file:
with open(file + ".svg", "wb") as f:
f.write(svg)
- img = Image(data=svg)
+ img = SVG(data=svg)
if show:
display(img)
return img