2017-03-09 4 views
1

필자가 작성한 다양한 ID 목록을 기반으로 하위 세트로 만들려는 794 개의 항목이 포함 된 하나의 복잡한 fasta 파일이 있습니다.R에 특정 ID가 포함 된 데이터 프레임을 사용하여 fasta 파일을 서브 세트하는 방법은 무엇입니까?

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가있는 열 머리글과 아래의 행에있는 시퀀스가있는 출력을 제공했습니다. (이미지 1과 같이)

이 형식으로 인해이 파일을 전체 fasta 파일로 내보내는 데 문제가있었습니다.

이 작업을 수행하는 더 쉬운 방법이 있습니까? 이 복잡한 경우

미안 해요, 난 새로운 R.

답변

1

몇 가지입니다 :

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")