Experiment Design
PsyCloud separates what trials exist from what a trial looks like. You describe conditions with factors and a transformation pipeline; you describe the display once as a screen. This split keeps designs inspectable and reproducible.
The design pipeline
A trial phase generates its trials by transforming factors through ordered steps — the same model whether you build it in Studio's Trial Design tab or in code:
Cross factors into conditions → sample/repeat to a trial count → derive computed columns → shuffle into order, optionally with constraints.
Because each step is explicit, you can see exactly how many trials each produces and what each column resolves to — there are no hidden callbacks deciding trial structure.
Randomization you can reproduce
Randomization is deterministic: it uses explicit, stable seeds, so a participant's sequence can be reconstructed later. Seed per participant when you want each person to get a fresh-but-reproducible order:
shuffle(seed = seed_per_participant("my-study"))Counterbalancing
Between-subject assignment is declared, not left to chance. Declare between-subject factors and
an assignment policy so participants are allocated to conditions in a balanced, auditable way
(between_subjects(...) with an assignment such as a balanced rotation). Counterbalance policies
are part of the bundle and validated at preflight. See
Counterbalancing & Assignment for the full how-to.
PsyCloud ships a library of runnable paradigms (Stroop, Flanker, Go/No-Go, N-Back, visual search, recognition memory, and more) you can load from New Study → Load from an example in Studio, or copy from the SDK example studies. Adapting a known-good design is faster and less error-prone than starting blank.