加载页面中...
使用我的GSE157827数据进行初步分析-6 | lwstkhyl

使用我的GSE157827数据进行初步分析-6

2026.4.8-2026.4.22研究进展

位点级分析

选表达高hERV位点(比如前10%),用MAST做差异表达分析,看哪些既表达量高又AD-NC差异大,将这些位点做共表达网络看相关性(就用之前得到的基因网络,跑一下ModuleTraitCorrelation

位点的差异表达分析

设置表达比例阈值为1%(防止单个细胞拉高平均值),其它不设限:结果预览

表达量又高又在AD和NC中有差异的似乎不太多,而且都是下调

几个比较显著的:

  • excit/inhib神经元内:HERV3-1p34.3这个位点logFC很大,细胞比例也是AD更多
  • 多个细胞类型一致下调、效应量不小:
    • HML3-1q32.1b
    • HML1-1q32.1
    • HML4-16p13.3
  • Oligo内特异下调的位点比较多,不是零散几个位点变化,而是一组位点整体偏低,更像是一个系统性状态改变
  • Mic和Inhib有一个上调的HARLEQUIN-6p21.31,而且它在所有细胞水平也上调,像是一个跨细胞类型但偏向非少突的上调位点
target_herv_locus <- c("HERV3-1p34.3", "HML3-1q32.1b", "HML1-1q32.1", "HML4-16p13.3", "MER41-13q13.3", "MER61-21q21.1a", "MER61-21q21.1b", "HERVW-15q21.2", "HARLEQUIN-6p21.31")

gene网络相关性(WGCNA)

my_GSE157827_6_5

  • HML4-16p13.3/HML1-1q32.1/HML3-1q32.1b这3个位点经常一起动:在DE中,这几个位点本来就是跨多个细胞类型重复出现的;现在到了ModuleTraitCorrelation里,它们又在模块层面呈现相似相关模式
  • HARLEQUIN-6p21.31:在Mic中特别突出

位点级hERV trait与gene module的关联显示,位点级hERV与gene network的关联明显细胞类型特异;不同hERV位点并非简单重复AD/NC差异,而是对应若干跨细胞类型共享或细胞类型特异的转录状态轴;其中HML4/HML1/HML3构成较稳定的共享位点程序,而HARLEQUIN-6p21.31在Mic等细胞中表现出更突出的状态关联

在与hERV位点相关性较大的模块中选hub gene,然后算样本水平上的位点~gene相关性,确定“该module里哪些具体基因和这个位点关系最稳定”

  • 每个“细胞类型-位点”保留相关性绝对值最大的前2个module
  • 提取这些module的hub gene
  • 在对应celltype内、对应module里,找与该位点最相关的具体基因
  • 找“既是hub gene,又和该位点显著相关”的交集基因,作为后面样本级相关性的输入

具体的基因相关性(线性拟合)

主要思路:

  • 选一些关注的基因通路TLR2/STAT1等,将其作为一个基因集看整体表达量与hERV的关系,在细胞类型和亚群层面都试一试
  • 之前在相关论文中看到说hERVK与TLR8表达相关,想看看我这里是不是也是这个情况,如果能得到类似的结果,就试一试位点级的分析(毕竟开题时候提的就是位点级分析)
herv_family_assay <- "HERV_family"
target_herv_family <- c("HERVK-int", "HERVK3-int", "HERVK9-int", "HERVK11-int", "HERVK13-int", "HERVK14-int", "HERVK22-int")
mic_gene_panel <- list(
  innate_immune = c("TYROBP", "CD74", "HLA-DRA"),
  inflammation_signal = c("TLR2", "MAP3K8", "EPSTI1"),
  stress_immune = c("HSP90AA1", "HSPH1", "DNAJB1"),
  homeostatic_microglia = c("P2RY12", "CX3CR1", "TMEM119"),
  # IFN_STAT1 = c("STAT1", "ISG15", "IFIT3"),
  IFN_STAT1 = c("STAT1"),
  TLR8 = c("TLR8")
)
mic_res <- lapply(names(mic_gene_panel), function(sig) {
  run_herv_geneset_coexpr_one_celltype(
    seu_ct = mic,
    herv_assay = herv_family_assay,
    herv_features = target_herv_family,
    gene_features = mic_gene_panel[[sig]],
    agg = "mean"
  ) %>%
    mutate(signature = sig, .before = 1)
}) %>% bind_rows()
write.csv(mic_res, file = file.path(res_dir, paste0("mic_geneset_hERV_family_corr.csv")))

在所有Mic细胞中,只有IFN_STAT1和TLR8表现出了较大的相关性,其它的相关性都在0.1以下:结果预览

my_GSE157827_6_1

  • 橙色是相关性,红色是hERV和基因集的表达比例(一组基因中有一个有表达就算),绿色是p_adj

看一看这些hERV家族和基因在AD/NC中是否差异表达

Idents(mic) <- "group"
res_gene <- FindMarkers(
  mic,
  ident.1 = "AD",
  ident.2 = "NC",
  test.use = "MAST",
  assay = "RNA",
  features = c(mic_gene_panel[["IFN_STAT1"]], mic_gene_panel[["TLR8"]]),
  min.pct = 0,
  logfc.threshold = 0
)
res_herv <- FindMarkers(
  mic,
  ident.1 = "AD",
  ident.2 = "NC",
  test.use = "MAST",
  assay = herv_family_assay,
  features = target_herv_family,
  min.pct = 0,
  logfc.threshold = 0
)

Mic:

my_GSE157827_6_4

  • 似乎只有STAT1的表达比例高一点,其它都是1%左右,感觉可以只对STAT1来分析
  • 少量TLR8阳性细胞贡献了大部分相关性(TLR8阳性细胞刚好和某些HERVK家族的阳性细胞高度重叠,于是Spearman rho会很高)
  • 差异表达分析中TLR8和其它基因在AD中都下调,是否与相关性结果矛盾?差异表达解释“AD组整体平均表达是否比NC更高”,而相关分析解释“某个hERV高的细胞,是否也更倾向于IFN/STAT1或TLR8高”
  • 总体来说STAT1的结果比较显著,但无论是哪一种,都没法把AD和hERV联系起来,只能说HERVK与STAT1有中等强度相关,但没法说HERVK/STAT1与AD相关

看看UMAP图:高表达的细胞是否均匀分布

calc_gene_set_score <- function(seu_ct, gene_features, agg = c("mean", "sum")) {
  gene_use <- intersect(rownames(seu_ct[["RNA"]]), gene_features)
  rna_mat <- GetAssayData(seu_ct, assay = "RNA", slot = "data")[gene_use, , drop = FALSE]
  if (agg == "mean") {
    score <- Matrix::colMeans(rna_mat)
  } else {
    score <- Matrix::colSums(rna_mat)
  }
  score
}
mic$IFN_STAT1_score <- calc_gene_set_score(mic, mic_gene_panel[["IFN_STAT1"]], agg = "mean")
mic$TLR8_score <- calc_gene_set_score(mic, mic_gene_panel[["TLR8"]], agg = "mean")
FeaturePlot(mic, features = "IFN_STAT1_score", reduction = "umap")
FeaturePlot(mic, features = "TLR8_score", reduction = "umap")

my_GSE157827_6_7

  • 两者至少在UMAP图上分布没有特别集中
  • TLR8在UMAP图上很稀疏,而且有颜色点的值很高,相比之下STAT1看起来就均匀一些

散点+线性拟合组合图

plot_herv_vs_gene_combo <- function(seu_ct, herv_assay = "HERV_family", pairs) {
  meta <- seu_ct@meta.data %>%
    mutate(log10_nCount_RNA = log10(nCount_RNA + 1))
  herv_mat <- GetAssayData(seu_ct, assay = herv_assay, slot = "data")
  rna_mat  <- GetAssayData(seu_ct, assay = "RNA", slot = "data")
  p_list <- lapply(seq_len(nrow(pairs)), function(i) {
    gene_i <- pairs$gene[i]
    herv_i <- pairs$subfamily[i]
    y_raw <- seu_ct@meta.data[[gene_i]]
    x_raw <- as.numeric(herv_mat[herv_i, ])
    x <- residualize_vec(x_raw, meta)
    y <- residualize_vec(y_raw, meta)
    df_plot <- data.frame(herv = x, gene = y)
    ct_res <- suppressWarnings(cor.test(df_plot$herv, df_plot$gene, method = "spearman", exact = FALSE))
    rho_txt <- round(unname(ct_res$estimate), 3)
    p_txt <- signif(ct_res$p.value, 3)
    ggplot(df_plot, aes(x = herv, y = gene)) +
      geom_point(size = 0.3, alpha = 0.35) +
      geom_smooth(method = "lm", se = FALSE, color = "red", linewidth = 0.6) +
      theme_bw() +
      labs(
        title = paste0(gene_i, " ~ ", herv_i),
        subtitle = paste0("rho=", rho_txt, ", p=", p_txt),
        x = herv_i,
        y = gene_i
      )
  })
  wrap_plots(p_list, ncol = 2)
}
plot_herv_vs_gene_combo(
  mic, "HERV_family",
  pairs = data.frame(
    gene = c("TLR8_score", "TLR8_score", "TLR8_score", "TLR8_score"),
    subfamily = c("HERVK14-int", "HERVK3-int", "HERVK-int", "HERVK11-int")
  )
)
plot_herv_vs_gene_combo(
  mic, "HERV_family",
  pairs = data.frame(
    gene = c("IFN_STAT1_score", "IFN_STAT1_score", "IFN_STAT1_score", "IFN_STAT1_score"),
    subfamily = c("HERVK14-int", "HERVK-int", "HERVK9-int", "HERVK11-int")
  )
)

my_GSE157827_6_8

my_GSE157827_6_9

  • 红线是可视化用的lm线,不是根据rho值画的,Spearman相关应该比lm有意义
  • 结论byGPT:
    • 在microglia中,由ISG15/STAT1/IFIT3构成的IFN/STAT1样得分与多个HERVK家族呈中等强度相关,其中HERVK14-int、HERVK-int、HERVK9-int为正相关,而HERVK11-int为负相关,提示不同HERVK家族可能对应不同的免疫相关细胞状态
    • TLR8与若干HERVK家族呈现极强相关,但由于TLR8表达极为稀疏且主要集中于少数细胞,该结果更可能反映一个稀有TLR8阳性microglia亚群与特定HERVK家族的共现,而不一定代表整个microglia群体中的连续共表达轴

关于STAT1和TLR8在AD中的重调:

  • STAT1:hTau积累可激活JAK2/STAT1通路,促进STAT1磷酸化、二聚化和核转位;human microglial state dynamics研究把STAT1列为AD相关微胶质状态的候选调控因子之一,是某些炎症/IFN样微胶质状态中的上调因子,而不是一定会在所有AD样本、所有细胞里都显著升高
    • STAT1可能只在少数微胶质状态里升高
    • 它的活化可能比它的mRNA平均值更明显
  • TLR8:在AD temporal cortex里,HERV-K和TLR8都上调,且TLR8是和HERV-K相关性最高的TLR,位点级的那个分析只说一部分HERV-K loci和TLR8相关,且family-level的HERV-K总和并不显著相关,也许不同脑区会导致结果的差异?

所有细胞:

my_GSE157827_6_2

mic的cluster2:

my_GSE157827_6_3

  • 把范围缩小到cluster2后,相关性效应更强,且STAT1和所有目标HERVK家族都是正相关;但TLR8的表达比例还是比较低,所以结论可能不太稳定
  • 如果在所有细胞层面,TLR8的rho就会翻转,说明TLR8~herv的相关性只集中于少数细胞中。这与之前DE时看到的AD/NC的TLR8和STAT1表达量差异不显著对应,说明在Mic内部某个特殊亚群/状态中,hERV和免疫基因一起变化

位点-样本级相关性分析

  • 筛选出HERVK几个主要家族的位点,将各位点按表达比例排序,选表达较多的位点
  • 模仿论文中的方法,进行样本级分析,但不知道40个样本够不够,如果不够就细胞级

结果:左面为样本级,右面为细胞级

  • 所有细胞:

    my_GSE157827_6_6

  • Mic:

    my_GSE157827_6_11

  • Mic cluster2:

    my_GSE157827_6_12

总体来说,Mic cluster2的结果比Mic和全体细胞更显著,样本级别的分析中显著的结果较少,符合之前样本级DE的结果趋势。

  • 为什么把研究对象缩小到Mic cluster2才有较显著的结果:不是所有细胞都在统一地发生这种关系,可能只有某个更特定的亚群才有这个现象
  • 相对于STAT1,TLR8在位点级上的相关性更显著,虽然它们的FDR没有正式<0.05,但有几个位点已经非常接近,这符合论文中“HERV-K family总和不显著,但部分loci与TLR8显著/接近显著相关”的结论

my_GSE157827_6_21

my_GSE157827_6_22


在选取最终的画图位点时,我同时计算了细胞水平和样本水平的herv~gene相关性,除了根据相关性和p值,我还考虑了细胞水平和样本水平的相关性方向是不是相同,比如有点位点在细胞水平是负相关、样本水平正相关,这种我就排除掉了。最后看了下Mic的cluster2中几个位点与TLR8的相关性,感觉位点级别可能效应比较小,可能还是家族级的比较好解释,所以位点这边就没用

my_GSE157827_6_23

  • 在mic中,HARLEQUIN-6p21.31与IL4R、ADGRE2、ALOX5和HCK等免疫相关基因呈稳定正相关,说明该位点更可能标记一条microglial免疫活化状态轴负相关
  • 在oligo中,HERVW-15q21.2与GLDN及PIK3C2B呈正相关,提示该位点与少突细胞特定状态/结构程序相关;MER41-13q13.3与参与膜脂翻转和膜稳态维持的ATP11A呈负相关,提示Oligo中还存在一条与膜状态调节相关的反向位点-gene轴
  • 在astro中,HML1-1q32.1和HML3-1q32.1b分别与ABCC9和COLEC12相关程序呈稳定正相关,其中ABCC9在两个位点上都得到支持,提示这两个HML位点属于同一条共享的astrocytic hERV状态轴
  • 在excit中,HML4-16p13.3与MTR和MICU2呈稳定正相关,提示该位点可能关联神经元的一碳代谢及线粒体功能/钙稳态背景
  • Inhib、OPC和Endo中虽可见一定cell-level位点-gene关联,但多数未在donor层面稳定复现,提示这些关联更可能反映细胞内局部异质性,而非稳健的样本级协同变化

位点级WGCNA分析显示,不同hERV位点与gene module的关联具有明显细胞类型特异性。进一步从显著module中提取key genes,并在样本层面对hERV-gene关系进行验证后发现,真正稳定的位点-gene关联主要集中于Mic、Oligo、Astro和Excit。其中特别突出的是,Mic中HARLEQUIN-6p21.31与IL4R、ADGRE2、ALOX5和HCK等免疫相关基因在cell-level与donor-level均呈一致正相关,提示该位点与microglial免疫活化程序相联系;Oligo中HERVW-15q21.2与GLDN和PIK3C2B呈正相关,提示该位点与少突细胞特定状态/结构程序相关,MER41-13q13.3与ATP11A呈负相关,提示Oligo中可能存在一条与膜状态调节相关的反向轴;Astro中HML1-1q32.1与HML3-1q32.1b共同指向ABCC9/COLEC12相关程序,支持存在共享的astrocytic hERV位点轴;Excit中则以HML4-16p13.3与MTR/MICU2的关联最为稳定,提示该位点可能关联神经元代谢及线粒体功能背景。总体来看,位点级hERV并非简单重复AD/NC差异,而是在不同细胞类型中对应若干相对独立的转录状态轴

共表达网络总结

hERV关联不是统一的,而是明显细胞类型依赖

  • Astro、Oligo、OPC、Excit的模块-hERV相关性幅度更大
  • Mic相关性中等,但模块的生物学解释更明确,尤其集中在免疫/炎症相关方向
  • Endo、Inhib整体较弱

AD和hERV不是简单同向变化

  • 很多模块里都能看到hERV和模块相关明显,但AD_binary相关很弱,甚至方向相反
  • hERV更像是反映细胞状态轴的标志,而不是简单的AD/NC二分类标志

主线:

  • Mic:在小胶质细胞中,hERV高表达状态更倾向于和广义先天免疫/炎症样激活相关,同时伴随翻译/神经互作相关程序的下降。整体上,以HERVK9/HERVL/HERVH为代表的家族与免疫相关模块的相关性最稳定
    • cluster 2:AD偏多(比全部Mic中的AD比例多13%),HERVK相关家族表达较高。与hERV正相关的pink模块上调,而pink模块富集到defense response to virus/response to virus/defense response to symbiont相关,且DEG包括TLR2/MX2/MX1;与hERV负相关的blue模块下调,blue模块与learning/cognition/trans-synaptic signaling/neuron projection morphogenesis相关
    • 除了pink和blue模块,在整体层面,Mic中HERVK9/HERVL/HERVH还与black模块(先天免疫/抗病原体)及yellow模块(蛋白折叠+免疫效应)相关,提示hERV-high的Mic状态不仅是炎症激活,也可能伴随抗原呈递和应激/蛋白稳态变化

支持性结果:

  • Oligo:在少突胶质细胞中,不同hERV家族与少突状态的关系并不完全一致:目前最稳健的证据支持HERVK11与成熟髓鞘化/高代谢状态相关;而HERVK3更偏向结构重塑/黏附变化趋势;HERVK、HERVK3、HERV3、HERVH、HERVL等多个家族则更可能共同参与广义膜脂/信号重塑状态。需要注意的是,后两者主要来自表达模式与模块方向的一致性,其cluster-levelGO证据相对较弱
    • cluster 9:最稳健、也是唯一真正显著的结果。只有HERVK11上调,其他hERV家族整体偏低,一个成熟髓鞘化、高代谢、高翻译活性的少突状态,并与HERVK11选择性相关
    • cluster 3:GO结果不显著。HERVK3相关的结构重塑/黏附变化状态,对应细胞骨架、黏附及分化相关程序
    • cluster 5:GO结果不显著。表现为更广泛的hERV上调,不仅包括HERVK/HERVK3,还包括HERV3/HERVH/HERVL等多个家族,因此更适合概括为一个多家族共同参与的广义hERV激活/重塑型亚群,其功能偏向脂质代谢、膜转运以及信号/修饰重塑
  • Excit:提供了一个和神经胶质细胞不同的模式——在兴奋性神经元中,HERVL/HERVK9/HERVK升高更可能与突触传递程序减弱相联系;反过来,hERV较低的神经元状态保留了更强的突触传递和囊泡循环程序
    • cluster 6的hERV表达量低,在red和black模块上调,而red和black的GO都是突触和信号传递相关的
    • 这说明与胶质细胞中hERV更多关联于激活/重塑/炎症类状态不同,在神经元中,hERV更像和“突触功能下降”相联系
  • astro:在星形胶质细胞中,hERV相关模块主要连接到gliogenesis、cell-cell signaling和synapse organization,提示其更可能反映胶质细胞参与神经支持和细胞间通讯的状态,也存在免疫/细胞因子响应方向的hERV关联,但强度和清晰度不如Mic,更像“胶质支持/分化+轻度炎症响应”的背景状态

总述:hERV重调在AD脑内具有明显的细胞类型和细胞状态依赖性。在不同细胞类型中,hERV并非统一对应同一种病理程序,而是分别耦联到不同的转录模块:在Mic中,以HERVK9/HERVL/HERVH为代表的家族主要与广义先天免疫/炎症样激活、抗原呈递样程序增强相关,并与稳态和翻译程序下降相联系;在oligo中,不同hERV家族分别对应结构重塑、广义膜脂/信号重塑以及成熟髓鞘化/高代谢状态,其中HERVK3更偏向结构重塑,HERVK/HERVK3/HERV3/HERVH/HERVL更偏向广义激活/重塑,HERVK11则更可能与成熟髓鞘化-高代谢状态选择性相关;在Astro中,HERV更多关联于胶质分化、神经支持与轻度细胞因子响应;而在Excit中,HERVL/HERVK9/HERVK升高则更可能与突触传递程序减弱相联系。除此之外,在OPC中也存在一定STAT1/外源刺激响应线索,在Inhib中与突触功能和蛋白折叠/应激有关,在Endo中与DNA合成/细胞分裂、神经和蛋白质相关功能有关,但与hERV的相关性较弱或者GO富集结果不显著,还需要更多验证


总结性的结果图选哪些

  • oligo/mic作为主要分析对象:各亚群的模块分数热图+各亚群的hERV家族平均表达量热图+关键模块的hERV~module热图+关键亚群的GO分析结果
  • 展示所有结果:气泡图?比如y轴是7大细胞类型,x轴是GO富集结果的功能标签,气泡大小/颜色代表相关程度(或者加上p值这种),最后再给气泡加个标签写上代表hERV家族(哪个家族和这个功能最相关)

hERV表达量热图test2

原值热图:设置最大值截取(表达量大于一定值的都归为同一种颜色)

# 从 plot_mat_z <- plot_mat_z[ord, , drop = FALSE] 开始
plot_mat_raw <- plot_mat[ord, , drop = FALSE]
lim <- quantile(plot_mat_raw, 0.99, na.rm = TRUE)
lim <- max(lim, 0.1)
col_fun_raw <- colorRamp2(
  c(0, lim / 2, lim),
  c("white", "#FDB863", "#B2182B")
)
family_anno <- read.csv(herv_map_path)
family_anno$subfamily_raw <- gsub("_", "-", family_anno$subfamily_raw)
row_class <- family_anno$class[match(rownames(plot_mat_z), family_anno$subfamily_raw)]
row_class[is.na(row_class)] <- "Unknown"
class_cols <- c(
  "ERV1" = "#E6E6E6",
  "ERVK" = "#969696",
  "ERVL" = "#252525",
  "Unknown" = "#BDBDBD"
)
right_anno <- rowAnnotation(
  Class = row_class,
  col = list(Class = class_cols),
  show_annotation_name = TRUE,
  annotation_name_gp = gpar(fontsize = 0),
  simple_anno_size = unit(2, "mm")
)
celltype_cols <- setNames(hcl.colors(length(celltype_order), "Set 2"), celltype_order)
group_cols <- c("NC" = "#2B6CB0", "AD" = "#B22222")
col_order$celltype <- factor(col_order$celltype, levels = celltype_order)
col_order$group <- factor(col_order$group, levels = group_order)
top_anno <- HeatmapAnnotation(
  Celltype = col_order$celltype,
  Group = col_order$group,
  col = list(
    Celltype = celltype_cols,
    Group = group_cols
  ),
  annotation_legend_param = list(
    Celltype = list(
      at = celltype_order
    ),
    Group = list(
      at = group_order
    )
  ),
  annotation_name_gp = gpar(fontsize = 0),
  simple_anno_size = unit(2, "mm")
)
ht_raw <- Heatmap(
  plot_mat_raw,
  name = "AvgExpr",
  col = col_fun_raw,
  top_annotation = top_anno,
  right_annotation = right_anno,
  cluster_rows = FALSE,
  cluster_columns = FALSE,
  show_row_names = TRUE,
  show_column_names = FALSE,
  row_names_gp = gpar(fontsize = 10),
  column_names_gp = gpar(fontsize = 12),
  column_names_rot = 45,
  border = FALSE,
  column_title = paste0("Average expression of hERV families - ", dataset),
  column_title_gp = gpar(fontsize = 16),
  rect_gp = gpar(col = NA)
)

my_GSE157827_6_19

加上显著性标记:对于同一细胞类型同一hERV家族的AD-NC格子,哪个表达量更高,就把星号标在哪个格子

my_GSE157827_6_20

scTE

筛选hERV相关位点

在scTE构建参考基因组的时候,发现它是用hg38+rmsk.txt一起构建的,因此计数结果中会包括基因和TE。最后得到的feature共5.8w多个:

  • HERV/ERV开头的共73个
  • LTR开头的共253个
features <- read.table("C:\\Users\\17185\\Desktop\\fsdownload\\features.txt")[, 1]
herv_features <- grep("^(HERV|ERV)", features, value = T)
ltr_features <- grep("^LTR", features, value = T)

如果在rmsk.txt中根据repName/repClass/repFamily来筛选:

rmsk_file <- "rmsk.txt"
rmsk <- fread(
  rmsk_file,
  select = c(11, 12, 13),
  col.names = c("repName", "repClass", "repFamily")
) %>% distinct(repName, repClass, repFamily)
filter_repClass <- rmsk %>%
  filter(repClass %in% "LTR")
filter_repFamily <- rmsk %>%
  filter(grepl("ERV", repFamily, ignore.case = TRUE))
filter_repName <- rmsk %>%
  filter(grepl("^(HERV|ERV)", repName, ignore.case = TRUE))

my_GSE157827_6_10

  • repFamilyERV开头来筛选,会得到500多个条目,这些条目的repFamily除了经典的ERVL/ERVK/ERV1,还会有ERVL-MaLR/ERVL?/ERV1?这种看起来很奇怪的,repName除了经典的HERV/LTR/MERxxx,还有MLT/MST/…开头的
    • MaLR是哺乳动物LTR逆转座子,ERVL-MaLR是和ERVL谱系关系很近的一类MaLR元素
    • ERVL?/ERV1?:分类不确定/边界不清楚/暂定归类,越老的LTR/ERV片段越难精确分类
    MLT1K           MLT1A           MLT1J2          MLT1E1A-int     MLT1E1A         LTR16C         
    ERV3-16A3_I-int LTR12F          LTR89           LTR103b_Mam     MLT1H2          MER4D1         
    MER4CL34        MLT1H           MLT1I           LTR33           MSTB1           MLT1C          
    MLT1F2          LTR33B          MER65D          MLT1D           THE1C           MER21C         
    LTR41           LTR37A          MER11C          MSTD            MLT1J           MLT2B3         
    MER31-int       MER92-int       MER34A          MSTA1           MER4A1          MER4A          
    MER31B          MER39B          LTR9B           MER4E1          MLT1E3          LTR37B         
    MLT1O           MSTA            LTR39           LTR22C2         ERVL-int        MLT1H1         
    THE1B           THE1B-int       MLT1H1-int      LTR64           THE1D           MLT1F1         
    LTR7            MER67C          LTR67B          LTR79           MER41D          MLT1A1         
    LTR78           MLT1B           LTR2C           LOR1-int        LTR57-int       LTR49-int      
    HERVK9-int      MER9a2          MER67A          HERV16-int      MER4A1_         MLT1G1         
    LTR12C          LTR13A          MER49           MER50           MER41B          LTR46          
    MER9a1          LTR13           LTR13_          MER54A          MER68           MER4B          
    MER4B-int       MER66C          MER66-int       MER74B          LTR5_Hs         LTR2B          
    Harlequin-int   LTR75           LTR10A          HERV9N-int      HERVIP10F-int   MLT1A0         
    LTR7B           MER65A          MER65-int       MER52A          MER52C          MER83          
    LTR26B          LTR42           MER4D           MER65B          LTR16E1         ERV3-16A3_LTR  
    MLT2D           MER31A          MSTB            ERVL-E-int      LTR18B          LTR40a         
    MER74A          LTR52           MLT-int         MLT2C1          MLT2B1          THE1A          
    MER66B          LTR41C          MER34C_         LTR26           LTR40c          MER34          
    LTR19A          MER89           MSTA-int        HERVL-int       LTR27B          LTR27C         
    MLT1H-int       MLT2B4          MER51A          LTR40b          MLT1E2          ERVL-B4-int    
    THE1C-int       LTR16A1         MSTB-int        LTR10B2         LTR21C          LTR62          
    THE1D-int       MER34C2         MER39           LTR5B           LTR45C          LTR8A          
    LTR38           LTR38-int       HERVK13-int     LTR3B_          MLT1E1          LTR78B         
    MER77           LTR3A           MER77B          LTR33C          LTR105_Mam      MLT2B2         
    LTR40A1         HERVL40-int     MER92B          LTR10E          LTR16E2         MER21B         
    LTR24C          MSTC            MLT1J1          MER21A          MSTB2           MLT2A2         
    MER48           HERVH-int       LTR7A           LTR53B          MER61B          MLT1A0-int     
    LOR1a           LTR33A_         MER57B1         LTR16A2         LTR53           MER90a         
    LTR50           LTR1A2          MER11A          LTR1B1          MER61D          MER61A         
    LTR8            LTR101_Mam      MLT1G           MER110          MLT1N2          LTR66          
    HERVL66-int     MER54B          MER70A          MLT1E           LTR16D          MLT1F          
    LTR24           LTR24B          MER57A1         LTR10C          MLT1J-int       MLT2A1         
    LTR48B          MER34-int       MER70B          LTR23           ERV24_Prim-int  LTR23-int      
    MER34B          LTR54           MER34C          LTR16A          MER34A1         MLT1L          
    LTR16B2         LTR33A          MER41A          LTR8B           MER4E           MLT1C-int      
    LTR16D2         LTR16B1         MLT1G1-int      LTR1C           THE1A-int       LTR41B         
    MLT1B-int       LTR19B          LTR71B          LTR16D1         MER51E          LTR86A1        
    LTR75_1         MER72           MLT1D-int       MER52D          LTR12E          LTR21B         
    HERVFH21-int    LTR14B          LTR12           MER101          LTR36           MLT1M          
    LTR71A          LTR86A2         MLT2C2          MLT1G3          LTR1F           MER84          
    MER84-int       LTR9D           LTR29           LTR86C          MER51B          HERV9-int      
    LTR47A          MER9a3          LTR82A          LTR21A          LTR77           LTR61          
    LTR56           MER4C           MER41E          HERVFH19-int    MER110A         MER11D         
    LTR26E          MLT2B5          LTR9            LTR60B          LTR2            MER57C1        
    MER21-int       LTR83           LTR1D1          LTR51           HUERS-P1-int    LTR84a         
    MLT2F           LTR84b          LTR26C          LTR16           LTR43B          HERVIP10FH-int 
    LTR103_Mam      LTR47B2         ERV24B_Prim-int MER34B-int      LTR75B          LTR1C1         
    MER67B          MLT2E           LTR65           MER52-int       LTR22B1         MER68-int      
    MER70C          LTR102_Mam      LTR10F          PRIMA4-int      HERVK-int       MER41G         
    LTR44           LTR45B          MER57A-int      LTR45           MER101-int      LTR57          
    HERV3-int       HERVE-int       LTR1C3          LTR7Y           HERV9NC-int     LTR12D         
    LOR1b           LTR10B          LTR14A          LTR22A          MST-int         LTR80A         
    LTR86B1         LTR82B          MLT1F-int       LTR55           MLT1I-int       LTR9A1         
    HERVL74-int     LTR32           LTR16B          LTR10D          PRIMA4_LTR      MER57E2        
    MER57F          MLT1J1-int      MER90           LTR4            MER87           LTR49          
    MER51D          PRIMA41-int     LTR39-int       MER57B2         LTR54B          LTR76          
    MER50C          PABL_B          LTR15           LTR38B          HERV-Fc2_LTR    MER61-int      
    LTR1F1          MER4D0          HUERS-P3-int    HERV35I-int     LTR37-int       LTR28B         
    LTR14           HERVK14C-int    MER66A          MLT1A1-int      LTR46-int       MER4-int       
    LTR26D          MLT1A-int       LTR7C           MER73           LTR06           LTR48          
    MER41-int       MLT1E3-int      PABL_A          LTR28C          MLT1K-int       MER57-int      
    LTR47A2         MER50-int       PABL_B-int      MER66D          LTR87           HERV1_LTRd     
    LTR80B          MLT1E2-int      MER57E1         MER41C          MSTD-int        LTR22B2        
    LTR6A           MER51C          LTR35A          HERV4_I-int     MLT1J2-int      MER34D         
    MER51-int       MER65C          LTR12B          MER57D          LTR35           MER50B         
    LTR1D           MSTA1-int       MLT1G-int       LTR31           LTR1E           HERVK22-int    
    LTR17           MER83B          PrimLTR79       LTR27           HERV30-int      MER74C         
    LTR1            HUERS-P3b-int   LTR6B           LTR38A1         HERVS71-int     HERVK11-int    
    MLT1F2-int      THE1-int        LTR86B2         LTR69           MLT1H2-int      LTR1F2         
    MER89-int       LTR2752         LTR1B0          LTR43           MLT1N2-int      MER70-int      
    LTR5A           LTR34           HERV17-int      MSTB1-int       PABL_A-int      MER68C         
    LTR91           LTR3B           MER76           MLT1L-int       LTR47B4         LTR19-int      
    MER11B          HERVIP10B3-int  LTR108a_Mam     MSTC-int        MER83B-int      MER61F         
    LTR1A1          MLT1F1-int      MLT1-int        LTR72B          LTR27E          LTR22C0        
    LTR68           LTR12_          PRIMAX-int      LTR28           MER68B          MER95          
    MER61C          HERVK14-int     MER92A          MER61E          LTR18A          HERVL18-int    
    MLT1O-int       MER72B          LTR47B3         LTR1B           LTR9C           HUERS-P2-int   
    MER92D          MER110-int      MER83C          LTR53-int       HERVP71A-int    MER101B        
    HERVL32-int     LTR58           LTR22E          LTR73           MLT1E-int       MER57C2        
    LTR35B          LTR22B          LTR27D          LTR5            LTR19C          LTR25-int      
    HERVH48-int     LTR30           LTR52-int       MSTB2-int       HERVKC4-int     HERVE_a-int    
    LTR22           MER67D          MER87B          MLT1G3-int      MER88           LTR108e_Mam    
    MER92C          HERVI-int       LTR10B1         LTR25           LTR60           LTR3           
    HERVK3-int      LTR108d_Mam     LTR18C          MER83A-int      LTR72           MER76-int      
    LTR14C          LTR47B          LTR38C          HERV1_LTRa      LTR10G          LTR108c_Mam    
    LTR108b_Mam     ERVL47-int      LTR59           MER57E3         LTR70           HERVK11D-int   
    MLT1E1-int      HERV1_I-int     MER9B           LTR43-int       HERV1_LTRe      HERV-Fc1_LTR1  
    HERV-Fc1_LTR2   HERV-Fc2-int    HERV-Fc1-int    HERV1_LTRc      HERV15-int      HERV-Fc1_LTR3  
    HERV1_LTRb      LTR109A2        LTR22C          MLT1M-int       MLT1C2          EUTREP7        
    Eutr10          LTR89B          MLT1C2-int      EUTREP15        LTR103b_Mam     Eutr10         
    LTR55           ERV3-16A3_I     LTR89B          LTR89           LTR103_Mam      MER34C_v       
    MER4A1_v        LTR33A_v        LTR13_v         LTR87           LTR12_v         LTR3B_v        
    HERV4_I   
    
  • repNameHERV/ERV开头来筛选,这回结果就比较统一,它们的repClass都是LTR,repFamily都是ERVL/ERVK/ERV1。基本都有-int后缀(像stellarscope的repName),也有少部分是_LTR的后缀

    ERV3-16A3_I-int ERVL-int        HERVK9-int      HERV16-int      HERV9N-int      HERVIP10F-int  
    ERV3-16A3_LTR   ERVL-E-int      HERVL-int       ERVL-B4-int     HERVK13-int     HERVL40-int    
    HERVH-int       HERVL66-int     ERV24_Prim-int  HERVFH21-int    HERV9-int       HERVFH19-int   
    HERVIP10FH-int  ERV24B_Prim-int HERVK-int       HERV3-int       HERVE-int       HERV9NC-int    
    HERVL74-int     HERV-Fc2_LTR    HERV35I-int     HERVK14C-int    HERV1_LTRd      HERV4_I-int    
    HERVK22-int     HERV30-int      HERVS71-int     HERVK11-int     HERV17-int      HERVIP10B3-int 
    HERVK14-int     HERVL18-int     HERVP71A-int    HERVL32-int     HERVH48-int     HERVKC4-int    
    HERVE_a-int     HERVI-int       HERVK3-int      HERV1_LTRa      ERVL47-int      HERVK11D-int   
    HERV1_I-int     HERV1_LTRe      HERV-Fc1_LTR1   HERV-Fc1_LTR2   HERV-Fc2-int    HERV-Fc1-int   
    HERV1_LTRc      HERV15-int      HERV-Fc1_LTR3   HERV1_LTRb      ERV3-16A3_I     HERV4_I     
    
    • 注意:上面的feature直接按HERV/ERV开头来筛选,可能会得到一些不属于rmsk范畴的feature(不在rmsk的repName里),而是属于gene的范畴,因此后面筛选feature时应与rmsk的repName取交集
    ERV3-1 ERVE-1 ERVFRD-1 ERVFRD-3 ERVH-1 
    ERVH48-1 ERVK-28 ERVK13-1 ERVK3-1 ERVK9-11 
    ERVMER34-1 ERVMER61-1 ERVV-1 ERVV-2 ERVW-1
    

LTR/MER开头的这种,是否应该归入具体某类hERV中:参考stellarscope作者提供的hERV的subfamily-group映射families.tsv,stellarscope作者给出的gtf文件应该就是把LTR归入了具体某类hERV之后的(也因此根据这个gtf得到的family-level的feature只有几个特殊的LTRxxx,而不是像rmsk里面有数百个),所以严格来说家族名的-int后缀其实不能表示“这个家族的计数都是internal区域的计数”,只是因为这个gtf注释“以internal model为主名,LTR作为组成部分”的习惯性设计

rmsk_map <- fread(
  rmsk_file,
  select = c(11, 12, 13),
  col.names = c("repName", "repClass", "repFamily")
) %>% distinct(repName, repClass, repFamily)
collapse_erv_family <- function(x) {
  x <- toupper(x)
  case_when(
    grepl("^ERVK", x) ~ "ERVK",
    grepl("^ERVL", x) ~ "ERVL",
    grepl("^ERV1", x) ~ "ERV1",
    TRUE ~ NA_character_
  )
}
tab <- rmsk_map %>%
  transmute(
    repName = repName,
    repClass = collapse_erv_family(repFamily)
  ) %>%
  filter(!is.na(repClass)) %>%
  distinct()

最后决定把scTE的计数分成3个层次:

  • HERV_subfamily_scTE:提取以HERV/ERV开头的repName
  • HERV_subfamily_LTR_scTE:在HERV_subfamily_scTE的基础上,根据families.tsv把一些LTR也归入到部分HERV中
  • HERV_class_scTE:提取以ERV开头的repFamily,得到ERVL/ERVK/ERV1级别的计数

最后得到的HERV:

  • 原始的不含LTR的、以^ERV|HERV筛选得到的结果:

    ERV24B-Prim-int ERV24-Prim-int  ERV3-16A3-I-int ERV3-16A3-LTR  
    ERVL47-int      ERVL-B4-int     ERVL-E-int      ERVL-int       
    HERV15-int      HERV16-int      HERV17-int      HERV1-I-int    
    HERV1-LTRa      HERV1-LTRb      HERV1-LTRc      HERV1-LTRd     
    HERV1-LTRe      HERV30-int      HERV35I-int     HERV3-int      
    HERV4-I-int     HERV9-int       HERV9NC-int     HERV9N-int     
    HERVE-a-int     HERVE-int       HERV-Fc1-int    HERV-Fc1-LTR1  
    HERV-Fc1-LTR2   HERV-Fc1-LTR3   HERV-Fc2-int    HERV-Fc2-LTR   
    HERVFH19-int    HERVFH21-int    HERVH48-int     HERVH-int      
    HERVI-int       HERVIP10B3-int  HERVIP10FH-int  HERVIP10F-int  
    HERVK11D-int    HERVK11-int     HERVK13-int     HERVK14C-int   
    HERVK14-int     HERVK22-int     HERVK3-int      HERVK9-int     
    HERVKC4-int     HERVK-int       HERVL18-int     HERVL32-int    
    HERVL40-int     HERVL66-int     HERVL74-int     HERVL-int      
    HERVP71A-int    HERVS71-int  
    
  • 把LTR合并进去的结果:

    ERV3-16A3-I ERVL        ERVL-B4     ERVL-E      Harlequin  
    HERV17      HERV3       HERV30      HERV4-I     HERV9      
    HERVE       HERVE-a     HERV-Fc1    HERV-Fc2    HERVFH19   
    HERVFH21    HERVH       HERVH48     HERVI       HERVIP10F  
    HERVIP10FH  HERVK       HERVK11     HERVK11D    HERVK13    
    HERVK14     HERVK14C    HERVK22     HERVK3      HERVK9     
    HERVKC4     HERVL       HERVL18     HERVL32     HERVL40    
    HERVL66     HERVL74     HERVP71A    HERVS71     HUERS-P1   
    HUERS-P2    HUERS-P3    HUERS-P3b   LTR19       LTR23      
    LTR25       LTR46       LTR57       MER101      MER34B     
    MER4        MER41       MER4B       MER50       MER61      
    PABL-A      PABL-B      PRIMA4      PRIMA41     PRIMAX   
    

与stellarscope计数的差异

就从后面频繁使用的几个hERV家族开始看起

fam_use <- c("HERVK", "HERVK3", "HERVK9", "HERVK11", "HERVK13", "HERVK14", "HERVK22", "HERVH", "HERVE", "HERV3", "HERV-Fc1", "HERV17", "HERVL")
mat_ref <- GetAssayData(seu, assay = "HERV_family", slot = "data")
mat_sct <- GetAssayData(seu, assay = "HERV_subfamily_LTR_scTE", slot = "data")
cnt_ref <- GetAssayData(seu, assay = "HERV_family", slot = "counts")
cnt_sct <- GetAssayData(seu, assay = "HERV_subfamily_LTR_scTE", slot = "counts")
rownames(mat_ref) <- gsub("-int", "", rownames(mat_ref))
rownames(cnt_ref) <- gsub("-int", "", rownames(cnt_sct))
fam_use <- intersect(fam_use, rownames(mat_ref))
fam_use <- intersect(fam_use, rownames(mat_sct))
mat_ref <- mat_ref[fam_use, , drop = FALSE]
mat_sct <- mat_sct[fam_use, colnames(mat_ref), drop = FALSE]
cnt_ref <- cnt_ref[fam_use, , drop = FALSE]
cnt_sct <- cnt_sct[fam_use, colnames(cnt_ref), drop = FALSE]

相关性

res_list <- list()
plot_list <- list()
for (fam in fam_use) {
  x <- as.numeric(mat_ref[fam, ])
  y <- as.numeric(mat_sct[fam, ])
  x_cnt <- as.numeric(cnt_ref[fam, ])
  y_cnt <- as.numeric(cnt_sct[fam, ])
  diff_xy <- y - x
  mean_xy <- (x + y) / 2
  pearson_r <- cor(x, y, method = "pearson")
  spearman_rho <- cor(x, y, method = "spearman")
  vx <- var(x)
  vy <- var(y)
  cxy <- cov(x, y)
  mx <- mean(x)
  my <- mean(y)
  ccc <- 2 * cxy / (vx + vy + (mx - my)^2)
  bias <- mean(diff_xy)
  sd_diff <- sd(diff_xy)
  mae <- mean(abs(diff_xy))
  rmse <- sqrt(mean(diff_xy^2))
  loa_low <- bias - 1.96 * sd_diff
  loa_high <- bias + 1.96 * sd_diff
  loa_width <- loa_high - loa_low
  det_ref <- x_cnt > 0
  det_sct <- y_cnt > 0
  det_rate_ref <- mean(det_ref)
  det_rate_sct <- mean(det_sct)
  det_overlap <- mean(det_ref & det_sct)
  det_jaccard <- sum(det_ref & det_sct) / sum(det_ref | det_sct)
  res_list[[fam]] <- data.frame(
    family = fam,
    pearson_r = pearson_r,
    spearman_rho = spearman_rho,
    CCC = ccc,
    bias = bias,
    MAE = mae,
    RMSE = rmse,
    LOA_low = loa_low,
    LOA_high = loa_high,
    LOA_width = loa_width,
    detect_rate_HERV_family = det_rate_ref,
    detect_rate_scTE = det_rate_sct,
    detect_overlap = det_overlap,
    detect_jaccard = det_jaccard
  )
  plot_list[[fam]] <- data.frame(
    family = fam,
    ref = x,
    scte = y,
    mean_xy = mean_xy,
    diff_xy = diff_xy,
    ref_detect = det_ref,
    scte_detect = det_sct
  )
}
cmp_res <- bind_rows(res_list)
cmp_plot_df <- bind_rows(plot_list)
View(select(cmp_res, family, pearson_r, spearman_rho, CCC, bias, MAE, RMSE, LOA_width, detect_jaccard))
ggplot(cmp_plot_df, aes(x = ref, y = scte)) +
  geom_point(size = 0.2, alpha = 0.15) +
  geom_abline(slope = 1, intercept = 0, linetype = 2, color = "red") +
  facet_wrap(~ family, scales = "free") +
  labs(
    x = "HERV_family (RNA-depth normalized log1p)",
    y = "HERV_subfamily_LTR_scTE (RNA-depth normalized log1p)"
  ) +
  theme_bw()
  • pearson_r/spearman_rho:相关性
  • CCC:一致性,最关键
  • bias:是否系统性偏高/偏低
  • MAE/RMSE:单细胞差异到底有多大
  • LOA_width:细胞间误差波动有多大
  • detect_jaccard:两者检测到的细胞是否一致

my_GSE157827_6_13

my_GSE157827_6_14

差异大小

ba_line_df <- cmp_res %>%
  select(family, bias, LOA_low, LOA_high)
ggplot(cmp_plot_df, aes(x = mean_xy, y = diff_xy)) +
  geom_point(size = 0.2, alpha = 0.15) +
  geom_hline(yintercept = 0, linetype = 2) +
  geom_hline(data = ba_line_df, aes(yintercept = bias), color = "red") +
  geom_hline(data = ba_line_df, aes(yintercept = LOA_low), color = "blue", linetype = 3) +
  geom_hline(data = ba_line_df, aes(yintercept = LOA_high), color = "blue", linetype = 3) +
  facet_wrap(~ family, scales = "free") +
  labs(
    x = "Mean of two assays",
    y = "scTE - HERV_family"
  ) +
  theme_bw()
  • 横轴是两者平均值,纵轴是两者差值scTE - HERV_family
  • 红线是平均偏差bias,蓝线是95% limits of agreement(差值的95%分布范围)
    • 蓝线越宽,说明单细胞差异越大
    • 红线离0越远,说明系统偏移越明显
  • 如果点云整体围绕0对称,说明两者一致性好;如果整体偏上/偏下,说明有系统性偏移

my_GSE157827_6_15


看一下HERV_subfamily_scTE(未把LTR加到hERV里)的情况

my_GSE157827_6_16

my_GSE157827_6_17

my_GSE157827_6_18

综上所述,总体上scTE得到的计数更大,HERV_subfamily_scTE这个assay的相关性更高、偏差更小,虽然前面说stellarscope的计数似乎是把LTR融到了HERV里,但根据上面的结果图,实际上似乎还是取的int序列,也许作者的gtf文件里还是在hERVx后面加上了-int就是这个意思?

  • 大多数hERV family相关性都比较高,只有HERVH这个无论是算LTR还是不算,计数都明显比stellarscope高

位点解释

  • GWAS:看“某个遗传变异”和“疾病/性状”是否相关。它告诉你这个区域可能和AD风险有关,但不直接告诉你是哪个基因、也不直接告诉你和hERV转录有没有关系
  • eQTL:看“某个遗传变异”和“某个基因表达量”是否相关。它更接近“调控”这一层。公开资源里最实用的是GTEx、MetaBrain、eQTL Catalogue
  • genome browser图:看这个hERV位点在基因组里的位置关系,比如在不在某个基因内部、是不是同链、附近有没有ncRNA注释、有没有候选调控元件。这一步是结构解释,不是遗传统计

主要思路:

  • genome browser展示locus周围基因组环境:判断这个hERV位点更像是宿主基因转录本的一部分/某个isoform相关信号,还是更像独立转录出来的hERV/ncRNA样信号
  • 公开数据库做外部支持:我观察到的位点-gene关系,是否落在已有疾病遗传学/表达调控框架里
anno <- read.csv("C:/Users/17185/Desktop/fsdownload/locus_summary.csv", stringsAsFactors = FALSE) %>% 
  mutate(locus_id = gsub("_", "-", locus_id))
plot_loci <- c(
  "HARLEQUIN-6p21.31",
  "HERVW-15q21.2",
  "MER41-13q13.3",
  "HML1-1q32.1",
  "HML3-1q32.1b",
  "HML4-16p13.3"
)
bed <- anno %>%
  filter(locus_id %in% plot_loci) %>%
  separate(coord, into = c("chr", "pos"), sep = ":", remove = FALSE) %>%
  separate(pos, into = c("start", "end"), sep = "-") %>%
  mutate(
    start = as.integer(start) - 1L,
    end = as.integer(end),
    score = 0L
  ) %>%
  select(chr, start, end, locus_id, score, strand)
write.table(
  bed,
  "C:/Users/17185/Desktop/hERV_AD_snRNA-seq_analyze/res/herv_locus_anal/herv_browser.bed",
  sep = "\t",
  quote = FALSE,
  row.names = FALSE,
  col.names = FALSE
)
track_line <- 'track name="hERV_loci" description="locus-level hERVs" visibility=pack color=220,20,60'
writeLines(track_line, "C:/Users/17185/Desktop/hERV_AD_snRNA-seq_analyze/res/herv_locus_anal/herv_browser_ucsc.txt")
write.table(
  bed,
  "C:/Users/17185/Desktop/hERV_AD_snRNA-seq_analyze/res/herv_locus_anal/herv_browser_ucsc.txt",
  sep = "\t",
  quote = FALSE,
  row.names = FALSE,
  col.names = FALSE,
  append = TRUE
)

进入UCSC基因组浏览器。点击”Add custom tracks”,将txt文件导入,以chr13:38553326-39614475的形式搜索位点,可以看到我们导入的herv位点

my_GSE157827_6_24

my_GSE157827_6_26

总结byGPT:结合genome browser局部注释与局部候选基因共表达分析,我们将代表性locus-level hERV位点大致分为三类。第一类为宿主基因相关型,包括HARLEQUIN-6p21.31和HERVW-15q21.2:前者位于ANKS1A基因内部并与ANKS1A呈显著正相关,后者则位于GLDN内部且与GLDN稳定正相关,提示其信号更可能与局部宿主转录本相关。第二类为共享非编码转录单元型,包括HML1-1q32.1和HML3-1q32.1b:二者位于同一局部区域,但均未获得PM20D1或SLC26A9的显著宿主支持,更可能共同代表一条astrocytic非编码hERV位点轴。第三类为独立转录/调控相关型,包括MER41-13q13.3和HML4-16p13.3:二者均缺乏典型宿主基因同链结构,其中MER41-13q13.3与NHLRC3呈区域性正相关,而HML4-16p13.3与KCTD5呈显著负相关,提示其更可能反映独立hERV转录或局部调控环境相关信号。进一步结合先前的trans共表达结果可见,这些位点并非简单重复AD/NC差异,而是在不同细胞类型中分别标记若干相对独立的转录状态轴


GWASADVP数据库中查询以上基因:

my_GSE157827_6_25

  • GLDN:browser上是典型宿主基因内同链位点,表达上又稳定正相关;GWAS侧虽然不是直接AD命中,但有cognitive performance、educational attainment、intelligence、memory test等多条认知相关记录,还碰到neurofibrillary tangles相关条目;ADVP中也有相关记录

    有明确的认知/神经表型背景支持,提示HERVW-15q21.2相关的少突状态轴可能连接到更广义的脑功能/认知遗传背景

  • ABCC9:GWAS里虽然不是直接AD,但有hippocampal sclerosis of aging和entorhinal cortical thickness,这两个都和脑老化/神经退行背景很贴近;ADVP中也有相关记录

    与astrocytic hERV轴稳定相关,同时具有脑老化相关遗传学线索

  • COLEC12:有dementia的直接命中,而且还有cortical surface area等脑结构相关条目

    HML3这条astrocytic hERV轴并不是简单重复疾病均值差,而是落在更广义的神经退行/脑结构背景中

  • NHLRC3:有late-onset Alzheimer’s disease直接条目;对MER41-13q13.3这条Oligo位点很有价值,因为MER41本来在browser上就更偏独立/局部区域耦联型,而NHLRC3正好可以作为“区域层面的AD相关支持”
  • MTR:GWAS里有hippocampal volume,这对Excit来说是不错的神经相关支持;虽然不是AD直接条目,但和“神经元代谢/一碳代谢背景”这条解释不冲突
  • PIK3C2B:有Alzheimer’s disease or educational attainment (pleiotropy)以及educational attainment等遗传学线索,但和hERV方向discordant

    该基因具有一定的认知/AD相关遗传学背景,但其AD/NC方向与HERVW-15q21.2不一致,提示该基因更可能参与少突细胞状态协同,而非简单作为该位点在AD中的直接输出

  • MICU2:有whole-brain volume相关条目,更偏泛脑结构量化表型,而且DE效应很小
  • KCTD5:有neurofibrillary tangles (SNP x SNP interaction),但不是最核心的基因,而是局部邻近基因,适合写成“局部调控环境的补充支持”,不适合当主轴
  • ADGRE2:GWAS里有major depressive disorder条目,但它更偏精神疾病/免疫背景,不是AD特异
  • IL4R:HIV-associated neurocognitive disorder,和神经免疫/认知损伤背景可能有点关系,但太间接了

几个总结点:

  • ADVP结果整体偏少:挑出来的gene,大多数不是已经被AD领域反复确认的核心风险基因
  • GWAS Catalog里能看到更多“脑结构/认知/衰老/痴呆相关”线索:挑出来的gene不是随机挑的,而是落在更广义的神经生物学遗传背景里
  • 支持程度在不同细胞类型并不一样:Oligo/Astro这两条线的遗传学整合最好看,Excit次之,Mic更多还是靠免疫程序和共表达来支撑,而不是AD数据库直接命中

总结byGPT:进一步结合公开遗传学数据库可见,这些与位点级hERV稳定相关的候选基因,并不普遍对应经典AD核心风险基因。ADVP结果整体较少,而GWAS Catalog中则可见更多脑结构、认知表现、衰老和痴呆相关条目。例如,Oligo中的GLDN与认知表现、教育年限和记忆测试相关,Astro中的ABCC9与hippocampal sclerosis of aging及entorhinal cortical thickness相关,COLEC12则直接出现dementia相关记录,MER41-13q13.3邻近的NHLRC3还可见late-onset Alzheimer’s disease条目。相比之下,部分Mic相关基因如ADGRE2、IL4R和ALOX5虽有一定精神/免疫背景线索,但缺乏直接AD特异支持。总体而言,这些结果更支持位点级hERV所对应的是若干细胞类型特异的转录状态轴,这些状态轴与神经认知、脑结构和衰老遗传背景存在不同程度联系,而非简单重复AD/NC差异

  • 公开GWAS数据库的证据表明,hERV相关候选基因的遗传学支持具有明显异质性。部分基因,如GLDN、ABCC9、COLEC12和NHLRC3,可在认知、脑结构、衰老或痴呆相关表型中找到支持;另一些基因则主要表现为局部状态轴或免疫背景关联,而缺乏直接AD特异条目。这提示本研究识别的位点级hERV-gene关系,更可能代表特定细胞状态在疾病背景中的组织方式,而不是单一的经典风险通路

部分基因的DE方向与预期相反(比如oligo的HERVW-15q21.2在AD下调,HERVW-15q21.2与PIK3C2B正相关,但PIK3C2B却在AD中上调):

  • 相关性描述的是细胞类型内部的协同变化轴(“哪个donor/423/NC两组均值差异。两者可以一致,也可以不一致
  • 这条hERV轴和AD/NC轴不是同一件事:HERVW-15q21.2 ~ PIK3C2B这条正相关,更多反映Oligo内部某种状态协同;但AD整体又额外推动了PIK3C2B往上走,所以最后组间均值方向和hERV不一致
  • 基因同时受两股力量影响:一股是和hERV绑定的状态轴,另一股是AD背景下独立存在的疾病效应
  • 组内协同很稳定,但组间平均差很小或很混杂:虽然统计显著,但你的avg_log2FC非常小,基本更像“大样本把一个极小差别检出来了”,生物学效应并不强

    与HML4-16p13.3存在稳定协同变化,但其AD/NC组间差异幅度很小,提示该基因更可能反映局部状态协同,而不是该位点在AD中的主要输出方向

  • 细胞组成/亚状态比例在组间变化:如果AD组里某个亚状态比例变化,会让gene的均值变化方向和hERV-state axis不完全一致
  • 总结:多数代表性gene的AD/NC变化方向与对应hERV位点的相关方向总体一致,但也存在少数不一致的基因,如PIK3C2B、COLEC12和MICU2。这提示位点级hERV更可能对应细胞状态协同变化轴,而非简单等同于疾病组间均值变化

文献阅读

hERVK env上调

Analysis of human endogenous retrovirus in Alzheimer’s disease and Frontotemporal dementia affected tissues

  • 只有散发性AD(sAD)患者血液中的HERV-K env转录本升高,其它检测到的HERV转录本在散发性/遗传性AD和FTD中都没有达到显著上调
  • 做的主要是DNA甲基化分析,发现一些与HERV调控相关的基因出现高甲基化
  • 提示“HERV-K env在sAD外周血中可能是一个特异信号”,而不是证明“AD中hERV整体广泛激活”

在这篇文章中,hERV的重调情况是怎样的,这篇文章用了什么数据。文章中上调的是HERVK的env,env和其它hERV片段很不一样吗?

  • env和一般“片段”最大的不同,在于它更可能对应一个有功能含义的编码区。在ERV的组成中,LTR是调控元件,gag/pol/env编码病毒核心,env编码包膜蛋白。env蛋白主要负责识别宿主细胞表面的受体,同时促进膜融合,让病毒进入细胞,所以是一种“直接和宿主界面接触”的蛋白,可能影响免疫识别、炎症反应等待

    不过这里作者检测的是env的RNA,而不是env蛋白,因为大多数hERV都不能产生完整翻译产物,不过确实要比只说“某个hERV片段上调”更有意义,因为病毒编码区上调更有可能意味着会翻译蛋白而影响宿主细胞

  • 文章中用的是qRT-PCR这种检测方法,如果作者事先就设计了针对HERV-K env那一段的引物,那么PCR扩增出来的信号,本来就是“这段env有没有升高”。如果是bulk RNA-seq,如果注释中有env这个feature的话就也能测出来,如果是scRNA-seq,因为每个细胞的reads更少,覆盖很浅,所以难度更高。对于我这种注释以及短读长的测序数据,即便某个位点真的转录了包含env的RNA,也只能知道read在HERVK家族的某段internal区域,但env只是internal中的一个功能区,不一定能被单独拆出来

另一种hERV计数方法

The landscape of hervRNAs transcribed from human endogenous retroviruses across human body sites

  • 使用bulk RNA-seq样本,研究正常人体中hervRNA表达图谱
  • 主要结论:正常组织中存在大量位点特异、组织特异的hervRNA
    • 总共鉴定了13889个locus-specific expressed HERVs,其中7566个是body site-specific
    • 脑组织里hervRNA很多,尤其小脑很突出

这篇文章采用的技术路线和我用STAR+stellarscope的方法有什么不同?

  • 先把疑似HERV相关reads提取出来→重建转录本→再贴回基因组→再用重建结果做定量
  • 重建转录本:不是只看某个基因组位置上有没有reads落上去,而是要把这些reads尽量拼回成一条完整或较完整的RNA转录本
    • 先把疑似来自HERV区域的RNA-seq reads提取出来
    • 把这些短reads按重叠关系“拼接”起来
    • 得到一条条候选转录本序列
    • 再把这些候选转录本重新比对回人基因组,判断它们来自哪里、结构是什么样

    相比“基于已有注释,把reads分配到已知HERV位点”的定量计数方法,重建转录本可以看到——这是不是一条真实存在的RNA、它的长度大概多长、它的边界在哪里、它是不是一个完整HERV转录本、它的具体状态和相邻结构是怎样的(是solo-LTR、截短HERV、嵌合转录本,还是与邻近基因连在一起)

    不过这种方法需要更高覆盖度,因此更适合bulk RNA-seq

  • 在重建过程中,多重比对的hervRNA转录本很难精确归位,在他们当前流程里会被舍弃,因此可能会漏掉一部分信号,也就是说,这篇文章更偏“高特异、低噪音”,而在我的scRNA-seq数据中,因为信号本来就稀疏,所以要尽量保留reads,也因此Stellarscope的重点就是在高度重复的位点间分配多重比对reads
  • 筛选reads:找那些比对到了HERV数据库(HERVd)标注区域里、但又不属于常规基因转录本(Gencode注释)的reads。相当于保留“纯HERV来源”的reads,排除“成为宿主基因一部分的hERV/嵌在普通基因里面的hERV序列/和普通基因有重叠的hERV”
  • 转录本QC:组装后转录本count>5、与参考基因组相似度≥96%、组装后长度≥200bp、至少在≥50%样本中出现、能唯一定位到某个HERV位点(无多重比对)。同时还做了实验验证,随机选取部分HERV做RT-PCR、Sanger测序和RT-qPCR,来证明流程确实能找出真实存在的转录本
  • 单细胞内每个细胞的HERV reads太稀,可能无法组装

hERV位点和邻近基因/promoter

主要思路:把位点级别herv分成不同的功能类别(比如作为基因的alternative promoter/enhancer,或是作为一个alternative exon/ltr形成chimeric transcripts),再按类别具体分析

后续补充研究

gtf文件gene行染色体范围和基因的重叠,比较是不是重叠多的表达高

GO分析涵盖MF和CC

单个数据集是否可复现?

我的表达多的类别是不是别人也报道了,和total RNA的报道的是不是相同