Graph Visualization Demo

This demo showcases different types of signal processing graphs and their Mermaid visualizations. Notice how tap operations appear as parallelograms (>) and show data flow.

Example 1: Simple Linear Graph with Taps

A basic sequential graph with tap operations for inspection.

```mermaid
flowchart TD
    node0[Generate]
    node1>Tap_After_Generate<]
    node2[Filter]
    node3>Tap_After_Filter<]
    node4[FFT]
    node5[Power]
    node0 --|sample_rate|--> node1
    node0 --|data|--> node1
    node0 -.data.-> node2
    node0 -.sample_rate.-> node3
    node2 --|data|--> node3
    node2 -.data.-> node4
    node4 --|fft|--> node5
```

Example 2: Graph with Branches

A graph that branches into parallel processing paths.

```mermaid
flowchart TD
    node0[Generate_Signal]
    node2[Apply_Filter_A]
    node3[Apply_Filter_B]
    node4[Compute_FFT]
    node0 -.data.-> node2
    node2 --|data|--> node3
    node3 --|data|--> node4
```

Example 3: Graph with Variants

A graph with variant operations that explore multiple parameter combinations.

```mermaid
flowchart TD
    node0[Generate]
    node1{{variants}}
    node2[FFT]
    node0 --|sample_rate|--> node1
    node0 --|data|--> node1
    node1 --|data|--> node2
```

Visualization Legend

- **[Rectangle]** = Regular operation (single execution) - **{{Hexagon}}** = Variant operation (multiple parameter values) - **>Parallelogram<** = Tap operation (side effect for inspection) - **Solid arrows** = Direct data flow - **Dotted arrows** = Bypass data flow