2013-02-25 71 views
5

附图(曼哈顿图)包含来自基因组和X轴的染色体位置-log(p),其中p是与点(变体)相关的p值,从那个特定的位置。 enter image description here曼哈顿图中的峰检测

我已经使用下述R代码来生成它(从间隙包):

require(gap) 
affy <-c(40220, 41400, 33801, 32334, 32056, 31470, 25835, 27457, 22864, 28501, 26273, 
    24954, 19188, 15721, 14356, 15309, 11281, 14881, 6399, 12400, 7125, 6207) 
CM <- cumsum(affy) 
n.markers <- sum(affy) 
n.chr <- length(affy) 
test <- data.frame(chr=rep(1:n.chr,affy),pos=1:n.markers,p=runif(n.markers)) 
oldpar <- par() 
par(cex=0.6) 
colors <- c("red","blue","green","cyan","yellow","gray","magenta","red","blue","green",   "cyan","yellow","gray","magenta","red","blue","green","cyan","yellow","gray","magenta","red") 
mhtplot(test,control=mht.control(colors=colors),pch=19,bg=colors) 
> head(test) 
    chr pos   p 
1 1 1 0.79296584 
2 1 2 0.96675136 
3 1 3 0.43870076 
4 1 4 0.79825513 
5 1 5 0.87554143 
6 1 6 0.01207523 

我对获得高于某一阈值的曲线的峰的坐标(-log (p))。

+0

你是什么意思的“过零”? – 2013-02-25 13:57:41

+0

“峰值的一阶导数在峰值最大处有一个向下的过零点” - 从这里开始:http://terpconnect.umd.edu/~toh/spectrum/PeakFindingandMeasurement.htm#findpeaks;我不确定我的理解是否正确 – agatha 2013-02-25 14:03:26

+0

@agatha,这与您在[** biostars **](http://www.biostars.org/p/64416/#64558)上询问的问题有何不同提供了一个答案..? – Arun 2013-02-25 14:34:22

回答

1

如果你希望值的第99百分位数以上的指标:

# Add new column with log values 
test = transform(test, log_p = -log10(test[["p"]])) 
# Get the 99th percentile 
pct99 = quantile(test[["log_p"]], 0.99) 

...并从原始数据test获取值:

peaks = test[test[["log_p"]] > pct99,] 
> head(peaks) 
    chr pos   p log_p 
5  1 5 0.002798126 2.553133 
135 1 135 0.003077302 2.511830 
211 1 211 0.003174833 2.498279 
586 1 586 0.005766859 2.239061 
598 1 598 0.008864987 2.052322 
790 1 790 0.001284629 2.891222 

您可以与任何使用此阈。请注意,我还没有计算的一阶导数,看到一些指针这样的疑问:

How to calculate first derivative of time series

计算一阶导数后,你可以通过查看一阶导数是时间序列点找到峰值(几乎)为零。确定这些峰后,您可以检查哪些峰高于阈值。

+0

好吧,这是工作......我已经尝试了我的数据以及...我看不到森林在树后面。谢谢。 – agatha 2013-02-25 14:13:21

+0

然而,我仍然无法区分哪一个是峰值或不是...所以从这个结果我需要一个额外的过滤器.. p值是不够的,因为我不知道我正在寻找哪些点为.. – agatha 2013-02-25 14:15:42

+0

我在我的答案中增加了更多信息。 – 2013-02-25 14:30:59

0

基于绘图您可以使用下面的R代码里面找到图形之后我的经验,峰值协调

图(X [,1],X [,2])

识别(X [,1],x [,2],labels = row.names(x))

请注意这里x [,1]指的是x坐标(基因座坐标和x [,2]会#your -log10P值

此时使用点您的鼠标来选择一个点,然后回车这#will给你的峰值位置,然后输入以下代码来获取#coordinate

COORDS < - 定位器(TYPE =“L”)

coords