# Getting started with EWAScaller

EWAScaller queries the EWAS Atlas database for epigenome-wide association study results, and runs enrichment analyses on CpG probe sets. Because every example below contacts a remote web service, the code in this vignette is shown but not executed when the package documentation is built; run it interactively to see live results.

    library(EWAScaller)

## Querying by CpG probe

    res <- query_cpg(c("cg05575921", "cg11903855", "cg00240195"), workers = 2, delay = 1)
    res
    summary(res)
    head(res$associations)
    head(res$probes)

`query_cpg()`, `query_gene()`, and `query_region()` all return an `ewas_result` object with the same shape: an `associations` table (one row per probe-trait association), a `probes` table (one row per unique probe), and a `failed` table listing any input terms that could not be resolved.

## Querying by gene or genomic region

    gene_res <- query_gene(c("AHRR", "F2RL3"))
    region_res <- query_region(chr = "5", start = 373000, end = 374000)

Multiple regions can be supplied at once via a data frame:

    regions <- data.frame(chr = c("5", "1"), start = c(373000, 1), end = c(374000, 100000))
    query_region(regions)

## Enrichment analysis

`ewas_enrichment()` submits a probe set (20-5000 probes) to the EWAS Atlas toolkit and retrieves enrichment results against a chosen background (`"450K"`, `"850K"`, or a custom probe list).

    data(example_cpgs)
    probes <- unique(example_cpgs$query_cpg)

    enr <- ewas_enrichment(
      probes,
      background = "850K",
      types = c("trait", "genomic_location", "gene_ontology", "kegg")
    )
    enr
    summary(enr)
    top_traits(enr)

## Plots

    plot_wordcloud(res)
    plot_wordcloud(enr, type = "trait")

    autoplot(res, type = "traits")
    autoplot(res, type = "chromosome")
    autoplot(res, type = "direction")
    autoplot(enr, type = "trait")
    autoplot(enr, type = "kegg")

## Rate limiting

Query functions dispatch up to `workers` requests concurrently and pause `delay` seconds between batches. Increase `workers` for faster throughput on large probe lists, or increase `delay` to be gentler on the remote service.