As a clinical trial statistician or programmer, challenge anything in this benchmark: describe a problem in Comments, or propose a fix with the Edit button on any source file.
- Task: Would a real study need this derivation, specified this way? Does it follow CDISC ADaM: variable names, controlled terms, record structure? Flag any rule that is ambiguous or that a sponsor would handle differently.
- Inputs: Do they look like data collected in a real trial, and do they include the situations you would expect to meet in one?
- Expected output: Would independent QC programming reproduce every value from these inputs and rules?
The other tabs beside Comments are background for assessment, not under review.
Summary
README.mdGoal: carry each subject's AGE into ADSL as collected, listing a
subject whose age falls outside 18 to 100 in a warning log rather than
stopping the run, with every file in the Parquet format: the input, the
output dataset, and the warning log (adsl-violations.parquet).
Input: one Parquet file, input/dm.parquet, carrying age (AGE) per
subject.
Note: Parquet carries its own typed fields, so the spec declares no field types for the input, and a missing value is a null rather than an empty field. The golden files compare on what the bytes read back as: field names and order, logical types, row order, nulls, and values, not on the bytes themselves.
Inputs
Under review1 source fileinput/dm.parquet
EditBinary fixture; inspect it in the benchmark source.
Expected output
Under reviewExpected artifactsexpected/adsl-violations.parquet
EditBinary fixture; inspect it in the benchmark source.
expected/adsl.parquet
EditBinary fixture; inspect it in the benchmark source.
Comments and assessment materials
| Dataset Name | Variable Name | Variable Label | Type | Codelist/Controlled Terms | Core | Computational Method | Origin |
|---|---|---|---|---|---|---|---|
| ADSL | STUDYID | Study Identifier | character | Copy value from DM.STUDYID. | Predecessor | ||
| ADSL | USUBJID | Unique Subject Identifier | character | Copy value from DM.USUBJID. | Predecessor | ||
| ADSL | AGE | Age | numeric | Copy value from DM.AGE. | Predecessor |
| Version | Date | Author | Description | Reviewer | Sign-off |
|---|---|---|---|---|---|
| 1.3 | 2026-09-29 | yamaa docs build | Show study codelist names, external dictionaries, and ISO 8601 formats in variable rows; list the document's codelist values and metadata | ||
| 1.2 | 2026-09-29 | yamaa docs build | Classify ADaM copies from a declared input as Predecessor and recodes as Derived, and SDTM recodes of locally derived columns as Derived | ||
| 1.1 | 2026-09-29 | yamaa docs build | Resolve lookups into the donor record they select, and give every derivation shape a plain-language rule instead of its raw YAML | ||
| 1.0 | yamaa docs build | Initial generation from spec.yaml |
run.R
Edit6 lineslibrary(yamaa)# Named `adsl`, not `dm`: the test harness binds the run.py variable to the# primary output's path stem, and this benchmark's output is `adsl.parquet`.adsl <- yamaa_domain("spec.yaml")$outputadslrun.py
Edit6 linesimport yamaa# Named `adsl`, not `dm`: the test harness binds the run.py variable to the# primary output's path stem, and this benchmark's output is `adsl.parquet`.adsl = yamaa.yamaa_domain("spec.yaml").outputadsl
yamaa
Comments
Signed in with GitHub; saved in repository Discussions