PsyCloud

Data & Analysis

PsyCloud stores trial-level data with strong provenance. This guide covers getting it out and into your analysis tool.

Export your data

The simplest path is the Data perspective: pick a run and export CSV, JSON, or a snapshot. CSV is the most convenient for analysis.

Export needs a run

Data export operates on hosted runs. Local Preview sessions are for debugging and aren't exportable here — publish and host a run to collect exportable data.

Load it

analyze.py
import pandas as pd
 
df = pd.read_csv("study_export.csv")
print(f"Participants: {df.participant_id.nunique()}")
print(f"Overall accuracy: {df.correct.mean():.1%}")
print(f"Mean RT: {df.rt.mean():.0f} ms")
analyze.R
library(tidyverse)
 
data <- read_csv("study_export.csv")
data |> summarise(
  participants = n_distinct(participant_id),
  accuracy     = mean(correct, na.rm = TRUE),
  mean_rt      = mean(rt, na.rm = TRUE)
)

The data shape

Each row is one trial. The exact columns depend on your design, but trial-level exports typically include:

ColumnMeaning
participant_id, session_idwho, and which session
trial_number, block_numberposition in the study
conditionthe trial's condition
stimulus, responsewhat was shown / what they did
correctwhether the response was correct
rtresponse time (ms)

…plus any factor and derived columns from your design.

Analyze by condition

by_condition = df.groupby("condition").agg(
    accuracy=("correct", "mean"),
    mean_rt=("rt", "mean"),
    n=("rt", "count"),
)
data |>
  group_by(condition) |>
  summarise(accuracy = mean(correct, na.rm = TRUE),
            mean_rt  = mean(rt, na.rm = TRUE),
            n        = n())

Clean and screen

Filter implausible RTs and aggregate per participant first (then across participants — don't average averages):

clean = df[(df.rt > 200) & (df.rt < 2000) & df.correct.notna()]
per_participant = clean.groupby("participant_id").agg(
    mean_rt=("rt", "mean"), accuracy=("correct", "mean")
)

Common quality flags: median RT under ~300 ms (too fast), a high timeout rate, near-chance accuracy, or near-zero RT variance (button-mashing). Analyze any attention-check trials separately and report every exclusion.

Reproducible by construction

Because randomization is seeded and counterbalancing is explicit, you can reconstruct a participant's exact sequence — pair that with a preregistered analysis script for fully reproducible results.

Next

Session Replay (Time Machine) →

Replay and explain an individual session when the numbers look off.