Ответ 1
Вы должны посмотреть на Biostrings пакет.
library("Biostrings")
s = readDNAStringSet("nm.fasta")
subseq(s, start=c(1, 2, 3), end=c(3, 6, 5))
У меня есть небольшой файл с последовательностями ДНК, который выглядит так:
>NM_000016 700 200 234
ACATATTGGAGGCCGAAACAATGAGGCGTGATCAACTCAGTATATCAC
>NM_000775 700 124 236
CTAACCTCTCCCAGTGTGGAACCTCTATCTCATGAGAAAGCTGGGATGAG
>NM_003820 700 111 222
ATTTCCTCCTGCTGCCCGGGAGGTAACACCCTGGACCCCTGGAGTCTGCA
Вопросы:
1) Как я могу прочитать этот файл fasta в R как кадр данных, где каждая строка - это запись последовательности, 1-й столбец - это refseqID, а 2-й столбец - это последовательность.
2) Как извлечь подпоследовательность в (начало, конец) месте?
NM_000016 1 3 #"ACA"
NM_000775 2 6 #"TAACC"
NM_003820 3 5 #"TTC"
Вы должны посмотреть на Biostrings пакет.
library("Biostrings")
s = readDNAStringSet("nm.fasta")
subseq(s, start=c(1, 2, 3), end=c(3, 6, 5))
library("Biostrings")
fastaFile <- readDNAStringSet("my.fasta")
seq_name = names(fastaFile)
sequence = paste(fastaFile)
df <- data.frame(seq_name, sequence)
вдохновленный ответом sgibb выше, я отвечаю на первый вопрос следующим образом:
#read fasta file into R as a dataframe: 1st column as "RefSeqID", 2nd column as "seq"
library("Biostrings")
fasta2dataframe=function(fastaFile){
s = readDNAStringSet(fastaFile)
RefSeqID = names(s)
RefSeqID = sub(" .*", "", RefSeqID)
#erase all characters after the first space: regular expression matches a space followed by any sequence of characters and sub replaces that with a string having zero characters
for (i in 1:length(s)){
seq[i]=toString(s[i])
}
RefSeqID_seq=data.frame(RefSeqID,seq)
return(RefSeqID_seq)
}
Пример:
mydf = fasta2dataframe(myFastaFile.fasta)