Claude Cursor Skill

search-encode

Search and explore ENCODE Project genomics data. Use when the user wants to find experiments, files, or explore what data is available for specific assays, organs, cell lines, or targets.

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download ammawla-encode-toolkit-skills_search-encode-36836c8.zip · 12 KB
Part of ammawla/encode-toolkit — 90 skills

Install

skills CLI npx skills add https://github.com/ammawla/encode-toolkit/tree/main/skills/search-encode
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install ammawla-encode-toolkit@llmmart
Git git clone https://github.com/ammawla/encode-toolkit.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole ammawla/encode-toolkit collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Search ENCODE Data

When to Use

  • User wants to find ENCODE experiments matching specific criteria (assay, organ, cell type, target)
  • User asks "what ENCODE data exists for [tissue/target/assay]?"
  • User wants to explore available data before downloading
  • User needs to find specific file types (BED, BAM, bigWig) across experiments
  • User wants to know how many experiments exist for a condition
  • User asks about available assays, organisms, or biosamples in ENCODE

Help the user find ENCODE experiments and files. Use the appropriate tools based on what they need.

Search Strategy

  1. Finding experiments: Use encode_search_experiments with filters:

    • assay_title: "Histone ChIP-seq", "ATAC-seq", "total RNA-seq", "polyA plus RNA-seq", "TF ChIP-seq", "Hi-C", "CUT&RUN", "WGBS", etc.
    • organ: "pancreas", "brain", "liver", "heart", "kidney", "lung", etc.
    • biosample_type: "tissue", "cell line", "primary cell", "organoid"
    • biosample_term_name: specific name like "GM12878", "HepG2", "K562"
    • target: ChIP/CUT&RUN target like "H3K27me3", "H3K4me3", "CTCF", "p300"
    • organism: "Homo sapiens" (default) or "Mus musculus"
  2. Finding files across experiments: Use encode_search_files when the user wants specific file types from multiple experiments.

  3. Exploring available data: Use encode_get_facets to see counts of what exists before searching. Use encode_get_metadata to list valid filter values.

  4. Getting experiment details: Use encode_get_experiment for full metadata on a single experiment. Use encode_list_files to see all files for one experiment.

Search Strategy Guide

Effective ENCODE searching follows a three-phase pattern: explore, search, refine. Jumping straight to a filtered search often produces empty results or misses relevant data.

Phase 1: Explore with Facets

Always start with encode_get_facets to understand what data exists. Facets return counts per filter value, so you can see immediately whether your target organ, assay, or biosample has data.

encode_get_facets(organ="pancreas")
  -> Shows: Histone ChIP-seq (42), ATAC-seq (8), RNA-seq (15), TF ChIP-seq (6), ...
  -> Also shows: biosample types, life stages, labs, replication types

This avoids the frustrating pattern of searching for data that does not exist. Facets may also reveal data you did not expect -- for example, CUT&RUN data where you only anticipated ChIP-seq, or organoid samples alongside tissue.

Phase 2: Validate Filter Values

Before searching, confirm that your filter values match ENCODE's controlled vocabulary. A mistyped assay name returns zero results with no error.

encode_get_metadata(metadata_type="assays")
  -> Returns all valid assay_title values: "Histone ChIP-seq", "TF ChIP-seq", "ATAC-seq", ...

Available metadata types: assays, organisms, organs, biosample_types, file_formats, output_types, output_categories, assemblies, life_stages, replication_types, statuses, file_statuses.

Phase 3: Search and Refine

Start with broad filters and add constraints one at a time. If a search returns too many results (>100), add a filter. If it returns zero, remove the most restrictive filter first.

# Too broad: 2,400 results
encode_search_experiments(assay_title="Histone ChIP-seq")

# Add organ: 42 results
encode_search_experiments(assay_title="Histone ChIP-seq", organ="pancreas")

# Add target: 6 results
encode_search_experiments(assay_title="Histone ChIP-seq", organ="pancreas", target="H3K27ac")

Pitfalls & Edge Cases

  1. Wrong assay_title values: Assay names must match ENCODE's controlled vocabulary exactly. Run encode_get_metadata(metadata_type="assays") first to discover valid values. For example, use "Histone ChIP-seq" not "ChIP-seq" or "H3K27ac ChIP".
  2. Confusing biosample_term_name vs organ: organ is a broad anatomical system (e.g., "pancreas", "brain"). biosample_term_name is a specific cell or tissue name (e.g., "GM12878", "islet of Langerhans"). Use organ for tissue-level exploration, biosample_term_name when you know the exact biosample.
  3. Not exploring first: Always call encode_get_facets before searching to see what data exists. This avoids empty results and reveals unexpected data availability. For example, facets may show CUT&RUN data exists for your organ when you only expected ChIP-seq.
  4. Mixing organisms: Human and mouse experiments use different assemblies (GRCh38 vs mm10) and cannot be directly compared. Always filter by organism to avoid mixing species in results.
  5. Expecting file-level results from experiment search: encode_search_experiments returns experiments, not individual files. If the user wants specific BED or bigWig files, use encode_search_files instead with file_format and output_type filters.
  6. Searching for deprecated data: The default status="released" is correct for most use cases. Archived or revoked experiments may have known quality issues. Only change status if the user explicitly needs historical data.

Gotchas

organ vs biosample_term_name vs biosample_type

These three filters address different levels of the biosample hierarchy. Using the wrong one produces unexpected results.

Filter What it means Example values When to use
organ Broad anatomical system "pancreas", "brain", "heart", "liver" Exploring all data for an organ system
biosample_term_name Exact biosample name "GM12878", "K562", "islet of Langerhans", "HepG2" You know the exact cell type or tissue name
biosample_type Category of biosample "tissue", "cell line", "primary cell", "organoid", "in vitro differentiated cells" Filtering by how the sample was obtained

Common mistake: using biosample_term_name="pancreas" when you mean organ="pancreas". The term name "pancreas" matches whole-pancreas tissue samples only, missing islets, acinar cells, and other pancreatic substructures that are classified under the pancreas organ.

assay_title Must Match Exactly

ENCODE uses a controlled vocabulary for assay names. Common mistakes:

Wrong Correct
"ChIP-seq" "Histone ChIP-seq" or "TF ChIP-seq"
"H3K27ac ChIP" "Histone ChIP-seq" (with target="H3K27ac")
"ATAC" "ATAC-seq"
"DNase" "DNase-seq"
"Bisulfite-seq" "WGBS"
"scRNA-seq" "scRNA-seq"
"scATAC-seq" "snATAC-seq"

Always run encode_get_metadata(metadata_type="assays") to see valid values.

target Names Are Case-Sensitive

Histone mark targets use a specific capitalization pattern. Common mistakes:

Wrong Correct
"h3k27ac" "H3K27ac"
"H3K27AC" "H3K27ac"
"H3K4Me3" "H3K4me3"
"ctcf" "CTCF"

Pattern: H3K where the modification is lowercase ("me3", "ac", "me1"). Transcription factor targets use all-uppercase names ("CTCF", "POLR2A", "EP300").

Experiment Status Meanings

Status Meaning When to use
released Passed ENCODE quality standards. Default and recommended. Nearly all searches
archived Superseded by newer experiment or has known limitations. Data still accessible but not recommended. Historical analysis, reproducing old studies
revoked Serious quality problems identified post-release. Should not be used for new analysis. Only if investigating specific quality issues

Common Filter Combinations

Ready-to-use filter combinations for common research questions:

Research Question Tool + Filters
All human heart data encode_search_experiments(organ="heart")
Active enhancers in a tissue encode_search_experiments(assay_title="Histone ChIP-seq", target="H3K27ac", organ="liver")
Active promoters in a tissue encode_search_experiments(assay_title="Histone ChIP-seq", target="H3K4me3", organ="liver")
Repressed chromatin encode_search_experiments(assay_title="Histone ChIP-seq", target="H3K27me3", organ="brain")
Open chromatin atlas Run two searches: assay_title="ATAC-seq" and assay_title="DNase-seq" for the same organ
TF binding for a specific factor encode_search_experiments(assay_title="TF ChIP-seq", target="CTCF", organ="liver")
Cell line data encode_search_experiments(biosample_type="cell line", organ="blood")
Tier 1 cell line (most data) encode_search_experiments(biosample_term_name="K562") or "GM12878" or "H1-hESC"
Mouse developmental data encode_search_experiments(organism="Mus musculus", life_stage="embryonic", organ="brain")
Recent high-quality data encode_search_experiments(status="released", date_released_from="2023-01-01")
Perturbation experiments encode_search_experiments(perturbed=True, organ="liver")
CRISPR screen data encode_search_experiments(assay_title="CRISPR screen")
3D genome structure encode_search_experiments(assay_title="Hi-C", organ="brain")
DNA methylation encode_search_experiments(assay_title="WGBS", organ="pancreas")
Specific BED peak files encode_search_files(file_format="bed", output_type="IDR thresholded peaks", assembly="GRCh38")
Signal tracks for visualization encode_search_files(file_format="bigWig", output_type="fold change over control", organ="heart")
ENCODE-recommended files encode_search_files(preferred_default=True, assay_title="Histone ChIP-seq", organ="pancreas")

Walkthrough: Finding Histone ChIP-seq for a Tissue

Goal: Find all H3K27ac ChIP-seq experiments in human pancreas with high-quality, analysis-ready peak files.

Step 1: Check Available Data with Facets

encode_get_facets(organ="pancreas")

Review the output to see which assay types have data, how many experiments exist, which biosample types are represented (tissue vs cell line vs primary cell), and which labs contributed data. This tells you whether your search is feasible before committing to specific filters.

Step 2: Search Experiments with Assay + Organ Filters

encode_search_experiments(
  assay_title="Histone ChIP-seq",
  organ="pancreas",
  target="H3K27ac",
  limit=50
)

Review the results table. Note the accessions, biosample names, labs, and replication types. If too many results, narrow by biosample_type="tissue" to exclude cell lines, or by life_stage="adult" to exclude embryonic samples.

Step 3: Filter by Status and Assembly

The default status="released" is already applied. For files, you also want to specify the genome assembly to avoid mixing coordinate systems:

encode_list_files(
  experiment_accession="ENCSR...",
  assembly="GRCh38",
  file_format="bed"
)

This returns only GRCh38-aligned BED files, filtering out legacy hg19 files and raw FASTQs.

Step 4: Check Quality with Audit Information

encode_get_experiment(accession="ENCSR...")

The full experiment record includes one count per audit severity (there is no nested audit object). Review them in priority order:

  • audit_error_count: Serious problems. Do not use this experiment without investigating.
  • audit_not_compliant_count: Failed an ENCODE standard. Check what standard was missed.
  • audit_warning_count: Minor issues. Usually acceptable but worth noting.
  • audit_internal_action_count: Portal bookkeeping. Safe to ignore.

The counts do not carry the audit messages themselves — open the experiment on encodeproject.org to read those.

For ChIP-seq, also check: FRiP (fraction of reads in peaks) should be at least 1%, NSC (normalized strand coefficient) should exceed 1.05, and the experiment should have 2+ biological replicates.

Step 5: List Preferred Default Files

encode_list_files(
  experiment_accession="ENCSR...",
  preferred_default=True
)

ENCODE curators mark recommended files as preferred_default=True. These are the best files for each output type. For Histone ChIP-seq, this typically includes:

  • IDR thresholded peaks (BED narrowPeak) -- use for enhancer/promoter identification
  • Fold change over control (bigWig) -- use for signal visualization in genome browsers
  • Signal p-value (bigWig) -- use for statistical thresholding

If preferred_default returns no results, fall back to filtering manually:

encode_list_files(
  experiment_accession="ENCSR...",
  output_type="IDR thresholded peaks",
  assembly="GRCh38"
)

Walkthrough: Cross-Assay Data Collection

Goal: Collect matched Histone ChIP-seq, ATAC-seq, and RNA-seq data for the same tissue to build a multi-omic regulatory map.

Strategy

ENCODE does not provide a single query that retrieves matched experiments across assay types. Instead, search each assay type separately and match experiments by biosample. The key matching fields are organ, biosample_term_name, and biosample_type.

Step 1: Survey All Available Assays for Your Tissue

encode_get_facets(organ="liver")

Review the assay counts. Confirm that all three assay types (Histone ChIP-seq, ATAC-seq, RNA-seq) have data for liver. Note which biosample types are represented -- you will need to match on the same biosample type across assays.

Step 2: Search Each Assay Type Separately

encode_search_experiments(assay_title="Histone ChIP-seq", organ="liver", biosample_type="tissue", limit=100)
encode_search_experiments(assay_title="ATAC-seq", organ="liver", biosample_type="tissue", limit=100)
encode_search_experiments(assay_title="total RNA-seq", organ="liver", biosample_type="tissue", limit=100)

Step 3: Match by Biosample

From each result set, extract the biosample_summary and biosample_type values (biosample_term_name is a search filter, not a field of the results). Look for overlap: which specific biosamples appear in all three result sets? For example, "liver" tissue may appear in all three, but "hepatocyte" primary cells may only have ChIP-seq and RNA-seq.

Present the coverage as a matrix:

Biosample Histone ChIP-seq ATAC-seq RNA-seq
liver (tissue) 12 experiments 4 experiments 8 experiments
hepatocyte (primary cell) 3 experiments 0 2 experiments
HepG2 (cell line) 18 experiments 6 experiments 10 experiments

Step 4: Verify Coverage with Facets

For the matched biosample, use facets to confirm what histone marks and targets are available:

encode_get_facets(assay_title="Histone ChIP-seq", organ="liver")

This shows which targets (H3K27ac, H3K4me3, H3K27me3, etc.) are available. A minimal epigenomic profile requires at least H3K27ac (active enhancers) and H3K4me3 (active promoters). A comprehensive profile adds H3K27me3 (repression), H3K36me3 (gene bodies), and H3K4me1 (poised enhancers).

Step 5: Collect Files for Matched Experiments

Once you identify matching experiments, use encode_list_files with preferred_default=True for each experiment to get the recommended analysis-ready files. Ensure all files use the same assembly (GRCh38 for human).

Pagination

Search tools return paginated results. The response includes fields for navigating large result sets.

Response Fields

Field Type Meaning
total integer Total number of matching results across all pages
has_more boolean True if more results exist beyond the current page
next_offset integer or null The offset value to pass for the next page, null if no more pages

Paging Through Results

# Page 1: first 25 results
encode_search_experiments(assay_title="Histone ChIP-seq", limit=25, offset=0)
  -> total: 142, has_more: true, next_offset: 25

# Page 2: results 26-50
encode_search_experiments(assay_title="Histone ChIP-seq", limit=25, offset=25)
  -> total: 142, has_more: true, next_offset: 50

# ... continue until has_more is false

Choosing a Limit

  • limit=25 (default): Good for initial exploration and presenting results to the user.
  • limit=50: Good for moderate result sets where you need a broader view.
  • limit=100: Use for comprehensive searches or when collecting all data for an analysis. This is the maximum recommended for a single call.

For very large result sets (>100), page through with offset rather than setting an extremely high limit. This keeps response times fast and avoids overwhelming the user with too many results at once.

Search Tips

  • Start broad, then narrow: Begin with encode_get_facets to understand the data landscape, then add filters incrementally.
  • Use metadata discovery: Call encode_get_metadata(metadata_type="assays") to see all valid assay names before searching. Same for "organs", "biosample_types", "output_types".
  • Pagination: Default limit=25. Use limit=100 for comprehensive searches. Check the total count in results. Use offset to page through large result sets.
  • Free text search: Use search_term parameter for keyword search across all fields when structured filters are insufficient (e.g., search_term="CRISPR screen pancreatic").
  • Tier 1 cell lines: K562, GM12878, and H1-hESC have the most data across all assay types. Use these as starting points for exploratory analysis.
  • Life stage matters: Filter by life_stage ("adult", "embryonic", "child") when comparing developmental stages. This is especially important for tissue samples.
  • Date filtering: Use date_released_from and date_released_to (YYYY-MM-DD format) to find recently released experiments or to scope searches to a specific time window.
  • Perturbation experiments: Set perturbed=True to find only experiments with genetic modifications or treatments. Combine with genetic_modification="CRISPR" or treatment to narrow further.
  • Lab filtering: If you know which lab produced the data you need, use lab to restrict results. This is useful for finding data from specific ENCODE production centers.

Code Examples

1. Discover, Search, Filter: "Find all H3K27ac ChIP-seq in human pancreas tissue"

Step 1: Explore what's available
  encode_get_facets(organ="pancreas")
  -> Shows assay types and counts available for pancreas
  -> Example output: Histone ChIP-seq (42), ATAC-seq (8), RNA-seq (15)

Step 2: Search experiments
  encode_search_experiments(
    assay_title="Histone ChIP-seq",
    organ="pancreas",
    target="H3K27ac",
    limit=50
  )
  -> Returns matching experiments with accession, biosample, lab, status

Step 3: Get files for a specific experiment
  encode_list_files(
    experiment_accession="ENCSR...",
    file_format="bed",
    output_type="IDR thresholded peaks",
    assembly="GRCh38"
  )
  -> Returns peak files ready for analysis

Step 4: Or get the recommended default files directly
  encode_list_files(
    experiment_accession="ENCSR...",
    preferred_default=True
  )
  -> Returns ENCODE's recommended files for this experiment

2. Multi-assay comparison: "Compare available ATAC-seq vs DNase-seq for liver"

Step 1: Check ATAC-seq availability
  encode_get_facets(assay_title="ATAC-seq", organ="liver")
  -> Shows biosample types, counts, life stages, and labs

Step 2: Check DNase-seq availability
  encode_get_facets(assay_title="DNase-seq", organ="liver")
  -> Compare counts and biosample coverage against ATAC-seq

Step 3: Search both assays
  encode_search_experiments(assay_title="ATAC-seq", organ="liver", limit=50)
  encode_search_experiments(assay_title="DNase-seq", organ="liver", limit=50)
  -> Present side-by-side comparison of experiment counts, biosamples, labs

Step 4: Present comparison summary
  -> "ATAC-seq: 12 experiments across 4 biosample types (3 labs)"
  -> "DNase-seq: 28 experiments across 7 biosample types (5 labs)"
  -> "DNase-seq has broader biosample coverage; ATAC-seq experiments are more recent"

3. Time-based discovery: "Find recently released CRISPR screen experiments"

Step 1: Validate the assay name
  encode_get_metadata(metadata_type="assays")
  -> Confirms "CRISPR screen" is a valid assay_title

Step 2: Search with date filter
  encode_search_experiments(
    assay_title="CRISPR screen",
    date_released_from="2024-01-01",
    limit=25
  )
  -> Returns recent CRISPR screen experiments

Step 3: Explore details for a specific experiment
  encode_get_experiment(accession="ENCSR...")
  -> Full metadata: assay, biosample, replicate counts, file list, audit counts

Step 4: Check audit status for quality
  -> Look at audit_error_count, audit_not_compliant_count, audit_warning_count
  -> Experiments with audit_error_count > 0 should be flagged to the user

4. File-level search: "Find all IDR thresholded peak BED files for human brain ChIP-seq"

Step 1: Search files directly across experiments
  encode_search_files(
    file_format="bed",
    output_type="IDR thresholded peaks",
    assay_title="Histone ChIP-seq",
    organ="brain",
    assembly="GRCh38",
    limit=100
  )
  -> Returns BED files with accessions, experiment links, sizes, and download URLs

Step 2: Filter to recommended files only
  encode_search_files(
    preferred_default=True,
    assay_title="Histone ChIP-seq",
    organ="brain",
    assembly="GRCh38",
    limit=100
  )
  -> Returns only ENCODE-curated recommended files

Integration

This skill produces... Feed into... Purpose
Experiment accessions download-encode Download files for found experiments
Search results track-experiments Track discovered experiments
Experiment lists batch-analysis Process multiple experiments together
Filtered experiments quality-assessment Evaluate quality of search results
Experiment metadata compare-biosamples Compare experiments across biosamples
Assay-specific results pipeline-guide Route to correct processing pipeline
Target-specific experiments histone-aggregation Collect experiments for aggregation
Facet data epigenome-profiling Survey available data for profiling

Presenting Results

When presenting search results to the user:

  • Show results in a clear table format with columns: accession | assay | biosample | target | lab | status
  • Always show the total count and note if results are paginated (e.g., "Showing 25 of 142 experiments")
  • Suggest narrowing filters if too many results (>100)
  • Suggest broadening filters if no results returned
  • Suggest next steps: "Would you like to see files for any of these experiments?" or "Would you like to track any of these experiments?"
  • When results span multiple labs or biosample types, summarize the distribution

Key Literature

  • ENCODE Phase 3: ENCODE Project Consortium 2020 (Nature, ~2,000 citations) DOI: 10.1038/s41586-020-2493-4 -- Defines the catalog of functional genomic elements that this search covers.
  • ENCODE Portal: Hitz et al. 2023 (Nucleic Acids Research) DOI: 10.1093/nar/gkac1067 -- Documents the portal, search API, and data access patterns used by this skill.

Related Skills

Skill When to Use Instead/Additionally
download-encode Downloading files after finding experiments
track-experiments Saving found experiments to local collection
quality-assessment Evaluating experiment quality before use
compare-biosamples Comparing data across tissues, cell lines, or conditions
cross-reference Linking experiments to PubMed, DOI, GEO, NCT IDs
epigenome-profiling Building comprehensive tissue profiles from search results
publication-trust Evaluating the provenance and trustworthiness of linked publications

For the request: "$ARGUMENTS"

Files (encode-toolkit)
  • references
    • literature.md 11.5 KB
      # Search ENCODE — Literature References
      
      **Last updated:** 2026-03-07
      **Purpose:** Reference catalog for the search-encode skill — key papers defining the ENCODE
      Project, its data portal, and the candidate cis-regulatory element (cCRE) registry that
      underpins experiment search and discovery.
      
      The search-encode skill enables users to find ENCODE experiments by assay type, organ, biosample,
      target, and organism. Understanding the project's evolution from pilot (2004) through comprehensive
      catalogs (2012, 2020) and the architecture of the ENCODE portal is essential for effective data
      discovery. These papers define the controlled vocabularies, metadata schemas, and cCRE
      classifications that search queries rely on.
      
      The 8 papers below are organized into three thematic groups: (1) the ENCODE Project's foundational
      publications that define what data exists and how it is organized, (2) the data portal papers that
      describe the technical infrastructure for programmatic search, and (3) the cCRE registry papers
      that define the element-centric classification system used for filtering and categorizing results.
      
      ---
      
      ## ENCODE Project Foundation
      
      The ENCODE Project has published three major consortium papers (2004, 2012, 2020) corresponding
      to its three phases. Each phase expanded the scope of assay types, biosamples, and analytical
      frameworks. Understanding which phase generated the data you are searching for is important
      because metadata standards, quality thresholds, and file naming conventions evolved across
      phases. Phase 1 (pilot) data used older assay protocols and may lack quality audit flags.
      Phase 2 data covers 147 cell types with mature ChIP-seq and DNase-seq protocols. Phase 3 data
      includes the newest assay types (CUT&RUN, CRISPR screens, single-cell methods) and the
      cCRE registry.
      
      ---
      
      ### ENCODE Project Consortium 2004 — Launch of the Encyclopedia of DNA Elements
      
      - **Citation:** The ENCODE Project Consortium. The ENCODE (ENCyclopedia Of DNA Elements)
        Project. *Science*, 306(5696), 636-640, 2004.
      - **DOI:** [10.1126/science.1105136](https://doi.org/10.1126/science.1105136)
      - **PMID:** 15499007 | **PMC:** PMC3232742
      - **Citations:** ~2,200
      - **Key findings:** Announced the ENCODE Project, defining its mission to identify all
        functional elements in the human genome. The pilot phase targeted 1% of the genome
        (30 Mb across 44 regions) using multiple approaches including ChIP-chip, DNase-seq,
        and RNA profiling. Established the project's organizational framework, data-sharing
        principles, and the consortium model that would scale to genome-wide coverage. For
        search purposes, this paper defines the foundational vocabulary of "functional elements"
        that ENCODE catalogs: promoters, enhancers, silencers, insulators, and non-coding RNA
        genes. The open data-sharing model established here — immediate public release with no
        embargo — directly enables the API access that search-encode relies on.
      
      ---
      
      ### ENCODE Project Consortium 2012 — Comprehensive encyclopedia across 147 cell types
      
      - **Citation:** The ENCODE Project Consortium. An integrated encyclopedia of DNA elements in
        the human genome. *Nature*, 489(7414), 57-74, 2012.
      - **DOI:** [10.1038/nature11247](https://doi.org/10.1038/nature11247)
      - **PMID:** 22955616 | **PMC:** PMC3439153
      - **Citations:** ~8,000
      - **Key findings:** The integrative analysis paper from ENCODE Phase 2, reporting 1,640
        datasets across 147 cell types. Demonstrated that 80.4% of the human genome participates
        in at least one biochemical event, redefining genome functionality. Established the
        chromatin state model using histone modification combinations, defined cell-type-specific
        regulatory landscapes, and provided the first comprehensive catalog of distal elements.
      
        This paper defines the core assay categories (ChIP-seq, DNase-seq, RNA-seq, FAIRE-seq)
        and biosample hierarchy used for search filtering. The 147 cell types profiled established
        the biosample ontology — including the Tier 1 (K562, GM12878, H1-hESC), Tier 2, and
        Tier 3 classification — that remains the organizational backbone for ENCODE data browsing.
        Phase 2 data constitutes the largest block of ENCODE experiments and is the most common
        target of search queries.
      
      ---
      
      ### ENCODE Project Consortium 2020 — Phase 3 with expanded biosamples and assays
      
      - **Citation:** The ENCODE Project Consortium, Moore JE, Purcaro MJ, Pratt HE, et al.
        Expanded encyclopaedias of DNA elements in the human and mouse genomes. *Nature*,
        583(7818), 699-710, 2020.
      - **DOI:** [10.1038/s41586-020-2493-4](https://doi.org/10.1038/s41586-020-2493-4)
      - **PMID:** 32728249 | **PMC:** PMC7410828
      - **Citations:** ~1,200
      - **Key findings:** ENCODE Phase 3 expanded the registry to 926,535 human and 339,815 mouse
        candidate cis-regulatory elements (cCREs), classified into:
        - Promoter-like signatures (PLS)
        - Proximal enhancer-like signatures (pELS)
        - Distal enhancer-like signatures (dELS)
        - CTCF-only
        - DNase-H3K4me3
      
        Introduced the Registry of cCREs as the primary organizational framework. This paper is
        the definitive reference for the cCRE classification system that search queries leverage.
        Phase 3 added CUT&RUN, CUT&Tag, CRISPR screens, MPRA, STARR-seq, and single-cell assays,
        expanding the assay_title vocabulary for search filtering. The biosample ontology now
        covers tissues, primary cells, cell lines, in vitro differentiated cells, and organoids
        across both human and mouse.
      
      ---
      
      ## ENCODE Data Portal
      
      The ENCODE data portal (encodeproject.org) provides both a web-based search interface and a
      REST API for programmatic access. The search-encode skill wraps the REST API, translating user
      queries into API calls with appropriate parameters. Understanding the portal's metadata model —
      how experiments relate to biosamples, files relate to experiments, and quality audits relate to
      both — is essential for constructing effective searches.
      
      ---
      
      ### Sloan et al. 2016 — ENCODE data portal architecture and programmatic access
      
      - **Citation:** Sloan CA, Chan ET, Davidson JM, Malladi VS, Strattan JS, Hitz BC, Gabdank I,
        Narayanan AK, Ho M, Lee BT, et al. ENCODE data at the ENCODE portal. *Nucleic Acids
        Research*, 44(D1), D726-D732, 2016.
      - **DOI:** [10.1093/nar/gkv1160](https://doi.org/10.1093/nar/gkv1160)
      - **PMID:** 26527727 | **PMC:** PMC4702836
      - **Citations:** ~600
      - **Key findings:** Described the ENCODE portal architecture including:
        - REST API with JSON-LD metadata model
        - Faceted search interface with ~200 biosample types
        - Standardized assay categories and audit-based quality tiers
        - Programmatic access via JSON API endpoints with pagination
      
        The metadata schema determines which fields are searchable and how experiments are
        organized. Key design: experiments have a single assay_title, can have multiple
        replicates, files are children of experiments with own quality metrics, and audit flags
        propagate from files to experiments. The search-encode skill mirrors these API patterns.
      
      ---
      
      ### Davis et al. 2018 — ENCODE portal update with improved search
      
      - **Citation:** Davis CA, Hitz BC, Sloan CA, Chan ET, Davidson JM, Gabdank I, Hilton JA,
        Jain K, Baymuradov UK, Narayanan AK, Onate KC, Graham K, Miyasato SR, Dreszer TR,
        Strattan JS, Jolanki O, Tanaka FY, Cherry JM. The Encyclopedia of DNA elements (ENCODE):
        data portal update. *Nucleic Acids Research*, 46(D1), D794-D801, 2018.
      - **DOI:** [10.1093/nar/gkx1081](https://doi.org/10.1093/nar/gkx1081)
      - **PMID:** 29126249 | **PMC:** PMC5753278
      - **Citations:** ~400
      - **Key findings:** Updated the portal with improved search facets, matrix views for experiment
        discovery, and enhanced visualization. Introduced audit system refinements with quality
        flags enabling search-time quality filtering. Added support for new assay types (CRISPR
        screens, MPRA, single-cell assays). Documents the search matrix interface for
        cross-tabulation of biosamples vs. assay types — the conceptual model behind search-encode's
        multi-dimensional filtering. Also describes file relationship tracking (derived_from chains)
        and batch download manifests for downstream workflows.
      
      ---
      
      ## Candidate cis-Regulatory Elements (cCREs)
      
      The cCRE registry represents a paradigm shift from experiment-centric to element-centric search.
      Users can query for specific regulatory elements by classification, location, or activity state
      across cell types. The three papers below describe the registry's construction, portal
      implementation, and the functional annotation framework.
      
      ---
      
      ### Luo et al. 2020 — cCRE registry architecture on the portal
      
      - **Citation:** Luo Y, Hitz BC, Gabdank I, Hilton JA, Kagda MS, et al. New developments on
        the Encyclopedia of DNA Elements (ENCODE) data portal. *Nucleic Acids Research*, 48(D1),
        D882-D889, 2020.
      - **DOI:** [10.1093/nar/gkz1062](https://doi.org/10.1093/nar/gkz1062)
      - **PMID:** 31713622 | **PMC:** PMC7061942
      - **Citations:** ~800
      - **Key findings:** Described the Registry of cCREs as the primary search framework, replacing
        experiment-centric browsing with element-centric discovery. Each cCRE has a unique accession
        (EH38E prefix for GRCh38, EH38ME for mm10). The classification decision tree:
        1. Requires high DNase signal (accessibility)
        2. Branches on H3K4me3 (promoter-like vs. not)
        3. Branches on H3K27ac (enhancer-like vs. not)
        4. Branches on CTCF (insulator-like vs. not)
      
        This system supports search-encode queries filtering by element type. The paper also
        describes visualization improvements including genome browser integration and interactive
        summary plots of cCRE distributions across cell types.
      
      ---
      
      ### Moore et al. 2020 — Defining 926,535 human cCREs
      
      - **Citation:** Moore JE, Purcaro MJ, Pratt HE, Epstein CB, Shoresh N, et al. Expanded
        encyclopaedias of DNA elements in the human and mouse genomes. *Nature*, 583(7818),
        699-710, 2020.
      - **DOI:** [10.1038/s41586-020-2493-4](https://doi.org/10.1038/s41586-020-2493-4)
      - **PMID:** 32728248 | **PMC:** PMC7410830
      - **Citations:** ~1,500
      - **Key findings:** Detailed methodology for the five-group classification:
        - PLS: 36,573 human elements (promoter-like)
        - pELS: 52,998 (proximal enhancer-like)
        - dELS: 544,491 (distal enhancer-like — the largest category)
        - CTCF-only: 117,440
        - DNase-H3K4me3: 175,033
      
        Each cCRE has cell-type-specific activity states. Benchmarks: 75% of PLS overlap
        GENCODE TSSs; dELS show 3-fold enrichment for Vista-validated enhancers. This vocabulary
        is essential for interpreting search results and understanding what regulatory elements
        are represented in returned experiments.
      
      ---
      
      ### Abascal et al. 2020 — Functional annotation from expanded experiments
      
      - **Citation:** Abascal F, Acosta R, Addleman NJ, Adrian J, Afzal V, et al. Expanded
        encyclopaedias of DNA elements in the human and mouse genomes. *Nature*, 583(7818),
        693-698, 2020.
      - **DOI:** [10.1038/s41586-020-2489-0](https://doi.org/10.1038/s41586-020-2489-0)
      - **PMID:** 32728247 | **PMC:** PMC7410826
      - **Citations:** ~600
      - **Key findings:** Broader perspective on ENCODE Phase 3 functional annotations, including
        integration of new assay types (CUT&RUN, CRISPR perturbations, single-cell) into the
        registry. Established a hierarchy of evidence for regulatory annotation:
        - Observational: ChIP-seq, DNase-seq
        - Correlative: eQTL, Hi-C
        - Perturbational: CRISPRi/CRISPRa
        - Direct functional: reporter assays (MPRA, STARR-seq)
      
        Documents the expanded assay vocabulary available in Phase 3 and the rationale behind
        assay category groupings used in search filters. Also discusses the transition to
        comparative human-mouse analysis enabling cross-species search queries.
      
      ---
      
  • SKILL.md 23.5 KB
    ---
    name: search-encode
    description: Search and explore ENCODE Project genomics data. Use when the user wants to find experiments, files, or explore what data is available for specific assays, organs, cell lines, or targets.
    ---
    
    # Search ENCODE Data
    
    ## When to Use
    
    - User wants to find ENCODE experiments matching specific criteria (assay, organ, cell type, target)
    - User asks "what ENCODE data exists for [tissue/target/assay]?"
    - User wants to explore available data before downloading
    - User needs to find specific file types (BED, BAM, bigWig) across experiments
    - User wants to know how many experiments exist for a condition
    - User asks about available assays, organisms, or biosamples in ENCODE
    
    Help the user find ENCODE experiments and files. Use the appropriate tools based on what they need.
    
    ## Search Strategy
    
    1. **Finding experiments**: Use `encode_search_experiments` with filters:
       - `assay_title`: "Histone ChIP-seq", "ATAC-seq", "total RNA-seq", "polyA plus RNA-seq", "TF ChIP-seq", "Hi-C", "CUT&RUN", "WGBS", etc.
       - `organ`: "pancreas", "brain", "liver", "heart", "kidney", "lung", etc.
       - `biosample_type`: "tissue", "cell line", "primary cell", "organoid"
       - `biosample_term_name`: specific name like "GM12878", "HepG2", "K562"
       - `target`: ChIP/CUT&RUN target like "H3K27me3", "H3K4me3", "CTCF", "p300"
       - `organism`: "Homo sapiens" (default) or "Mus musculus"
    
    2. **Finding files across experiments**: Use `encode_search_files` when the user wants specific file types from multiple experiments.
    
    3. **Exploring available data**: Use `encode_get_facets` to see counts of what exists before searching. Use `encode_get_metadata` to list valid filter values.
    
    4. **Getting experiment details**: Use `encode_get_experiment` for full metadata on a single experiment. Use `encode_list_files` to see all files for one experiment.
    
    ## Search Strategy Guide
    
    Effective ENCODE searching follows a three-phase pattern: explore, search, refine. Jumping straight to a filtered search often produces empty results or misses relevant data.
    
    ### Phase 1: Explore with Facets
    
    Always start with `encode_get_facets` to understand what data exists. Facets return counts per filter value, so you can see immediately whether your target organ, assay, or biosample has data.
    
    ```
    encode_get_facets(organ="pancreas")
      -> Shows: Histone ChIP-seq (42), ATAC-seq (8), RNA-seq (15), TF ChIP-seq (6), ...
      -> Also shows: biosample types, life stages, labs, replication types
    ```
    
    This avoids the frustrating pattern of searching for data that does not exist. Facets may also reveal data you did not expect -- for example, CUT&RUN data where you only anticipated ChIP-seq, or organoid samples alongside tissue.
    
    ### Phase 2: Validate Filter Values
    
    Before searching, confirm that your filter values match ENCODE's controlled vocabulary. A mistyped assay name returns zero results with no error.
    
    ```
    encode_get_metadata(metadata_type="assays")
      -> Returns all valid assay_title values: "Histone ChIP-seq", "TF ChIP-seq", "ATAC-seq", ...
    ```
    
    Available metadata types: `assays`, `organisms`, `organs`, `biosample_types`, `file_formats`, `output_types`, `output_categories`, `assemblies`, `life_stages`, `replication_types`, `statuses`, `file_statuses`.
    
    ### Phase 3: Search and Refine
    
    Start with broad filters and add constraints one at a time. If a search returns too many results (>100), add a filter. If it returns zero, remove the most restrictive filter first.
    
    ```
    # Too broad: 2,400 results
    encode_search_experiments(assay_title="Histone ChIP-seq")
    
    # Add organ: 42 results
    encode_search_experiments(assay_title="Histone ChIP-seq", organ="pancreas")
    
    # Add target: 6 results
    encode_search_experiments(assay_title="Histone ChIP-seq", organ="pancreas", target="H3K27ac")
    ```
    
    ## Pitfalls & Edge Cases
    
    1. **Wrong assay_title values**: Assay names must match ENCODE's controlled vocabulary exactly. Run `encode_get_metadata(metadata_type="assays")` first to discover valid values. For example, use "Histone ChIP-seq" not "ChIP-seq" or "H3K27ac ChIP".
    2. **Confusing biosample_term_name vs organ**: `organ` is a broad anatomical system (e.g., "pancreas", "brain"). `biosample_term_name` is a specific cell or tissue name (e.g., "GM12878", "islet of Langerhans"). Use `organ` for tissue-level exploration, `biosample_term_name` when you know the exact biosample.
    3. **Not exploring first**: Always call `encode_get_facets` before searching to see what data exists. This avoids empty results and reveals unexpected data availability. For example, facets may show CUT&RUN data exists for your organ when you only expected ChIP-seq.
    4. **Mixing organisms**: Human and mouse experiments use different assemblies (GRCh38 vs mm10) and cannot be directly compared. Always filter by `organism` to avoid mixing species in results.
    5. **Expecting file-level results from experiment search**: `encode_search_experiments` returns experiments, not individual files. If the user wants specific BED or bigWig files, use `encode_search_files` instead with `file_format` and `output_type` filters.
    6. **Searching for deprecated data**: The default `status="released"` is correct for most use cases. Archived or revoked experiments may have known quality issues. Only change status if the user explicitly needs historical data.
    
    ## Gotchas
    
    ### organ vs biosample_term_name vs biosample_type
    
    These three filters address different levels of the biosample hierarchy. Using the wrong one produces unexpected results.
    
    | Filter | What it means | Example values | When to use |
    |--------|---------------|----------------|-------------|
    | `organ` | Broad anatomical system | "pancreas", "brain", "heart", "liver" | Exploring all data for an organ system |
    | `biosample_term_name` | Exact biosample name | "GM12878", "K562", "islet of Langerhans", "HepG2" | You know the exact cell type or tissue name |
    | `biosample_type` | Category of biosample | "tissue", "cell line", "primary cell", "organoid", "in vitro differentiated cells" | Filtering by how the sample was obtained |
    
    Common mistake: using `biosample_term_name="pancreas"` when you mean `organ="pancreas"`. The term name "pancreas" matches whole-pancreas tissue samples only, missing islets, acinar cells, and other pancreatic substructures that are classified under the pancreas organ.
    
    ### assay_title Must Match Exactly
    
    ENCODE uses a controlled vocabulary for assay names. Common mistakes:
    
    | Wrong | Correct |
    |-------|---------|
    | "ChIP-seq" | "Histone ChIP-seq" or "TF ChIP-seq" |
    | "H3K27ac ChIP" | "Histone ChIP-seq" (with `target="H3K27ac"`) |
    | "ATAC" | "ATAC-seq" |
    | "DNase" | "DNase-seq" |
    | "Bisulfite-seq" | "WGBS" |
    | "scRNA-seq" | "scRNA-seq" |
    | "scATAC-seq" | "snATAC-seq" |
    
    Always run `encode_get_metadata(metadata_type="assays")` to see valid values.
    
    ### target Names Are Case-Sensitive
    
    Histone mark targets use a specific capitalization pattern. Common mistakes:
    
    | Wrong | Correct |
    |-------|---------|
    | "h3k27ac" | "H3K27ac" |
    | "H3K27AC" | "H3K27ac" |
    | "H3K4Me3" | "H3K4me3" |
    | "ctcf" | "CTCF" |
    
    Pattern: H3K{number}{modification} where the modification is lowercase ("me3", "ac", "me1"). Transcription factor targets use all-uppercase names ("CTCF", "POLR2A", "EP300").
    
    ### Experiment Status Meanings
    
    | Status | Meaning | When to use |
    |--------|---------|-------------|
    | `released` | Passed ENCODE quality standards. Default and recommended. | Nearly all searches |
    | `archived` | Superseded by newer experiment or has known limitations. Data still accessible but not recommended. | Historical analysis, reproducing old studies |
    | `revoked` | Serious quality problems identified post-release. Should not be used for new analysis. | Only if investigating specific quality issues |
    
    ## Common Filter Combinations
    
    Ready-to-use filter combinations for common research questions:
    
    | Research Question | Tool + Filters |
    |---|---|
    | All human heart data | `encode_search_experiments(organ="heart")` |
    | Active enhancers in a tissue | `encode_search_experiments(assay_title="Histone ChIP-seq", target="H3K27ac", organ="liver")` |
    | Active promoters in a tissue | `encode_search_experiments(assay_title="Histone ChIP-seq", target="H3K4me3", organ="liver")` |
    | Repressed chromatin | `encode_search_experiments(assay_title="Histone ChIP-seq", target="H3K27me3", organ="brain")` |
    | Open chromatin atlas | Run two searches: `assay_title="ATAC-seq"` and `assay_title="DNase-seq"` for the same organ |
    | TF binding for a specific factor | `encode_search_experiments(assay_title="TF ChIP-seq", target="CTCF", organ="liver")` |
    | Cell line data | `encode_search_experiments(biosample_type="cell line", organ="blood")` |
    | Tier 1 cell line (most data) | `encode_search_experiments(biosample_term_name="K562")` or "GM12878" or "H1-hESC" |
    | Mouse developmental data | `encode_search_experiments(organism="Mus musculus", life_stage="embryonic", organ="brain")` |
    | Recent high-quality data | `encode_search_experiments(status="released", date_released_from="2023-01-01")` |
    | Perturbation experiments | `encode_search_experiments(perturbed=True, organ="liver")` |
    | CRISPR screen data | `encode_search_experiments(assay_title="CRISPR screen")` |
    | 3D genome structure | `encode_search_experiments(assay_title="Hi-C", organ="brain")` |
    | DNA methylation | `encode_search_experiments(assay_title="WGBS", organ="pancreas")` |
    | Specific BED peak files | `encode_search_files(file_format="bed", output_type="IDR thresholded peaks", assembly="GRCh38")` |
    | Signal tracks for visualization | `encode_search_files(file_format="bigWig", output_type="fold change over control", organ="heart")` |
    | ENCODE-recommended files | `encode_search_files(preferred_default=True, assay_title="Histone ChIP-seq", organ="pancreas")` |
    
    ## Walkthrough: Finding Histone ChIP-seq for a Tissue
    
    Goal: Find all H3K27ac ChIP-seq experiments in human pancreas with high-quality, analysis-ready peak files.
    
    ### Step 1: Check Available Data with Facets
    
    ```
    encode_get_facets(organ="pancreas")
    ```
    
    Review the output to see which assay types have data, how many experiments exist, which biosample types are represented (tissue vs cell line vs primary cell), and which labs contributed data. This tells you whether your search is feasible before committing to specific filters.
    
    ### Step 2: Search Experiments with Assay + Organ Filters
    
    ```
    encode_search_experiments(
      assay_title="Histone ChIP-seq",
      organ="pancreas",
      target="H3K27ac",
      limit=50
    )
    ```
    
    Review the results table. Note the accessions, biosample names, labs, and replication types. If too many results, narrow by `biosample_type="tissue"` to exclude cell lines, or by `life_stage="adult"` to exclude embryonic samples.
    
    ### Step 3: Filter by Status and Assembly
    
    The default `status="released"` is already applied. For files, you also want to specify the genome assembly to avoid mixing coordinate systems:
    
    ```
    encode_list_files(
      experiment_accession="ENCSR...",
      assembly="GRCh38",
      file_format="bed"
    )
    ```
    
    This returns only GRCh38-aligned BED files, filtering out legacy hg19 files and raw FASTQs.
    
    ### Step 4: Check Quality with Audit Information
    
    ```
    encode_get_experiment(accession="ENCSR...")
    ```
    
    The full experiment record includes one count per audit severity (there is no nested `audit` object). Review them in priority order:
    - **audit_error_count**: Serious problems. Do not use this experiment without investigating.
    - **audit_not_compliant_count**: Failed an ENCODE standard. Check what standard was missed.
    - **audit_warning_count**: Minor issues. Usually acceptable but worth noting.
    - **audit_internal_action_count**: Portal bookkeeping. Safe to ignore.
    
    The counts do not carry the audit messages themselves — open the experiment on encodeproject.org to read those.
    
    For ChIP-seq, also check: FRiP (fraction of reads in peaks) should be at least 1%, NSC (normalized strand coefficient) should exceed 1.05, and the experiment should have 2+ biological replicates.
    
    ### Step 5: List Preferred Default Files
    
    ```
    encode_list_files(
      experiment_accession="ENCSR...",
      preferred_default=True
    )
    ```
    
    ENCODE curators mark recommended files as `preferred_default=True`. These are the best files for each output type. For Histone ChIP-seq, this typically includes:
    - IDR thresholded peaks (BED narrowPeak) -- use for enhancer/promoter identification
    - Fold change over control (bigWig) -- use for signal visualization in genome browsers
    - Signal p-value (bigWig) -- use for statistical thresholding
    
    If `preferred_default` returns no results, fall back to filtering manually:
    
    ```
    encode_list_files(
      experiment_accession="ENCSR...",
      output_type="IDR thresholded peaks",
      assembly="GRCh38"
    )
    ```
    
    ## Walkthrough: Cross-Assay Data Collection
    
    Goal: Collect matched Histone ChIP-seq, ATAC-seq, and RNA-seq data for the same tissue to build a multi-omic regulatory map.
    
    ### Strategy
    
    ENCODE does not provide a single query that retrieves matched experiments across assay types. Instead, search each assay type separately and match experiments by biosample. The key matching fields are `organ`, `biosample_term_name`, and `biosample_type`.
    
    ### Step 1: Survey All Available Assays for Your Tissue
    
    ```
    encode_get_facets(organ="liver")
    ```
    
    Review the assay counts. Confirm that all three assay types (Histone ChIP-seq, ATAC-seq, RNA-seq) have data for liver. Note which biosample types are represented -- you will need to match on the same biosample type across assays.
    
    ### Step 2: Search Each Assay Type Separately
    
    ```
    encode_search_experiments(assay_title="Histone ChIP-seq", organ="liver", biosample_type="tissue", limit=100)
    encode_search_experiments(assay_title="ATAC-seq", organ="liver", biosample_type="tissue", limit=100)
    encode_search_experiments(assay_title="total RNA-seq", organ="liver", biosample_type="tissue", limit=100)
    ```
    
    ### Step 3: Match by Biosample
    
    From each result set, extract the `biosample_summary` and `biosample_type` values (`biosample_term_name` is a search filter, not a field of the results). Look for overlap: which specific biosamples appear in all three result sets? For example, "liver" tissue may appear in all three, but "hepatocyte" primary cells may only have ChIP-seq and RNA-seq.
    
    Present the coverage as a matrix:
    
    | Biosample | Histone ChIP-seq | ATAC-seq | RNA-seq |
    |-----------|-----------------|----------|---------|
    | liver (tissue) | 12 experiments | 4 experiments | 8 experiments |
    | hepatocyte (primary cell) | 3 experiments | 0 | 2 experiments |
    | HepG2 (cell line) | 18 experiments | 6 experiments | 10 experiments |
    
    ### Step 4: Verify Coverage with Facets
    
    For the matched biosample, use facets to confirm what histone marks and targets are available:
    
    ```
    encode_get_facets(assay_title="Histone ChIP-seq", organ="liver")
    ```
    
    This shows which targets (H3K27ac, H3K4me3, H3K27me3, etc.) are available. A minimal epigenomic profile requires at least H3K27ac (active enhancers) and H3K4me3 (active promoters). A comprehensive profile adds H3K27me3 (repression), H3K36me3 (gene bodies), and H3K4me1 (poised enhancers).
    
    ### Step 5: Collect Files for Matched Experiments
    
    Once you identify matching experiments, use `encode_list_files` with `preferred_default=True` for each experiment to get the recommended analysis-ready files. Ensure all files use the same assembly (GRCh38 for human).
    
    ## Pagination
    
    Search tools return paginated results. The response includes fields for navigating large result sets.
    
    ### Response Fields
    
    | Field | Type | Meaning |
    |-------|------|---------|
    | `total` | integer | Total number of matching results across all pages |
    | `has_more` | boolean | True if more results exist beyond the current page |
    | `next_offset` | integer or null | The offset value to pass for the next page, null if no more pages |
    
    ### Paging Through Results
    
    ```
    # Page 1: first 25 results
    encode_search_experiments(assay_title="Histone ChIP-seq", limit=25, offset=0)
      -> total: 142, has_more: true, next_offset: 25
    
    # Page 2: results 26-50
    encode_search_experiments(assay_title="Histone ChIP-seq", limit=25, offset=25)
      -> total: 142, has_more: true, next_offset: 50
    
    # ... continue until has_more is false
    ```
    
    ### Choosing a Limit
    
    - `limit=25` (default): Good for initial exploration and presenting results to the user.
    - `limit=50`: Good for moderate result sets where you need a broader view.
    - `limit=100`: Use for comprehensive searches or when collecting all data for an analysis. This is the maximum recommended for a single call.
    
    For very large result sets (>100), page through with `offset` rather than setting an extremely high limit. This keeps response times fast and avoids overwhelming the user with too many results at once.
    
    ## Search Tips
    
    - **Start broad, then narrow**: Begin with `encode_get_facets` to understand the data landscape, then add filters incrementally.
    - **Use metadata discovery**: Call `encode_get_metadata(metadata_type="assays")` to see all valid assay names before searching. Same for "organs", "biosample_types", "output_types".
    - **Pagination**: Default `limit=25`. Use `limit=100` for comprehensive searches. Check the `total` count in results. Use `offset` to page through large result sets.
    - **Free text search**: Use `search_term` parameter for keyword search across all fields when structured filters are insufficient (e.g., `search_term="CRISPR screen pancreatic"`).
    - **Tier 1 cell lines**: K562, GM12878, and H1-hESC have the most data across all assay types. Use these as starting points for exploratory analysis.
    - **Life stage matters**: Filter by `life_stage` ("adult", "embryonic", "child") when comparing developmental stages. This is especially important for tissue samples.
    - **Date filtering**: Use `date_released_from` and `date_released_to` (YYYY-MM-DD format) to find recently released experiments or to scope searches to a specific time window.
    - **Perturbation experiments**: Set `perturbed=True` to find only experiments with genetic modifications or treatments. Combine with `genetic_modification="CRISPR"` or `treatment` to narrow further.
    - **Lab filtering**: If you know which lab produced the data you need, use `lab` to restrict results. This is useful for finding data from specific ENCODE production centers.
    
    ## Code Examples
    
    ### 1. Discover, Search, Filter: "Find all H3K27ac ChIP-seq in human pancreas tissue"
    
    ```
    Step 1: Explore what's available
      encode_get_facets(organ="pancreas")
      -> Shows assay types and counts available for pancreas
      -> Example output: Histone ChIP-seq (42), ATAC-seq (8), RNA-seq (15)
    
    Step 2: Search experiments
      encode_search_experiments(
        assay_title="Histone ChIP-seq",
        organ="pancreas",
        target="H3K27ac",
        limit=50
      )
      -> Returns matching experiments with accession, biosample, lab, status
    
    Step 3: Get files for a specific experiment
      encode_list_files(
        experiment_accession="ENCSR...",
        file_format="bed",
        output_type="IDR thresholded peaks",
        assembly="GRCh38"
      )
      -> Returns peak files ready for analysis
    
    Step 4: Or get the recommended default files directly
      encode_list_files(
        experiment_accession="ENCSR...",
        preferred_default=True
      )
      -> Returns ENCODE's recommended files for this experiment
    ```
    
    ### 2. Multi-assay comparison: "Compare available ATAC-seq vs DNase-seq for liver"
    
    ```
    Step 1: Check ATAC-seq availability
      encode_get_facets(assay_title="ATAC-seq", organ="liver")
      -> Shows biosample types, counts, life stages, and labs
    
    Step 2: Check DNase-seq availability
      encode_get_facets(assay_title="DNase-seq", organ="liver")
      -> Compare counts and biosample coverage against ATAC-seq
    
    Step 3: Search both assays
      encode_search_experiments(assay_title="ATAC-seq", organ="liver", limit=50)
      encode_search_experiments(assay_title="DNase-seq", organ="liver", limit=50)
      -> Present side-by-side comparison of experiment counts, biosamples, labs
    
    Step 4: Present comparison summary
      -> "ATAC-seq: 12 experiments across 4 biosample types (3 labs)"
      -> "DNase-seq: 28 experiments across 7 biosample types (5 labs)"
      -> "DNase-seq has broader biosample coverage; ATAC-seq experiments are more recent"
    ```
    
    ### 3. Time-based discovery: "Find recently released CRISPR screen experiments"
    
    ```
    Step 1: Validate the assay name
      encode_get_metadata(metadata_type="assays")
      -> Confirms "CRISPR screen" is a valid assay_title
    
    Step 2: Search with date filter
      encode_search_experiments(
        assay_title="CRISPR screen",
        date_released_from="2024-01-01",
        limit=25
      )
      -> Returns recent CRISPR screen experiments
    
    Step 3: Explore details for a specific experiment
      encode_get_experiment(accession="ENCSR...")
      -> Full metadata: assay, biosample, replicate counts, file list, audit counts
    
    Step 4: Check audit status for quality
      -> Look at audit_error_count, audit_not_compliant_count, audit_warning_count
      -> Experiments with audit_error_count > 0 should be flagged to the user
    ```
    
    ### 4. File-level search: "Find all IDR thresholded peak BED files for human brain ChIP-seq"
    
    ```
    Step 1: Search files directly across experiments
      encode_search_files(
        file_format="bed",
        output_type="IDR thresholded peaks",
        assay_title="Histone ChIP-seq",
        organ="brain",
        assembly="GRCh38",
        limit=100
      )
      -> Returns BED files with accessions, experiment links, sizes, and download URLs
    
    Step 2: Filter to recommended files only
      encode_search_files(
        preferred_default=True,
        assay_title="Histone ChIP-seq",
        organ="brain",
        assembly="GRCh38",
        limit=100
      )
      -> Returns only ENCODE-curated recommended files
    ```
    
    ## Integration
    
    | This skill produces... | Feed into... | Purpose |
    |---|---|---|
    | Experiment accessions | **download-encode** | Download files for found experiments |
    | Search results | **track-experiments** | Track discovered experiments |
    | Experiment lists | **batch-analysis** | Process multiple experiments together |
    | Filtered experiments | **quality-assessment** | Evaluate quality of search results |
    | Experiment metadata | **compare-biosamples** | Compare experiments across biosamples |
    | Assay-specific results | **pipeline-guide** | Route to correct processing pipeline |
    | Target-specific experiments | **histone-aggregation** | Collect experiments for aggregation |
    | Facet data | **epigenome-profiling** | Survey available data for profiling |
    
    ## Presenting Results
    
    When presenting search results to the user:
    - Show results in a clear table format with columns: **accession** | **assay** | **biosample** | **target** | **lab** | **status**
    - Always show the total count and note if results are paginated (e.g., "Showing 25 of 142 experiments")
    - Suggest narrowing filters if too many results (>100)
    - Suggest broadening filters if no results returned
    - Suggest next steps: "Would you like to see files for any of these experiments?" or "Would you like to track any of these experiments?"
    - When results span multiple labs or biosample types, summarize the distribution
    
    ## Key Literature
    
    - **ENCODE Phase 3**: ENCODE Project Consortium 2020 (Nature, ~2,000 citations) DOI: 10.1038/s41586-020-2493-4 -- Defines the catalog of functional genomic elements that this search covers.
    - **ENCODE Portal**: Hitz et al. 2023 (Nucleic Acids Research) DOI: 10.1093/nar/gkac1067 -- Documents the portal, search API, and data access patterns used by this skill.
    
    ## Related Skills
    
    | Skill | When to Use Instead/Additionally |
    |-------|--------------------------------|
    | `download-encode` | Downloading files after finding experiments |
    | `track-experiments` | Saving found experiments to local collection |
    | `quality-assessment` | Evaluating experiment quality before use |
    | `compare-biosamples` | Comparing data across tissues, cell lines, or conditions |
    | `cross-reference` | Linking experiments to PubMed, DOI, GEO, NCT IDs |
    | `epigenome-profiling` | Building comprehensive tissue profiles from search results |
    | `publication-trust` | Evaluating the provenance and trustworthiness of linked publications |
    
    ## For the request: "$ARGUMENTS"
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related