Skill: Search ENA
Use When
- A user wants to find sequencing data in the European Nucleotide Archive (ENA) hosted at ebi.ac.uk.
- A user needs to look up ENA/SRA accessions: PRJEB/PRJNA (study), ERS/SRS (sample), ERX/SRX (experiment), ERR/SRR (run).
- A user wants to query ENA by organism, tissue, assay type, instrument, library strategy, or free-text keyword.
- A user wants structured metadata (TSV/JSON) for runs or samples in a study without installing any software.
- A user needs FASTQ or BAM download URLs (FTP or HTTPS) for ENA runs.
- A user wants to find public datasets equivalent to those in NCBI SRA (ENA mirrors most SRA submissions).
Inputs
- Required:
- one of: ENA/SRA accession (PRJEB/PRJNA/ERR/SRR/ERS/SRS/ERX/SRX), free-text search query, or taxonomy ID
- Optional:
- result type (ENA entity):
study,sample,experiment,run,analysis(default:run) - organism filter (scientific name or NCBI taxonomy ID)
- library strategy filter (e.g.,
RNA-Seq,WGS,AMPLICON,ChIP-Seq) - instrument platform filter (e.g.,
ILLUMINA,OXFORD_NANOPORE,PACBIO_SMRT) - library layout:
PAIREDorSINGLE - fields to return (comma-separated ENA field names, or
allfor full metadata) - date range:
first_publicrange inYYYY-MM-DD - maximum results (
limit, default 100) - output format:
tsvorjson - output file path
- result type (ENA entity):
Workflow
-
Construct an ENA Portal API search request:
GET https://www.ebi.ac.uk/ena/portal/api/search ?result=<result-type> &query=<lucene-query> &fields=<field-list> &format=<tsv|json> &limit=<n>- For accession-based lookup:
query=study_accession="<PRJEB>"orquery=run_accession="<ERR>" - For text search:
query=<term>with optional field qualifiers such asscientific_name="Homo sapiens" - For taxonomy:
query=tax_eq(<taxon_id>)orquery=tax_tree(<taxon_id>)(includes descendants)
- For accession-based lookup:
-
Recommended field sets by result type:
run:run_accession,experiment_accession,sample_accession,study_accession,scientific_name,instrument_platform,library_strategy,library_layout,read_count,base_count,fastq_ftp,fastq_bytes,first_publicstudy:study_accession,secondary_study_accession,study_title,tax_id,scientific_name,study_description,first_publicsample:sample_accession,secondary_sample_accession,scientific_name,tax_id,sample_title,collection_date,country,tissue_type
-
Parse the response to build a summary table.
-
Extract
fastq_ftporfastq_asperacolumns for direct download links. -
For large queries (>1000 runs), use
limitandoffsetfor paging, or stream withformat=tsv. -
Report download commands using
wgetorcurlfor the FTP URLs.
Output Contract
- API request URL used
- Number of matching records
- Summary table with key fields per result type (accession, organism, strategy, platform, read count, size, date)
- FASTQ download URLs (FTP and HTTPS) for run-level queries
- Saved output files when a path is provided:
results.tsvorresults.jsonfastq_urls.txt(one URL per line, ready forwget -ioraria2c -i)
Limits
- This skill depends on live access to
https://www.ebi.ac.uk/ena/portal/api/. - ENA Portal API returns at most 100 000 rows per request; use paging for larger result sets.
- Not all SRA submissions are mirrored in ENA immediately; newly submitted data may not be available yet.
- Controlled-access datasets (e.g., from EGA) are not accessible through the ENA Portal API.
- The
fastq_ftpfield may be empty for runs that are only available as SRA format; in that case fall back tosra_ftpor usefasterq-dump. - ENA Lucene query syntax differs from NCBI E-utilities query syntax; do not mix them.
- Common failure cases:
- using NCBI-style
[field]tag syntax instead of ENAfield="value"syntax - requesting
result=runbut filtering by study-level fields not propagated to run records fastq_ftpreturning multiple semicolon-separated URLs (for paired-end runs); must split on;- omitting
tax_tree()and only getting exact taxon matches, missing subspecies/strains
- using NCBI-style
微信扫一扫