# A single variable for enrollment-criteria-based cohorts in PPMI: HARMONIZED\_COHORT (script available, feedback welcome)

**URL:** <https://rcop.michaeljfox.org/t/a-single-variable-for-enrollment-criteria-based-cohorts-in-ppmi-harmonized-cohort-script-available-feedback-welcome/1673>\
**Category:** Analyzing and Reusing Data\
**Tags:** ppmi, how-to\
**Created:** [September 4, 2026, 10:05am UTC](https://rcop.michaeljfox.org/t/a-single-variable-for-enrollment-criteria-based-cohorts-in-ppmi-harmonized-cohort-script-available-feedback-welcome/1673 "2026-09-04T10:05:37Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![hirotaka](https://sea1.discourse-cdn.com/michaeljfox/user_avatar/rcop.michaeljfox.org/hirotaka/32/58_2.png) [@hirotaka](https://rcop.michaeljfox.org/u/hirotaka)\
**Post date:** [September 4, 2026, 10:05am UTC](https://rcop.michaeljfox.org/t/a-single-variable-for-enrollment-criteria-based-cohorts-in-ppmi-harmonized-cohort-script-available-feedback-welcome/1673/1 "2026-09-04T10:05:37Z")

</div>

I built a cohort variable for PPMI that maps directly to the enrollment criteria, because the study has developed over time and I wanted something easier to track “ **Which criteria set did this participant enter under?** ” to understand the intepretation of the results. `Participant_Status` already has most of the ingredients (`SCREENEDAM`, the `ENRL*` arm flags, `COHORT_DEFINITION`, PATNO allocation). I combined them and cross-checked to see if they can be harmonized over different protocols / protocol changes.

The clearest example is the PD cohort. Over time, “Parkinson’s Disease” participants have come in under several different criteria sets: the original de novo, untreated, DAT-deficit-confirmed cohort; the genetic cohort/registry; and, in Amendment 4, the sporadic/genetic arms plus the new **PD Normosmic** arm. Depending on the question, you may want to treat those as one group or several, so I made that choice explicit.

From `Participant_Status` alone, cross-checked against the protocol documents, I defined:

[Protocol comparison table [link]](https://github.com/MJFF-ResearchCommunity/Useful-PPMI-Clinical-Codes/blob/8fc33c580fd1bc9f04e71b3748511bab96971458/docs/PPMI_Enrollment_Strata_IE_Criteria_Table.pdf)

- `PROTOCOL_ERA` — the screening protocol era.
- `STUDY_ARM` — the enrollment arm from the `ENRL*` flags.
- `COHORT_STRATUM` — the highest-resolution era × arm grouping.
- `HARMONIZED_COHORT` — a simplified version that only merges strata when the underlying criteria are nearly the same.

This cuts the raw categories down to a much smaller set of usable groups while keeping the more detailed fields available for sensitivity analyses. The top 10 `HARMONIZED_COHORT` counts in the Aug. 11, 2026 PPMI download were:

```auto
HARMONIZED_COHORT
Prodromal_Hyposmia_DATera 2931
Prodromal_UPSIT_SAAgated_AM4 1683
PD_DeNovoSporadic_DATgated 1512
Prodromal_RBD_DATera 536
Prodromal_GeneticCarrier_PPMI1 442
HC_DATnormal 432
Unresolved_PPMI2_pending 386
PD_Genetic_PPMI1_unrestricted 301
PD_Normosmic_AM4 268
Prodromal_Pilot_HPSM_RBD_PPMI1 215

```

One thing I noticed during validation is that the detailed fields still matter: for example, the merged hyposmia-prodromal group shows higher SAA positivity in later amendments, which is exactly why I keep `COHORT_STRATUM` and `PROTOCOL_ERA` alongside `HARMONIZED_COHORT`. They make it easy to go back to the finer-grained strata when needed.

One caveat: `HARMONIZED_COHORT` is meant to group people by criteria set, not to replace the genetics-specific subcohort labels. If you want to separate LRRK2, GBA, and SNCA carrier arms, `COHORT_STRATUM` is the better field.

The script is available in the [MJFF-ResearchCommunity/Useful-PPMI-Clinical-Codes repository](https://github.com/MJFF-ResearchCommunity/Useful-PPMI-Clinical-Codes/blob/8fc33c580fd1bc9f04e71b3748511bab96971458/code/Enrollment_based_strata.py). Feedback welcome. Thank you @danieltds for reviewing the code!

---

<div class="post-metadata">

**Author:** ![vcatterson](https://sea1.discourse-cdn.com/michaeljfox/user_avatar/rcop.michaeljfox.org/vcatterson/32/500_2.png) [@vcatterson](https://rcop.michaeljfox.org/u/vcatterson)\
**Post date:** [September 4, 2026, 3:37pm UTC](https://rcop.michaeljfox.org/t/a-single-variable-for-enrollment-criteria-based-cohorts-in-ppmi-harmonized-cohort-script-available-feedback-welcome/1673/2 "2026-09-04T15:37:30Z")

</div>

Thank you for sharing this work! It’s a really interesting way of re-categorizing the participants, and seems like a very useful tool. I will apply these new labels to my own sub-typing work, to look for technical bias not accounted for by other attributes.

---

<div class="post-metadata">

**Author:** ![erainaldi](https://avatars.discourse-cdn.com/v4/letter/e/919ad9/32.png) [@erainaldi](https://rcop.michaeljfox.org/u/erainaldi)\
**Post date:** [September 10, 2026, 9:45pm UTC](https://rcop.michaeljfox.org/t/a-single-variable-for-enrollment-criteria-based-cohorts-in-ppmi-harmonized-cohort-script-available-feedback-welcome/1673/3 "2026-09-10T21:45:03Z")

</div>

Cool! Thanks for sharing Hirotaka!
