Skip to main content

seqout (Python Client & CLI)

A Python client library and command-line interface (CLI) for seqout.org. Use this package to search and retrieve genomics study metadata across GEO, SRA, ENA, DDBJ, ArrayExpress, GEA, and GSA, and download metadata, raw reads, and processed counts matrices.

Requires Python 3.13 or newer.

Installation

pip install seqout            # library + CLI
pip install "seqout[counts]"  # also read GEO supplementary files as counts matrices

As a standalone CLI, or as a project dependency, with uv:

uv tool install seqout
uvx seqout --help             # run once without installing
uv add "seqout[counts]"

The development version installs from GitHub:

pip install "seqout @ git+https://github.com/saketlab/seqout.git#subdirectory=python"

Quick start

Query from the command line

Run these commands to search for datasets, inspect study details, and download supplementary files:

# Search for GEO single-cell lung cancer studies, sorted by citations
seqout search "lung cancer single cell" --db geo --sort citations --max 5

# Show detailed metadata for a study
seqout show GSE149312

# Download processed supplementary files
seqout download GSE149312 --supplementary

Query in Python

Open a connection using connect() to search and query metadata programmatically:

from seqout import connect

with connect() as sq:
    dataset = sq.get("GSE149312")
    print(f"Title: {dataset.meta.title}")
    print(f"Samples: {len(dataset.samples)}")
    print(f"Runs: {len(dataset.runs)}")

The Dataset object evaluates fields lazily. It fetches data from the API only when you access a field for the first time, and caches it for future reads. It automatically resolves cross-archive links (for example, mapping a GEO series to its corresponding SRA study runs).

Parse processed single-cell matrices

To parse supplementary files into cell-by-gene expression matrices along with harmonized donor covariates, use SeqoutListCounts. This feature requires the counts installation extra:

from seqout import SeqoutListCounts

# Query the file manifest without downloading the files
counts = SeqoutListCounts(gse="GSE297547")
print(counts.manifest())

# Download and parse a specific sample unit into an AnnData object
matrix = counts.matrix(sample="GSM8994520")

# Access the harmonized experimental design table
print(counts.design)

Command reference summary

For the complete options list, run seqout --help or seqout <command> --help.

Explore metadata

Command Action
seqout search [query] Search for studies using free-text and metadata filters.
seqout show <accession> Display study-level tables or detailed sample attributes.
seqout pmid <pmid|doi> Retrieve all datasets linked to a publication PMID or DOI.
seqout author <name> Retrieve all datasets linked to an author.

Download files

Command Action
seqout download <accession> Download study metadata as a JSON file.
seqout download <accession> --supplementary Download study-level supplementary files.
seqout download <accession> --sample-supplementary Download per-sample supplementary files.
seqout download <accession> --fastq Download raw sequencing reads (supports --sra, --sra-lite, --s3, --gcs).

Map accessions

Command Action
seqout convert <accession>... --to <kind> Map accessions to other types (e.g., study, sample, run).
seqout gse-to-srp <accession>... Shorthand helper to convert GEO Series accessions to SRA Study accessions.

Offline SQL queries (Parquet backend)

Command Action
seqout parquet download <dir> Download the published database Parquet files to a directory.
seqout parquet query "<sql>" Run custom SQL queries against the Parquet files using DuckDB.
seqout parquet show <accession> Inspect studies, samples, or experiments offline.
seqout parquet set-source <url|dir> Save a default local or remote source directory.

To run standard CLI commands offline, append the --parquet flag (e.g., seqout show GSE12345 --parquet).

Metadata

Release files for seqout 0.2.7

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

Source distribution (sdist)

Source distribution for seqout 0.2.7
File Size Uploaded Provenance Actions
seqout-0.2.7.tar.gz 155.3 kB With provenance Details for seqout-0.2.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for seqout 0.2.7
File Interpreter ABI Platform Actions
seqout-0.2.7-py3-none-any.whl Python 3 none any Details for seqout-0.2.7-py3-none-any.whl

Total release size: 290.3 kB

Release files / seqout-0.2.7.tar.gz

Download URL seqout-0.2.7.tar.gz
Size 155.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d41bdbcb3dc38a2601adae017b14bdde33bfaa954b378be1d126125c231d7713
BLAKE2b-256 checksum
How to use checksums
f6c5c0296eab8c47e112cceb3102360aafed7539e3aebf2e154af39bb04f0485
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / seqout-0.2.7-py3-none-any.whl

Download URL seqout-0.2.7-py3-none-any.whl
Size 135.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7d2bd7c4f546c267edb9443f57efe920b0ba3f5a6346ff32b380c80af8b0085f
BLAKE2b-256 checksum
How to use checksums
5b1165bc434ec58c1cef7ee8964781497391e1b08460f7dae94a284caccd5876
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Security for seqout 0.2.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for seqout-0.2.7.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.7 This release

2 release files Full provenance

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