Loading...
Loading...
Use this skill for AIRR-seq (Adaptive Immune Receptor Repertoire / VDJ-seq) data analysis with immunarch + immundata in R, including ingestion, receptor schema design, immutable transformations, clonality/diversity/public overlap metrics, and Seurat/AnnData integration.
npx skill4agent add immunomind/skills immunarchcdr3_aa + v_calllibrary(immunarch)
# Demo data + basic grouping
idata <- get_test_idata() |> agg_repertoires("Therapy")
idata
# Core analyses
airr_stats_genes(idata, gene_col = "v_call") |> vis()
airr_public_jaccard(idata) |> vis()
airr_clonality_prop(idata)
airr_diversity_pielou(idata) |> vis()idata <- annotate_clonality_prop(idata)
sdata <- annotate_seurat(idata, sdata, cols = "clonal_prop_bin")
Seurat::DimPlot(sdata, reduction = "umap", group.by = "clonal_prop_bin", shuffle = TRUE)library(immundata)
md_path <- system.file("extdata/tsv", "metadata.tsv", package = "immundata")
files <- c(
system.file("extdata/tsv", "sample_0_1k.tsv", package = "immundata"),
system.file("extdata/tsv", "sample_1k_2k.tsv", package = "immundata")
)
md <- read_metadata(md_path)
idata <- read_repertoires(
path = files,
schema = c("cdr3_aa", "v_call"),
metadata = md
)read_metadata()read_repertoires()library(immundata)
inp_files <- "path/to/airr/*.tsv.gz"
md_table <- read_metadata("path/to/metadata.tsv")
idata <- read_repertoires(
path = inp_files,
schema = c("cdr3_aa", "v_call"),
metadata = md_table,
repertoire_schema = "Sample"
)idata <- read_repertoires(
path = inp_files,
schema = c("cdr3_aa", "v_call")
)schema <- make_receptor_schema(
features = c("cdr3", "v_call"),
chains = "TRA"
)
idata <- read_repertoires(
path = "path/to/single_cell.csv.gz",
schema = schema,
barcode_col = "barcode",
locus_col = "locus"
)schema <- make_receptor_schema(
features = c("cdr3", "v_call"),
chains = c("TRA", "TRB")
)
idata <- read_repertoires(
path = "path/to/single_cell.csv.gz",
schema = schema,
barcode_col = "barcode",
locus_col = "locus",
umi_col = "umis"
)schema <- make_receptor_schema(
features = c("cdr3", "v_call"),
chains = c("IGH", "IGK|IGL")
)# Filtering
idata_f <- idata |>
filter(v_call == "TRBV2") |>
filter(imd_proportion >= 0.0002)
# Sequence-distance filter
idata_seq <- idata |>
filter(seq_options = make_seq_options(
patterns = "CASSELAGYRGEQYF",
query_col = "cdr3",
method = "lev",
max_dist = 3
))
# Annotation join
idata_ann <- annotate(
idata = idata,
annotations = cells[c("barcode", "ident")],
by = c(imd_barcode = "barcode"),
keep_repertoires = FALSE
)
# Mutations
idata_mut <- idata |>
mutate(big_chains = umis >= 10) |>
mutate(dist_to_pattern = dd$levenshtein(cdr3, "CASSSVSGNSPLHF"))idata_grp <- idata |>
agg_repertoires("Tissue")# Chain and gene statistics
chains <- airr_stats_chains(idata_grp)
genes <- airr_stats_genes(idata_grp, gene_col = "v_call", level = "receptor")
chains |> vis()
genes |> vis()cl_line <- airr_clonality_line(idata_grp)
cl_prop <- airr_clonality_prop(idata_grp)
cl_rank <- airr_clonality_rank(idata_grp, bins = c(10, 100, 1000))
cl_prop |> vis()
cl_rank |> vis()d50 <- airr_diversity_dxx(idata_grp, perc = 50)
chao1 <- airr_diversity_chao1(idata_grp)
shannon <- airr_diversity_shannon(idata_grp)
pielou <- airr_diversity_pielou(idata_grp)
hill1 <- airr_diversity_index(idata_grp)
hillprof <- airr_diversity_hill(idata_grp, q = c(0, 1, 2))
pielou |> vis()m_pub <- airr_public_intersection(idata_grp)
m_jac <- airr_public_jaccard(idata_grp)
m_pub |> vis()
m_jac |> vis()# Save intermediate immutable snapshot to avoid recomputing expensive transforms
idata_cached <- immundata::write_immundata(idata_mut, "path/to/snapshot_folder")ImmunDatabarcode_collocus_columi_colpath = "<metadata>"filterannotatemutateagg_repertoiresimd_*imd_schema()idata_rawidata_qcidata_annidata_statsvis()