Рисование линии между последовательными генами в R? - PullRequest
0 голосов
/ 13 марта 2020
seq1 <- "ACGTATGCTAGTCTTTACG"
seq2 <- "TTATATGCTAGAATTAAGG"

mat <- matrix(0L, nchar(seq1), nchar(seq2))
x_dots <- c()
y_dots <- c()
k <- 1
for(i in seq(0, nchar(seq1))){
  for(j in seq(0, nchar(seq2))){
    if(substr(seq1, start = i, stop = i)==substr(seq2, start = j, stop = j)){
      mat[i,j] <- 1
      x_dots[[k]] <- i
      y_dots[[k]] <- j
      k <- k+1 
    }
  }
}
mat

fonk <- function(x_dots,y_dots){
  x<-0
  y<-0
  line <- list(list(),list())
  for(i in seq(0, nchar(seq1))){
    for(j in seq(0, nchar(seq2))){
      if(substr(seq1, start = i, stop = i)==substr(seq2, start = j, stop = j)){
        mat[i,j] <- 1
        x_dots[[k]] <- i
        y_dots[[k]] <- j
        k <- k+1 
      }
    }
  }
}

x_dots
y_dots

plot(x_dots,y_dots)
lines(x_dots,y_dots)

Это код, который я написал. Я хочу рисовать линии между каждыми последовательными генами. Я имею в виду, если

x_dots [i] x_dots [i + 1]

и

y_dots [i] y_dots [i + 1 ]

- это те же гены, что и др aws линия. Другими словами, если у seq1 есть «AT», а у seq2 есть «AT» в том же месте, то это dr aws строка. Как я могу это сделать?

Изображение

Изображение 2

1 Ответ

0 голосов
/ 13 марта 2020

Если честно, ваш ожидаемый сюжет не имеет большого смысла для меня; но, возможно, я что-то упускаю.

Вот что я бы сделал.

seq1 <- "ACGCG"
seq2 <- "ACACG"

s1 <- unlist(strsplit(seq1, ""))
s2 <- unlist(strsplit(seq2, ""))

image(+outer(s1, s2, `==`), axes = FALSE, col = c("white", "darkblue"))
axis(1, at = seq(0, 1, length.out = length(s1)), labels = s1)
axis(2, at = seq(0, 1, length.out = length(s2)), labels = s2)

enter image description here

Объяснение: Разделите последовательности в вектор символов, затем используйте outer с функцией == для проверки совпадения символов. Это создает матрицу, которую мы можем построить с помощью image. Соответствующие символы показаны синим цветом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...