ReproSchema�Harmonize data by design
satra@mit.edu
ABCD-ReproNim: An ABCD Course for Reproducible Analyses
The ABCD-ReproNim Course was designed to provide a comprehensive background to data from the ABCD Study® while delivering hands-on, interactive instruction to enable rigorous and reproducible data analyses.
ABCD-ReproNim Course is supported by an award from the National Institute of Drug Abuse (R25-DA051675).
ABCD-ReproNim training is targeted to students, postdoctoral fellows, and early career faculty.
Thank you!
Sanu Ann
Abraham
Daniel Low
Anisha Keshavan
Zaliqa Rosli
Remi Gau
Arno Klein
Jon Clucas
Child Mind Institute
Mindlogger Team
McGill U.�LORIS
U Louvain�COBIDAS
Octave Bioscience
MIT
Harvard�MIT
Hauke Bartsch
U Bergen�ABCD
What is ReproSchema?
It is a ReproNim Project to:
Assessments
Data Collection
Data Submission
Mostly In-Lab
Public/Proprietary
Collaborators/Public/Private
indLogger
The Challenges
7
NDA
10 != 43
8
ReproSchema Tools
What can you do now
Use the ReproSchema library.
Convert RedCap activities or submit new ones to the library.
Create your own versioned data collection protocol on your own Github repo.
Collect data using a browser on computer, tablet, or smartphone.
Use Mindlogger, RedCap.
Use multilingual assessments.
Extend language support to existing assessments.
Technical dive
The Schema
The Validator
The Formats
The Infrastructure
Versioning/Persistence
Protocol
├── Activity
│ ├── Field
│ │ └── ResponseOption
│ └── Field
│ └── ResponseOption
│ ...
├── Activity
│ ...
...
ResponseActivity
├── Response
│ ...
├── Response
│ ...
Technical dive: The schema
Protocol
├── Activity
│ ├── Field
│ │ └── ResponseOption
│ └── Field
│ │ └── ResponseOption
│ ├── Activity
│ │ ├── Field
│ │ │ └── ResponseOption
│ │ ...
│ ...
├── Activity
│ ...
...
Schema classes/objects
Technical dive: The validator
Technical dive: The formats
@prefix ex: <http://example.org/ns#> .
@prefix schema: <http://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:Bob
a schema:Person ;
schema:givenName "Robert" ;
schema:familyName "Junior" ;
schema:birthDate "1971-07-07"^^xsd:date ;
schema:deathDate "1968-09-10"^^xsd:date ;
schema:address ex:BobsAddress .
ex:BobsAddress
schema:streetAddress "1600 Amphitheatre Pkway" ;
schema:postalCode 9404 .
{
"@context": { "@vocab": "http://schema.org/" },
"@id": "http://example.org/ns#Bob",
"@type": "Person",
"givenName": "Robert",
"familyName": "Junior",
"birthDate": "1971-07-07",
"deathDate": "1968-09-10",
"address":
{
"@id": "http://example.org/ns#BobsAddress",
"streetAddress": "1600 Amphitheatre Pkway",
"postalCode": 9404
}
}
Technical dive: The formats
@prefix ex: <http://example.org/ns#> .
@prefix sdo: <http://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ex:Bob
a sdo:Person ;
sdo:givenName "Robert" ;
sdo:familyName "Junior" ;
sdo:birthDate "1971-07-07"^^xsd:date ;
sdo:deathDate "1968-09-10"^^xsd:date ;
sdo:address ex:BobsAddress .
ex:BobsAddress
sdo:streetAddress "1600 Amphitheatre Pkway" ;
sdo:postalCode 9404 .
{
"@context": { "@vocab": "http://schema.org/" },
"@id": "http://example.org/ns#Bob",
"@type": "Person",
"givenName": "Robert",
"familyName": "Junior",
"birthDate": "1971-07-07",
"deathDate": "1968-09-10",
"address":
{
"@id": "http://example.org/ns#BobsAddress",
"streetAddress": "1600 Amphitheatre Pkway",
"postalCode": 9404
}
}
Technical dive: The formats
ex:Bob
a sdo:Person ;
sdo:givenName "Robert" ;
sdo:familyName "Junior" ;
sdo:birthDate "1971-07-07"^^xsd:date ;
sdo:deathDate "1968-09-10"^^xsd:date ;
sdo:address ex:BobsAddress .
ex:BobsAddress
sdo:streetAddress "1600 Amphitheatre Pkway" ;
sdo:postalCode 9404 .
Example: Patient Health Questionnaire Schema
{
"@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0-rc1/contexts/generic",
"@id": "PHQ9_schema",
"@type": "reproschema:Activity",
"prefLabel": "PHQ-9 Assessment",
"description": "PHQ-9 assessment schema",
"schemaVersion": "1.0.0-rc1",
"version": "0.0.1",
"citation": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1495268/",
"preamble": {
"en": "Over the last 2 weeks, how often have you been bothered by any of the following problems?",
"es": "Durante las últimas 2 semanas, ¿con qué frecuencia le han molestado los siguintes problemas?"
},
"compute": [
{
"variableName": "phq9_total_score",
"jsExpression": "phq9_1 + phq9_2 + phq9_3 + phq9_4 + phq9_5 + phq9_6 + phq9_7 + phq9_8 + phq9_9"
}
],
"ui": {
"inputType": "section",
"shuffle": false
...
Multilingual support
"order": [
"items/phq9_1",
...
"items/phq9_10"
],
"addProperties": [
{
"isAbout": "items/phq9_1",
"variableName": "phq9_1",
"valueRequired": true,
"isVis": true
},
...
{
"isAbout": "items/phq9_10",
"variableName": "phq9_10",
"isVis": "phq9_1 > 0 || phq9_2 > 0 || phq9_3 > 0 || phq9_4 > 0 || phq9_5 > 0 || phq9_6 > 0 || phq9_7 > 0 || phq9_8 > 0 || phq9_9 > 0"
},
{
"isAbout": "items/phq9_total_score",
"variableName": "phq9_total_score",
"isVis": false
}
]
}
}
{
"@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0-rc1/contexts/generic",
"@type": "reproschema:ResponseActivity",
"@id": "uuid:efc5195a-734e-41f1-b1f8-51d17c23831a",�
"used": [
"https://raw.githubusercontent.com/sensein/covid19/master/activity/covid19/items/covid19_clinical_history",
"https://raw.githubusercontent.com/sensein/covid19/master/activity/covid19/covid19_schema",
"https://raw.githubusercontent.com/sensein/covid19/master/protocol/Covid19_schema"
],
"inLanguage": "en",
"startedAtTime": "2020-08-07T17:41:05.367Z",
"endedAtTime": "2020-08-07T17:41:10.249Z",�
"wasAssociatedWith": {
"version": "0.0.1",
"url": "https://sensein.github.io/covid19/",
"@id": "https://github.com/ReproNim/reproschema-ui"
},
"generated": "uuid:318ad01a-b4a7-4235-97b2-b5bd0574328d"
}
ResponseActivity
{
"@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0-rc1/contexts/generic",
"@type": "reproschema:Response",
"@id": "uuid:318ad01a-b4a7-4235-97b2-b5bd0574328d",
"wasAttributedTo": {
"@id": "ceb1e03a-7ed0-4978-811e-7766cb8428fd",
"subject_id": "satra"
},
"isAbout": "https://raw.githubusercontent.com/sensein/covid19/master/activity/covid19/items/covid19_clinical_history",
"value": [
4,
5,
6
]
}
Response
Technical dive: The infrastructure
The Reproschema project is organized around several ReproNim Github repositories.
And one additional repo that is currently in my group's Github org
Accessed via Github http server�Maintains relations via relative paths
Study Protocols
User or organization repositories
Deployed via Continuous Integration to Github pages
Tested via Continuous Integration
Server side - Github
ReproNim Org
Lab, Institution, or Cloud Server
Client side
Limitations and challenges
How you can help
Summary