Skip to main content

Research Infrastructure

iAm provides a complete research data management system for running multi-day studies with multiple participants. This page describes the project, cohort, and collection task entities that form the research layer of the platform.

Research Entities

Project

A Project represents a single atomic research endeavor. It serves as the parent to all data collection activities.

  • Owned by a User (the principal investigator)
  • Contains one or more Cohorts
  • Links to Observers enrolled in the study
  • Can produce Publications that cite the measurement definitions used

Cohort

A Cohort groups participants within a Project. Projects can have as many cohorts as needed.

Common uses:

  • Control vs. experimental groups: Different cohorts for different conditions
  • Longitudinal waves: Different cohorts for different time periods
  • Skill levels: Grouping by meditation experience, for example

Each Cohort:

  • Contains one or more CollectionTasks
  • Links to the Observers (participants) assigned to it
  • Defines the measurement protocol for its members

CollectionTask

A CollectionTask defines a single measurement requirement for participants.

CollectionTaskState

For each participant assigned to a CollectionTask, a CollectionTaskState tracks their progress.

  • Links to the Observer (participant) and their completed measurements
  • Tracks how many completions out of the required total
  • All Observer measurements for a given CollectionTask are linked through this entity

Relationship Structure

Project

├── HAS → Cohort (Control Group)
│ ├── HAS → CollectionTask (7x Verbal Thought Sessions)
│ │ └── HAS → CollectionTaskState (per observer)
│ │ ├── HAS → Observer
│ │ └── HAS → Session, Survey, or Sequence
│ ├── HAS → CollectionTask (Pre/Post FFMQ-15)
│ └── HAS → Observer (participants)

└── HAS → Cohort (Experimental Group)
├── HAS → CollectionTask (...)
└── HAS → Observer (participants)

Study Protocol Example: CRAWL

The CRAWL (Conscious Reporting of Awareness With Logging) pilot study demonstrates how these entities work together in a real 5-day protocol:

Project: "CRAWL" -- studying verbal thought patterns around meditation practice

Cohort: Single cohort with all participants

Collection Tasks:

  1. Complete a daily Sequence (5 times total) containing:
    • Toronto Mindfulness Scale (pre-practice survey)
    • Pre-practice verbal thought tracking session (5 min)
    • Nostril breath awareness meditation session (20 min)
    • Post-practice verbal thought tracking session (5 min)
    • Toronto Mindfulness Scale (post-practice survey)
    • Meditation Depth Index (survey)
    • Reflective awareness survey
  2. Complete baseline questionnaires (Day 1 only):
    • Onboarding survey
    • FFMQ-15
    • WEMWBS
  3. Complete post-study questionnaires (Day 5 only):
    • FFMQ-15 (post)
    • WEMWBS (post)
    • Feedback survey

Each participant's progress through these tasks is tracked via CollectionTaskState entities, with all completed Sessions, Surveys, and Sequences linked back to the research infrastructure.

Additional Research Features

Publications

Publication entities link research papers to specific type definitions used in iAm. This creates a bidirectional connection between academic work and the measurement instruments, enabling evidence-based refinement of experience definitions.

Participant Codes

ParticipantCodeRecord entities manage study enrollment codes, linking anonymous participant identifiers to Observer entities within a Project.

Presets

Preset entities save configurations for quick session setup -- storing specific ExperienceType selections, duration preferences, and other parameters. Useful for ensuring consistent protocol deployment across participants.

Querying Research Data

Get all sessions for a project

MATCH (project:Project {uniqueName: "CRAWL"})
-[:HAS]->(cohort:Cohort)
-[:HAS]->(observer:Observer)
-[:HAS]->(session:Session)
RETURN observer.alias, session.id, session.startTime, session.endTime
ORDER BY observer.alias, session.startTime

Get collection task completion status

MATCH (project:Project {uniqueName: "CRAWL"})
-[:HAS]->(cohort:Cohort)
-[:HAS]->(task:CollectionTask)
-[:HAS]->(state:CollectionTaskState)
-[:HAS]->(observer:Observer)
RETURN observer.alias, task.name, state.completedCount, task.requiredCount

Get survey responses for a specific instrument

MATCH (project:Project {uniqueName: "CRAWL"})
-[:HAS]->(cohort:Cohort)
-[:HAS]->(task:CollectionTask)
-[:IMPLEMENTS]->(stv:SurveyTypeVersion {name: "FFMQ-15"})
MATCH (cohort)-[:HAS]->(observer:Observer)
MATCH (observer)<-[:HAS]-(survey:Survey)-[:IMPLEMENTS]->(stv)
MATCH (survey)-[:REPORTED]->(response:Response)-[:TO]->(question:Question)
RETURN observer.alias, question.prompt, response.value
ORDER BY observer.alias, question.index