Skill Tracer
Skills › Scientific Agent Skills › tiledbvcf

tiledbvcf

skill · 282 lines · MIT license · skills/tiledbvcf/SKILL.md

The facts

Its description

Stores and retrieves genomic variant calls with TileDB-VCF. Use for indexed single-sample VCF/BCF ingestion, incremental cohorts, region and sample queries, streaming results, allele statistics, QC, and VCF/BCF export locally or through TileDB Cloud.

The description the agent reads to decide when to use it.

From its settingsline 3

Starts other agents

1 line mentions starting other agents

Lines in the file that mention starting another agent. Found by matching words, so treat them as pointers.

Found by matching wordsline 25

Files it mentions

references/verification.md

Files the text names, such as ones to read or write. Found by matching words, so treat them as pointers.

Found by matching wordsline 26 line 282

Licence

MIT license, from the skill file

The terms its author shares it under, which let it be shown here.

From its settingsline 4 licence text

Other settings

compatibility: Requires a native TileDB-VCF installation and Python 3.9-3.12 for the reviewed Conda builds. bcftools compresses/indexes input fixtures. Installation and remote storage need network access; TileDB Cloud needs its Python client, account token, and storage permissions. metadata: version: "1.3" skill-author: Jeremy Leipzig last-reviewed: "2026-10-01" upstream-version: "TileDB-VCF 0.40.3; tiledb-cloud 0.14.4"

More settings at the top of the file, shown as written.

From its settingsline 5 line 6
Other files in this skill (1) Close

The text

Open on GitHub

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

1---
2name: tiledbvcf
3description: Stores and retrieves genomic variant calls with TileDB-VCF. Use for indexed single-sample VCF/BCF ingestion, incremental cohorts, region and sample queries, streaming results, allele statistics, QC, and VCF/BCF export locally or through TileDB Cloud.
4license: MIT license
5compatibility: Requires a native TileDB-VCF installation and Python 3.9-3.12 for the reviewed Conda builds. bcftools compresses/indexes input fixtures. Installation and remote storage need network access; TileDB Cloud needs its Python client, account token, and storage permissions.
6metadata:
7 version: "1.3"
8 skill-author: Jeremy Leipzig
9 last-reviewed: "2026-10-01"
10 upstream-version: "TileDB-VCF 0.40.3; tiledb-cloud 0.14.4"
11---
13# TileDB-VCF
15## When to use
17Use for cohort variant storage, incremental sample ingestion, interval queries, and
18exporting subsets for downstream genomics. TileDB-VCF stores records; it does not
19perform joint variant calling, association testing, normalization, or population
20structure adjustment. Dataset size alone does not determine whether cloud execution
21is appropriate: benchmark the intended sample, region, and attribute workload.
23This skill targets released **TileDB-VCF 0.40.3**. Native Python/CLI checks used two
24synthetic single-sample VCFs on macOS ARM64. Cloud client **0.14.4** contracts were
25checked against its released wheel and mocked dispatch; hosted queries and jobs
26were not executed. See [installation and verification notes](references/verification.md).

When to use

Use for cohort variant storage, incremental sample ingestion, interval queries, and exporting subsets for downstream genomics. TileDB-VCF stores records; it does not perform joint variant calling, association testing, normalization, or population structure adjustment. Dataset size alone does not determine whether cloud execution is appropriate: benchmark the intended sample, region, and attribute workload.

This skill targets released TileDB-VCF 0.40.3. Native Python/CLI checks used two synthetic single-sample VCFs on macOS ARM64. Cloud client 0.14.4 contracts were checked against its released wheel and mocked dispatch; hosted queries and jobs were not executed. See installation and verification notes.

Raw lines 15 to 27
Starts an agent dispatch :25
28## Install and verify the native stack
30The `tiledbvcf` Python distribution is not published on PyPI at this review. The
31official **`tiledb` Conda channel** supplies `tiledbvcf-py` 0.40.3 for macOS ARM64,
32macOS x86-64, and Linux x86-64, with Python 3.9-3.12 builds. `tiledb` on PyPI is
33TileDB-Py and does not install TileDB-VCF. Native Apple Silicon no longer requires
34forcing `CONDA_SUBDIR=osx-64`.
36For the tested macOS ARM64 environment, pins below avoid versioned-library import
37failures in the otherwise successful current Conda solve:
39```bash
40conda create -n tiledb-vcf -c tiledb -c conda-forge \
41 python=3.12 tiledbvcf-py=0.40.3 \
42 azure-core-cpp=1.16.2 azure-storage-blobs-cpp=12.16.0 \
43 azure-storage-files-datalake-cpp=12.14.0 capnproto=1.4.0 c-blosc2=2.23.1
44conda activate tiledb-vcf
45python -c 'import tiledbvcf; print(tiledbvcf.version)'
46tiledbvcf version
47```
49The equivalent Micromamba solve/install was executed. These extra ABI pins are a
50verified macOS ARM64 workaround, not a claim about all platforms. Preserve the
51resolved environment for production. Other-platform installation and official
52Docker images are alternatives documented upstream, not tested here.

Install and verify the native stack

The tiledbvcf Python distribution is not published on PyPI at this review. The official **tiledb Conda channel** supplies tiledbvcf-py 0.40.3 for macOS ARM64, macOS x86-64, and Linux x86-64, with Python 3.9-3.12 builds. tiledb on PyPI is TileDB-Py and does not install TileDB-VCF. Native Apple Silicon no longer requires forcing CONDA_SUBDIR=osx-64.

For the tested macOS ARM64 environment, pins below avoid versioned-library import failures in the otherwise successful current Conda solve:

conda create -n tiledb-vcf -c tiledb -c conda-forge \
  python=3.12 tiledbvcf-py=0.40.3 \
  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 c-blosc2=2.23.1
conda activate tiledb-vcf
python -c 'import tiledbvcf; print(tiledbvcf.version)'
tiledbvcf version

The equivalent Micromamba solve/install was executed. These extra ABI pins are a verified macOS ARM64 workaround, not a claim about all platforms. Preserve the resolved environment for production. Other-platform installation and official Docker images are alternatives documented upstream, not tested here.

Raw lines 28 to 53
54## Prepare and create a cohort
561. Record reference assembly, contig naming/lengths, callers, normalization rules,
57 sample identity, and file checksums. Do not mix assemblies or assume `1` and
58 `chr1` are equivalent. Confirm compatible headers across inputs.
592. Each input must contain **one sample**, be coordinate sorted, and have an index.
60 Use BGZF-compressed VCF or BCF with a matching `.csi`/`.tbi`. Inspect
61 `bcftools query -l sample1.vcf.gz`; filenames are not sample identifiers.
623. Create the dataset explicitly, then ingest. Opening `mode="w"` alone does not
63 create its schema. Materialize frequently read fields at creation time.
644. Validate a small known interval and a round-trip export before scaling.
66For existing sorted plain-text VCFs (run once per input; output names must be new):
68```bash
69bcftools view -Oz -o sample1.vcf.gz sample1.vcf
70bcftools index -c sample1.vcf.gz
71bcftools view -Oz -o sample2.vcf.gz sample2.vcf
72bcftools index -c sample2.vcf.gz
73```
75The following local examples were exercised with sample IDs `S1` and `S2`, contig
76`chr1`, and coordinates 1-100; substitute the verified IDs and intervals in real data.
78```python
79import tiledbvcf
81uri = "cohort"
82config = {"sm.compute_concurrency_level": "2", "sm.io_concurrency_level": "2"}
83with tiledbvcf.Dataset(uri, mode="w", tiledb_config=config) as ds:
84 ds.create_dataset(extra_attrs=["fmt_GT", "fmt_DP"])
85 ds.ingest_samples(
86 ["sample1.vcf.gz"], threads=2, total_memory_budget_mb=512
87 )
89# Incremental ingestion uses the existing dataset; do not call create_dataset again.
90with tiledbvcf.Dataset(uri, mode="w", tiledb_config=config) as ds:
91 ds.ingest_samples(
92 ["sample2.vcf.gz"], threads=2, total_memory_budget_mb=512
93 )
94```
96The schema-v4 data array has `contig`, start-coordinate, and sample **dimensions**;
97headers and optional statistics are separate arrays in the dataset group. Fields
98not explicitly materialized remain in the INFO/FORMAT payloads. Query names such
99as `pos_start` need not match raw storage column names.
101Upstream supports parallel thread/process ingestion. Assign distinct sample work
102and coordinate lifecycle/maintenance operations; do not blindly re-ingest samples.
103`resume=True` supports interrupted ingestion, not arbitrary duplicate correction.

Prepare and create a cohort

  1. Record reference assembly, contig naming/lengths, callers, normalization rules, sample identity, and file checksums. Do not mix assemblies or assume 1 and chr1 are equivalent. Confirm compatible headers across inputs.
  2. Each input must contain one sample, be coordinate sorted, and have an index. Use BGZF-compressed VCF or BCF with a matching .csi/.tbi. Inspect bcftools query -l sample1.vcf.gz; filenames are not sample identifiers.
  3. Create the dataset explicitly, then ingest. Opening mode="w" alone does not create its schema. Materialize frequently read fields at creation time.
  4. Validate a small known interval and a round-trip export before scaling.

For existing sorted plain-text VCFs (run once per input; output names must be new):

bcftools view -Oz -o sample1.vcf.gz sample1.vcf
bcftools index -c sample1.vcf.gz
bcftools view -Oz -o sample2.vcf.gz sample2.vcf
bcftools index -c sample2.vcf.gz

The following local examples were exercised with sample IDs S1 and S2, contig chr1, and coordinates 1-100; substitute the verified IDs and intervals in real data.

import tiledbvcf

uri = "cohort"
config = {"sm.compute_concurrency_level": "2", "sm.io_concurrency_level": "2"}
with tiledbvcf.Dataset(uri, mode="w", tiledb_config=config) as ds:
    ds.create_dataset(extra_attrs=["fmt_GT", "fmt_DP"])
    ds.ingest_samples(
        ["sample1.vcf.gz"], threads=2, total_memory_budget_mb=512
    )

# Incremental ingestion uses the existing dataset; do not call create_dataset again.
with tiledbvcf.Dataset(uri, mode="w", tiledb_config=config) as ds:
    ds.ingest_samples(
        ["sample2.vcf.gz"], threads=2, total_memory_budget_mb=512
    )

The schema-v4 data array has contig, start-coordinate, and sample dimensions; headers and optional statistics are separate arrays in the dataset group. Fields not explicitly materialized remain in the INFO/FORMAT payloads. Query names such as pos_start need not match raw storage column names.

Upstream supports parallel thread/process ingestion. Assign distinct sample work and coordinate lifecycle/maintenance operations; do not blindly re-ingest samples. resume=True supports interrupted ingestion, not arbitrary duplicate correction.

Raw lines 54 to 104
105## Query completely and interpret coordinates correctly
107| Surface | Coordinate convention |
108| --- | --- |
109| Python `regions=["chr1:10-14"]` | 1-based, closed interval |
110| Returned `pos_start`, `pos_end` | 1-based, inclusive record endpoints |
111| BED input and `query_bed_start`, `query_bed_end` | 0-based, half-open |
112| `read_variant_stats()` / `read_allele_count()` column `pos` in 0.40.3 | **0-based**; add one before joining to VCF POS |
114Queries return **overlapping records**, not just records starting inside the
115interval. A deletion spanning positions 10-14 appears in `chr1:14-14`, with
116`pos_start=10`. For BED `[13,14)`, the equivalent string is `chr1:14-14`.
117The Python region parser requires explicit `contig:start-end`; bare `"chr1"`
118is rejected in this release. Use a known contig length for a whole-contig query.
120```python
121cfg = tiledbvcf.ReadConfig(memory_budget_mb=128, tiledb_config=config)
122attrs = ["sample_name", "contig", "pos_start", "pos_end", "alleles", "fmt_GT"]
123with tiledbvcf.Dataset(uri, cfg=cfg) as ds:
124 assert {"S1", "S2"}.issubset(ds.samples())
125 assert set(attrs).issubset(ds.attributes())
126 for batch in ds.read_iter(
127 attrs=attrs, regions=["chr1:1-100"], samples=["S1", "S2"]
128 ):
129 print(batch) # Replace with a bounded consumer or partitioned output.
130```
132- `read()` returns a pandas DataFrame; `read_arrow()` returns a PyArrow Table.
133 Either can return only the first memory-limited batch. Continue with
134 `continue_read()` / `continue_read_arrow()` until `read_completed()`, or use
135 `read_iter()` for ordinary DataFrame queries. Avoid concatenating all batches
136 when the result cannot fit in memory.
137- `ReadConfig(memory_budget_mb=...)` controls reads; use
138 `ingest_samples(total_memory_budget_mb=...)` for writes. A read budget is not
139 a process RSS cap. `limit` truncates total output; it is not a pagination size.
140- `sample_partition=(0, 2)` selects partition zero of two. Likewise,
141 `region_partition=(index, number_of_partitions)` partitions query regions;
142 these tuples are not coordinate bounds, tile extents, or sample capacities.
143- **0.40.3 retains BED selection state** when a later call omits `bed_file`.
144 Open a fresh `Dataset` for an independent query when changing BED/region inputs.
145- `fmt_GT` contains allele indices: 0 refers to REF, positive values index ALT,
146 and -1 means missing. Preserve multiallelic identity and ploidy; do not treat
147 every positive integer as a biallelic dosage or missing calls as reference.
148 The integer list alone does not encode the original phased GT string.

Query completely and interpret coordinates correctly

SurfaceCoordinate convention
Python regions=["chr1:10-14"]1-based, closed interval
Returned pos_start, pos_end1-based, inclusive record endpoints
BED input and query_bed_start, query_bed_end0-based, half-open
read_variant_stats() / read_allele_count() column pos in 0.40.30-based; add one before joining to VCF POS

Queries return overlapping records, not just records starting inside the interval. A deletion spanning positions 10-14 appears in chr1:14-14, with pos_start=10. For BED [13,14), the equivalent string is chr1:14-14. The Python region parser requires explicit contig:start-end; bare "chr1" is rejected in this release. Use a known contig length for a whole-contig query.

cfg = tiledbvcf.ReadConfig(memory_budget_mb=128, tiledb_config=config)
attrs = ["sample_name", "contig", "pos_start", "pos_end", "alleles", "fmt_GT"]
with tiledbvcf.Dataset(uri, cfg=cfg) as ds:
    assert {"S1", "S2"}.issubset(ds.samples())
    assert set(attrs).issubset(ds.attributes())
    for batch in ds.read_iter(
        attrs=attrs, regions=["chr1:1-100"], samples=["S1", "S2"]
    ):
        print(batch)  # Replace with a bounded consumer or partitioned output.
  • read() returns a pandas DataFrame; read_arrow() returns a PyArrow Table. Either can return only the first memory-limited batch. Continue with continue_read() / continue_read_arrow() until read_completed(), or use read_iter() for ordinary DataFrame queries. Avoid concatenating all batches when the result cannot fit in memory.
  • ReadConfig(memory_budget_mb=...) controls reads; use ingest_samples(total_memory_budget_mb=...) for writes. A read budget is not a process RSS cap. limit truncates total output; it is not a pagination size.
  • sample_partition=(0, 2) selects partition zero of two. Likewise, region_partition=(index, number_of_partitions) partitions query regions; these tuples are not coordinate bounds, tile extents, or sample capacities.
  • 0.40.3 retains BED selection state when a later call omits bed_file. Open a fresh Dataset for an independent query when changing BED/region inputs.
  • fmt_GT contains allele indices: 0 refers to REF, positive values index ALT, and -1 means missing. Preserve multiallelic identity and ploidy; do not treat every positive integer as a biallelic dosage or missing calls as reference. The integer list alone does not encode the original phased GT string.
Raw lines 105 to 149
150## Export and validate
152```python
153from pathlib import Path
155Path("exported").mkdir(exist_ok=True)
156with tiledbvcf.Dataset(uri, cfg=cfg) as ds:
157 ds.export(
158 samples=["S1"], regions=["chr1:1-100"],
159 output_format="v", output_dir="exported",
160 )
161```
163Python export formats: `v` VCF, `z` compressed VCF, `u` uncompressed BCF, `b`
164compressed BCF. `merge=False` writes per-sample files; `merge=True` requires a
165combined `output_path`. A combined export is not joint calling. Re-index exported
166files before indexed downstream access. Compare sample IDs, contigs, record
167counts, alleles, INFO/FORMAT values, and missing/phased genotypes; semantic
168round-trip preservation does not imply byte-identical compression or headers.
170The CLI accepts positional sample paths or `--samples-file` (one URI per line),
171not a comma-separated `--samples` argument:
173```bash
174tiledbvcf create --uri cli_cohort
175tiledbvcf store --uri cli_cohort --threads 2 --total-memory-budget-mb 512 \
176 -- sample1.vcf.gz sample2.vcf.gz
177tiledbvcf list --uri cli_cohort
178tiledbvcf stat --uri cli_cohort
179tiledbvcf export --uri cli_cohort --regions chr1:1-100 \
180 --sample-names S1,S2 -Ot --tsv-fields 'SAMPLE,CHR,POS,REF,ALT,F:GT' \
181 --output-path variants.tsv
182```
184`--` protects positional paths from variable-length options such as
185`--tiledb-config`. Check expected artifacts and sample counts as well as the exit
186code: an invalid store command returned exit zero while printing an error in the
187reviewed CLI. TSV fields use `F:GT` for FORMAT/GT and `I:DP` for INFO/DP.

Export and validate

from pathlib import Path

Path("exported").mkdir(exist_ok=True)
with tiledbvcf.Dataset(uri, cfg=cfg) as ds:
    ds.export(
        samples=["S1"], regions=["chr1:1-100"],
        output_format="v", output_dir="exported",
    )

Python export formats: v VCF, z compressed VCF, u uncompressed BCF, b compressed BCF. merge=False writes per-sample files; merge=True requires a combined output_path. A combined export is not joint calling. Re-index exported files before indexed downstream access. Compare sample IDs, contigs, record counts, alleles, INFO/FORMAT values, and missing/phased genotypes; semantic round-trip preservation does not imply byte-identical compression or headers.

The CLI accepts positional sample paths or --samples-file (one URI per line), not a comma-separated --samples argument:

tiledbvcf create --uri cli_cohort
tiledbvcf store --uri cli_cohort --threads 2 --total-memory-budget-mb 512 \
  -- sample1.vcf.gz sample2.vcf.gz
tiledbvcf list --uri cli_cohort
tiledbvcf stat --uri cli_cohort
tiledbvcf export --uri cli_cohort --regions chr1:1-100 \
  --sample-names S1,S2 -Ot --tsv-fields 'SAMPLE,CHR,POS,REF,ALT,F:GT' \
  --output-path variants.tsv

-- protects positional paths from variable-length options such as --tiledb-config. Check expected artifacts and sample counts as well as the exit code: an invalid store command returned exit zero while printing an error in the reviewed CLI. TSV fields use F:GT for FORMAT/GT and I:DP for INFO/DP.

Raw lines 150 to 188
189## Cohort statistics and QC
191```python
192with tiledbvcf.Dataset(uri, cfg=cfg) as ds:
193 stats = ds.read_variant_stats(regions=["chr1:1-100"], drop_ref=True)
194 stats["vcf_pos"] = stats["pos"] + 1
195 print(stats[["contig", "vcf_pos", "alleles", "ac", "an", "af"]])
197qc = tiledbvcf.sample_qc(uri, samples=["S1"], config=config)
198print(qc)
199```
201Statistics arrays are enabled by default at creation; older/disabled arrays may
202not support these operations. `read_variant_stats` has no `samples` argument.
203The older `read_allele_frequency(dataset_uri, region)` wrapper accepts a single
204region and delegates to the deprecated singular argument; prefer the Dataset
205method above. `sample_qc` uses `dataset_uri`, not `uri`, as its first argument.
207The `ac`, `an`, and `af` values summarize the ingested cohort, not a selected
208ancestry or query sample subset. A `read(samples=[...], set_af_filter=">0.6")`
209filter still used cohort AF in the tested release. Compute subgroup frequencies
210from correctly selected calls with explicit missingness, ploidy, callable-region,
211and gVCF reference-block policies. Use an appropriate called-allele denominator,
212not universally `2 * number_of_samples`; a missing VCF record is not proof of a
213homozygous-reference call. QC metrics and sparse storage do not establish GWAS
214readiness or scientific validity.

Cohort statistics and QC

with tiledbvcf.Dataset(uri, cfg=cfg) as ds:
    stats = ds.read_variant_stats(regions=["chr1:1-100"], drop_ref=True)
    stats["vcf_pos"] = stats["pos"] + 1
    print(stats[["contig", "vcf_pos", "alleles", "ac", "an", "af"]])

qc = tiledbvcf.sample_qc(uri, samples=["S1"], config=config)
print(qc)

Statistics arrays are enabled by default at creation; older/disabled arrays may not support these operations. read_variant_stats has no samples argument. The older read_allele_frequency(dataset_uri, region) wrapper accepts a single region and delegates to the deprecated singular argument; prefer the Dataset method above. sample_qc uses dataset_uri, not uri, as its first argument.

The ac, an, and af values summarize the ingested cohort, not a selected ancestry or query sample subset. A read(samples=[...], set_af_filter=">0.6") filter still used cohort AF in the tested release. Compute subgroup frequencies from correctly selected calls with explicit missingness, ploidy, callable-region, and gVCF reference-block policies. Use an appropriate called-allele denominator, not universally 2 * number_of_samples; a missing VCF record is not proof of a homozygous-reference call. QC metrics and sparse storage do not establish GWAS readiness or scientific validity.

Raw lines 189 to 215
216## Object storage and TileDB Cloud
218Direct storage uses `s3://bucket/path`, `azure://container/path`, or
219`gcs://bucket/path`, supported by the installed TileDB backend and its provider
220credentials. This does not automatically distribute the computation. Use the
221provider's credential chain or scoped configuration, and verify access to both
222the dataset and source indexes. A TileDB Cloud token is distinct from bucket
223credentials. Remote storage examples below are illustrative, source-verified,
224and not authenticated end-to-end tests.
226Install `tiledb-cloud==0.14.4` in a compatible environment. Its `life-sciences`
227extra adds TileDB-SOMA, **not TileDB-VCF**. Supply `TILEDB_REST_TOKEN` through the
228execution environment before importing the client; `TILEDB_REST_HOST` selects a
229custom deployment if required. Do not embed tokens in code or print configuration.
231```python
232# Illustrative: requires an accessible registered cohort and a billing namespace.
233import tiledb.cloud
234import tiledb.cloud.vcf
236cloud_cfg = tiledb.cloud.Config()
237with tiledbvcf.Dataset("tiledb://my-namespace/cohort", tiledb_config=cloud_cfg) as ds:
238 sample_names = ds.samples()
240result = tiledb.cloud.vcf.read(
241 dataset_uri="tiledb://my-namespace/cohort",
242 config=cloud_cfg, attrs=["sample_name", "pos_start", "fmt_GT"],
243 regions=["chr1:1-100"], samples=sample_names[:2],
244 num_region_partitions=1, namespace="my-namespace", max_workers=2,
246frame = result.to_pandas() # read returns an Arrow table, not a DataFrame.
247```
249Distributed reads assemble an Arrow result and may use significant worker/client
250memory. Bound the requested regions/samples and worker count; partitioning does
251not make the final concatenated result memory-free. This is SDK task execution,
252not a paginated VCF REST-list API.
254```python
255# Illustrative, mutating cloud job: use only for an authorized ingestion task.
256submission = tiledb.cloud.vcf.ingest(
257 dataset_uri="s3://my-bucket/cohort",
258 sample_list_uri="s3://my-bucket/inputs/sample-uris.txt",
259 namespace="my-namespace", acn="registered-storage-role",
260 register_name="cohort", max_samples=2,
261 ingest_resources={"cpu": "2", "memory": "4Gi"},
263print(submission["graph_id"])
264```
266Use exactly one of `search_uri`, `sample_list_uri`, or `metadata_uri`; file-search
267patterns apply to `search_uri`. Registration requires the access credential name
268(`acn`). `vcf.ingest` submits asynchronously and returns
269`{"status": "started", "graph_id": ...}`; track that graph to terminal success
270and verify ingested samples before claiming completion. There is no released
271`ingest_vcf_dataset(source=..., output=...)` API. Pricing, availability, security
272controls, and deployment obligations require the current account/service terms.

Object storage and TileDB Cloud

Direct storage uses s3://bucket/path, azure://container/path, or gcs://bucket/path, supported by the installed TileDB backend and its provider credentials. This does not automatically distribute the computation. Use the provider's credential chain or scoped configuration, and verify access to both the dataset and source indexes. A TileDB Cloud token is distinct from bucket credentials. Remote storage examples below are illustrative, source-verified, and not authenticated end-to-end tests.

Install tiledb-cloud==0.14.4 in a compatible environment. Its life-sciences extra adds TileDB-SOMA, not TileDB-VCF. Supply TILEDB_REST_TOKEN through the execution environment before importing the client; TILEDB_REST_HOST selects a custom deployment if required. Do not embed tokens in code or print configuration.

# Illustrative: requires an accessible registered cohort and a billing namespace.
import tiledb.cloud
import tiledb.cloud.vcf

cloud_cfg = tiledb.cloud.Config()
with tiledbvcf.Dataset("tiledb://my-namespace/cohort", tiledb_config=cloud_cfg) as ds:
    sample_names = ds.samples()

result = tiledb.cloud.vcf.read(
    dataset_uri="tiledb://my-namespace/cohort",
    config=cloud_cfg, attrs=["sample_name", "pos_start", "fmt_GT"],
    regions=["chr1:1-100"], samples=sample_names[:2],
    num_region_partitions=1, namespace="my-namespace", max_workers=2,
)
frame = result.to_pandas()  # read returns an Arrow table, not a DataFrame.

Distributed reads assemble an Arrow result and may use significant worker/client memory. Bound the requested regions/samples and worker count; partitioning does not make the final concatenated result memory-free. This is SDK task execution, not a paginated VCF REST-list API.

# Illustrative, mutating cloud job: use only for an authorized ingestion task.
submission = tiledb.cloud.vcf.ingest(
    dataset_uri="s3://my-bucket/cohort",
    sample_list_uri="s3://my-bucket/inputs/sample-uris.txt",
    namespace="my-namespace", acn="registered-storage-role",
    register_name="cohort", max_samples=2,
    ingest_resources={"cpu": "2", "memory": "4Gi"},
)
print(submission["graph_id"])

Use exactly one of search_uri, sample_list_uri, or metadata_uri; file-search patterns apply to search_uri. Registration requires the access credential name (acn). vcf.ingest submits asynchronously and returns {"status": "started", "graph_id": ...}; track that graph to terminal success and verify ingested samples before claiming completion. There is no released ingest_vcf_dataset(source=..., output=...) API. Pricing, availability, security controls, and deployment obligations require the current account/service terms.

Raw lines 216 to 273
274## Official references
276- [TileDB-VCF 0.40.3 release](https://github.com/TileDB-Inc/TileDB-VCF/releases/tag/0.40.3)
277- [Dataset API](https://tiledb-inc.github.io/TileDB-VCF/documentation/reference/Dataset.html)
278- [Ingestion](https://tiledb-inc.github.io/TileDB-VCF/documentation/how-to/ingest-samples.html)
279- [Large queries](https://tiledb-inc.github.io/TileDB-VCF/documentation/how-to/handle-large-queries.html)
280- [Cloud storage](https://tiledb-inc.github.io/TileDB-VCF/documentation/how-to/work-with-cloud-object-stores.html)
281- [TileDB Cloud client release](https://pypi.org/project/tiledb-cloud/0.14.4/)
282- [Verification details and known release issues](references/verification.md)
Reads a file references/verification.md :282

From K-Dense-AI/scientific-agent-skills at 5f2bc03, 2026-10-26. Not read by a model yet. Summary and techniques by Claude Opus 5.5 on 2026-11-06.