如何使用包含 R 中特定 ID 的数据帧对 fasta 文件进行子集化?
How to subset a fasta file using data frames containing specific IDs in R?
我有一个包含 794 个条目的复杂 fasta 文件,我想根据我创建的各种 ID 列表对这些条目进行子集化。
fasta文件格式如下:
>5_B1_CZ.1:572-889 ID:5_B1 Contig:1
ATGTCCTGGATDCGTTACTTGTGTATTGCCGGTCCTC
根据之前的回答,我使用下面的代码读取了fasta文件。
fastafile<- read.fasta(file = "test.fasta", seqtype = "AA",as.string = TRUE, set.attributes = FALSE)
然后使用以下行根据包含 ID 列表的数据框对 fasta 文件进行子集化。
f<-fastafile[c(which(names(fastafile) %in% Allint$`All Intersect`))]
ID 列表的示例如下所示。
All Intersect
1 5_F2_CZ.13:475-2241
2 2_B8_CZ.9:133-1899
这似乎可行,但给出的输出具有各种 fasta ID 作为列 headers 以及下面各行中的序列。 (如图一)
由于这种格式,我在尝试将其导出为完整的 fasta 文件时遇到了问题。
有没有更简单的方法来完成这个任务?
对不起,如果这很复杂,我是 R 的新手。
几件事:
1) 要对您的 fasta 对象进行子集化,您不需要 c
或 which
f<-fastafile[names(fastafile) %in% Allint$`All Intersect`)]
2) 要输出您拥有子集的序列,您需要使用 write.fasta
函数。这会将序列放回原处并写入一个 fasta 文件。
write.fasta(f, names(f), file.out="My_newfastaFile.fa")
我有一个包含 794 个条目的复杂 fasta 文件,我想根据我创建的各种 ID 列表对这些条目进行子集化。
fasta文件格式如下:
>5_B1_CZ.1:572-889 ID:5_B1 Contig:1
ATGTCCTGGATDCGTTACTTGTGTATTGCCGGTCCTC
根据之前的回答,我使用下面的代码读取了fasta文件。
fastafile<- read.fasta(file = "test.fasta", seqtype = "AA",as.string = TRUE, set.attributes = FALSE)
然后使用以下行根据包含 ID 列表的数据框对 fasta 文件进行子集化。
f<-fastafile[c(which(names(fastafile) %in% Allint$`All Intersect`))]
ID 列表的示例如下所示。
All Intersect
1 5_F2_CZ.13:475-2241
2 2_B8_CZ.9:133-1899
这似乎可行,但给出的输出具有各种 fasta ID 作为列 headers 以及下面各行中的序列。 (如图一)
由于这种格式,我在尝试将其导出为完整的 fasta 文件时遇到了问题。
有没有更简单的方法来完成这个任务?
对不起,如果这很复杂,我是 R 的新手。
几件事:
1) 要对您的 fasta 对象进行子集化,您不需要 c
或 which
f<-fastafile[names(fastafile) %in% Allint$`All Intersect`)]
2) 要输出您拥有子集的序列,您需要使用 write.fasta
函数。这会将序列放回原处并写入一个 fasta 文件。
write.fasta(f, names(f), file.out="My_newfastaFile.fa")