Skill Tracer
Skills › Scientific Agent Skills › tiledbvcf › verification.md

verification.md

95 lines · skills/tiledbvcf/references/verification.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# TileDB-VCF verification notes
2
3Reviewed 2026-10-01 against TileDB-VCF 0.40.3 and tiledb-cloud 0.14.4.
4

TileDB-VCF verification notes

Reviewed 2026-10-01 against TileDB-VCF 0.40.3 and tiledb-cloud 0.14.4.

Raw lines 1 to 4
5## Distribution and local environment
6
7The [official TileDB channel metadata](https://api.anaconda.org/package/tiledb/tiledbvcf-py)
8listed 0.40.3 builds for Python 3.9-3.12 on osx-arm64, osx-64, and linux-64.
9[PyPI tiledbvcf metadata](https://pypi.org/pypi/tiledbvcf/json) and the
10conda-forge tiledbvcf-py package endpoint returned 404. This is a distribution
11constraint, not absence of a macOS build. The native library is also available
12through the project's documented source-build and container routes.
14An unpinned native osx-arm64 Conda solve succeeded but importing the resulting
15package failed: its bundled libtiledb needed exact versioned Azure dylibs absent
16from the newer dependencies selected by Conda. Pinning azure-core-cpp 1.16.2,
17azure-storage-blobs-cpp 12.16.0, azure-storage-files-datalake-cpp 12.14.0,
18capnproto 1.4.0, and c-blosc2 2.23.1 resolved the import failure without binary
19patches. The resolved environment used Python 3.12.14, pandas 2.3.3, NumPy 2.5.3,
20and PyArrow 24.0.0. The CLI reported TileDB-VCF 0.40.3, embedded TileDB 2.30.0,
21and htslib 1.23; the Conda TileDB package version alone was not an accurate
22indicator of the bundled library's runtime version.
24Tests in `tests/tiledbvcf/` (repository-level, outside this shipped skill) use
25tiny synthetic, indexed VCFs, not real human data. Native checks cover incremental
26ingestion, multiallelic and missing GT values, deletion overlap boundaries, BED
27coordinates, sample partitions, total record limits, cohort statistics, QC,
28semantic per-sample export, and CLI create/store/list/stat/TSV. Native checks
29require the separate Conda build and bcftools; an ordinary uv environment cannot
30install TileDB-VCF from PyPI.

Distribution and local environment

The official TileDB channel metadata listed 0.40.3 builds for Python 3.9-3.12 on osx-arm64, osx-64, and linux-64. PyPI tiledbvcf metadata and the conda-forge tiledbvcf-py package endpoint returned 404. This is a distribution constraint, not absence of a macOS build. The native library is also available through the project's documented source-build and container routes.

An unpinned native osx-arm64 Conda solve succeeded but importing the resulting package failed: its bundled libtiledb needed exact versioned Azure dylibs absent from the newer dependencies selected by Conda. Pinning azure-core-cpp 1.16.2, azure-storage-blobs-cpp 12.16.0, azure-storage-files-datalake-cpp 12.14.0, capnproto 1.4.0, and c-blosc2 2.23.1 resolved the import failure without binary patches. The resolved environment used Python 3.12.14, pandas 2.3.3, NumPy 2.5.3, and PyArrow 24.0.0. The CLI reported TileDB-VCF 0.40.3, embedded TileDB 2.30.0, and htslib 1.23; the Conda TileDB package version alone was not an accurate indicator of the bundled library's runtime version.

Tests in tests/tiledbvcf/ (repository-level, outside this shipped skill) use tiny synthetic, indexed VCFs, not real human data. Native checks cover incremental ingestion, multiallelic and missing GT values, deletion overlap boundaries, BED coordinates, sample partitions, total record limits, cohort statistics, QC, semantic per-sample export, and CLI create/store/list/stat/TSV. Native checks require the separate Conda build and bcftools; an ordinary uv environment cannot install TileDB-VCF from PyPI.

Raw lines 5 to 31
32## Source and runtime findings
34- [Released Python Dataset source](https://github.com/TileDB-Inc/TileDB-VCF/blob/0.40.3/apis/python/src/tiledbvcf/dataset.py)
35 defines `memory_budget_mb`, explicit `create_dataset`, the batch-continuation
36 protocol, 1-based explicit region strings, and `(index, count)` partitions.
37 `read_iter` does not accept `set_af_filter`; use `read` with continuation when
38 applying that filter.
39- [Native in-memory exporter](https://github.com/TileDB-Inc/TileDB-VCF/blob/0.40.3/libtiledbvcf/src/read/in_memory_exporter.cc)
40 converts `pos_start` and `pos_end` to 1-based output while keeping BED endpoints
41 in BED conventions. Statistics `pos` remained 0-based in the native fixture.
42- A BED read followed by a string-region read on the same Dataset retained the
43 old BED interval, adding a record outside the new requested window. The skill
44 requires reopening the reader when switching selectors. This is an observed
45 0.40.3 behavior, not a universal claim about future releases.
46- The CLI's variadic `--tiledb-config` consumed following positional paths until
47 `--` was added. The invalid command printed a missing-input error with exit
48 code zero. Validate sample counts and artifacts after ingestion.
49- Cohort AF was 3/4 for a site where S1 was 0/1 and S2 was 1/1. Selecting S1 with
50 AF >0.6 still returned S1, establishing that this query does not recompute AF
51 on the selected sample subset. Both variant-statistics and allele-count tables
52 reported the VCF POS=1 site as `pos=0`.

Source and runtime findings

  • Released Python Dataset source defines memory_budget_mb, explicit create_dataset, the batch-continuation protocol, 1-based explicit region strings, and (index, count) partitions. read_iter does not accept set_af_filter; use read with continuation when applying that filter.
  • Native in-memory exporter converts pos_start and pos_end to 1-based output while keeping BED endpoints in BED conventions. Statistics pos remained 0-based in the native fixture.
  • A BED read followed by a string-region read on the same Dataset retained the old BED interval, adding a record outside the new requested window. The skill requires reopening the reader when switching selectors. This is an observed 0.40.3 behavior, not a universal claim about future releases.
  • The CLI's variadic --tiledb-config consumed following positional paths until -- was added. The invalid command printed a missing-input error with exit code zero. Validate sample counts and artifacts after ingestion.
  • Cohort AF was 3/4 for a site where S1 was 0/1 and S2 was 1/1. Selecting S1 with AF >0.6 still returned S1, establishing that this query does not recompute AF on the selected sample subset. Both variant-statistics and allele-count tables reported the VCF POS=1 site as pos=0.
Raw lines 32 to 53
54## Cloud SDK and endpoint contracts
56The [published 0.14.4 wheel](https://pypi.org/pypi/tiledb-cloud/0.14.4/json),
57including `tiledb/cloud/vcf/query.py`, `vcf/ingestion.py`, `utilities/_common.py`,
58`client.py`, `config.py`, and generated REST client modules, is the contract
59source. Some older website examples still name obsolete partition arguments;
60follow the released `num_region_partitions` signature.
62The default service base is `https://api.tiledb.com`; a configured deployment host
63may override it. The SDK reads `TILEDB_REST_TOKEN` and sends it using the
64`X-TILEDB-REST-API-KEY` header. `tiledb.cloud.Config()` propagates the authenticated
65client configuration to the native library as `rest.server_address` and
66`rest.token`. Importing only the Cloud client does not supply that configuration
67to an independently opened native Dataset. `login()` can persist configuration;
68environment-based credentials avoid putting a literal token in the example.
70| Released generated route | Request / response contract |
71| --- | --- |
72| `POST /v1/udfs/generic/{namespace}` | JSON GenericUDF payload; binary result (`application/octet-stream`, SDK response type `file`) |
73| `POST /v1/taskgraphs/{namespace}/graphs` | JSON graph payload; `TaskGraph` response |
74| `POST /v1/taskgraphs/{namespace}/graphs/{id}/submit` | No request body; `TaskGraphLog` response |
76These submission calls use API-key or basic authentication and have no pagination
77query parameters. The SDK handles serialization, graph state, and result
78retrieval; the skill does not invent a `/vcf` REST endpoint. Route/method/body/auth
79and result-type dispatch were tested against the installed client with transport
80mocked. This is not proof that a hosted deployment accepts the calls today.
82The distributed `read` wrapper waits for its DAG and returns `pyarrow.Table`.
83The public `vcf.ingest` wrapper starts a batch graph and returns a status/graph-ID
84mapping before completion. Underlying `ingest_vcf` validates exactly one source
85selector. The PyPI `life-sciences` extra installs TileDB-SOMA, not TileDB-VCF.
86Cloud account authorization, storage roles, quotas, distributed native image
87versions, paid execution, and remote object storage were not exercised.

Cloud SDK and endpoint contracts

The published 0.14.4 wheel, including tiledb/cloud/vcf/query.py, vcf/ingestion.py, utilities/_common.py, client.py, config.py, and generated REST client modules, is the contract source. Some older website examples still name obsolete partition arguments; follow the released num_region_partitions signature.

The default service base is https://api.tiledb.com; a configured deployment host may override it. The SDK reads TILEDB_REST_TOKEN and sends it using the X-TILEDB-REST-API-KEY header. tiledb.cloud.Config() propagates the authenticated client configuration to the native library as rest.server_address and rest.token. Importing only the Cloud client does not supply that configuration to an independently opened native Dataset. login() can persist configuration; environment-based credentials avoid putting a literal token in the example.

Released generated routeRequest / response contract
POST /v1/udfs/generic/{namespace}JSON GenericUDF payload; binary result (application/octet-stream, SDK response type file)
POST /v1/taskgraphs/{namespace}/graphsJSON graph payload; TaskGraph response
POST /v1/taskgraphs/{namespace}/graphs/{id}/submitNo request body; TaskGraphLog response

These submission calls use API-key or basic authentication and have no pagination query parameters. The SDK handles serialization, graph state, and result retrieval; the skill does not invent a /vcf REST endpoint. Route/method/body/auth and result-type dispatch were tested against the installed client with transport mocked. This is not proof that a hosted deployment accepts the calls today.

The distributed read wrapper waits for its DAG and returns pyarrow.Table. The public vcf.ingest wrapper starts a batch graph and returns a status/graph-ID mapping before completion. Underlying ingest_vcf validates exactly one source selector. The PyPI life-sciences extra installs TileDB-SOMA, not TileDB-VCF. Cloud account authorization, storage roles, quotas, distributed native image versions, paid execution, and remote object storage were not exercised.

Raw lines 54 to 88
Starts an agent dispatch :79
89## Further official sources
91- [Data model](https://tiledb-inc.github.io/TileDB-VCF/documentation/data-model.html)
92- [Released CLI option definitions](https://github.com/TileDB-Inc/TileDB-VCF/blob/0.40.3/libtiledbvcf/src/cli/tiledbvcf.cc)
93- [Released QC wrapper](https://github.com/TileDB-Inc/TileDB-VCF/blob/0.40.3/apis/python/src/tiledbvcf/sample_qc.py)
94- [Released allele-frequency wrapper](https://github.com/TileDB-Inc/TileDB-VCF/blob/0.40.3/apis/python/src/tiledbvcf/allele_frequency.py)
95- [bcftools manual](https://samtools.github.io/bcftools/bcftools.html)