Разделение всех отдельных букв в файле .fasta на одну букву в столбце матрицы - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу сделать следующее в R.

У меня есть файл .fasta, содержащий около 90 последовательностей генов ДНК, таких как:

>3 dna:chromosome chromosome:ASM162521v1:3:6424947:6434108:1
GTTAGATTTTCAAATTTTTCCAAAGTTTTATAATTTTCATTTTTTTAAGAATTCCATTTT
TTTCGAATTTTTTCGAATTTTTTAGCTTTTTAGAAGCTTTCAGTTTTTAAGTTTTCTTAA #(.. contains up to 9300 letters)

>6 dna:chromosome chromosome:ASM162521v1:6:27534931:27544030:1
GTATAGGTTCTAAAAAGACTGTTTGAATTTCCATATAGGCATATAGCTTTAACCATGAGC
TGTTACTAGCCTTTTGCTGATTTTAAGCTTGCTATGAACTATTGTAACATTTTGTTTATT #(.. contains up to 9300 letters)

Я хочу разделить каждую отдельную букву наотдельный столбец матрицы, например, такой:

Пожалуйста, щелкните по этому

Конечный результат должен иметь размеры [столько строк, сколько последовательностей и столько столбцовкак есть буквы в моем файле].

И вывод должен быть записан в файл Excel.

Это то, как далеко я получил

input_file <- as.matrix(input_file)

template_matrix <- matrix(,91,9300)

for (i in 1:nrow(input_file)) {
  current_row <- input_file[i,1]
  strip_char <- strsplit(current_row, "")
  first_char <- strip_char[1]

  if (first_char == ">"){
    template_matrix[i,1] <- current_row
    new_i = i+1
    for (j in new_i:nrow(input_file)){
      j_current_row <- input_file[j, 1]
      j_strip_char <- strsplit(j_current_row, "")
      j_first_char <- j_strip_char[1]

      if(j_first_char != ">"){
        for (k in new_i:){
          template_matrix[i, ] #I'VE GOTTEN HOPELESSLY LOST SOMEWHERE
        }
      }
    }
  }
}

1 Ответ

0 голосов
/ 20 сентября 2019

Если у всех ваших последовательностей нет одинакового количества оснований, помещать их в матрицу - плохая идея.Это может быть плохой идеей, потому что матрица будет очень большой.

В любом случае, вы можете использовать пакет {seqinr} :

sequences = seqinr::read.fasta(filename)
names = vapply(sequences, attr, character(1L), 'Annot')
results = cbind(names, do.call(rbind, sequences))

Нокак уже упоминалось, я не думаю, что наличие этой матрицы обязательно является наиболее удобным представлением, поэтому я остановлюсь после первого шага.

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