Files & field selection¶
The CLI detects SQLite and DuckDB by file header, and other formats by file extension. Start by previewing:
jevotron preview records.csv
jevotron preview records.yaml
jevotron preview ontology.obo
jevotron preview services.toml
jevotron preview events.jsonl.gz
jt preview inventory.db
| Format | One entry | Default fields |
|---|---|---|
| CSV / TSV | One row | Each column |
| YAML | Each top-level list item, or one mapping/scalar document | Top-level keys |
| JSON | Each top-level array item, or one object/scalar | Top-level keys |
| JSONL | Each nonblank line | Top-level keys |
| OBO | One stanza | Each tag-value occurrence |
| TOML | One document; use records for an array of tables |
Top-level keys |
| Text / Markdown | One paragraph (configurable) | /text |
| Logs / textlines | One nonblank line (configurable) | /text |
| FASTA | One sequence record | ID, description, sequence |
| GMT | One named set | Name, description, members |
| SQLite / DuckDB | One row from each user table | Each column |
YAML supports multiple documents and keeps dates as text. CSV values remain strings, preserving leading zeros and empty cells. Duplicate headers, duplicate YAML/JSON keys, and ragged CSV rows are rejected rather than silently dropped.
The file format reference explains every parser's defaults, data shapes, extensions, gzip support, and options. Discover options without leaving the terminal:
jevotron formats csv
jevotron preview export.data --format csv --format-option 'delimiter=;'
jevotron preview catalog.json --format-option records=/products
records selects a collection before chunking. --field selects what to
score inside each chunk.
Choose fields without writing Python¶
Repeat --field for each JSON Pointer you want assessed:
jevotron scan airports.csv --id-column ident \
--field /iso_country --field /latitude_deg --field /longitude_deg
The entire entry remains visible; only selected fields receive scores.
--field overrides a parser or config's selected fields. Omit it to use defaults.
Name entries¶
--id-column selects a top-level scalar field as the reporting ID. IDs must be
nonempty and unique within a scan. Without it, tabular parsers use positional
IDs and OBO uses the stanza's id. Databases use primary keys when available,
otherwise row positions, and always qualify IDs with the schema and table name
(also with --id-column). See database selection rules.
Reporting IDs do not affect the cache, but
the same values inside the entry data do.
Nested and repeated fields¶
| Path | Selects |
|---|---|
/name |
Top-level name |
/terms/0/start |
First term's start date |
/synonym/1 |
Second OBO synonym |
/a~1b |
A key literally named a/b |
/a~0b |
A key literally named a~b |
'' |
The whole entry (use --field '') |
Paths are exact: wildcard selection is not implemented. For structures that need
reshaping rather than selecting, use a
small custom parser through --config.
Entries that do not all carry the same fields¶
A --field path is required: an entry that lacks it is skipped, and the run
reports how many were skipped and which path was missing.
jevotron scan mondo-edit.obo --field /def/0
# Skipped 16014 entries lacking selected fields: /def/0 absent in 16014.
Two options relax that requirement:
| Option | An entry is assessed when |
|---|---|
--field (default) |
it carries every selected path |
--optional-field |
it carries every --field; the optional path is scored where present |
--relaxed |
it carries at least one selected path |
# Score the definition always, the comment wherever there is one.
jevotron scan mondo-edit.obo --field /def/0 --optional-field /comment/0
# Score whichever of the two a term happens to carry.
jevotron scan mondo-edit.obo --field /def/0 --field /comment/0 --relaxed
An entry carrying none of the selected paths is always skipped, because there
would be nothing to ask about. A path that matches no entry anywhere is a
typo rather than sparse data, so the run fails with Field does not exist
before making any API call.
Each result lists the selected paths the entry did not carry:
Read that alongside score. An entry's score is the highest score among the
fields listed in fields, so an entry assessed on fewer fields had fewer
chances to score highly. absent records what was never looked at, rather than
letting it read as a field that passed. To rank entries without that effect,
use --output-format csv, which emits one row per field, and sort by
field_score.
OBO behavior¶
Every tag maps to a list, even when it appears once. The stanza type is retained
as _stanza context. Raw values retain comments and escapes; continued lines
are joined. File headers are ignored. No identifiers are resolved and no graph
is traversed. Put shared background information in --guidance.