The typed feature table that rides beside a mixed-type embedding:
{prefix}.feature_types.parquet, string columns feature and type, one
row per embedding row in the same order. senna fne and gene-text write
it; a consumer that wants only one type of row (senna bge pinning gene
rows, say) reads it. The type names are the shared vocabulary.
Load a pre-trained per-gene embedding (and optional per-gene bias)
from parquet and strictly intersect its row axis against a caller’s
target feature axis.
Generic OBO ontology (cl-basic.obo, go-basic.obo, …) parsed with
fastobo and stored as a petgraph directed graph (edges point
child → parent, tagged with the relation kind).