Skip to content

Guides & reference

Maths, science and academic engines

Reference for KaTeX, logic, economics, physics, chemistry, biology, causal DAG, PRISMA, stratigraphy, linguistics, music and chess engines.
Sculptural study of connected forms and structured ideas

This page is the reference for the flowss engines built for teaching, research and scholarship: typeset mathematics, digital logic and economics; physics, engineering and architecture; chemistry, biology and medicine; research methods such as causal diagrams and PRISMA flows; geology and archaeology; linguistics; music; and games. For each engine you get what it draws, a working example you can paste straight into the Studio, the syntax and options, what flowss works out or checks for you, its limits, and the messages you may see. Most of these engines are built into flowss and do more than draw: a pedigree tells you which inheritance modes survive, a causal DAG lists the variables to adjust for, a logic circuit derives its own truth table and a PRISMA flow proves that every record is accounted for. Charts and plotted formulas are covered in Charts and data-visualisation engines.

At a glance

EngineUse it forDrawnWhat flowss works out or checksReference
LaTeX (KaTeX)Typeset equationsIn your browserFormulas that will not render, bare % signs, x^10-style scripts, input LaTeX itself would rejectkatex
Digital logic (gates / K-map / truth table)Gate schematics, Karnaugh maps and truth tablesInside flowssThe truth table and boolean expression of every output, feedback, undriven outputs, constant outputs, incomplete maps and tableslogic
Economics diagramsSupply and demand, IS–LM, Phillips, PPF, Lorenz, payoff matricesInside flowssCurves with no slope, lines that never cross in the frame, a Lorenz curve that falls, missing payoff cellsecon
Free-body diagramForces and moments on bodiesInside flowssForces acting on undeclared bodies, zero-length forces, unloaded bodies, unknown coloursfreebody
Circuit schematicTextbook schematicsInside flowssParts with no symbol, parts no wire reaches, parts drawn on top of each othercircuit
Phase diagram (materials)Pressure–temperature and binary alloy diagramsInside flowssA critical point below the triple point, labels off the frame, a liquid label below the liquidus, missing melting pointsphase
Astronomy (orbital + HR)Orbital maps and Hertzsprung–Russell diagramsInside flowssImpossible distances, temperatures and luminosities, bodies sharing an orbit, stars off the axesastro
System dynamics (stock & flow)Stock-and-flow modelsInside flowssFlows and links whose ends name nothing, stocks that cannot changesysdynamics
Floor plan (2D), Floor plan (3D), Floor plan (3D WebGL)Architectural floor plans, printable axonometric views, an interactive 3D viewInside flowss (2D, 3D); in your browser (3D WebGL)Captions that would not fit, openings on no wall, unknown views, non-positive wall heightsfloorplan, floorplan3d, floorplan3d-edit
3D Molecules (3Dmol)Proteins from the PDB and small molecules in 3DIn your browserImpossible bond lengths, atom clashes, unknown elements, valence, atom counts, formulas that do not match the namemol3d
Phylogeny (Newick)Phylogenetic treesInside flowssDuplicate and unnamed tips, negative branch lengths, partly measured treesnewick
Genetics pedigreeClinical pedigreesInside flowssWhich of six inheritance modes survive, and who rules each one outpedigree
Anatomy / body systemsLabelled anatomy platesInside flowssLabels off the plate, labels on top of each other, unknown platesanatomy
Drug-interaction networkInteractions graded by severityInside flowssInteractions with undeclared drugs, ungraded or unknown severities, repeated pairsdrugnet
Causal DAGCausal diagrams for inferenceInside flowssCycles, backdoor paths, minimal adjustment sets, identifiability, mislabelled confounders and mediatorscausaldag
PRISMA 2020 flowSystematic-review flow diagramsInside flowssThat every stage balances, with the arithmetic printedprisma
FlowScriptTyped research models whose numbers propagateInside flowssCounts that do not add up, sourced numbersglyphscript
Stratigraphy / Harris matrixStratigraphic columns and Harris matricesInside flowssLayers out of age order, unconformities, cycles in the matrixstrat
Syntax tree (linguistics)Constituency and parse treesInside flowssDropped words, unclosed brackets, text after the treesyntaxtree
Music notationSingle-voice melodies on a staffInside flowssBars that do not add up to the time signaturemusic
Piano roll (MIDI)Melodies on a keyboard gridInside flowssUnreadable pitches, zero-length notes, notes past the grid, overlapspianoroll
Music chords (cycle of fifths)Cycle of fifths and chord progressionsInside flowssHighlighted chords not on the wheel, missing numeralschord
Chess (FEN)Board positionsInside flowssUnreadable FEN, impossible king counts, pawns on the back rank, impossible material, unsupported castling rightschess
Tournament bracketSingle-elimination bracketsInside flowssWinners who did not play, unknown entrants, loops, a team twice in one roundtournament
Raw SVGHand-written schematics and illustrationsIn your browserBroken tags, dangling references, duplicate ids, a missing namespace or viewBoxsvg

Every engine on this page is available on every plan, including Free, and the engines themselves are not metered. (Free does limit how many figures you keep, to three per studio.) FlowScript also opens in the Lab. Only the optional AI features (Explain & fix, automatic repair, Fix on a readiness finding, AI conversion and TikZ export) need AI: there is no AI on Free, your own AI key works from Starter, and hosted AI points start on Plus. See Plans and what they include.


Working with these engines

Opening an engine

  1. In the Studio, click Engines & templates at the top of the tool rail, or the engine name at the top of the code sheet. The library opens with its Engines and Templates tabs. (/ opens it on the Templates tab.)
  2. Search for the engine by name, by subject ("equation", "pedigree", "phylogeny", "circuit", "causal", "PRISMA", "chess") or by the tool you are replacing ("DAGitty", "FigTree", "PyMOL", "Logisim", "RSyntaxTree").
  3. Click the engine. Its starter (its first template) replaces the current figure's source. The switch is one undo step, so ⌘Z (Ctrl+Z on Windows and Linux) brings your source back. Start a New figure (⌥⌘N) first if you want to keep both.

You can also click Open in Studio on any engine's reference page (for FlowScript the button reads Open in Lab), or filter the template gallery by engine, for example /templates?engine=pedigree. In the Studio's engine library these engines are grouped as follows; see Choosing an engine.

Library groupEngines from this page
Research & analysisCausal DAG, PRISMA 2020 flow, Genetics pedigree, Free-body diagram, Phase diagram
Engineering & physicalCircuit schematic, Floor plan (2D), Floor plan (3D), Drug-interaction network, Syntax tree, Stratigraphy
Domain-specific3D Molecules, Phylogeny, LaTeX (KaTeX), Anatomy, Music notation, Piano roll, Chess, Tournament bracket, Astronomy, Digital logic, System dynamics
Charts & dataMusic chords
MoreEconomics diagrams, FlowScript, Floor plan (3D WebGL), Raw SVG

Where the picture is drawn

GroupEngines on this pageWhat it means for you
Inside flowssEvery engine on this page except the four belowWorks offline. The source never leaves flowss. The render API can draw it on a server for thumbnails, embeds and automated reports
In your browserLaTeX (KaTeX), 3D Molecules (3Dmol), Floor plan (3D WebGL), Raw SVGWorks in the browser. The headless render API refuses these with the code needs-browser; use the Studio or an embed

3D Molecules also needs a connection when a document uses fetch:, because the structure is downloaded from the RCSB Protein Data Bank. None of the engines on this page uses an outside render service.

Size budgets

EnginesBudget (bytes of source)
Raw SVG500,000
PRISMA 2020 flow300,000 (the engine itself reads up to 20,000 characters)
Phylogeny (Newick), Piano roll (MIDI)150,000 (they grow with the data)
LaTeX (KaTeX), 3D Molecules, Floor plan (3D WebGL)100,000
Every other engine on this page60,000

A source over budget is not drawn, and the message reads "Source is … — past the … safe-rendering budget for … Rendering this in the browser would freeze the page." with options to split the figure, render it on the server (engines drawn inside flowss only) or trim it. Bytes are counted in UTF-8, so symbols such as β, ° and → count as two or three.

Checks, findings and readiness

Every engine on this page has a checker. Its findings appear in up to four places:

  • Inside the figure. Genetics pedigree, Causal DAG, Stratigraphy, Digital logic and PRISMA 2020 flow print a headline and their key findings under the drawing. Astronomy, Anatomy, Phase diagram and Floor plan print notices for anything they could not draw as written.
  • The readiness chip in the Studio's status panel. A figure whose checks fail cannot read as Sound. Open the chip's detail to see what is Blocking or Holding it at a level, and use Fix beside a single finding to hand it to the flowss Studio Agent.
  • Diagram Intelligence (⇧⌘X) adds metrics and insights for Causal DAG (backdoor paths, a sufficient adjustment set, over-adjustment risk), Digital logic (gates, depth, truth rows, minterms, floating inputs, constant outputs), Phylogeny (leaves, depth, distances, tree shape), Chess (pieces, material balance, exposed kings, centre occupancy and side to move) and FlowScript. See Flow-systems analysis in Studio.
  • The Render error box, when a figure cannot be drawn at all. Go to line jumps to the line it names, and Explain & fix hands the error to AI.

A checker that could not read part of a document never calls the result complete: it names the unread line, and "clean" verdicts wait until everything has been read.

Conventions shared by the native engines

  • Line-based. One statement per line. Blank lines are ignored.
  • Comments. A line starting with # or // is a comment. (Chess and Phylogeny use # lines for their own directives, as described below.)
  • Quotes. Put labels with spaces in double quotes, for example region "Supercritical fluid" at (0.85, 0.85).
  • Colours. Where an engine takes a color, it accepts the named colours listed with that engine or a hex colour such as #dc2626. Anything else falls back to the default colour, and the checker reports it where the engine has a colour check.
  • Coordinates. Each engine has its own coordinate system:
EngineCoordinates
Circuit schematic, Digital logicGrid cells, 60 pixels apart; x to the right, y downwards
Free-body diagramPixels; x to the right, y downwards, so vector 0,140 points down
Floor plan (all three)World units of your choosing, rescaled to fit; x to the right, y downwards
Anatomy / body systemsFractions of the plate, 0 to 1; (0, 0) is the top-left corner
Phase diagramFractions of the plot frame, 0 to 1; (0, 0) is the bottom-left corner
System dynamicsGrid positions; x to the right, y downwards

Other places in flowss for science

You needGo to
Illustrated scientific figures on an icon canvas, 2-D chemical structures from SMILES, reactions balanced and units checked as you drawThe Science studio; the verification model is explained in The Science studio in depth
Typed research models: CONSORT flows, cost-effectiveness planes, reporting standardsThe Lab and The FlowScript language
Systematic reviews from real papers, with PRISMA flows computed from screeningEvidence and Screening, extraction and synthesis
Journal-ready figures from a dataset, with statisticsFigure
A plotted formula or XY dataPlot
A LaTeX/TikZ version of any figure for a paperExport as TikZ / LaTeX (⌘L), an AI conversion described in Data, timeline, TikZ and the diagram tools
Learning material built around diagramsStudy

Mathematics and logic

LaTeX (KaTeX)

LaTeX (KaTeX) typesets mathematics: equations, derivations, matrices, aligned systems and commutative-style arrays, using KaTeX 0.17. Each formula is typeset in display style. Separate formulas with a blank line.

\int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}

\nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0}

\begin{aligned}
  (a+b)^2 &= a^2 + 2ab + b^2 \\
  (a-b)^2 &= a^2 - 2ab + b^2
\end{aligned}

How it works:

  • One formula per block. Blocks are separated by one or more blank lines. Lines within a block are joined, so a long formula can be spread over several lines, but must not contain a blank line. Use \\ inside aligned, gathered, cases or a matrix environment for line breaks within one formula.
  • Maths only. KaTeX typesets maths. It does not run full LaTeX documents, \usepackage, \documentclass or TikZ pictures. For a LaTeX picture of a diagram, use Export as TikZ / LaTeX.
  • Macros are local. A \newcommand or \def applies only within the block where it is written.
  • Errors stay visible. A formula KaTeX cannot read is shown in red in place of the formula, and the rest of the document still typesets.
  • The formulas are drawn at 20 pixels in the Studio, centred, up to 900 pixels wide.

What flowss checks (each formula is run through KaTeX itself, so the check cannot disagree with what you see):

FindingLevelMeaning
A formula does not renderErrorKaTeX's own message is quoted, with the formula number
A bare %Error% starts a comment and drops the rest of that line, including any closing brace; write \% for a percent sign
A multi-digit script such as x^10 or a_12ErrorA script takes one token unless braced, so x^10 is drawn as x¹0; write x^{10}
A formula KaTeX accepts but LaTeX would notWarningKaTeX's strict-mode code and message are quoted
Tip: Use Export PNG or Export PDF for KaTeX. Equations are typeset as HTML rather than SVG, so Export SVG either refuses with "This engine doesn't render to SVG. Try PNG or PDF — both work for any engine." or, when a formula contains a stretchy symbol such as a square root, captures only that one symbol. Copy diagram as PNG works; Copy diagram as SVG has the same limitation as SVG export.

Digital logic (gates / K-map / truth table)

Digital logic covers the undergraduate digital-logic curriculum in one engine with three modes, chosen with type. In every mode flowss evaluates what you drew: a gate diagram gets its truth table and the boolean expression of each output in your own signal names, and a Karnaugh map or truth table is checked for completeness.

Gate schematics (type gates):

title "Half adder"
type gates
input A at (0,0)
input B at (0,2)
gate XOR G1 at (3,0.5)
gate AND G2 at (3,2.5)
output S at (6,0.5)
output C at (6,2.5)
wire A G1
wire B G1
wire A G2
wire B G2
wire G1 S
wire G2 C
StatementMeaning
type gatesGate-schematic mode
input ID at (X,Y)An input signal
output ID at (X,Y)An output signal
gate KIND ID at (X,Y)A gate. KIND is AND, OR, NOT, NAND, NOR, XOR, XNOR or BUF
wire FROM TOA connection from one id to another

Positions are in grid cells and may be decimals, such as (3,0.5). The figure prints a headline such as "Evaluated: 2 inputs, 2 outputs, 4 rows.", up to four problems and up to three derived expressions. A circuit with feedback (a latch, for example) has no single truth table; flowss names the loop and withholds the table rather than evaluating it in an arbitrary order.

Karnaugh maps (type kmap, up to four variables):

title "Y = A xor B"
type kmap
vars A B
cells 00=0 01=1 10=1 11=0

vars names the variables. cells lists cells as KEY=VALUE, where the key is the input combination in bits (such as 01) or the cell's index (such as 1), and the value is 0, 1 or X (don't care). You can spread cells over several cells lines. Rows and columns are Gray-coded and 1-cells are highlighted.

Truth tables (type truthtable):

title "Majority of three"
type truthtable
inputs A B C
output Y
row 0 0 0 -> 0
row 0 0 1 -> 0
row 0 1 0 -> 0
row 0 1 1 -> 1
row 1 0 0 -> 0
row 1 0 1 -> 1
row 1 1 0 -> 1
row 1 1 1 -> 1

A complete table is drawn with output-coloured cells and its sum-of-products expression, here "Y = ¬A · B · C + A · ¬B · C + A · B · ¬C + A · B · C". Each row lists the input bits, then -> and the output bit.

Note: Write type truthtable before the output line. Until the type is known, output Y without a position is not read as the table's output.

What flowss checks:

ModeFindings
GatesAn output driven by two gates (error); an output nothing drives, a gate with nothing on its inputs, a gate with the wrong number of inputs (a NOT with two, an AND with one), a gate whose output goes nowhere, an input that is itself driven, an output that is the same in every row, two outputs computing the same function, an input no output depends on, an id that appears only in a wire, an id declared twice (warnings); feedback, an unwired input and a repeated wire (notes)
K-mapNo vars line (unchecked gap); more than four variables (the extras are on neither axis), cells with no value (drawn blank, which reads as zero), cells that cannot be read or placed, and cells written twice with different values (warnings)
Truth tableMissing inputs (unchecked gap); rows of the wrong width (error); combinations missing or stated twice (warnings)
All modesUnreadable lines, an empty document and a cap that bit (unchecked gaps). In gate mode, a circuit with no inputs, no outputs or more than 12 inputs is not evaluated, which is also an unchecked gap

Limits: 400 gates and signals, 1,500 wires, and truth tables are evaluated for up to 12 inputs (4,096 rows).

Economics diagrams

Economics diagrams draws the standard teaching figures. Pick the figure with type: supply-demand (the default), is-lm, phillips, production-possibility, payoff-matrix or lorenz.

title "Market for coffee"
type supply-demand
supply slope 0.8 intercept 10
demand slope -1 intercept 90
shift demand right
label "P* ≈ 45"
title "Pricing game"
type payoff-matrix
players "Firm A" "Firm B"
strategies-row "High price" "Low price"
strategies-col "High price" "Low price"
cell (0,0) 10 10
cell (0,1) 0 15
cell (1,0) 15 0
cell (1,1) 5 5
StatementUsed inMeaning
supply slope S intercept I, demand slope S intercept Isupply-demandA straight curve y = I + S × x on axes running from 0 to 100. The intercept defaults to 50
is … and lm …is-lmThe IS and LM curves, written the same way
phillips …phillipsThe Phillips curve, written the same way
shift CURVE left or shift CURVE rightCurve figuresDraws the shifted curve, with the original faded and dashed for comparison. CURVE is supply, demand, is or lm, and the shift line must come after the line that defines that curve. right raises the curve's intercept by 15 and left lowers it by 15 (see the warning below)
ppf points (X,Y) (X,Y) …production-possibilityThe frontier through the given points, on 0–100 axes labelled Good X and Good Y
lorenz points (X,Y) (X,Y) …lorenzThe Lorenz curve, on % population and % income axes, with the line of equality
players "A" "B", strategies-row "…" "…", strategies-col "…" "…", cell (ROW,COL) A Bpayoff-matrixA two-player payoff matrix. Rows and columns count from 0; each cell gives player A's and player B's payoffs
label "…"AnyA note printed as a bullet under the figure

Axes are labelled for each figure: Quantity (Q) and Price (P) for supply and demand, Income (Y) and Interest rate (r) for IS–LM, Unemployment and Inflation for the Phillips curve. Curves are labelled S, D, IS, LM or PC and are clipped to the frame. In a payoff matrix the first player chooses the row and is named down the left side, the second chooses the column and is named across the top; in each cell the first player's payoff sits top-left (red) and the second player's bottom-right (blue).

Warning: A shift moves the intercept, not the curve sideways. For a downward-sloping curve (demand, IS) shift … right is a shift to the right, as expected. For an upward-sloping curve (supply, LM) raising the intercept moves the line up and to the left, so shift supply right draws a decrease in supply. To draw an increase in supply, write shift supply left, and check the figure.

What flowss checks: a curve keyword with no slope (the curve is not drawn), payoff cells outside the declared strategies, unreadable lines (errors); supply and demand, or IS and LM, that never cross inside the frame, a curve that lies entirely outside the frame, a curve that belongs to a different figure type, missing payoff cells, and a Lorenz curve that falls (warnings); and a figure type with nothing to draw, such as type lorenz with no lorenz points line (unchecked gap).


Physics, engineering and the built environment

Free-body diagram

Free-body diagram draws bodies with force vectors and moments, in a true coordinate system so the arrows are physically faithful, with an optional hatched surface.

title "Block on a 30° incline"
surface "30° incline"
body B at 320,200 size 100,70 label "10 kg"
force W on B vector 0,140 color red label "W = 98 N"
force N on B vector -60,-104 color blue label "N = 85 N"
force f on B vector -90,52 color green label "f = μN"
StatementMeaning
title "…"The figure title
surface "…"A hatched surface line under the bodies, with its caption
body ID at X,Y [size W,H] [label "…"]A rectangular body whose top-left corner is at X,Y. The size defaults to 80 × 60
force ID on BODY vector DX,DY [color C] [label "…"]An arrow from the body's centre. Positive DY points down; negative values reverse the arrow
moment ID on BODY value V [color C] [label "…"]A three-quarter curved arrow around the body's centre. A positive value is drawn clockwise and a negative one anticlockwise. Without a label, the value is printed

Write coordinate pairs without spaces, as in at 320,200, size 100,70 and vector 0,140, and keep the parts of each statement in the order shown. Colours: red, blue, green, orange, purple, violet, indigo, pink, teal, cyan, amber, yellow, brown, grey, gray, slate, black, white, or a hex colour.

What flowss checks: a force or moment on a body that was never declared (it is drawn nowhere), a zero-length force or zero moment (errors); a body declared twice (its forces are drawn on both copies), a body with nothing acting on it, two forces with the same name on one body, and an unknown colour (warnings); and lines it could not read (unchecked gaps). A body is not required to be in equilibrium, because a net force is often the point of the diagram. A document with no body shows "Add a body — body B at 300,200 size 100,70 label "10 kg"".

Circuit schematic

Circuit schematic draws textbook schematics with standard symbols on a grid. It is for lab notes, teaching and small designs, not a substitute for PCB design software.

title "RC low-pass filter"
component V V1 5V at (0,2) orient v
component R R1 1k at (2,1) orient h
component C C1 100n at (4,2) orient v
component GND G1 at (4,4)
wire (0,1) (1,1)
wire (3,1) (4,1)
wire (0,3) (4,3)
StatementMeaning
component KIND ID [VALUE] at (X,Y) [orient h or v]A part on the grid, with its designator and an optional value. orient defaults to h; write h and v in lower case
wire (X1,Y1) (X2,Y2)A straight wire between two grid points
KindSymbol
RResistor (zigzag)
CCapacitor
LInductor
DDiode
LEDLED (diode with arrows)
QNPN transistor
VVoltage source
GNDGround
SWSwitch
OPOp-amp
JJunction dot
FFuse

Coordinates are whole grid cells. A two-terminal part's leads reach half a cell either side, so end a wire either on the part's own cell or on the next cell out in the direction of its leads; both are understood. A ground connects upwards, a junction only at its own cell, and a transistor or op-amp at any neighbouring cell.

What flowss checks: a kind with no symbol (drawn as a plain box), a part no wire reaches, and parts sharing one cell (errors); a designator used twice and a zero-length wire (warnings); a part reached only by a wire that crosses it without ending there (a note, because whether it is joined cannot be told from the source); and lines it could not read (unchecked gaps). The checker does not simulate the circuit.

Phase diagram (materials)

Phase diagram draws single-component pressure–temperature diagrams (type pt) and two-component alloy diagrams (type binary).

title "Water"
type pt
triple 273.16 0.006
critical 647 22064
fusion negative
region "Solid" at (0.15, 0.7) color blue
region "Liquid" at (0.55, 0.6) color teal
region "Gas" at (0.55, 0.15) color amber
title "Pb–Sn"
type binary
basis weight
component A "Pb" melting 327
component B "Sn" melting 232
eutectic 0.619 183
solvus 0.192 0.975
region "Liquid" at (0.5, 0.85)
region "α" at (0.05, 0.35)
region "β" at (0.95, 0.35)
region "α + β" at (0.5, 0.2)
StatementUsed inMeaning
type pt or type binaryBothWhich diagram. Without a type line the diagram is drawn as pt, with a notice
triple T P, critical T PptThe triple and critical points, drawn as markers with their values as captions
fusion positive or fusion negativeptWhich way the melting curve leans (water's is negative)
component A "Name" melting T, component B "Name" melting TbinaryThe two components and their melting points, which set the temperature axis
basis atomic, basis weight or basis molebinaryCaptions the composition axis, for example "Composition (weight %)"
eutectic C T, eutectoid C T, peritectic C T, monotectic C TbinaryAn invariant reaction at composition C (a fraction from 0, pure A, to 1, pure B) and temperature T. More than one may be declared
solvus A BbinaryThe terminal solubility limits at the invariant temperature, as fractions
region "Label" at (X,Y) [color C]BothA phase label at fractions of the frame, (0,0) bottom-left. Colours: red, blue, teal, amber, purple, green, pink, slate or hex
Note: The curves of a pt diagram are schematic: their shapes are the same for every substance, and the values you declare set the markers and captions, not the paths between them. The figure says so in a caption: "Schematic — curve shapes are qualitative; the marked points carry the declared values." A binary diagram has a numeric temperature axis read from the two melting points. Without a basis line its composition axis is captioned simply "Composition".

What flowss checks: region coordinates off the frame, a critical point that is not above the triple point, non-positive fixed points, a binary diagram with an undeclared component or melting point, a melting point below absolute zero, a binary diagram with no boundary, and a "liquid" label placed below the liquidus (errors); no type line, a directive written twice, a statement that belongs to the other diagram type, an unrecognised colour, an unnamed phase field, and two components with the same name (warnings). An invariant composition outside 0 to 1, or a solvus whose limits are out of order, is refused and no horizontal or solvus is drawn for it. Lines it cannot read are unchecked gaps. What flowss cannot draw, such as type ternary, a third component, an invariant reaction it has no geometry for, or more distinct phase names than the diagram has fields, is reported as an unchecked gap, and the figure says what it could not draw.

Astronomy (orbital + HR)

Astronomy draws a Sun-centred orbital map (type orbital) or a Hertzsprung–Russell diagram (type hr).

title "Inner solar system"
type orbital
star "Sun"
planet "Mercury" radius 1 distance 0.39 color slate
planet "Venus" radius 2.5 distance 0.72 color amber
planet "Earth" radius 2.6 distance 1.00 color blue
planet "Mars" radius 1.4 distance 1.52 color red
title "Nearby stars"
type hr
star "Sun" temp 5778 lum 1 class G
star "Sirius A" temp 9940 lum 25 class A
star "Betelgeuse" temp 3500 lum 100000 class M
star "Proxima Centauri" temp 3042 lum 0.0017 class M
StatementUsed inMeaning
type orbital or type hrBothThe diagram type; orbital is the default. A type word that is neither is reported in a notice and drawn as orbital
star "Name"orbitalThe central star's name
planet "Name" radius R distance D [color C]orbitalA planet drawn at D AU on a tilted elliptical orbit, sized by R
star "Name" temp T lum L [class X]hrA star at temperature T (kelvin) and luminosity L (solar luminosities), coloured by temperature

Keep the parts of planet and star lines in the order shown. The H–R diagram has a logarithmic, reversed temperature axis from 40,000 K to 2,500 K and a logarithmic luminosity axis from 10⁻⁴ to 10⁶ L☉, with the main sequence shaded. A star outside those ranges is pinned to the edge and the figure says how many were. Planet colours: red, orange, amber, yellow, green, teal, cyan, blue, indigo, violet, purple, pink, slate, stone, grey, gray, brown, black, white, or hex.

Warning: Put type hr before your star lines. A star line read while the diagram is still orbital is taken as the orbital system's central star.

What flowss checks: a missing type, distances at or below zero, temperatures or luminosities at or below zero, a planet with no distance, an H–R star missing temp or lum, two bodies with one name, and bodies sharing an orbit. Unreadable lines are listed under the figure.

System dynamics (stock & flow)

System dynamics draws Forrester-style stock-and-flow diagrams: stocks as rectangles, flows as double-line pipes with valves, clouds as sources and sinks, auxiliaries as circles, and information links as dashed arrows. It draws the model's structure; it does not simulate it.

title "SIR epidemic"
stock S "Susceptible" at (1,2) initial 990
stock I "Infected" at (4,2) initial 10
stock R "Recovered" at (7,2) initial 0
flow infection from S to I rate "β·S·I/N"
flow recovery from I to R rate "γ·I"
aux beta at (2.5,4) value 0.3 label "β"
aux gamma at (5.5,4) value 0.1 label "γ"
info beta -> infection
info gamma -> recovery
info S -> infection
info I -> infection
info I -> recovery
StatementMeaning
stock ID ["Label"] at (X,Y) [initial N]A stock, with its initial value as a caption
cloud ID at (X,Y)A source or sink outside the model
flow ID from A to B [rate "…"]A flow between stocks or clouds, with its rate expression
aux ID at (X,Y) [value N] [label "…"]An auxiliary variable or constant
info FROM -> TOAn information link; TO may be a flow

What flowss checks: a flow or link whose end names nothing (it is drawn nowhere, and every link pointing at that flow disappears with it) and unreadable lines (errors); a stock with no flow in or out, which cannot change and should probably be an aux, an id declared twice, and two nodes on the same grid position (warnings).

Floor plan (2D), Floor plan (3D) and Floor plan (3D WebGL)

The three floor-plan engines read the same language. Floor plan (2D) draws a top-down architectural plan with thick walls, door arcs, double-line windows, room labels, furniture and a scale bar. Floor plan (3D) draws the same source as a printable axonometric view with extruded walls. Floor plan (3D WebGL) shows it as an interactive 3D model you can orbit, pan and zoom with a mouse or by pinching; it is a viewer, and editing by clicking is not available yet.

title "Studio apartment"
grid 0.5
wall (0,0)-(10,0)
wall (10,0)-(10,8)
wall (10,8)-(0,8)
wall (0,8)-(0,0)
wall (4,0)-(4,4)
door at (4,2) width 1
window at (10,4) width 1.5
room "Living" at (7,5) area 48
room "Bedroom" at (2,3) area 16
furniture sofa at (7,6.5) size 3,1
furniture bed at (2,1.5) size 2,1.4
label "N" at (0.5,7.5)
StatementMeaning
title "…"The title
grid NA dot grid every N world units
wall (X1,Y1)-(X2,Y2)A straight wall
door at (X,Y) [width W]A door with its swing arc; takes its direction from the wall it sits on. Width defaults to 1
window at (X,Y) [width W]A double-line window
room "Name" at (X,Y) [area A]A room caption, centred on the point, with an optional area
furniture KIND at (X,Y) [size W,H]A piece of furniture, centred on the point. Size defaults to 1 × 1
label "…" at (X,Y)Free text that starts at the point and runs right
view iso, view front, view side or view top3D engines only: the projection or camera position. iso is the default
height H3D engines only: wall height in world units, default 2.7

Furniture kinds: sofa, bed, table, chair, fridge, stove, sink, toilet, shower, bathtub, desk, tv, plant and generic. Each is drawn as a labelled shape; an unknown kind is drawn as a generic box with its name.

Captions are measured, and the whole drawing is scaled down until they fit; a caption that cannot fit at any scale is clipped and named in a notice. An opening that sits on no wall is drawn flat and named in a notice, with the distance to the nearest wall. A grid so fine that it would need more than 2,000 lines on one axis is not drawn, and a notice says so. Lines that match none of the statements above are skipped without a notice, so check spelling if something is missing. The checks report text that is not on the sheet (error), anything drawn differently from what was written (warning), and, for the 3D engines, a view word that is not one of the four (for example view isometric) and a wall height of zero or less (errors), or a plan with no walls to extrude (warning).

Tip: For print, use Floor plan (2D) or Floor plan (3D). The WebGL view is made for exploring on screen: it is drawn on a WebGL canvas, so Export SVG refuses it and the render API cannot draw it. For a picture to keep, switch the same source to Floor plan (3D), which draws it as SVG.

Chemistry, biology and medicine

3D Molecules (3Dmol)

3D Molecules shows proteins and molecules in an interactive 3D viewer: drag to rotate and scroll to zoom. A document either downloads a structure from the RCSB Protein Data Bank or carries the coordinates itself.

fetch: 1CRN
3
Water
O  0.000  0.000  0.117
H  0.000  0.757 -0.469
H  0.000 -0.757 -0.469
First lineMeaning
fetch: IDDownload the structure with this four-character PDB ID (a digit, then three letters or digits, such as 1CRN or 4HHB) and draw it as a cartoon coloured along the chain
format: xyz, pdb, sdf, mol2 or cubeThe rest of the document is inline coordinates in that format, drawn as sticks
Anything elseThe whole document is read as inline XYZ: an atom count, a name line, then one line per atom with a symbol and three coordinates in ångströms
  • A comment after the directive, such as fetch: 1CRN # crambin, and leading blank lines are allowed.
  • Downloads are cached for the session (up to 24 structures), so editing a fetched document does not download it again. A download that takes more than 15 seconds is stopped with a message.
  • The viewer fills the canvas, on a white background (dark blue in dark mode).

What flowss checks. Coordinates in XYZ and PDB documents (up to 20,000 atoms) are read and checked: bonds shorter than any real bond between those two elements, atoms on top of each other, unknown element symbols, and an XYZ atom count that disagrees with the atom lines (errors); pieces that are not bonded to each other, atoms with more bonds than they can have, and a set of atoms that does not match the molecule's name (warnings); elements that genuinely expand their octet are noted rather than flagged. A fetch: document is reported as unchecked, because its coordinates live on the server. SDF, MOL2 and cube coordinates are drawn but not checked.

Note: 3D Molecules is drawn on a WebGL canvas. Use Export PNG or Export PDF, which capture the current view; Export SVG refuses with "This engine doesn't render to SVG. Try PNG or PDF — both work for any engine."

Phylogeny (Newick)

Phylogeny draws phylogenetic trees from Newick, as a rectangular phylogram (the default) or a radial tree, with a scale bar when branches carry lengths.

# layout: rectangular
((Human:0.0067,Chimp:0.0072):0.0024,Gorilla:0.0089,Orangutan:0.0183);
  • Write the tree in standard Newick: brackets for clades, commas between siblings, :length after a name or a closing bracket, and a final ;. Spaces and line breaks between elements are allowed.
  • Choose the layout with a comment line before the tree: # layout: radial (or circular) for a radial tree, # layout: rectangular (or phylogram) for the default.
  • Tip names are drawn. Internal-node labels, such as bootstrap values, are read but not drawn.
  • Up to 1,400 tips are drawn. A larger tree shows the first 1,400 and says so on the figure, for example "1,400 of 2,000 tips drawn — the rest are not shown".

What flowss checks: an unreadable tree ("This source is not a Newick tree: …", with an example of a valid tree) and duplicate tip names and negative branch lengths (errors); a tree where some branches have lengths and some do not, unnamed tips and internal nodes with a single child (warnings). It also states the spread of root-to-tip distances, which is expected in a phylogram and would indicate an error in a time-calibrated tree; flowss states it without judging, because Newick does not say which kind of tree it is.

Genetics pedigree

Genetics pedigree draws pedigree charts in standard clinical notation and works out which modes of inheritance the chart is consistent with.

title "Cystic fibrosis"
individual I1 sex male affected no gen 1 carrier yes
individual I2 sex female affected no gen 1 carrier yes
mating I1 I2
individual II1 sex male affected yes gen 2 parents I1 I2 proband yes
individual II2 sex female affected no gen 2 parents I1 I2
individual II3 sex male affected no gen 2 parents I1 I2
StatementMeaning
individual ID [sex male, female or unknown] [affected yes] [carrier yes] [deceased yes] [proband yes] [gen N] [parents A B] [label "…"]A person. m, f and ? also work for sex. Generation defaults to 1
mating A BA mating line between two people
NotationDrawn as
Male, female, unknown sexSquare, circle, diamond
AffectedFilled symbol
CarrierHalf-filled or dotted symbol
DeceasedA slash through the symbol
ProbandAn arrow

What flowss works out. Six modes are tested against the chart: autosomal dominant, autosomal recessive, X-linked dominant, X-linked recessive, Y-linked and mitochondrial. Each mode that does not fit is refuted by name, with the individual who rules it out. For the example above the figure reads "Consistent with 2 modes — autosomal recessive, X-linked recessive." and lists, for instance, "Autosomal dominant is ruled out: II1 is affected and neither parent is." It also notes matings between relatives (consanguinity), which matter most on a recessive pedigree.

FindingLevel
No mode fits the chart, which means the chart contains a mistakeError
A child with the same person named twice as parent, a person who is their own ancestor, someone marked both carrier and affectedError
A parent named but never declared, a person declared twice, parents of the same sex, a child in an earlier generation than a parent, a carrier under a dominant modeWarning

Up to 600 people are read.

Anatomy / body systems

Anatomy places numbered labels on a built-in body plate, with leader lines to a stacked callout list on the right, for lecture slides and labelling exercises.

title "Cardiac chambers"
diagram heart
label "Right atrium" at (0.32, 0.30)
label "Left ventricle" at (0.62, 0.62) color red
label "Septum" at (0.47, 0.55)
StatementMeaning
diagram PLATEThe plate: whole (the default), heart, lungs, kidney, brain, digestive or skeleton
label "Text" at (X,Y) [color C]A label at fractions of the plate from the top-left corner

Colours: red, orange, amber, yellow, green, teal, cyan, blue, indigo, violet, purple, pink, brown, grey, gray, slate, black, white, or hex. A plate name the engine does not have is drawn as whole, with a notice listing the plates. The plates are schematic outlines; for detailed, illustrated biology figures use the Science studio.

What flowss checks: labels outside the 0–1 frame, labels on top of each other, a missing or unknown plate, and the same label used twice.

Drug-interaction network

Drug-interaction network draws drugs around a circle with interactions between them, coloured by severity: minor (slate), moderate (amber), major (red) and contraindicated (purple), with a legend. Hovering over an interaction shows its mechanism.

title "Anticoagulant review"
drug W "Warfarin" class anticoagulant
drug A "Amiodarone" class antiarrhythmic
drug S "Aspirin" class antiplatelet
interact W A "↑ INR" severity major mechanism "CYP2C9 inhibition"
interact W S "↑ bleeding" severity major
interact A S "↑ bleeding" severity moderate
StatementMeaning
drug ID "Name" [class …]A drug, with its therapeutic class shown under the name
interact A B "Effect" [severity S] [mechanism "…"]An interaction. S is minor, moderate, major or contraindicated

What flowss checks: an interaction naming an undeclared drug (it is not drawn), a drug interacting with itself, and an unknown severity word (drawn in the mildest colour) are errors; a drug declared twice, a drug with no interactions, the same pair stated twice, and an ungraded interaction among graded ones are warnings; lines it cannot read are unchecked gaps.


Research methods

Causal DAG

Causal DAG draws causal diagrams for epidemiology and causal inference, colour-coded by role, and then analyses the arrows rather than the labels: it finds the backdoor paths, lists every minimal adjustment set, and tells you whether the effect can be estimated at all.

title "Smoking and lung cancer"
exposure E "Smoking"
outcome O "Lung cancer"
confounder C "Age"
mediator M "Tar deposits"
E -> M
M -> O
C -> E
C -> O
StatementMeaning
exposure ID ["Label"] (also treatment, intervention)The cause being studied
outcome ID ["Label"] (also effect)The effect being studied
confounder ID ["Label"] (also covariate)A variable you believe confounds the effect
mediator ID ["Label"]A variable on the causal path
unobserved ID ["Label"] (also latent, unmeasured)A variable you cannot measure
node ID ["Label"] (also variable)Any other variable
A -> B (also -->, =>, →)A causes B
B <- A (also <=, ←)The same arrow written the other way round
A --- B (also --, <->, <=>, ↔)An unmeasured common cause of A and B, drawn as a dashed double-headed arc

For the example the figure reads "Identifiable — adjust for Age." and explains that conditioning on Age blocks every backdoor path from Smoking to Lung cancer.

FindingLevelMeaning
A cycle, an arrow from a variable to itself, two variables with arrows into each otherErrorA causal DAG cannot contain them; for mutual influence over time, draw the variables at each time point
A declared confounder that the arrows make a colliderErrorAdjusting for it would create a bias
A declared confounder that the arrows make a mediatorErrorAdjusting for it removes part of the effect
A declared confounder or mediator the arrows do not supportWarningThe label and the structure disagree
No simple identification strategy worksWarningNo set of observed variables blocks every backdoor path, no measured mediator opens a front door, and no variable acts as an instrument. Other methods (such as g-methods) are not checked, so this is not a proof that the effect is unidentifiable
A variable named only in an arrow, a variable declared twiceWarningThe role you meant is not the one used
No exposure or no outcomeGapQuestions about confounding and adjustment are unanswered rather than passed
Minimal adjustment sets, front-door paths and instrumentsNoteWhat you can do, stated as findings
The same arrow written twice, a variable with no arrows, no causal path from exposure to outcomeNoteFacts about the diagram rather than faults

Limits: 300 variables, 1,200 arrows and 4,000 lines. Adjustment sets are searched over up to 20 candidate variables and up to six variables per set, and up to 24 minimal sets are listed. Past those limits flowss says the list is incomplete, or that it was not searched, rather than presenting part of it as the whole; whether any adjustment set exists is still decided.

PRISMA 2020 flow

PRISMA 2020 flow draws the systematic-review flow diagram and checks the arithmetic it is made of: at every stage, what came in, minus what left, is what remains.

title "Review of exercise interventions"
db_records 1450
register_records 86
duplicates 312
title_screened 1224
title_excluded 1001
abstracts_sought 223
abstracts_unavailable 9
fulltext_assessed 214
exclude_reason "Wrong population" 61
exclude_reason "Wrong outcome" 48
exclude_reason "Not randomised" 38
studies_included 67

Each line is a keyword and a whole number, written without thousand separators or units. Exclusion reasons are exclude_reason "Reason" COUNT.

StageKeywords
IdentificationIn: db_records, register_records, other_records. Removed before screening: duplicates, excluded_auto, excluded_other. Remaining: title_screened
Screeningtitle_screened minus title_excluded leaves abstracts_sought
Retrievalabstracts_sought plus other_sought (records from citation searching or websites that skip de-duplication), minus abstracts_unavailable and other_unavailable, leaves fulltext_assessed
Eligibilityfulltext_assessed plus previous_reports (for review updates), minus the exclusions, awaiting_classification and ongoing_studies, leaves reports_included or studies_included

The exclusions at eligibility are the sum of the exclude_reason lines, or reports_excluded when you state it (for example because each report was given every applicable reason). reports_included and studies_included can both be stated, because one study may have several reports.

For the example the figure reads "Every record is accounted for: all 4 stages of the flow balance." and prints each sum, such as "Screening balances: 1,224 − 1,001 = 223 abstracts_sought." and "Identification balances: 1,450 + 86 − 312 = 1,224 title_screened (excluded_auto is not stated and read as zero)."

FindingMeaning
A stage does not balanceA count is wrong, or a reason for the difference is missing
A stage holds more than the one before itRecords only ever leave the funnel
More studies than reports includedCheck whether a report describes more than one study
An exclusion count with no reason, a repeated reason, or reasons that do not add up to the exclusionsPRISMA 2020 asks for exclusions to be reported with their reasons
A keyword stated twiceThe first is the one drawn and checked
A stage whose incoming count or remaining count is not statedThe stage is unchecked rather than clean; no arithmetic is attempted
A removal count that is not stated, such as duplicates or excluded_autoIt is read as zero, and the stage's sentence names every term it read as zero, for example "(excluded_auto is not stated and read as zero)"
A value that is not a plain whole numberTreated as unstated rather than zero

Limits: up to 20,000 characters and 600 lines are read; up to 40 exclusion reasons are drawn (every reason is still counted in the arithmetic), each up to 90 characters; counts up to 10,000,000. For reviews built from real screening data, Evidence computes the PRISMA flow for you.

FlowScript

FlowScript is the flowss language for typed research models: every element has a domain type such as study, cohort, arm or outcome, numbers propagate between them, and one model can be drawn as several publication views, such as a CONSORT flow.

study primary { design: "RCT" }

cohort screened    { n: 1502 }
cohort eligible    { n: 1240, from: screened, excluded: { ineligible: 198, declined: 64 } }
cohort randomised  { n: 1200, from: eligible, excluded: { withdrew: 40 } }

arm control   { n: 600, from: randomised, intervention: "Placebo" }
arm treatment { n: 600, from: randomised, intervention: "Drug X" }

view methods: consort(primary)

FlowScript is in the Studio's engine library, but its home is the Lab, with a property panel, compliance checking against reporting standards and publication export. The language is documented in The FlowScript language, and its views in Lab views and renderers.


Earth sciences and archaeology

Stratigraphy / Harris matrix

Stratigraphy draws stratigraphic columns for geology and archaeology (type column, the default) and Harris matrices of relative chronology (type harris), and checks the law of superposition.

title "Trench A — west section"
type column
layer "Topsoil" thickness 0.3 color "#6b4423" age "Modern"
layer "Roman floor" thickness 0.15 color "#dca56a" age "2nd century CE"
layer "Iron Age midden" thickness 0.4 color "#7c5a32" age "5th century BCE"
layer "Glacial till" thickness 1.0 color "#cbd5e1" age "Pleistocene"
title "Context sequence"
type harris
unit 100 "Topsoil"
unit 101 "Pit cut"
unit 102 "Pit fill"
unit 103 "Wall foundation"
above 100 102
above 102 101
above 101 103
StatementUsed inMeaning
layer "Name" thickness T [color C] [age "…"]columnA layer, listed from the top down, with its thickness in metres and depth ticks beside the column
unit ID "Label"harrisA context unit
above UPPER LOWERharrisUPPER physically overlies LOWER; units are levelled automatically

Ages can be written as numbers with units (541-252 Ma, 2.6 Ma - now, > 115 ka, ~65 Ma, 12000 BP), as centuries or years (2nd century CE, 5th century BCE, 1066 CE), as named geological periods (Pleistocene, Late Cretaceous, Permian-Triassic), or as Modern, present, now, today, recent or current. Units understood include Ma, Ga, ka, yr and BP, and qualifiers such as Early, Middle and Late narrow a named period. Words such as gap, hiatus, unconformity, missing, eroded or unknown, or a ?, mark an age slot that is not an age; that layer's contacts are reported as unchecked.

What flowss works out. For the column above the figure reads "4 layers, 1.85 m, every contact the right way up — and 3 unconformities, the largest 9 thousand years." and lists each gap in time between layers. It reports a younger layer below an older one and a cycle in a Harris matrix (errors); a layer of zero or negative thickness, an above naming an undeclared unit, a unit declared twice and a unit with no relationships (warnings); and layers whose ages could not be read or were not given (unchecked gaps, because an inversion involving them would be invisible).

Limits: 400 layers, 400 units and 2,000 above relationships.


Language and humanities

Syntax tree (linguistics)

Syntax tree draws constituency and parse trees in the classic linguistics style: non-terminals in bold, words in italic at the leaves, each node centred over its children. It accepts Penn Treebank brackets or an indented outline.

(S (NP (DT The) (NN cat)) (VP (V sat) (PP (P on) (NP (DT the) (NN mat)))))
S
  NP
    DT The
    NN cat
  VP
    V sat

In the indented form, each node is on its own line, indented two spaces per level, and a leaf line holds its label and its word.

What flowss checks: a word dropped because it sits beside child nodes, as in (NP the (NN cat)); an unclosed bracket that was closed for you at the end of the source; and text after the first complete tree, which is not read (all errors); and empty nodes (warning).

For other humanities figures see Timeline (history) and Argument map, both documented in Business, strategy and planning engines.


Music

Music notation

Music notation engraves a single-voice melody on one staff from a compact ABC-style syntax, for theory teaching, melody sketches and slides.

title "Twinkle, twinkle"
clef treble
key C
meter 4/4
notes: C C G G | A A G2 | F F E E | D D C2
StatementMeaning
clef treble or clef bassThe clef (treble by default)
key NAMEThe key name, printed beside the staff, for example key G or key Bb
meter N/DThe time signature, printed beside the staff (4/4 by default)
notes: …The notes. Several notes: lines continue the melody
TokenMeaning
A to GA note; upper case is the middle octave, lower case (a to g) an octave higher
#, b, _ after the letterSharp, flat or natural
A number after the noteDuration: 1 whole, 2 half, 4 quarter (the default), 8 eighth, 16 sixteenth
z and a numberA rest, for example z4
The vertical bar characterA bar line

A line without notes: is still read as notes when it consists only of note letters, accidentals, rests, durations, bar lines and spaces and contains at least one bar line, rest or number, so ordinary text is never mistaken for music.

What flowss checks: a bar whose notes do not add up to the time signature (an error, because the staff spaces the notes evenly and nothing shows the bar is short or long), and lines that are neither directives nor notes. A source with no notes at all says so instead of drawing an empty staff.

Note: This is not a full engraver. Chords, beams, slurs, ties, articulations, repeats and multiple voices are not supported, and the key is printed as a name rather than drawn as a key signature. The staff is one line about 920 pixels wide, so roughly two dozen notes and bar lines fit; split a longer melody across several figures.

Piano roll (MIDI)

Piano roll draws a melody as coloured note bars on a time grid, with a piano keyboard down the left side.

title "C major scale"
tempo 120
time 4/4
beats 8
note C4 at 0 length 1
note D4 at 1 length 1
note E4 at 2 length 1
note F4 at 3 length 1
note G4 at 4 length 1
note A4 at 5 length 1
note B4 at 6 length 1
note C5 at 7 length 1 color "#dc2626" velocity 100
StatementMeaning
tempo NThe tempo, printed as "N BPM" (120 if not given)
time N/DThe time signature; every bar is marked with a stronger grid line
beats NHow many beats the grid shows. Without it the grid ends at the last note
note PITCH at START length LENGTH [color C] [velocity V]A note. PITCH is an upper-case letter, an optional # or b, and an octave (middle C is C4). START and LENGTH are in beats. Velocity (0–127) sets how strongly the note is shaded

Colours can be hex values or CSS colour names; anything else uses the theme's accent colour. The keyboard spans two semitones below the lowest note to two above the highest.

What flowss checks: unreadable pitches (the note is left out), notes of zero length and unreadable lines (errors); notes that fall past the declared beats, and overlapping notes on the same pitch (warnings).

Music chords (cycle of fifths)

Music chords draws a two-ring cycle of fifths (type cycle, the default), with major keys outside and relative minors inside, or a chord progression as a strip of cards with Roman numerals (type progression).

title "Cycle of fifths"
type cycle
highlight C G Am Em
title "ii–V–I in C"
type progression
key C
chord Dm7 ii
chord G7 V
chord Cmaj7 I
StatementMeaning
highlight NAME NAME …Fill these wedges on the wheel
key NAMEThe key of a progression
chord NAME [NUMERAL]A chord card, with an optional Roman numeral

Highlight names must match the wheel exactly. The majors are C, G, D, A, E, B, F#, C#, G#/Ab, D#/Eb, A#/Bb and F; the minors are Am, Em, Bm, F#m, C#m, G#m, D#m, A#m, Fm, Cm, Gm and Dm. So write G#/Ab, not Ab. A name that is not on the wheel fills nothing and is reported as an error, as is a line the engine cannot read. flowss also warns about progression chords with no Roman numeral (the slot under the chord is drawn blank), and about chord lines on a cycle or highlight lines on a progression, which that figure type does not draw.


Games

Chess (FEN)

Chess draws print-quality boards from Forsyth–Edwards Notation, with Unicode pieces, file and rank labels and a side-to-move marker.

# title: Opera Game — final position
# subtitle: Morphy v Duke of Brunswick, Paris 1858
1n1Rkb1r/p4ppp/4q3/4p1B1/4P3/8/PPP2PPP/2K5 b k - 1 17
  • One FEN per board. Separate boards with a blank line; they are laid out in a grid of up to three per row, which suits opening sequences and puzzle sets.
  • Optional # title: and # subtitle: lines above a FEN become that board's caption. Any other line starting with # is a comment.
  • A position: prefix before a FEN, as some chess databases export it, is accepted.
  • Boards are drawn from White's side.

What flowss checks: a FEN that cannot be read (the reason is printed in the board's place), a king count other than one per side and pawns on the first or eighth rank (errors); material that cannot arise in a game, and castling rights whose king or rook is not on its home square (warnings). Diagram Intelligence adds a material count and piece census.

Tournament bracket

Tournament bracket draws single-elimination brackets. Rounds are worked out from which matches feed which, winners are highlighted in amber and scores are shown beside each team.

title "Semi-finals and final"
team T1 "Argentina"
team T2 "Brazil"
team T3 "France"
team T4 "Spain"
match SF1 T1 vs T2 winner T1 score "2-1"
match SF2 T3 vs T4 winner T4 score "0-1"
match FINAL SF1 vs SF2 winner T1 score "3-3 (4-2 pens)"
StatementMeaning
team ID "Name"An entrant
match ID A vs B [winner ID] [score "…"]A match. A and B are team ids or the ids of earlier matches, whose winners advance

What flowss checks: a winner who did not play in the match, an entrant that is neither a team nor an earlier match, a bracket that loops, and unreadable lines (errors); a team appearing twice in one round and a match with no winner (warnings).


Custom figures

Raw SVG

Raw SVG draws hand-written SVG for custom schematics and illustrations that no engine models, such as optics, geological cross-sections or a bespoke diagram. It is also where the Studio's icon library inserts icons.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <circle cx="60" cy="50" r="30" fill="#fbbf24"/>
  <text x="110" y="55" font-size="14">Lens</text>
</svg>
  • The source must be a single <svg>…</svg> document; anything else is refused with Input must be a single <svg>…</svg> document. An XML declaration on its own line before <svg is accepted.
  • For safety, scripts, event handlers, javascript: links and form controls (form, input, button, textarea, select) are removed before the SVG is shown, and links are made to open without access to the page that opened them. Ordinary drawing markup, including <style>, <use>, <foreignObject> and your own background rectangles, is kept as written.
  • An icon added with Insert into editor in the icon library is appended after your existing markup. The icon library inserts only into Raw SVG; with any other engine it asks you to switch the figure to the SVG engine or use Copy SVG instead.
  • The budget is 500,000 bytes.

What flowss checks: no root <svg>, mismatched, unclosed or unopened tags, references such as url(#id) or href="#id" to an id that does not exist, duplicate ids, classes used with no matching style rule and a missing xmlns (errors); a missing viewBox, empty text elements and an SVG with no content (warnings); and unused style rules and definitions (notes).


Choosing between similar engines

You want to…UseRather than
Equations in a figure or slideLaTeX (KaTeX)Raw SVG text
A whole figure in LaTeX for a paperExport as TikZ / LaTeX from any engineRetyping it
A curve from a formulaPlotEconomics diagrams, which are straight-line teaching curves
A truth table you can trustDigital logic, which evaluates itDrawing gates in a general diagram tool
A protein or small molecule in 3D3D Molecules
A 2-D chemical structure or a balanced reactionThe Science studio3D Molecules
A family history with an inheritance questionGenetics pedigreeA general org chart
A causal question about confoundingCausal DAGA flowchart engine, which draws but cannot analyse
A systematic-review flow you write by handPRISMA 2020 flow
A review flow computed from screeningEvidence
A CONSORT trial flow whose numbers propagateFlowScript in the Lab
A plan to printFloor plan (2D) or Floor plan (3D)Floor plan (3D WebGL), which is for screen
A melody on a staff, or on a time gridMusic notation, or Piano roll (MIDI)
A one-off illustration no engine modelsRaw SVG, or the Science studio for illustrated science

Tips

  • Start from a template. These engines have large template collections (over 600 for LaTeX, and more than 150 each for 3D Molecules and Phylogeny). Open the engine's reference page or the template gallery and edit a working example.
  • Brace multi-digit exponents. Write x^{10}, not x^10, and \% for a percent sign in KaTeX.
  • Put the type line first in Astronomy, Phase diagram, Digital logic, Economics diagrams, Stratigraphy and Music chords. In Astronomy and Digital logic it changes how later lines are read (an H–R star line, a truth table's output line); in the others it keeps the document readable.
  • Declare before you refer. In Causal DAG, Genetics pedigree, Drug-interaction network, Free-body diagram and System dynamics, a name that is never declared is either created with default settings or drawn nowhere. The readiness chip tells you which. In Economics diagrams, a shift line only works after the curve it shifts.
  • Give ages to every layer in a stratigraphic column so the superposition check covers every contact.
  • Paste coordinates for checkable molecules. A fetch: structure is drawn but its geometry cannot be checked; inline XYZ or PDB coordinates are checked.
  • Read the headline. Pedigree, Causal DAG, Stratigraphy, Digital logic and PRISMA print their conclusion under the figure. If it does not say what you expect, the drawing is not the only thing to check.

Limits and known constraints

  • Browser-only engines. LaTeX (KaTeX), 3D Molecules, Floor plan (3D WebGL) and Raw SVG cannot be drawn by the render API. 3D Molecules fetch: documents also need a connection to the RCSB Protein Data Bank.
  • KaTeX typesets maths only, one display formula per block, with no shared macros between blocks. Export it as PNG or PDF.
  • 3D Molecules draws fetched structures as cartoons and inline structures as sticks; the style cannot be changed from the source. SDF, MOL2 and cube coordinates are not checked.
  • Phylogeny draws up to 1,400 tips and does not draw internal-node labels such as bootstrap values.
  • Music notation is single-voice, on one staff of about two dozen notes, with no chords, beams, slurs or drawn key signatures.
  • Phase diagram pt curves are schematic; ternary diagrams are not supported.
  • Economics diagrams draw straight-line curves on 0–100 axes.
  • System dynamics draws models but does not simulate them.
  • Anatomy plates are schematic outlines, and there are seven of them.
  • Floor plan (3D WebGL) is a viewer; click-to-edit is not available. The floor-plan engines skip lines they do not recognise without a notice.
  • Economics diagrams shifts move a curve's intercept by a fixed 15 units; for upward-sloping curves the direction words are reversed (see the warning in that section).
  • Circuit schematic is for teaching and documentation, not PCB design, and has twelve symbols.
  • Caps on the native engines include 400 gates and 1,500 wires (Digital logic, with truth tables up to 12 inputs), 600 people (Genetics pedigree), 300 variables and 1,200 arrows (Causal DAG), 400 layers and 400 units (Stratigraphy), and 40 drawn exclusion reasons (PRISMA). A cap that bites is always reported.

Troubleshooting

What you seeEngineWhyWhat to do
A formula in red, or "Formula 2 does not render. KaTeX says: …"LaTeX (KaTeX)KaTeX cannot parse it, often an unbalanced brace or an unsupported commandFix the formula KaTeX names; check for a bare %
"This engine doesn't render to SVG. Try PNG or PDF …"KaTeX, 3D MoleculesThese are not drawn as SVGExport PNG or PDF
"9ZZZ" is not a PDB ID — expected four characters starting with a digit, like "fetch: 1CRN".3D MoleculesThe ID is malformedUse a four-character PDB ID starting with a digit
"PDB 9ZZZ responded HTTP 404 from https://files.rcsb.org — check the ID …"3D MoleculesNo such structureCheck the ID on the RCSB website
"Could not reach https://files.rcsb.org to fetch PDB … — check the network …"3D MoleculesNo connection, or the download took over 15 secondsCheck your connection and try again, or paste the coordinates inline
Unknown molecule format "…" — supported: xyz, pdb, sdf, mol2, cube.3D MoleculesThe format: line names another formatConvert the file to one of the supported formats
"fetch 1CRN" is missing its colon …3D MoleculesThe directive has no colonWrite fetch: 1CRN
"This source is not a Newick tree: Expected ')' at …"PhylogenyA bracket is not closed, or the tree is incompleteBalance the brackets and end with ;
A part drawn as a plain boxCircuit schematicThe kind has no symbolUse one of the twelve kinds in the symbol table
"diagram … names no plate this engine has … — drawn as whole."AnatomyUnknown plate nameUse whole, heart, lungs, kidney, brain, digestive or skeleton
"type … is neither orbital nor hr — drawn as orbital."AstronomyUnknown typeWrite type orbital or type hr
Stars drawn as the orbital system's starAstronomytype hr came after the star linesMove type hr to the top
"No type line. Drawn as a single-component P-T diagram …"Phase diagramNo type was declaredAdd type pt or type binary
"Line N is in no notation this engine knows and was not drawn: …"Phase diagramAn unreadable lineCheck the statement against the table above
"NO inheritance mode fits this pedigree." or a refutation you did not expectGenetics pedigreeA status, sex or parentage in the chart is wrongCheck the individuals named in each refutation
"No simple identification strategy works for the effect of …"Causal DAGConfounding runs through variables the diagram marks as unobserved, and no front door or instrument existsMeasure one of the unobserved variables, or add an instrument; front-door paths are listed in the findings when they exist
"Add a body — body B at 300,200 size 100,70 label "10 kg"" shown instead of the diagramFree-body diagramNo body line was read (coordinates must be written without spaces, as in 300,200)Declare a body
"Add notes — note C4 at 0 length 1"Piano roll (MIDI)No note was readWrite note PITCH at START length LENGTH with an upper-case pitch letter
A supply curve moves the wrong way after shift supply rightEconomics diagramsA shift raises or lowers the intercept, which for an upward-sloping curve is the opposite directionUse shift supply left for an increase in supply
A stage "does not balance"PRISMA 2020 flowA count or a reason is missing or wrongCorrect the count, or add the missing reason or keyword
Input must be a single <svg>…</svg> document.Raw SVGThere is no <svg> root element, or other text sits on the same line before <svg or after </svg>Keep one <svg>…</svg> element and remove the stray text
Notes running off the right of the staffMusic notationThe melody is longer than one staffSplit it into several figures
A highlighted chord that stays emptyMusic chordsThe name is not on the wheelUse the wheel's exact names, for example G#/Ab
"Source is … — past the … safe-rendering budget …"AnyThe source is over the engine's budgetSplit or trim the figure

Something unclear or out of date on this page? Tell us from the Support link in any studio — the flowss team reads every report.

© 2026 Voranox Inc. flowss — Flow Systems Studio. All rights reserved.

This documentation, its text and its examples are protected by copyright. Engine and format names are trademarks of their respective owners — see the terms and copyright and licences.