Working with data

Data sources & formats

Supported formats, how files are parsed, and how to drive the source browser.

Opening files

Use File → Open File… (⌘O), the + menu in the source browser, or drag files onto the window.

Select a folder to open every supported file inside it, recursively. Unsupported files are skipped, as are paths that are already open.

Plan limit

Free allows 2 open files, Personal 10. See Plans & limits.

Supported formats

FormatExtensionsTraces
Delimited text.csv .tsv .txtEvery column
Apache Parquet.parquet .pqEvery numeric column
Arrow IPC.arrowEvery numeric column
Audio.wav .cafEvery channel

CSV, TSV and TXT

  • The delimiter (comma or tab) and the presence of a header row are detected automatically.
  • Quoted fields are supported.
  • Every column becomes a trace, including timestamp columns. Assign an x-axis explicitly — see Assigning a custom x-axis.
  • Values that do not parse as numbers become NaN and appear as gaps.

Parquet

Only numeric columns are exposed; strings, dates and structs are skipped. Each column keeps its declared type. Values are read as doubles, which is exact except at the extremes of 64-bit integers.

Arrow IPC

Read as an Arrow IPC stream, with column names taken from the schema. Every numeric column becomes a trace, read at its own width. X-values come from the stream, so an Arrow file can carry a non-uniform x-axis.

This is the same format as the Arrow IPC decoder used for live connections.

Audio

Channels become traces: stereo files give Left and Right, others give Channel 1, Channel 2 and so on.

The file's sample rate is applied to the x-axis automatically, so audio plots against seconds. The browser shows the rate beside the index row, for example @ 48000Hz. Edit it like any other transform — see X-axis transforms.

Integer PCM plots in the counts it was sampled in rather than normalised: a 16-bit WAV spans −32768…32767, not ±1.0. Autoscale handles the difference. 8- and 24-bit files are read as floats.

Sample types

Every signal carries the type its source declared, one of ten:

KindTypes
Floatfloat32 float64
Signed integerint8 int16 int32 int64
Unsigned integeruint8 uint16 uint32 uint64

The type appears as a small tag beside the signal in the formula pane. It decides whether bitwise operators accept the signal directly: over an int32 column you can write counter & 0xFF, with no bits() needed. See Types.

SourceWhere the type comes from
CSV, TSV, TXTFloat. This is the one format that does not declare a type.
ParquetThe column's type in the file.
Arrow IPCThe schema's type for that column.
AudioThe file's PCM format.
Binary streamThe width and signedness set per field in the preset.
Refract StreamThe value type declared in the message.
Computed signalThe formula's own result — int or float, with no width.

Loading

Opening a file reads only its header, so traces appear immediately with no samples. The full parse runs in the background the first time you plot a signal or reference it in a formula; a spinner appears in the affected track.

Open file read header only names + column count Traces appear no samples yet instant, any file size first use Full parse background thread spinner in the track
Headers first; the full parse runs on first use.

The source browser

The sidebar lists every source with its traces nested underneath. Click the chevron to expand or collapse a source; the footer counts what is open.

Row markers

MarkerMeaning
Filled dotAn ordinary trace.
Hollow dotA column added by the transport, such as the HID Timestamp. Usable as an x-axis; cannot be removed.
RulerUsed as the x-axis by other traces in the source.
#The index row: the source's row-index x-axis. Not plottable.
Dot with ƒA computed signal. Dimmed when broken.
ƒ badgeAn in-place formula is applied to this trace.
Text badgeThe x-axis transform, for example × 0.001s.
Data Sources +
Computed
ƒrms
ƒdrift broken
run_a.csv
#index × 0.001s
voltage
current ƒ
timestamp × 1s
position
Mouse HID
Connected
Timestamp
Report ID
dx
2 files, 1 connection
Row markers
Ordinary trace
Transport-provided column
Used as an x-axis
#Virtual row index
ƒComputed signal
ƒEdited in place
× 0.001sX-axis transform
position is indented under timestamp, the column it uses as its x-axis.

Traces using a custom x-axis are indented beneath the trace providing it. RefractIO connections group their traces by table.

Selecting

  • Click a trace to select it, or a source header to select all of its traces.
  • -click toggles; -click extends.
  • ⌘A selects everything visible; Esc clears the selection.

Keyboard navigation

KeyAction
Move through sources and traces.
⇧↑ ⇧↓Extend the selection.
>Plot the selection on a new track.
⌘⌫Close the selected sources.
EscClear the selection.

Dragging

  • Drag a trace to a track, to Add Track, or onto another trace to assign an x-axis.
  • Drag a source header to move all of its traces at once.
  • Dragging with several rows selected moves the whole selection.
  • Dragging a signal from one track to another moves it rather than copying it.

Context menus

On a source: Show in Finder (files); Edit Connection…, View Raw Stream, Clear Buffer and Reconnect (connections); Close.

On a trace: Edit Formula…, Reset to Loaded Values, Set X-Axis Transform…, Remove as X-Axis, Reset X-Axis to Index, and Delete for computed signals. Double-clicking a trace opens the formula pane.

Closing a source

Click × on the source row, use the context menu, or press ⌘⌫.

Closing removes the source's signals from every track. Closing a connection also stops it. Any computed signal that depended on the source is marked broken and stops drawing.