feynml is hosted by Hepforge, IPPP Durham

FeynML home page

FeynML is a project to develop an XML dialect for describing Feynman diagrams as used in quantum field theory calculations. The primary aim is to unambiguously describe the structure of a diagram in XML, giving a de facto representation for diagram structure which can be easily translated into another representation. Forseeable uses include:

  • To be used as an input format for pyfeyn
  • Output format for e.g. FeynArts or qgraf (draft style for qgraf)
  • XSLT translation to axodraw or feynmf input (draft stylesheet for feynmf)
  • Integration with MathML for labelling or specifying algebraic contributions of each part

Why XML?

Okay, XML is a bit of a buzzword. Not everything is best-represented as XML. However, it does have several benefits: it is simple to read and write, both for humans and computers; there are a variety of technologies available for parsing, styling and transforming XML (see e.g. SAX, DOM, CSS, XSLT) and its heirarchical structure maps fairly well into describing graphs. The variety of technologies aspect is probably the most important.

What do we propose?

The aim should be that the core XML is very semantic: diagrams simultaneously represent a graph structure, a mathematical relationship and a pictorial representation. The XML structure should reflect the graph structure, with algebraic and presentation information being supplementary. An obvious way to achieve this would be with CSS styles for the presentation and (perhaps) XPath references to MathML elements.

Here's a demo of what we think it might look like:


<?xml version="1.0"?>
<feynml>
 <head>
   <meta name="creator" value="PyFeyn"/>
   <description>
   A sample diagram showing a QCD correction to the Drell-Yan process.
   </description>
 </head>
 <diagram legs="4">
   <label id="L0" text="Drell-Yan QCD vertex correction" x="0" y="2"/>
   <vertex id="V0" x="-2.0" y="0.0"/>
   <vertex id="V1" x="2.0" y="0.0"/>
   <leg id="E0" type="fermion" sense="incoming" target="V0" x="-4.0" y="2.0"
      label="\Pelectron" style="arrow-pos:0.53;"/>
   <leg id="E1" type="fermion" sense="outgoing" target="V0" x="-4.0" y="-2.0"
      label="\Ppositron" style="arrow-pos:0.53; parallel-arrow-displace:-0.06; parallel-arrow-sense:-1;"/>
   <propagator id="P2" type="photon" source="V0" target="V1" label="\Pphoton/\PZ"/>
   <vertex id="V5" x="3.0" y="-1.0"/>
   <propagator id="P4" type="fermion" source="V5" target="V1"/>
   <vertex id="V6" x="3.0" y="1.0"/>
   <propagator id="P5" type="fermion" source="V1" target="V6"/>
   <propagator id="P7" type="gluon" source="V5" target="V6" bend="0.5"
      label="\Pgluon" style="parallel-arrow-displace:0.2;"/>
   <leg id="E2" type="fermion" sense="incoming" target="V5" x="4.0" y="-2.0"
      label="\APquark" style="arrow-pos:0.53; parallel-arrow-displace:-0.06; parallel-arrow-sense:-1;"/>
   <leg id="E3" type="fermion" sense="outgoing" target="V6" x="4.0" y="2.0"
      label="\Pquark" style="arrow-pos:0.53;"/>
 </diagram>
</feynml>


which would encode the following diagram:

What's the status and plan?

FeynML is currently still in the draft stages. The proposed draft schema can be found here. Files conforming to this schema can be used as input to pyfeyn (e.g. via the mkfeyndiag script, which was used to create the diagram seen above). Diagrams drawn with pyfeyn can also be written out as FeynML. As the pyfeyn developer, my main motivation is to make a graphical description possible without programming, but I'm aware that a great deal would be possible via the MathML side: anyone who's interested in that aspect should definitely contact me!

FeynML is managed by Georg von Hippel and Andy Buckley