2013-02-25 11 views
5

संलग्न साजिश (मैनहट्टन प्लॉट) जीनोम से एक्स अक्ष गुणसूत्र स्थितियों और वाई अक्ष-लॉग (पी) पर है, जहां पी बिंदुओं (प्रकारों) से जुड़े एक पी-मूल्य है। उस विशिष्ट स्थिति से। enter image description hereमैनहट्टन प्लॉट में पीक पहचान

मैं इसे उत्पन्न करने के लिए (अंतराल पैकेज से) के बाद आर कोड का इस्तेमाल किया है:

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 (पी))।

+0

"शून्य-क्रॉसिंग" से आपका क्या मतलब है? –

+0

"चोटी के पहले व्युत्पन्न में अधिकतम अधिकतम पर शून्य-क्रॉसिंग होता है" - यहां से: http://terpconnect.umd.edu/~toh/spectrum/PeakFindingandMeasurement.htm#findpeaks; मुझे यकीन नहीं है कि अगर मैं सही ढंग से – agatha

+0

@agatha समझ गया हूं, तो यह [** बायोस्टर्स **] (http://www.biostars.org/p/64416/#64558) पर पूछे गए प्रश्न से अलग है, जिसके लिए मैं एक उत्तर प्रदान किया ..? – Arun

उत्तर

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

पहले व्युत्पन्न गणना के बाद, आप timeseries जहां पहले व्युत्पन्न है में अंक को देखकर चोटियों पा सकते हैं (लगभग) शून्य। इन चोटियों की पहचान करने के बाद, आप जांच सकते हैं कि कौन से सीमा दहलीज से ऊपर हैं।

+0

ठीक है, यह काम कर रहा है ... मैंने इसे अपने डेटा पर भी कोशिश की है ... मैं नहीं देख सका पेड़ के पीछे जंगल। धन्यवाद। – agatha

+0

हालांकि, मैं अभी भी अंतर नहीं कर सकता कि उनमें से कौन सा शिखर है या नहीं ... इसलिए इस परिणाम से मुझे एक अतिरिक्त फ़िल्टर की आवश्यकता होगी .. पी-वैल्यू पर्याप्त नहीं है क्योंकि मुझे नहीं पता कि मैं कौन से अंक देख रहा हूं के लिए .. – agatha

+0

मैंने अपने उत्तर में कुछ और जानकारी जोड़ा। –

0

ग्राफ आप निम्नलिखित आर कोड का उपयोग कर सकते हैं करने की साजिश रचने के बाद मेरे अनुभव के आधार शिखर समन्वय

साजिश (एक्स [, 1], एक्स [, 2])

पहचान (एक्स [, 1], एक्स [, 2], लेबल = row.names (एक्स))

टिप्पणी यहाँ एक्स [1] एक्स समन्वय करने के लिए (जीनोम समन्वय और एक्स [, 2] #your होगा संदर्भित करता है -log10P मान

इस समय का उपयोग बिंदु आप माउस एक बिंदु का चयन करने के लिए और दर्ज करें जो आप शिखर स्थान देना #will मारा और उसके बाद निम्न कोड टाइप #coordinate

coords < पाने के लिए - (प्रकार = "एल") लोकेटर

कॉर्ड

संबंधित मुद्दे