flow op• Data kinds: image2d × image2d → table
• Call: import fullseye as fs; fs.ledger.physarum_transport_image(a, b, connectivity=4, normalize=True, dt=0.1, max_iters=5000, tol=1e-06, gap_tol=1e-06, snapshots=0) (to call the implementation directly, import physarum_search; physarum_search.physarum_transport_image(a, b, connectivity=4, normalize=True, dt=0.1, max_iters=5000, tol=1e-06, gap_tol=1e-06, snapshots=0); from the registry, opsgraph.get("physarum_transport_image"))
Earth mover's distance between two mass images by the slime mould's tube dynamics.
Every pixel is a node; neighbouring pixels (connectivity 4 or 8) are joined by a tube of length 1 (sqrt(2) on diagonals), so the ground metric is the grid path length (Manhattan for 4, octile for 8). Mass a enters and mass b leaves: the supply is a - b after both are scaled to unit mass (normalize=True; with False they must already carry the same mass). Dynamics, convergence and the two-sided bound as in graph_physarum_transport; larger images run on the sparse Laplacian with conjugate gradients.
Returns cost (the 1-Wasserstein distance estimate in pixel units, an upper bound), dual_bound (Kantorovich–Rubinstein lower bound), gap, conductance (an image: each pixel's thickest incident tube), flow_field ((H, W, 2): the mean of the flow vectors of the tubes at each pixel, in (row, col) units of mass per unit length, for drawing arrows), potential ((H, W) pressures), iters, converged, gap_converged, history, cost_history, dual_history, and with snapshots = m > 0 also snapshots (m conductance images at evenly spaced iterations, the last one final), snapshot_iters and snapshot_cost (sum_e L_e |Q_e| at those iterations) for watching the tubes form.
Raises ValueError: images not 2-D, finite, non-negative, of the same shape with at least 2 rows and columns, or without mass; unequal masses when normalize=False; connectivity not 4 or 8; snapshots < 0; and as graph_physarum_transport.
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_physarum_transport — py -3.11 examples/poc_physarum_transport.py
table as input)graph_edge_consensus · graph_core_persistence · tree_morphometry · tree_sholl · tree_run_length
flow)graph_physarum_path · physarum_route · graph_physarum_transport
*Provenance: physarum_search.py — GRAPH operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.