Commit fa55d5d
feat: Migrate example_weyland_yutani to REC/2025/03 plate reader schema (#1177)
## Summary
- Migrate `example_weyland_yutani` tutorial parser from
BENCHLING/2023/09 to REC/2025/03 plate reader schema mapper
- First step in upgrading plate reader parsers off vendor-specific
BENCHLING schemas
## Code Changes
**Parser file**: Updated model and mapper imports from
`benchling._2023._09` → `rec._2025._03`
**Structure file**:
- Updated schema mapper imports
- Added two new required `Metadata` fields: `asm_file_identifier` and
`data_system_instance_id`
- Moved `analytical_method_identifier` and
`experimental_data_identifier` from `MeasurementGroup` to individual
`Measurement` instances (per REC/2025/03 schema structure)
## JSON Output Changes
All measurement data values are preserved identically. Structural
changes:
| Change | Details |
|--------|---------|
| Manifest URL | `BENCHLING/2023/09` → `REC/2025/03` |
| New fields | `ASM file identifier`, `data system instance identifier`
(N/A) |
| Field moves | `analytical method identifier` and `experimental data
identifier` moved from `measurement aggregate document` to each
`measurement document` item |
| Field ordering | Some fields reordered within objects (cosmetic,
different model field order) |
**Fields deleted in test data:**
- `root['plate reader aggregate document']['plate reader
document'][0]['measurement aggregate document']['analytical method
identifier']`
- `root['plate reader aggregate document']['plate reader
document'][0]['measurement aggregate document']['experimental data
identifier']`
(These fields moved to individual measurement documents, not actually
lost)
## Migration Status (Plate Reader BENCHLING Parsers)
| Parser | Status | Reason |
|--------|--------|--------|
| example_weyland_yutani | **This PR** | FLUORESCENCE only — clean
migration |
| mabtech_apex | Blocked | OPTICAL_IMAGING only — type removed from REC
|
| agilent_gen5_image | Blocked | OPTICAL_IMAGING only — type removed
from REC |
| ctl_immunospot | Blocked | OPTICAL_IMAGING only — type removed from
REC |
| revvity_kaleido | Blocked | Mixed types including OPTICAL_IMAGING |
## Test plan
- [x] `pytest tests/parsers/example_weyland_yutani/ --force-overwrite` —
2/2 pass
- [x] Full lint (ruff + black + mypy) — clean
- [x] Pre-push hook — 547/547 tests pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent 1ed899d commit fa55d5d
4 files changed
Lines changed: 198 additions & 130 deletions
File tree
- src/allotropy/parsers/example_weyland_yutani
- tests/parsers/example_weyland_yutani/testdata
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
Lines changed: 8 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
88 | 89 | | |
89 | 90 | | |
90 | 91 | | |
| 92 | + | |
91 | 93 | | |
92 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
93 | 97 | | |
94 | 98 | | |
95 | 99 | | |
| |||
101 | 105 | | |
102 | 106 | | |
103 | 107 | | |
104 | | - | |
105 | | - | |
106 | 108 | | |
107 | 109 | | |
108 | 110 | | |
| |||
114 | 116 | | |
115 | 117 | | |
116 | 118 | | |
| 119 | + | |
| 120 | + | |
117 | 121 | | |
118 | 122 | | |
119 | 123 | | |
| |||
0 commit comments