Skip to main content

manykinds

The typed data-kind vocabulary for the latent-reasoning stack.

A kind is a self-describing data object that guards its own structure — it validates on construction and refuses an op that demands structure it lacks, instead of being a bare array whose axes you have to trust. manykinds is the small, shared package that defines that vocabulary so independent tools can interoperate through it without depending on each other.

It's the same pattern as anndata in single-cell or the Array API standard for array libraries: one light package everyone agrees on, rather than each tool inventing (or embedding) its own data contract.

What's in it

  • Kind — a @runtime_checkable structural protocol (provenance, require, tagged). Orchestrators type their ops against it; a concrete kind is substitutable iff it offers the three members — no inheritance required. Lives in manykinds.base and imports without the array stack.
  • LabeledArray — an xarray.DataArray with named dims + dim-aligned coords. The canonical kind for cell×gene matrices and embeddings. Dense and sparse.COO-backed arrays both serialize to zarr (validating on read).
  • SparseGraph — a graph as numpy arrays (an E×2 integer edge list + node ids, plus optional edge_weights for weighted/signed graphs like GRNs). .npz.
  • FileArtifact — an opaque reference to a file a tool produced (path + format + checksum). The escape hatch for outputs the vocabulary doesn't model structurally: carry the file through a pipeline unchanged.
  • Table — heterogeneous columnar data (a pandas DataFrame) for mixed-dtype tables like AnnData obs/var. Parquet persistence (manykinds[table] extra).
  • Sequence — biological sequences over an alphabet (DNA/protein), with optional ids. .npz.
  • KindSpec — a data-free structural signature (kind name + dims + coords). spec_a.satisfies(spec_b) is the plan-time mirror of Kind.require, so an orchestrator can type an op's inputs/outputs and check a chain is valid before running it. A concrete kind reports its own signature via .spec().

Usage

import xarray as xr, numpy as np
from manykinds import Kind, LabeledArray

la = LabeledArray(
    xr.DataArray(
        np.random.randn(100, 2000),
        dims=("cell", "gene"),
        coords={"time": ("cell", np.zeros(100, dtype=int))},
    )
)

isinstance(la, Kind)                       # True — structural, no inheritance
la.require("cell", "gene", coords=("time",))   # precondition gate; raises if absent
la = la.tagged("pca")                      # append to the immutable provenance trail
la.serialize("embedding.zarr")             # dense or sparse; validates on load

Who depends on it

  • Producers (dataset adapters like manylatents-omics, model wrappers, tool shims) construct kinds from their own formats.
  • Orchestrators (e.g. an op registry / planner) type their ops against Kind and chain a producer's output into a consumer's require.

The vocabulary is deliberately small and stable — it changes far more slowly than the tools that speak it.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manykinds-0.1.1.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

manykinds-0.1.1-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file manykinds-0.1.1.tar.gz.

File metadata

  • Download URL: manykinds-0.1.1.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for manykinds-0.1.1.tar.gz
Algorithm Hash digest
SHA256 154e0f9a3bf008b01a3ba5b161e423d678f493d5cb582532ffe9527c18bb0de5
MD5 dc5fb5ceaece8b1b96f7fe2672504866
BLAKE2b-256 74858cd4d08c6a31f9c1c08ce80e78f62950709c52bceaf4d1f40f3fbf92f77d

See more details on using hashes here.

Provenance

The following attestation bundles were made for manykinds-0.1.1.tar.gz:

Publisher: publish.yml on latent-reasoning-works/manykinds

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file manykinds-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: manykinds-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for manykinds-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5efbb8874b86857dbcee5d06706c73dfdfee3285d0acb5dc68261c151eb20742
MD5 20bf49df9d03161bf311aa4988e2d7ae
BLAKE2b-256 b8e8f6f1660e6dda86db23fcd4d060680b2f71b9a7bcbd942f9e17ac7a853158

See more details on using hashes here.

Provenance

The following attestation bundles were made for manykinds-0.1.1-py3-none-any.whl:

Publisher: publish.yml on latent-reasoning-works/manykinds

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page