Skip to main content

This module allows fast random access to files compressed with bgzip and indexed by tabix. It includes a C extension with code from klib. The bgzip and tabix programs are available here.

Installation

pip install --user pytabix

Synopsis

Genomics data is often in a table where each row corresponds to a genomic region (start, end) or a position:

chrom  pos      snp
1      1000760  rs75316104
1      1000894  rs114006445
1      1000910  rs79750022
1      1001177  rs4970401
1      1001256  rs78650406

With tabix, you can quickly retrieve all rows in a genomic region by specifying a query with a sequence name, start, and end:

import tabix

# Open a remote or local file.
url = "ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20100804/"
url += "ALL.2of4intersection.20100804.genotypes.vcf.gz"

tb = tabix.open(url)

# These queries are identical. A query returns an iterator over the results.
records = tb.query("1", 1000000, 1250000)
records = tb.queryi(0, 1000000, 1250000)
records = tb.querys("1:1000000-1250000")

# Each record is a list of strings.
for record in records:
    print record[:3]
['1', '1000760', 'rs75316104']
['1', '1000760', 'rs75316104']
['1', '1000894', 'rs114006445']
['1', '1000910', 'rs79750022']
['1', '1001177', 'rs4970401']
['1', '1001256', 'rs78650406']

Example

Let’s say you have a table of gene coordinates:

$ zcat example.bed.gz | shuf | head -n5 | column -t
chr19  53611131   53636172   55786   ZNF415
chr10  72149121   72150375   221017  CEP57L1P1
chr4   185009858  185139113  133121  ENPP6
chrX   132669772  133119672  2719    GPC3
chr6   134924279  134925376  114182  FAM8A6P

Sort it by chromosome, then by start and end positions. Then, use bgzip to deflate the file into compressed blocks:

$ zcat example.bed.gz | sort -k1V -k2n -k3n | bgzip > example.bed.bgz

The compressed size is usually slightly larger than that obtained with gzip.

Index the file with tabix:

$ tabix -s 1 -b 2 -e 3 example.bed.gz

$ ls
example.bed.gz  example.bed.bgz  example.bed.bgz.tbi

Release files for pytabix 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytabix 0.1
File Size Uploaded
pytabix-0.1.tar.gz 45.8 kB Details

Release files / pytabix-0.1.tar.gz

Download URL pytabix-0.1.tar.gz
Size 45.8 kB
Tags Source
SHA-256 checksum
How to use checksums
0774f1687ebd41811fb07a0e50951b6be72d7cc7e22ed2b18972eaf7482eb7d1
BLAKE2b-256 checksum
How to use checksums
846a520ecf75c2ada77492cb4ed21fb22aed178e791df434ca083b59fffadddd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1 This release

1 release file

0.0.2

1 release file

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