2016-04-13 17 views
0

SNP'lerle ve SNP'ler olmadan büyük sekans verilerini karşılaştırmaya çalışıyorum ve snps'i eş anlamlı olmayan veya eşanlamlı olarak işaretliyorum. Söylemem gereken birEğer alternatif nükleotid yanlış anlamlı mutasyona yol açarsa

ref[test$pos]=as.vector(test$ALT) 

, will yedek kurşun: Ne .:

head(test) 

    pos ALT REF 
1 2 G T 
2 8 G T 
3 65 C G 
4 68 C G 
5 77 T C 
6 78 G C 
Ben alternatrive olanlarla refference nükleotidleri yerini alabilir

.fasta dizisini ve muhafazakar (refference) ile PLNIK dan .bim dosyası ve alternatif nükleotid bulunacaktır aminoasit değiştirmeye veya olmayacaktır. seqinr paketini kullanıyorum, belki yanlış yoldayım? yüzden (üst sicil ile işaretlenmiştir alt vektör alternatif nükleotid) dizilerdir 2 dizeleri, ettik:

t_ref=translate(ref) 
t_alt=translate(alt) 

Sonra karşılaştırabilirsiniz:

ref=c("a","t","g","t","c","g","t","c","g","g","c","c","g","c","g","g","g","c", 
"c","a","a","g","a","c","a","a","c","g","g","a","g","a","t","a","c","c", 
"g","c","t","g","g","g","g","a","c","t","a","c","a","t","c","a","a","g", 
"t","g","g","a","t","g","t","g","c","g","g","c","g","c","c","g","g","t", 
"g","g","c","c","g","t","g","c","g","g","g","c","g","g","c","g","c","c", 
"a","t","g","g","c","c","a","a","c","c","t","c","c","a","g","c","g","c", 
"g","g","c","g","t","t","g","g","c","t","c","c","c","t","c","g","t","c", 
"c","g","t","g","a","c","a","t","t","g","g","c","g","a","c","c","c","c", 
"t","g","c","c","t","c","a","a","c","c","c","a","t","c","c","c","c","c", 
"g","t","t","a","a","g") 

alt=c("a","G","g","t","c","g","t","G","g","g","c","c","g","c","g","g","g","c", 
"c","a","a","g","a","c","a","a","c","g","g","a","g","a","t","a","c","c", 
"g","c","t","g","g","g","g","a","c","t","a","c","a","t","c","a","a","g", 
"t","g","g","a","t","g","t","g","c","g","C","c","g","C","c","g","g","t", 
"g","g","c","c","T","G","g","c","g","g","C","c","g","g","c","g","c","c", 
"a","t","g","g","c","c","a","a","c","c","t","c","c","a","g","c","g","c", 
"g","g","c","g","t","t","g","g","c","t","C","c","c","t","c","g","C","c", 
"c","T","t","g","a","c","a","T","t","g","g","c","g","a","c","c","c","c", 
"t","g","c","c","t","c","a","a","c","c","c","a","t","c","c","c","C","c", 
"g","t","t","a","a","g") 

Bunu çevirebilir, amino asitlere vektörleri onları ve değişti which've ki:

which((ref==alt)==FALSE) 
which((t_ref==t_alt)==FALSE) 

Yani soru aminoaci yol açar test df nükleotidlerle işaretlemek etmektir d değiştir. Şimdiden teşekkürler.

cevap

2

Kullanım modülo aritmetik bunun olduğuna dikkat çeken, benim ilk denemede yanlış modülo aritmetik "kayıt" var nükleotid dizisi

library(seqinr) 
test$pos %/% 3 # returns a zero-based position, so add 1 to get 1 based value 
#[1] 0 2 21 22 25 26 
t_ref[ 1+(test$pos %/% 3)] 
#[1] "M" "S" "G" "A" "R" "A" # lookup value in prot-seq 
t_alt[ 1+(test$pos %/% 3)] 
#[1] "R" "W" "A" "A" "L" "A" # test for equality to this value 
test$change <- t_ref[ 1+((test$pos-1) %/% 3)] == t_alt[ 1+((test$pos-1) %/% 3)] 
test 
#===================== 
    pos ALT REF change 
1 2 G T FALSE 
2 8 G T FALSE 
3 65 C G FALSE 
4 68 C G TRUE 
5 77 T C FALSE 
6 78 G C FALSE 

ait pos kolon protein dizisindeki pozisyonları inşa etmek düzgün "kayıtlı" çeviri:

> (1:21 -1) %/% 3 
[1] 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 
+0

Evet, SNP'ler yakın değilse çok iyi çalışır, ancak SNP'ler yakınsa Eğer 77 ve 78 ise, eğer her iki SNP'yi de 'FALSE' olarak işaretliyoruz – Lionir

+0

“Doğru” cevabın ne olacağını söylemediniz ve bu bağlamda “yakın” ve “uzak” terimlerini anlayamıyorum. Başarısız olursa, o zaman hte orijininden uzaklığa bağlı değildir. Modulo aritmetiğinin "kaydını" yanlış yapmış olabilirim. Bu testin daha iyi olup olmadığına bakın: 'test $ değişim <- t_ref [1 + ((test $ pos-1)% /% 3)] == t_alt [1 + ((test $ pos-1)% /% 3) ] –

+0

Ama neyse, sen benim problemimi çözdün, komşu SNP'ler için bir istisna kuralı ekledim, çok teşekkürler! – Lionir