Skip to content

Commit 1309149

Browse files
smrgeoinfoclaude
andcommitted
Reorder TAPP workbook columns: pubs to right edge
Move the four structural columns (Level / CDIF path / matchComment / implementation notes) from cols X-AA to cols G-J so they sit adjacent to the A-F metadata block. Pub columns now run K..AA (P0.. P10plag for EMPA, 17 total) and can grow rightward without disturbing anything else. Changes: - docs/TAPP_EPMA_filled.xlsx, docs/TAPP_EPMA_filled-noInterp.xlsx reordered in place. The docs/TAPP_EPMA_filled-interp.xlsx side workbook is regenerated to match the new layout. - tools/_tapp_lib.py: COL dict updated (level=6, cdif_path=7, matchComment=8, impl=9, p_start=10, p_end=26). - tools/_reorder_tapp_columns.py: one-shot helper kept in repo so older workbooks can be migrated with the same logic. - docs/TAPP_TEMPLATE_GUIDE.md, agents.md: column-letter references updated throughout (impl notes is col J, CDIF path is col H, pub columns start at K). New layout note in the guide pointing at the reorder helper for legacy workbooks. - _sources regen artifacts for analysisOrder.json and exampleempaTAPP-P0.json: incidental description-text expansion that the spreadsheet already had but earlier regens had not picked up. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent c9c630d commit 1309149

17 files changed

Lines changed: 186 additions & 259 deletions

_sources/techniqueProtocols/analyteColumns/analysisOrder.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$schema": "https://json-schema.org/draft/2020-12/schema",
33
"$id": "ada:analyteColumn/empaTAPP/analysisOrder",
44
"title": "Sequence",
5-
"description": "Order of analysis on spectormeter.",
5+
"description": "Order of analysis on spectormeter. To give an example, if there are 5 detectors, 5 analytes (elements) will be measured simultaneously on the first pass (i.e., Sequence = 1 for all of them), then 5 other analytes will be measured simultaneously on the second pass (i.e., Sequence = 2 for these 5 analytes), etc. The numbering depends on the order of these analytes being measured during an analysis. Also, if there are 20 analytes, there will be at least 4 passes in this case.",
66
"type": "object",
77
"properties": {
88
"@context": {
@@ -54,7 +54,7 @@
5454
],
5555
"schema:name": "Sequence",
5656
"schema:valueName": "analysisOrder",
57-
"schema:description": "Order of analysis on spectormeter.",
57+
"schema:description": "Order of analysis on spectormeter. To give an example, if there are 5 detectors, 5 analytes (elements) will be measured simultaneously on the first pass (i.e., Sequence = 1 for all of them), then 5 other analytes will be measured simultaneously on the second pass (i.e., Sequence = 2 for these 5 analytes), etc. The numbering depends on the order of these analytes being measured during an analysis. Also, if there are 20 analytes, there will be at least 4 passes in this case.",
5858
"ada:dataType": "integer",
5959
"schema:readonlyValue": true,
6060
"ada:tier": "M"

_sources/techniqueProtocols/empaTAPP/exampleempaTAPP-P0.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@
380380
],
381381
"schema:name": "Sequence",
382382
"schema:valueName": "analysisOrder",
383-
"schema:description": "Order of analysis on spectormeter.",
383+
"schema:description": "Order of analysis on spectormeter. To give an example, if there are 5 detectors, 5 analytes (elements) will be measured simultaneously on the first pass (i.e., Sequence = 1 for all of them), then 5 other analytes will be measured simultaneously on the second pass (i.e., Sequence = 2 for these 5 analytes), etc. The numbering depends on the order of these analytes being measured during an analysis. Also, if there are 20 analytes, there will be at least 4 passes in this case.",
384384
"ada:dataType": "integer",
385385
"schema:readonlyValue": true,
386386
"ada:tier": "M"

agents.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ This is why a future `xrdTAPP` regen can `$ref` empaTAPP-originated catalog entr
197197

198198
`_sources/techniqueProtocols/empaTAPP/` extends `tappDefinition` (via `allOf`) with EPMA-specific top-level properties (`ada:beamMode`, `ada:beamDiameterDefault`, `ada:beamCurrentDefault`, `ada:matrixCorrectionMethod`, `ada:acceleratingVoltageDefault`) plus `oneOf` constraints on `ada:methodParameters[]` and `ada:analyteTemplate.ada:analyteColumns[]` that reference the shared catalog dirs at `techniqueProtocols/`.
199199

200-
- **Spec source:** `docs/TAPP_EPMA_filled.xlsx`, sheet `TAPP`. Each row's `implementation notes` column (column U) tags it as `property:`, `parameter:`, `analyteColumn:` (or combinations) and carries `readOnly`, `dataType`, optional `enum {...}`. Per-tag fields are scoped to the chunk of impl-notes between consecutive tags.
200+
- **Spec source:** `docs/TAPP_EPMA_filled.xlsx`, sheet `TAPP`. Layout is A–F (item / desc / basic / dtype / example / Last update), G–J (Level / CDIF path / matchComment / impl notes), K..AA (pub columns P0..P10plag — extensible to the right). Each row's `implementation notes` column (column J) tags it as `property:`, `parameter:`, `analyteColumn:` (or combinations) and carries `readOnly`, `dataType`, optional `enum {...}`. Per-tag fields are scoped to the chunk of impl-notes between consecutive tags.
201201
- **Generated by:** `tools/build_TAPP_from_spreadsheet.py` (TAPP side) + `tools/build_detail_BB.py` (detail side). Both read the same xlsx; the routing rule above splits parameters between empaTAPP and detailEMPA.
202202
- **Currently emits:** 26 analyteColumns, 6 readOnly:true parameterTemplates, 4 readOnly:false parameterValues, 12 vocabularies, the empaTAPP `schema.yaml`, `detailEMPA/parametersConstraint.yaml`, 10 paired `exampleempaTAPP-P{N}.json` + `exampledetailEMPA-P{N}.json` instances, plus the comprehensive hand-authored `exampleempaTAPP-all.json` + `exampledetailEMPA-all.json`.
203203
- **Validation rule for per-pub examples:** when a publication's value for an enum-constrained property doesn't exactly match an enum entry, the generator skips that property in the example rather than emitting invalid data. For numeric `schema:value` fields, `additional_property_obj` uses `anyOf [<typed>, string]` so qualified publication-style values like `"0 (focused)"` validate alongside clean numbers.

build/interp-review/exampleempaTAPP-P0-interp.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@
380380
],
381381
"schema:name": "Sequence",
382382
"schema:valueName": "analysisOrder",
383-
"schema:description": "Order of analysis on spectormeter.",
383+
"schema:description": "Order of analysis on spectormeter. To give an example, if there are 5 detectors, 5 analytes (elements) will be measured simultaneously on the first pass (i.e., Sequence = 1 for all of them), then 5 other analytes will be measured simultaneously on the second pass (i.e., Sequence = 2 for these 5 analytes), etc. The numbering depends on the order of these analytes being measured during an analysis. Also, if there are 20 analytes, there will be at least 4 passes in this case.",
384384
"ada:dataType": "integer",
385385
"schema:readonlyValue": true,
386386
"ada:tier": "M"

build/interp-review/exampleempaTAPP-P1-interp.json

Lines changed: 10 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -115,18 +115,6 @@
115115
"@id": "ada:vocab/empaTAPP/epmaTechnique"
116116
}
117117
},
118-
{
119-
"@id": "ada:analyteColumn/empaTAPP/xrayEmissionLine",
120-
"@type": [
121-
"schema:PropertyValueSpecification"
122-
],
123-
"schema:name": "X-ray Line",
124-
"schema:valueName": "xrayEmissionLine",
125-
"schema:description": "The X-ray emission line measured for this element.",
126-
"ada:dataType": "string",
127-
"schema:readonlyValue": true,
128-
"ada:tier": "M"
129-
},
130118
{
131119
"@id": "ada:analyteColumn/empaTAPP/peakCountingTime",
132120
"@type": [
@@ -150,100 +138,68 @@
150138
"ada:dataType": "number",
151139
"schema:readonlyValue": true,
152140
"ada:tier": "M"
153-
},
154-
{
155-
"@id": "ada:analyteColumn/empaTAPP/primaryCalibrationStandard",
156-
"@type": [
157-
"schema:PropertyValueSpecification"
158-
],
159-
"schema:name": "Primary Calibration Standard Name",
160-
"schema:valueName": "primaryCalibrationStandard",
161-
"schema:description": "Primary reference material used for element standardization (calibration).",
162-
"ada:dataType": "string",
163-
"schema:readonlyValue": true,
164-
"ada:tier": "M"
165141
}
166142
],
167143
"ada:defaultAnalytes": [
168144
{
169145
"analyte": "Si",
170146
"epmaTechnique": "",
171-
"xrayEmissionLine": "",
172147
"peakCountingTime": 20,
173-
"backgroundCountingTime": 10,
174-
"primaryCalibrationStandard": "Anorthite"
148+
"backgroundCountingTime": 10
175149
},
176150
{
177151
"analyte": "Al",
178152
"epmaTechnique": "",
179-
"xrayEmissionLine": "",
180153
"peakCountingTime": 20,
181-
"backgroundCountingTime": 10,
182-
"primaryCalibrationStandard": "Anorthite"
154+
"backgroundCountingTime": 10
183155
},
184156
{
185157
"analyte": "Ca",
186158
"epmaTechnique": "",
187-
"xrayEmissionLine": "",
188159
"peakCountingTime": 20,
189-
"backgroundCountingTime": 10,
190-
"primaryCalibrationStandard": "Anorthite"
160+
"backgroundCountingTime": 10
191161
},
192162
{
193163
"analyte": "Na",
194164
"epmaTechnique": "",
195-
"xrayEmissionLine": "",
196165
"peakCountingTime": 20,
197-
"backgroundCountingTime": 10,
198-
"primaryCalibrationStandard": "Albite"
166+
"backgroundCountingTime": 10
199167
},
200168
{
201169
"analyte": "Fe",
202170
"epmaTechnique": "",
203-
"xrayEmissionLine": "",
204171
"peakCountingTime": 20,
205-
"backgroundCountingTime": 10,
206-
"primaryCalibrationStandard": "Fayalite"
172+
"backgroundCountingTime": 10
207173
},
208174
{
209175
"analyte": "Mg",
210176
"epmaTechnique": "",
211-
"xrayEmissionLine": "",
212177
"peakCountingTime": 20,
213-
"backgroundCountingTime": 10,
214-
"primaryCalibrationStandard": "Forsterite"
178+
"backgroundCountingTime": 10
215179
},
216180
{
217181
"analyte": "Mn",
218182
"epmaTechnique": "",
219-
"xrayEmissionLine": "",
220183
"peakCountingTime": 20,
221-
"backgroundCountingTime": 10,
222-
"primaryCalibrationStandard": "Mn2SiO4"
184+
"backgroundCountingTime": 10
223185
},
224186
{
225187
"analyte": "Ti",
226188
"epmaTechnique": "",
227-
"xrayEmissionLine": "",
228189
"peakCountingTime": 20,
229-
"backgroundCountingTime": 10,
230-
"primaryCalibrationStandard": "TiO2"
190+
"backgroundCountingTime": 10
231191
},
232192
{
233193
"analyte": "Cr",
234194
"epmaTechnique": "",
235-
"xrayEmissionLine": "",
236195
"peakCountingTime": 20,
237-
"backgroundCountingTime": 10,
238-
"primaryCalibrationStandard": "Cr2O3"
196+
"backgroundCountingTime": 10
239197
},
240198
{
241199
"analyte": "K",
242200
"epmaTechnique": "",
243-
"xrayEmissionLine": "",
244201
"peakCountingTime": 20,
245-
"backgroundCountingTime": 10,
246-
"primaryCalibrationStandard": "Microcline"
202+
"backgroundCountingTime": 10
247203
}
248204
]
249205
}

build/interp-review/exampleempaTAPP-P2-interp.json

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,6 @@
9898
"@id": "ada:vocab/empaTAPP/epmaTechnique"
9999
}
100100
},
101-
{
102-
"@id": "ada:analyteColumn/empaTAPP/primaryCalibrationStandard",
103-
"@type": [
104-
"schema:PropertyValueSpecification"
105-
],
106-
"schema:name": "Primary Calibration Standard Name",
107-
"schema:valueName": "primaryCalibrationStandard",
108-
"schema:description": "Primary reference material used for element standardization (calibration).",
109-
"ada:dataType": "string",
110-
"schema:readonlyValue": true,
111-
"ada:tier": "M"
112-
},
113101
{
114102
"@id": "ada:analyteColumn/empaTAPP/typicalDetectionLimit",
115103
"@type": [
@@ -127,61 +115,51 @@
127115
{
128116
"analyte": "Si",
129117
"epmaTechnique": "",
130-
"primaryCalibrationStandard": "Natural kaersutite",
131118
"typicalDetectionLimit": "SiO2: 0.02 wt%"
132119
},
133120
{
134121
"analyte": "Mg",
135122
"epmaTechnique": "",
136-
"primaryCalibrationStandard": "Natural kaersutite",
137123
"typicalDetectionLimit": "MgO: 0.02 wt%"
138124
},
139125
{
140126
"analyte": "Fe",
141127
"epmaTechnique": "",
142-
"primaryCalibrationStandard": "Natural kaersutite",
143128
"typicalDetectionLimit": "FeO: 0.05 wt%"
144129
},
145130
{
146131
"analyte": "Na",
147132
"epmaTechnique": "",
148-
"primaryCalibrationStandard": "Jadeite",
149133
"typicalDetectionLimit": "Na2O: 0.02 wt%"
150134
},
151135
{
152136
"analyte": "Al",
153137
"epmaTechnique": "",
154-
"primaryCalibrationStandard": "Jadeite",
155138
"typicalDetectionLimit": "Al2O3: 0.02 wt%"
156139
},
157140
{
158141
"analyte": "Ca",
159142
"epmaTechnique": "",
160-
"primaryCalibrationStandard": "Bustamite",
161143
"typicalDetectionLimit": "CaO: 0.02 wt%"
162144
},
163145
{
164146
"analyte": "Mn",
165147
"epmaTechnique": "",
166-
"primaryCalibrationStandard": "Bustamite",
167148
"typicalDetectionLimit": "MnO: 0.06 wt%"
168149
},
169150
{
170151
"analyte": "K",
171152
"epmaTechnique": "",
172-
"primaryCalibrationStandard": "K-feldspar",
173153
"typicalDetectionLimit": "K2O: 0.01 wt%"
174154
},
175155
{
176156
"analyte": "Ti",
177157
"epmaTechnique": "",
178-
"primaryCalibrationStandard": "Synthetic rutile",
179158
"typicalDetectionLimit": "TiO2: 0.03 wt%"
180159
},
181160
{
182161
"analyte": "Cr",
183162
"epmaTechnique": "",
184-
"primaryCalibrationStandard": "Cr2O3",
185163
"typicalDetectionLimit": "Cr2O3: 0.03 wt%"
186164
}
187165
]

build/interp-review/exampleempaTAPP-P4-interp.json

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -115,18 +115,6 @@
115115
"@id": "ada:vocab/empaTAPP/epmaTechnique"
116116
}
117117
},
118-
{
119-
"@id": "ada:analyteColumn/empaTAPP/xrayEmissionLine",
120-
"@type": [
121-
"schema:PropertyValueSpecification"
122-
],
123-
"schema:name": "X-ray Line",
124-
"schema:valueName": "xrayEmissionLine",
125-
"schema:description": "The X-ray emission line measured for this element.",
126-
"ada:dataType": "string",
127-
"schema:readonlyValue": true,
128-
"ada:tier": "M"
129-
},
130118
{
131119
"@id": "ada:analyteColumn/empaTAPP/peakCountingTime",
132120
"@type": [
@@ -151,18 +139,6 @@
151139
"schema:readonlyValue": true,
152140
"ada:tier": "M"
153141
},
154-
{
155-
"@id": "ada:analyteColumn/empaTAPP/primaryCalibrationStandard",
156-
"@type": [
157-
"schema:PropertyValueSpecification"
158-
],
159-
"schema:name": "Primary Calibration Standard Name",
160-
"schema:valueName": "primaryCalibrationStandard",
161-
"schema:description": "Primary reference material used for element standardization (calibration).",
162-
"ada:dataType": "string",
163-
"schema:readonlyValue": true,
164-
"ada:tier": "M"
165-
},
166142
{
167143
"@id": "ada:analyteColumn/empaTAPP/typicalDetectionLimit",
168144
"@type": [
@@ -180,91 +156,71 @@
180156
{
181157
"analyte": "Si",
182158
"epmaTechnique": "",
183-
"xrayEmissionLine": "",
184159
"peakCountingTime": 20,
185160
"backgroundCountingTime": 10,
186-
"primaryCalibrationStandard": "Asbestos microcline",
187161
"typicalDetectionLimit": "Si: 0.05 wt%"
188162
},
189163
{
190164
"analyte": "Al",
191165
"epmaTechnique": "",
192-
"xrayEmissionLine": "",
193166
"peakCountingTime": 20,
194167
"backgroundCountingTime": 10,
195-
"primaryCalibrationStandard": "Asbestos microcline",
196168
"typicalDetectionLimit": "Al: 0.06 wt%"
197169
},
198170
{
199171
"analyte": "K",
200172
"epmaTechnique": "",
201-
"xrayEmissionLine": "",
202173
"peakCountingTime": 20,
203174
"backgroundCountingTime": 10,
204-
"primaryCalibrationStandard": "Asbestos microcline",
205175
"typicalDetectionLimit": "K: 0.02 wt%"
206176
},
207177
{
208178
"analyte": "Ca",
209179
"epmaTechnique": "",
210-
"xrayEmissionLine": "",
211180
"peakCountingTime": 20,
212181
"backgroundCountingTime": 10,
213-
"primaryCalibrationStandard": "Synthetic anorthite",
214182
"typicalDetectionLimit": "Ca: 0.02 wt%"
215183
},
216184
{
217185
"analyte": "Na",
218186
"epmaTechnique": "",
219-
"xrayEmissionLine": "",
220187
"peakCountingTime": 20,
221188
"backgroundCountingTime": 10,
222-
"primaryCalibrationStandard": "Amelia albite",
223189
"typicalDetectionLimit": "Na: 0.03 wt%"
224190
},
225191
{
226192
"analyte": "Fe",
227193
"epmaTechnique": "",
228-
"xrayEmissionLine": "",
229194
"peakCountingTime": 20,
230195
"backgroundCountingTime": 10,
231-
"primaryCalibrationStandard": "Synthetic fayalite",
232196
"typicalDetectionLimit": "Fe: 0.06 wt%"
233197
},
234198
{
235199
"analyte": "Mg",
236200
"epmaTechnique": "",
237-
"xrayEmissionLine": "",
238201
"peakCountingTime": 20,
239202
"backgroundCountingTime": 10,
240-
"primaryCalibrationStandard": "Synthetic forsterite",
241203
"typicalDetectionLimit": "Mg: 0.02 wt%"
242204
},
243205
{
244206
"analyte": "Ti",
245207
"epmaTechnique": "",
246-
"xrayEmissionLine": "",
247208
"peakCountingTime": 20,
248209
"backgroundCountingTime": 10,
249-
"primaryCalibrationStandard": "Synthetic TiO2",
250210
"typicalDetectionLimit": "Ti: 0.04 wt%"
251211
},
252212
{
253213
"analyte": "Cr",
254214
"epmaTechnique": "",
255-
"xrayEmissionLine": "",
256215
"peakCountingTime": 20,
257216
"backgroundCountingTime": 10,
258-
"primaryCalibrationStandard": "Synthetic Cr2O3",
259217
"typicalDetectionLimit": "Cr: 0.05 wt%"
260218
},
261219
{
262220
"analyte": "Mn",
263221
"epmaTechnique": "",
264-
"xrayEmissionLine": "",
265222
"peakCountingTime": 20,
266223
"backgroundCountingTime": 10,
267-
"primaryCalibrationStandard": "Synthetic Mn-olivine",
268224
"typicalDetectionLimit": "Mn: 0.06 wt%"
269225
}
270226
]

0 commit comments

Comments
 (0)