2016-09-28 10 views
0

Итак, есть моя проблема: я ищу среднее расстояние между известным мотивом внутри последовательности и расширяю его на список последовательностей ... первая часть выполнена, вторая часть (распространяется на список последовательностей) является проблематичной! Итак, вот как я делаю первую часть:Как определить среднее расстояние между известным мотивом в списке последовательностей ДНК

source("motifOccurrence.R") #https://www.r-bloggers.com/calculate-the-average-distance-between-a-given-dna-motif-within-dna-sequences-in-r/ 
library("seqinr") 
df <- readDNAStringSet("X.fasta") 
df2 <- df[[1]] 
motif <- c("T", "C", "C", "A") 
coord <- coordMotif(df2, motif) 
motidist <- computeDistance(coord) 
motidist 

[1] 152 

Это представляется, что первая последовательность из моего списка Fasta имеет среднее расстояние 152 нуклеотидов между двумя мотивами TCCA. И, я не знаю, как автоматизировать это ко всему моему списку в df ...

Спасибо за помощь.

Kévin

ответ

0

Это не проверено, но должно работать. sapply «поднимается» по каждому элементу списка (здесь мы также можем использовать lapply).

sapply(df, FUN = function(x, motif) { 
    computeDistance(coordMotif(x, motif)) 
}, motif = motif) 

Результатом будет вектор. Если вы хотите сохранить его в списке, используйте sapply(..., simplify = FALSE). Упрощение не производится с помощью lapply. Рассмотрим поведение как удобство. :)

+0

Я действительно благодарю вас !! Он отлично работает! –

+0

Здравствуйте, у меня есть новая проблема ... Я хотел бы вычислить среднее расстояние между двумя разными мотивами в том же списке последовательностей, что и раньше. Есть ли у вас какая-то подсказка, как это сделать? –