stream_synth — DRIVE scoop op

• Data kinds: scalar × scalar × scalar → table

• Call: import fullseye as fs; fs.ledger.stream_synth(flux: 'float', radius: 'float', width: 'float', *, v0: 'float' = 0.3, s0: 'float' = 0.02, rows: 'int' = 192, cols: 'int' = 64, pitch: 'float' = 0.0005, dt: 'float' = 0.0015, n_frames: 'int' = 16, supersample: 'int' = 4, seed: 'int | None' = 0) -> 'dict' (to call the implementation directly, import scoop; scoop.stream_synth(flux: 'float', radius: 'float', width: 'float', *, v0: 'float' = 0.3, s0: 'float' = 0.02, rows: 'int' = 192, cols: 'int' = 64, pitch: 'float' = 0.0005, dt: 'float' = 0.0015, n_frames: 'int' = 16, supersample: 'int' = 4, seed: 'int | None' = 0) -> 'dict'; from the registry, opsdrive.get("stream_synth"))

Usage

Synthesizes a frame sequence of the coverage of a powder stream falling from the mouth (a thin band seen from the side).

Grains leave the outlet as a Poisson process (rate flux [grains/s]), with lateral position uniform over width width, and fall freely with initial speed v0, s = v₀ τ + ½ g τ² (fall distance s from the outlet). Image row 0 is at s = s0, one pixel is pitch. A union of discs of radius radius (coverage with supersample² sub-samples). Since positions are independent, coverage follows the Boolean model —— the synthesiser does not use that formula (an independent test subject for stream_areal_density).

Returns: frames (n_frames images), dt, pitch, s_rows (fall distance of row centres), truth (flux, crossings (actual number of grains crossing each row-centre height during [0, n_frames·dt) / time = the realised flux), v (free-fall speed at the row centres), radius_px). Raises ValueError: argument out of range.

References (sample data, literature)

• 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.

Runnable examples (verified samples that actually call this op)

• poc_powder_scoop_pour — py -3.11 examples/poc_powder_scoop_pour.py

Ops the type connects to (they accept table as input)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Same category (scoop)

spoon_bowl_volume · scoop_synth_side · revolution_volume_side · two_view_volume · scoop_volume_read · scoop_count · scoop_image_limit · tilt_wedge_retained


*Provenance: scoop.py — DRIVE 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.