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.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| seqout-0.2.8.tar.gz | 162.6 kB | With provenance | Details for seqout-0.2.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| seqout-0.2.8-py3-none-any.whl | Python 3 | none | any | Details for seqout-0.2.8-py3-none-any.whl |
Total release size: 299.7 kB
Release files / seqout-0.2.8.tar.gz
| Download URL | seqout-0.2.8.tar.gz |
|---|---|
| Size | 162.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2fc50a83ce50eac9f7fbbaa80a12434127e6d05b120dcf80f72142189d6931b0
|
|
BLAKE2b-256 checksum How to use checksums |
b85e415fce8cc09a8996d045d23e0e79f49f3f62e6d99fd8daa61158f6655ae7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / seqout-0.2.8-py3-none-any.whl
| Download URL | seqout-0.2.8-py3-none-any.whl |
|---|---|
| Size | 137.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
83db0ae7709fcfba4dac0100f724de1043fb7722a0a6322dd96ec94219bc3c46
|
|
BLAKE2b-256 checksum How to use checksums |
3b31a5ffa2f40d370b11620234dd3239a1679b7c7c164648e07b5179b27302e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logSecurity for seqout 0.2.8
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.
Attestation for seqout-0.2.8.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 21, 2026.
Transparency logA 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.