R 将.fasta文件中的所有单个字母拆分为矩阵中每列一个字母
我想在R中执行以下操作 我有一个.fasta文件,包含大约90个DNA基因序列,如下所示:R 将.fasta文件中的所有单个字母拆分为矩阵中每列一个字母,r,bioinformatics,fasta,R,Bioinformatics,Fasta,我想在R中执行以下操作 我有一个.fasta文件,包含大约90个DNA基因序列,如下所示: >3 dna:chromosome chromosome:ASM162521v1:3:6424947:6434108:1 GTTAGATTTTCAAATTTTTCCAAAGTTTTATAATTTTCATTTTTTTAAGAATTCCATTTT TTTCGAATTTTTTCGAATTTTTTAGCTTTTTAGAAGCTTTCAGTTTTTAAGTTTTCTTAA #(.. contains up t
>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
}
}
}
}
}
input_file除非所有序列的碱基数都完全相同,否则将它们放入矩阵是个坏主意。尽管如此,这可能是一个坏主意,因为矩阵将是巨大的
无论哪种方式,您都可以使用该软件包:
但如前所述,我不认为这个矩阵一定是最方便的表示形式,所以我会在第一步之后停止。序列确实是不等基的。在这种情况下我该怎么办?此外,一旦完成此步骤(即,一旦我需要的输出位于.csv文件中),就不需要进行进一步的数据操作,这样,如果我愿意,我就可以从excel工作表中快速找到特定的列-所有基以任意多个顺序排列,而无需再次键入代码。这有意义吗?
sequences = seqinr::read.fasta(filename)
names = vapply(sequences, attr, character(1L), 'Annot')
results = cbind(names, do.call(rbind, sequences))