tablassert 7.3.4__tar.gz → 7.3.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tablassert-7.3.4 → tablassert-7.3.5}/CHANGELOG.md +5 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/PKG-INFO +8 -6
- {tablassert-7.3.4 → tablassert-7.3.5}/README.md +7 -5
- tablassert-7.3.5/docs/changelog.md +13 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/configuration/table.md +55 -55
- {tablassert-7.3.4 → tablassert-7.3.5}/pyproject.toml +1 -1
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/models.py +3 -1
- {tablassert-7.3.4 → tablassert-7.3.5}/uv.lock +1 -1
- tablassert-7.3.4/docs/changelog.md +0 -13
- {tablassert-7.3.4 → tablassert-7.3.5}/.github/workflows/autotag.yml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/.github/workflows/docker.yml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/.github/workflows/docs.yml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/.github/workflows/pipy.yml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/.gitignore +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/.pre-commit-config.yaml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/AGENTS.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/CITATION.cff +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/CONTRIBUTING.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/Dockerfile +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/LICENSE +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/api/fullmap.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/api/lib.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/api/qc.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/api/utils.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/cli.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/configuration/advanced-example.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/configuration/graph.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/datassert.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/docker.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/examples/tutorial-data.csv +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/examples/tutorial-graph.yaml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/examples/tutorial-table.yaml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/examples.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/index.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/installation.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/docs/tutorial.md +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/llms.txt +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/mkdocs.yml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/__init__.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/cli.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/downloader.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/enums.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/fullmap.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/ingests.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/lib.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/log.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/nlp.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/qc.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/src/tablassert/utils.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/__init__.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/conftest.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/fixtures/invalid_section_missing_source.yaml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/fixtures/minimal_section.yaml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/fixtures/minimal_section_with_sections.yaml +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/test_enums.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/test_fullmap.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/test_ingests.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/test_lib.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/test_models.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/test_nlp.py +0 -0
- {tablassert-7.3.4 → tablassert-7.3.5}/tests/test_utils.py +0 -0
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## 7.3.5 - 2026-04-29
|
|
6
|
+
|
|
7
|
+
### Documentation
|
|
8
|
+
- Tightened the table-configuration reference so field requirements, defaults, accepted enum values, row indexing, and column-reference examples match the strict `Section` schema and section-merging behavior implemented in `models.py`, `ingests.py`, and the runtime loader.
|
|
9
|
+
|
|
5
10
|
## 7.3.4 - 2026-04-28
|
|
6
11
|
|
|
7
12
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tablassert
|
|
3
|
-
Version: 7.3.
|
|
3
|
+
Version: 7.3.5
|
|
4
4
|
Summary: Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution and quality control built in.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SkyeAv/Tablassert
|
|
6
6
|
Project-URL: Source, https://github.com/SkyeAv/Tablassert
|
|
@@ -98,11 +98,13 @@ docker run --rm \
|
|
|
98
98
|
```bash
|
|
99
99
|
# Build a knowledge graph from a YAML configuration
|
|
100
100
|
$ tablassert build-knowledge-graph graph-config.yaml
|
|
101
|
-
⠋ Loading
|
|
102
|
-
⠋
|
|
103
|
-
⠋
|
|
104
|
-
⠋
|
|
105
|
-
|
|
101
|
+
⠋ Loading Tables...
|
|
102
|
+
⠋ Extracting Sections...
|
|
103
|
+
⠋ Building TCode...
|
|
104
|
+
⠋ Collecting Instructions...
|
|
105
|
+
⠋ Building Subgraphs...
|
|
106
|
+
⠋ Compiling Graph...
|
|
107
|
+
✓ Finished!
|
|
106
108
|
```
|
|
107
109
|
|
|
108
110
|
Define your entities and relationships in YAML, point tablassert at your data, and get NCATS Translator-compliant KGX NDJSON out the other side — no code required. Intermediate section artifacts are staged in `.storassert/` during the build.
|
|
@@ -46,11 +46,13 @@ docker run --rm \
|
|
|
46
46
|
```bash
|
|
47
47
|
# Build a knowledge graph from a YAML configuration
|
|
48
48
|
$ tablassert build-knowledge-graph graph-config.yaml
|
|
49
|
-
⠋ Loading
|
|
50
|
-
⠋
|
|
51
|
-
⠋
|
|
52
|
-
⠋
|
|
53
|
-
|
|
49
|
+
⠋ Loading Tables...
|
|
50
|
+
⠋ Extracting Sections...
|
|
51
|
+
⠋ Building TCode...
|
|
52
|
+
⠋ Collecting Instructions...
|
|
53
|
+
⠋ Building Subgraphs...
|
|
54
|
+
⠋ Compiling Graph...
|
|
55
|
+
✓ Finished!
|
|
54
56
|
```
|
|
55
57
|
|
|
56
58
|
Define your entities and relationships in YAML, point tablassert at your data, and get NCATS Translator-compliant KGX NDJSON out the other side — no code required. Intermediate section artifacts are staged in `.storassert/` during the build.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
The canonical release history lives in the repository root at [`CHANGELOG.md`](https://github.com/SkyeAv/Tablassert/blob/main/CHANGELOG.md).
|
|
4
|
+
|
|
5
|
+
## Current Release Notes
|
|
6
|
+
|
|
7
|
+
## 7.3.5 - 2026-04-29
|
|
8
|
+
|
|
9
|
+
### Documentation
|
|
10
|
+
|
|
11
|
+
- The table-configuration reference now matches the strict runtime schema and merge behavior, including field defaults, requiredness, accepted enum values, zero-based row indexing, and valid column-reference examples.
|
|
12
|
+
|
|
13
|
+
For older releases and the full project history, open the root `CHANGELOG.md` in the repository.
|
|
@@ -39,14 +39,14 @@ template:
|
|
|
39
39
|
|
|
40
40
|
sections:
|
|
41
41
|
- statement: # Section 1: Gene-Disease
|
|
42
|
-
subject: {encoding:
|
|
42
|
+
subject: {method: column, encoding: A}
|
|
43
43
|
predicate: associated_with
|
|
44
|
-
object: {encoding:
|
|
44
|
+
object: {method: column, encoding: B}
|
|
45
45
|
|
|
46
46
|
- statement: # Section 2: Gene-Pathway
|
|
47
|
-
subject: {encoding:
|
|
47
|
+
subject: {method: column, encoding: A}
|
|
48
48
|
predicate: participates_in
|
|
49
|
-
object: {encoding:
|
|
49
|
+
object: {method: column, encoding: C}
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
### Merge Behavior (fastmerge)
|
|
@@ -92,15 +92,15 @@ sections:
|
|
|
92
92
|
**Single output:** Template only
|
|
93
93
|
```yaml
|
|
94
94
|
template:
|
|
95
|
-
source: {kind: text, local: data.csv}
|
|
95
|
+
source: {kind: text, local: data.csv, url: https://example.com/data.csv}
|
|
96
96
|
statement: {...}
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
**Multiple predicates, same source:**
|
|
100
100
|
```yaml
|
|
101
101
|
template:
|
|
102
|
-
source: {kind: excel, local: data.xlsx}
|
|
103
|
-
provenance: {repo: PMC, publication: 123}
|
|
102
|
+
source: {kind: excel, local: data.xlsx, url: https://example.com/data.xlsx}
|
|
103
|
+
provenance: {repo: PMC, publication: 123, contributors: [{name: Example User, date: 27 JAN 2026}]}
|
|
104
104
|
|
|
105
105
|
sections:
|
|
106
106
|
- statement: {predicate: treats}
|
|
@@ -110,14 +110,14 @@ sections:
|
|
|
110
110
|
**Multiple columns, shared provenance:**
|
|
111
111
|
```yaml
|
|
112
112
|
template:
|
|
113
|
-
source: {kind: text, local: data.csv}
|
|
114
|
-
provenance: {repo: PMID, publication: 456}
|
|
113
|
+
source: {kind: text, local: data.csv, url: https://example.com/data.csv}
|
|
114
|
+
provenance: {repo: PMID, publication: 456, contributors: [{name: Example User, date: 27 JAN 2026}]}
|
|
115
115
|
statement:
|
|
116
|
-
subject: {encoding:
|
|
116
|
+
subject: {method: column, encoding: A}
|
|
117
117
|
|
|
118
118
|
sections:
|
|
119
|
-
- statement: {object: {encoding:
|
|
120
|
-
- statement: {object: {encoding:
|
|
119
|
+
- statement: {object: {method: column, encoding: B}}
|
|
120
|
+
- statement: {object: {method: column, encoding: C}}
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
## Configuration Schema
|
|
@@ -126,8 +126,8 @@ sections:
|
|
|
126
126
|
|
|
127
127
|
| Field | Type | Required | Description |
|
|
128
128
|
|-------|------|----------|-------------|
|
|
129
|
-
| `syntax` | String |
|
|
130
|
-
| `status` | String | No | Development status
|
|
129
|
+
| `syntax` | String | No | Configuration version. Defaults to `"TC3"`. |
|
|
130
|
+
| `status` | String | No | Development status. Defaults to `"alpha"`; allowed values are `"alpha"`, `"beta"`, `"primetime"`. |
|
|
131
131
|
|
|
132
132
|
### Source
|
|
133
133
|
|
|
@@ -137,12 +137,12 @@ Defines the data file location and format.
|
|
|
137
137
|
|
|
138
138
|
| Field | Type | Required | Description |
|
|
139
139
|
|-------|------|----------|-------------|
|
|
140
|
-
| `kind` | String |
|
|
140
|
+
| `kind` | String | No | Source kind. Model default is `"excel"`, but specify it explicitly in configs. |
|
|
141
141
|
| `local` | Path | Yes | Local file path for caching |
|
|
142
142
|
| `url` | URL | Yes | Download URL (HTTP/HTTPS) |
|
|
143
|
-
| `sheet` | String | No | Sheet name
|
|
144
|
-
| `row_slice` | List[Int\|"auto"] | No |
|
|
145
|
-
| `rows` | List[Int] | No |
|
|
143
|
+
| `sheet` | String | No | Sheet name. Defaults to `"Sheet1"`. |
|
|
144
|
+
| `row_slice` | List[Int\|"auto"] | No | Two-value zero-based crop bounds: `[start, stop]`. Each value may be an integer or `"auto"`. |
|
|
145
|
+
| `rows` | List[Int] | No | Zero-based row indices to keep after any `row_slice` crop. |
|
|
146
146
|
| `reindex` | List[Reindex] | No | Conditional row filtering |
|
|
147
147
|
|
|
148
148
|
**Example:**
|
|
@@ -153,7 +153,7 @@ source:
|
|
|
153
153
|
url: https://example.com/data.xlsx
|
|
154
154
|
sheet: "Sheet1"
|
|
155
155
|
row_slice:
|
|
156
|
-
-
|
|
156
|
+
- 1 # Start at the second physical row
|
|
157
157
|
- auto # Read to end
|
|
158
158
|
```
|
|
159
159
|
|
|
@@ -161,12 +161,12 @@ source:
|
|
|
161
161
|
|
|
162
162
|
| Field | Type | Required | Description |
|
|
163
163
|
|-------|------|----------|-------------|
|
|
164
|
-
| `kind` | String |
|
|
164
|
+
| `kind` | String | No | Source kind. Model default is `"text"`, but specify it explicitly in configs. |
|
|
165
165
|
| `local` | Path | Yes | Local file path for caching |
|
|
166
166
|
| `url` | URL | Yes | Download URL |
|
|
167
|
-
| `delimiter` | String | No |
|
|
168
|
-
| `row_slice` | List[Int\|"auto"] | No |
|
|
169
|
-
| `rows` | List[Int] | No |
|
|
167
|
+
| `delimiter` | String | No | Field delimiter. Defaults to `","`. |
|
|
168
|
+
| `row_slice` | List[Int\|"auto"] | No | Two-value zero-based crop bounds: `[start, stop]`. Each value may be an integer or `"auto"`. |
|
|
169
|
+
| `rows` | List[Int] | No | Zero-based row indices to keep after any `row_slice` crop. |
|
|
170
170
|
| `reindex` | List[Reindex] | No | Conditional filtering |
|
|
171
171
|
|
|
172
172
|
**Example:**
|
|
@@ -187,16 +187,16 @@ Filter rows based on column values.
|
|
|
187
187
|
|
|
188
188
|
| Field | Type | Description |
|
|
189
189
|
|-------|------|-------------|
|
|
190
|
-
| `column` | String |
|
|
191
|
-
| `comparison` | String | Operator
|
|
190
|
+
| `column` | String | Source column letters to evaluate (`A`-`ZZZ`) |
|
|
191
|
+
| `comparison` | String | Operator. Defaults to `"ne"`; allowed values are `"eq"`, `"ne"`, `"lt"`, `"le"`, `"gt"`, `"ge"`. |
|
|
192
192
|
| `comparator` | String\|Int\|Float | Value to compare against |
|
|
193
193
|
|
|
194
194
|
**Example:**
|
|
195
195
|
```yaml
|
|
196
196
|
reindex:
|
|
197
|
-
- column:
|
|
197
|
+
- column: C
|
|
198
198
|
comparison: lt
|
|
199
|
-
comparator: 0.05 # Keep rows where
|
|
199
|
+
comparator: 0.05 # Keep rows where column C < 0.05
|
|
200
200
|
```
|
|
201
201
|
|
|
202
202
|
### Statement (Triple Definition)
|
|
@@ -206,7 +206,7 @@ Defines subject-predicate-object relationships.
|
|
|
206
206
|
| Field | Type | Required | Description |
|
|
207
207
|
|-------|------|----------|-------------|
|
|
208
208
|
| `subject` | NodeEncoding | Yes | Subject entity configuration |
|
|
209
|
-
| `predicate` | String |
|
|
209
|
+
| `predicate` | String | No | Biolink predicate. Defaults to `"related_to"`. |
|
|
210
210
|
| `object` | NodeEncoding | Yes | Object entity configuration |
|
|
211
211
|
| `qualifiers` | List[Qualifier] | No | Edge qualifiers (context) |
|
|
212
212
|
|
|
@@ -215,12 +215,12 @@ Defines subject-predicate-object relationships.
|
|
|
215
215
|
statement:
|
|
216
216
|
subject:
|
|
217
217
|
method: column
|
|
218
|
-
encoding:
|
|
218
|
+
encoding: A
|
|
219
219
|
prioritize: [Gene]
|
|
220
220
|
predicate: treats
|
|
221
221
|
object:
|
|
222
222
|
method: column
|
|
223
|
-
encoding:
|
|
223
|
+
encoding: B
|
|
224
224
|
prioritize: [Disease]
|
|
225
225
|
```
|
|
226
226
|
|
|
@@ -230,11 +230,11 @@ Defines how to extract and resolve entities.
|
|
|
230
230
|
|
|
231
231
|
| Field | Type | Required | Description |
|
|
232
232
|
|-------|------|----------|-------------|
|
|
233
|
-
| `method` | String |
|
|
234
|
-
| `encoding` | String\|Int\|Float | Yes | Literal value or column
|
|
233
|
+
| `method` | String | No | `"value"` (literal) or `"column"` (source column letters). Defaults to `"value"`. |
|
|
234
|
+
| `encoding` | String\|Int\|Float | Yes | Literal value or source column letters, depending on `method` |
|
|
235
235
|
| `taxon` | Int | No | NCBI Taxon ID for filtering (e.g., `9606` for human) |
|
|
236
|
-
| `prioritize` | List[String] | No | Preferred Biolink categories |
|
|
237
|
-
| `avoid` | List[String] | No | Excluded Biolink categories |
|
|
236
|
+
| `prioritize` | List[String] | No | Preferred Biolink categories (must be valid `Categories` enum values such as `Gene`, `Protein`) |
|
|
237
|
+
| `avoid` | List[String] | No | Excluded Biolink categories (must be valid `Categories` enum values) |
|
|
238
238
|
| `regex` | List[Regex] | No | Pattern replacements |
|
|
239
239
|
| `fill` | String | No | Null-filling strategy: `"forward"`, `"backward"`, `"min"`, `"max"`, `"mean"`, `"zero"`, `"one"` |
|
|
240
240
|
| `remove` | List[String] | No | Strings to filter out |
|
|
@@ -253,11 +253,12 @@ subject:
|
|
|
253
253
|
encoding: CHEBI:41774 # All rows get this CURIE
|
|
254
254
|
```
|
|
255
255
|
|
|
256
|
-
**`method: column`** - Reference a column
|
|
256
|
+
**`method: column`** - Reference a source column
|
|
257
257
|
|
|
258
|
-
|
|
259
|
-
- Column A
|
|
260
|
-
- Column B
|
|
258
|
+
Source files are read without headers, so column references are Excel-style letters:
|
|
259
|
+
- Column A -> `"A"`
|
|
260
|
+
- Column B -> `"B"`
|
|
261
|
+
- Column AA -> `"AA"`
|
|
261
262
|
|
|
262
263
|
```yaml
|
|
263
264
|
subject:
|
|
@@ -265,12 +266,7 @@ subject:
|
|
|
265
266
|
encoding: A # Read from column A
|
|
266
267
|
```
|
|
267
268
|
|
|
268
|
-
|
|
269
|
-
```yaml
|
|
270
|
-
subject:
|
|
271
|
-
method: column
|
|
272
|
-
encoding: gene_symbol # Read from "gene_symbol" column
|
|
273
|
-
```
|
|
269
|
+
At runtime those letters are converted internally to Polars column names such as `column_1`, but those internal names are not valid configuration values.
|
|
274
270
|
|
|
275
271
|
#### Taxonomic Filtering
|
|
276
272
|
|
|
@@ -278,7 +274,8 @@ subject:
|
|
|
278
274
|
|
|
279
275
|
```yaml
|
|
280
276
|
subject:
|
|
281
|
-
|
|
277
|
+
method: column
|
|
278
|
+
encoding: A
|
|
282
279
|
taxon: 9606 # Only human genes (Homo sapiens)
|
|
283
280
|
```
|
|
284
281
|
|
|
@@ -305,7 +302,8 @@ If "TP53" maps to both Gene and Protein, prefer Gene.
|
|
|
305
302
|
|
|
306
303
|
```yaml
|
|
307
304
|
subject:
|
|
308
|
-
|
|
305
|
+
method: column
|
|
306
|
+
encoding: A
|
|
309
307
|
prioritize:
|
|
310
308
|
- OrganismTaxon
|
|
311
309
|
avoid:
|
|
@@ -366,7 +364,8 @@ Available strategies:
|
|
|
366
364
|
|
|
367
365
|
```yaml
|
|
368
366
|
subject:
|
|
369
|
-
|
|
367
|
+
method: column
|
|
368
|
+
encoding: A
|
|
370
369
|
fill: forward # Propagate values down through null rows
|
|
371
370
|
```
|
|
372
371
|
|
|
@@ -374,7 +373,7 @@ subject:
|
|
|
374
373
|
annotations:
|
|
375
374
|
- annotation: expression_level
|
|
376
375
|
method: column
|
|
377
|
-
encoding:
|
|
376
|
+
encoding: C
|
|
378
377
|
fill: mean # Replace nulls with column average
|
|
379
378
|
```
|
|
380
379
|
|
|
@@ -384,7 +383,8 @@ annotations:
|
|
|
384
383
|
|
|
385
384
|
```yaml
|
|
386
385
|
object:
|
|
387
|
-
|
|
386
|
+
method: column
|
|
387
|
+
encoding: B
|
|
388
388
|
explode_by: ";" # "P1;P2;P3" → 3 separate edges
|
|
389
389
|
```
|
|
390
390
|
|
|
@@ -402,7 +402,7 @@ Add context to edges (anatomical location, species, etc.).
|
|
|
402
402
|
|
|
403
403
|
| Field | Type | Description |
|
|
404
404
|
|-------|------|-------------|
|
|
405
|
-
| `qualifier` | String | Biolink qualifier (e.g., `"species_context_qualifier"`) |
|
|
405
|
+
| `qualifier` | String | Biolink qualifier from the `Qualifiers` enum (e.g., `"species_context_qualifier"`) |
|
|
406
406
|
| (inherits NodeEncoding) | | All NodeEncoding fields available |
|
|
407
407
|
|
|
408
408
|
**Example:**
|
|
@@ -419,7 +419,7 @@ Required metadata about data source.
|
|
|
419
419
|
|
|
420
420
|
| Field | Type | Required | Description |
|
|
421
421
|
|-------|------|----------|-------------|
|
|
422
|
-
| `repo` | String |
|
|
422
|
+
| `repo` | String | No | Repository. Defaults to `"PMC"`; allowed values are `"PMC"`, `"PMID"`. |
|
|
423
423
|
| `publication` | String | Yes | Repository-local identifier appended to `repo:` (e.g., `"11708054"`, `"123"`) |
|
|
424
424
|
| `contributors` | List[Contributor] | Yes | Curation information |
|
|
425
425
|
|
|
@@ -427,7 +427,7 @@ Required metadata about data source.
|
|
|
427
427
|
|
|
428
428
|
| Field | Type | Required | Description |
|
|
429
429
|
|-------|------|----------|-------------|
|
|
430
|
-
| `kind` | String |
|
|
430
|
+
| `kind` | String | No | Contributor role. Defaults to `"curation"`; allowed values are `"curation"`, `"validation"`, `"tool"`. |
|
|
431
431
|
| `name` | String | Yes | Contributor name |
|
|
432
432
|
| `date` | String | Yes | Date (free format) |
|
|
433
433
|
| `organizations` | List[String] | No | Affiliations |
|
|
@@ -500,12 +500,12 @@ template:
|
|
|
500
500
|
statement:
|
|
501
501
|
subject:
|
|
502
502
|
method: column
|
|
503
|
-
encoding:
|
|
503
|
+
encoding: A
|
|
504
504
|
prioritize: [Gene]
|
|
505
505
|
predicate: associated_with
|
|
506
506
|
object:
|
|
507
507
|
method: column
|
|
508
|
-
encoding:
|
|
508
|
+
encoding: B
|
|
509
509
|
prioritize: [Disease]
|
|
510
510
|
|
|
511
511
|
provenance:
|
|
@@ -519,7 +519,7 @@ template:
|
|
|
519
519
|
annotations:
|
|
520
520
|
- annotation: p value
|
|
521
521
|
method: column
|
|
522
|
-
encoding:
|
|
522
|
+
encoding: C
|
|
523
523
|
```
|
|
524
524
|
|
|
525
525
|
## Next Steps
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tablassert"
|
|
3
|
-
version = "7.3.
|
|
3
|
+
version = "7.3.5"
|
|
4
4
|
description = "Extract knowledge assertions from tabular data into NCATS Translator-compliant KGX NDJSON — declaratively, with entity resolution and quality control built in."
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Skye Lane Goetz", email = "sgoetz@isbscience.org" }
|
|
@@ -33,7 +33,9 @@ class TablaBase(BaseModel):
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class Reindex(TablaBase):
|
|
36
|
-
column: str = Field(
|
|
36
|
+
column: str = Field(
|
|
37
|
+
..., pattern=r"^[A-Z]{1,3}$", description="Source column letters used for row filtering.", examples=["A", "AA"]
|
|
38
|
+
)
|
|
37
39
|
comparison: Comparisons = Field(
|
|
38
40
|
Comparisons.NE,
|
|
39
41
|
description="Comparison operator used in reindex filtering.",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
The canonical release history lives in the repository root at [`CHANGELOG.md`](https://github.com/SkyeAv/Tablassert/blob/main/CHANGELOG.md).
|
|
4
|
-
|
|
5
|
-
## Current Release Notes
|
|
6
|
-
|
|
7
|
-
### 7.3.4 - 2026-04-28
|
|
8
|
-
|
|
9
|
-
- `downloader.from_url()` now handles URLs that respond with an immediate download instead of a navigable page — the Playwright session uses a download-aware browser context and tolerates the expected `net::ERR_ABORTED` navigation error.
|
|
10
|
-
- Table configuration docs now describe `miscellaneous notes` as a freetext catch-all annotation for source context that doesn't map cleanly to a structured field.
|
|
11
|
-
- Regex transform documentation now spells out the Polars `str.replace_all()` constraints — no capturing groups or lookarounds — so authors know to chain simple substitutions or fall back to `miscellaneous notes`.
|
|
12
|
-
|
|
13
|
-
For older releases and the full project history, open the root `CHANGELOG.md` in the repository.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|