Tutorial

Build your own DIMS dashboard

What your data needs to look like :
  • Group files by session. Everything from one recording shares a single session ID — the video, its time series, and its transcript.
  • Video — an .mp4.
  • Time series — a .csv with a time column (named Time, time, any casing) in seconds, plus one or more measurement columns. The builder auto-splits a multi-column CSV into one data type per column; if you hand-edit the study, use one measurement column per file.
  • Transcript (optional) — JSON shaped as { "segments": [ {start, end, speaker, text} ] }.
  • ELAN (optional) — an .eaf file.
Most important: the Time axis is mapped directly onto the video clock, so a session's video length and time-series length should match. If they differ, the video and signals won't line up (dead space, or the signal cut off).

For non-coders — the Dashboard Builder

Install: DIMS is not on PyPI yet, so install it from a checkout of dims-network/dims:
git clone https://github.com/dims-network/dims
pip install -e "./dims[builder]"
dims-builder
The last command opens the wizard in your browser and walks you through it. Once the package is published this becomes pip install "dims-network[builder]".

A point-and-click app: drop your files in, click through a wizard, get a ready-to-deploy dashboard. No JSON editing, no file renaming, no terminal scripts.

One prerequisite: you need Python 3.10–3.12 installed (a free, one-time install from python.org/downloads). 3.13 works for everything except motion capture, which has no mediapipe wheel for it. Once the builder is installed, no internet is required to build a dashboard.
  1. Get the builder

    dims-network/dims →

    Clone it, or download the ZIP from that page and unzip it. The builder is the apps/builder/ folder, and the dashboard code it builds against is in the same repository — so there is nothing else to fetch.

  2. Start it — one click

    Double-click the launcher in apps/builder/. It installs everything the first time and then opens the wizard in your browser:

    • macOS: run.command
    • Windows: run.bat
    • Linux: run.sh
    macOS — first time only: you may see “Apple could not verify ‘run.command’ is free of malware.” Click Done (not Move to Trash), then open System Settings → Privacy & Security, scroll to Security, and click Open Anyway next to run.command. This only happens once. (It's macOS flagging any downloaded, unsigned script — not a problem with the builder.)

    Prefer the terminal? That also avoids the macOS prompt above — open a terminal in apps/builder/ and run exactly what the launcher runs:

    pip install -r requirements.txt
    python -m dims_builder

    requirements.txt installs what the builder needs, not the builder itself, so run it as a module from that folder. If you installed the package (pip install -e "./dims[builder]") the command is just dims-builder, from anywhere.

  3. Create a project

    Choose an empty output folder and a title/authors, and say who may see the data — private is the default, and it turns on the commit hook, push hook and CI check that keep recordings out of git. There is nothing to choose about the dashboard code: one scaffold ships in the repository and it is the one used, so a study the builder makes is identical to one made by hand.

  4. Add your files

    Drag in your .mp4 video, your time-series .csv files, your _transcript.json, and optionally an ELAN .eaf. The builder recognises each file, groups them under a session, and checks them as you go — so problems surface before you build.

    Got one CSV with several signals? Drop it in as-is — a CSV with a Time column plus several measurement columns is split automatically into one data type per column, so you don't have to prepare separate files by hand.

  5. Align video & data

    This is where the mismatch warned about at the top of this page gets fixed. Per session, a shared-timeline preview shows the video track above each measurement track, and you either trim the video to a window you pick with a dual-handle slider, or pad the measurements with zeros at either end. Edits are non-destructive: your originals are never modified, and the trim or pad is applied only to the copies written at build time.

  6. Choose optional analyses

    Toggle RQA, cross-wavelet, cross-RQA, the cross-effector network, and ELAN annotations — the wizard explains what each tab shows.

    • RQA — recurrence within a single signal; pick which data types to compute.
    • Cross-wavelet & cross-RQA — coupling between two signals. Pick the exact pairs to compute: chips show every possible pair (all selected by default), and you click to toggle — so you can run, say, bodysync × neuralsync and neuralsync × gaze but skip bodysync × gaze. A signal can appear in several pairs.
    • Cross-effector network — one picture of which signals are coupled with which, moving with the playhead. It reads the cross-wavelet results, so it needs that analysis and its chance level; group your measures here (two people, two conditions) or every one of them lands in a single undifferentiated column.

    Each analysis has a Settings panel for what the study can tune — the recurrence window and target rate, the cross-wavelet picture size and its surrogate count. A line at the foot of the step totals up how many runs that comes to and flags the slow ones, because the first sign that a choice was expensive should not be being forty minutes into the next step.

  7. Build & precompute

    Build writes config.json and copies your files into the exact assets/ layout. Precompute then runs the RQA / cross-wavelet / cross-RQA steps for you in a project-local Python environment — progress streams live.

    The chance level is the expensive part. Coherence is only interpretable against a level estimated by simulation, and that simulation is most of the compute. The cost follows pairs × recordings × number of scales — not minutes of video, so a long recording is not necessarily a slow one. At the publication setting of 300 surrogates a twelve-recording study can take a couple of hours. Start with the default of 100 to see the shape of your data, and raise it when you are ready to report.
  8. Preview & deploy

    Preview opens the finished dashboard locally. The output folder is self-contained and ready to host — the builder shows copy-paste commands for GitHub Pages, Netlify, or Vercel.

Open the Dashboard Builder →