← 返回 Tessera
Toy6,000 行 × 4236 KB无缺失数据 2026-08-20

gwas_manhattan

12 条染色体、6,000 个标记和 18 个固定关联信号——矩形与圆形 Manhattan plot 的确定性练习数据。

Tessera 确定性模拟(manhattan recipe) · 收录于 2026-08-20

下载 CSV · 236 KB
数据预览6
MarkerChrPosP
rs1_11378,5260.458
rs1_21407,2080.247
rs1_31573,3570.164
rs1_41626,3320.383
rs1_51886,3540.683
rs1_611,182,7120.524
变量4
字符型1整数2双精度1
类型
#变量类型缺失统计
1Markerkey染色体编号与染色体内序号组成的稳定标记名字符型不同值 6000rs1_1 · rs1_2 · rs1_3 · rs1_4 · rs1_5 · rs1_6 · rs1_7 · rs1_8
2Chr1–12 的模拟染色体编号整数min 1q1 中位 6.5均值 6.5q3 max 12.0
3Pos染色体内模拟物理位置,范围 1–100,000,000 bp整数min 4,491q1 中位 4.9e+7均值 5.0e+7q3 max 1.0e+8
4P模拟关联检验 P 值;18 个固定信号覆盖 suggestive 与 genome-wide 阈值双精度min 4.8e-10q1 中位 0.497均值 0.498q3 max 1
载入已写好列类型
library(readr)

gwas_manhattan <- read_csv(
  "https://assets.evanzhou.org/tessera/csv/gwas_manhattan.csv",
  col_types = cols(
    Marker = col_character(),
    Chr    = col_integer(),
    Pos    = col_integer(),
    P      = col_double()
  )
)
URLhttps://assets.evanzhou.org/tessera/csv/gwas_manhattan.csv

来源

这是一份由 Tessera manhattan recipe 固化的确定性模拟 GWAS 数据,不对应真实队列、表型或基因型。每条染色体包含 500 个标记,位置按染色体内坐标排序;背景 P 值来自固定随机种子,18 个候选信号使用固定标记名和固定 −log10(P)

CSV 冻结后,矩形 Manhattan、圆形 Manhattan 与 Palette Lab 读取同一份数据,避免各处现场模拟产生不同峰位。

显著性约定

  • Suggestive threshold:P = 1e-6
  • Genome-wide threshold:P = 5e-8
  • Top hits:固定的 8 个示范标记,仅用于标签布局练习

适用图形

图形结构 用途
矩形 Manhattan plot 精确比较染色体区段、阈值和候选位点
圆形 Manhattan plot 在方形版面中概览全基因组信号分布
QQ plot 检查模拟 P 值背景与极端尾部(需另行计算期望分位数)
生成脚本R · 29
set.seed(2026)

n_chr <- 12
markers_per_chr <- 500

gwas_manhattan <- do.call(rbind, lapply(seq_len(n_chr), function(chr) {
  data.frame(
    Marker = paste0("rs", chr, "_", seq_len(markers_per_chr)),
    Chr = chr,
    Pos = sort(sample(seq(1, 100000000), markers_per_chr)),
    P = runif(markers_per_chr, min = 1e-4, max = 1),
    stringsAsFactors = FALSE
  )
}))

signals <- c(
  rs3_115 = 8.82, rs3_166 = 8.91,
  rs7_8 = 9.32, rs7_41 = 9.04, rs7_238 = 9.25,
  rs8_355 = 7.82, rs10_177 = 7.12, rs12_500 = 8.92,
  rs4_321 = 6.62, rs5_118 = 6.08, rs5_383 = 6.38,
  rs6_207 = 7.58, rs6_365 = 7.31, rs7_407 = 6.34,
  rs9_177 = 7.67, rs9_389 = 7.36, rs11_143 = 7.18, rs12_85 = 7.32
)

signal_rows <- match(names(signals), gwas_manhattan$Marker)
stopifnot(!anyNA(signal_rows))
gwas_manhattan$P[signal_rows] <- 10^(-unname(signals))

write.csv(gwas_manhattan, "gwas_manhattan.csv", row.names = FALSE)

表中统计由 scripts/profile_dataset.py 于 2026-08-20 数出。