You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用trackViewer绘制基因棒棒糖图去除外显子间空白求助

实现方案

1. 构建无间隔的外显子GRanges对象

直接使用你预计算好的adjust_start和end字段构建外显子特征,天然跳过内含子空白区域:

library(GenomicRanges)
library(trackViewer)

# 直接用调整后坐标构建外显子对象,无内含子间隔
features <- GRanges("chr1", 
                    IRanges(start = exons$adjust_start, 
                            end = exons$end, 
                            names = paste0("exons", 1:nrow(exons))))
# 设置外显子样式
features$fill <- "lightblue"
features$height <- 0.1

2. 校正SNP坐标到无内含子体系

需要先匹配每个SNP所属的原始外显子区间,再通过外显子的坐标偏移规则转换SNP位置:

# 构建原始外显子坐标的GRanges,用于匹配SNP所属外显子
raw_exons_gr <- GRanges("chr1", 
                        IRanges(start = exons$Start, 
                                width = exons$Length))
# 构建原始SNP坐标的GRanges
raw_snp_gr <- GRanges("chr1", IRanges(start = SNP$V1, width = 1))

# 匹配每个SNP对应的外显子(不在外显子区的SNP会自动过滤)
ol <- findOverlaps(raw_snp_gr, raw_exons_gr)
# 计算调整后的SNP坐标:原始SNP位置减去所属外显子原始起始,加上外显子调整后起始
adjusted_snp_pos <- SNP$V1[queryHits(ol)] - exons$Start[subjectHits(ol)] + exons$adjust_start[subjectHits(ol)]

# 构建调整后的SNP GRanges对象
sample.gr <- GRanges("chr1", 
                     IRanges(start = adjusted_snp_pos, 
                             width = 1,
                             names = paste0("snp", SNP$V1[queryHits(ol)])),
                     color = sample.int(10, length(adjusted_snp_pos), replace = TRUE),
                     border = sample(c("black", "gray80", "gray30"), 
                                     length(adjusted_snp_pos), replace = TRUE))

3. 绘制无空白的棒棒糖图

lolliplot(sample.gr, features)

如果需要在外显子之间增加微小间隔方便区分,可以给每个外显子的adjust_start和end依次叠加固定偏移值(比如每个外显子间隔10bp),再执行上述步骤即可。

内容的提问来源于stack exchange,提问作者tacrolimus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:21:01