2014-10-04 8 views
0

나는 수업을 분석해야하는 큰 FASTA 파일이 있습니다.FASTA에서 정보 얻기 R

여기 질문에 도움이 발견되었습니다. How to search and isolate attributes of FASTA formatted text in R. 그러나 데이터를 조작하는 데 여전히 문제가 있습니다. 함수 getAnnots()를 사용
는, I는 다음과 같은 형식 "annots"목록 얻을 :

>annots 
[[i]] 
[1] ">SourceAccessionCode | StrainName | type/subtupe | OtherInfo | " 

내가 데이터 프레임에이리스트 형식을 변경할 어디 별도의리스트의 각 요소마다 행은 4 개의 열로 나뉩니다 (각각 위의 예에서 정보가 포함되어 있음).

strsplit() 함수와 sapply()for 루프의 다른 조합을 시도했지만 아무 소용이 없습니다. | [I] [1] "> sourceAccessionCode"를 "| (=" "GISAnnots [I], 분할)에도 그 자체에 strsplit()을 사용
불만족스러운 결과

에게

strsplit을주고 " "StrainName" "|"
[5] "유형" "/" "하위 유형" "|"
[9] "MoreInfo" "|"

그리고 for 루프를 사용하면 다음과 같은 결과

> info <- for (i in 1:length(GISAnnots)) 
+ strsplit(GISAnnots[[i]], split = " | ") 
> info 
NULL 

내가 일을 보여주기 위해 예를 생각할 수 없기 때문에 나는 구체적인 예이없는 사과, 나는 내 사용할 수 없습니다에게 제공 저작권 제한으로 인해 자신의 데이터를 예로들 수 있습니다.

당신의 도움이

+0

과 같이 검색됩니다. 사용자의 데이터를 보지 않으면 도움이 될 수 없습니다. 데이터를 약간 변경하고 형식을 표시 할 수 있습니까? – nicola

+0

@nicola, 내 데이터는 표준'read.fasta()'함수의 결과입니다. 링크 된 질문에 사용 된 예제가 좋은 예이지만, "annots"속성은 위에서 언급 한 형식을 따릅니다. –

+0

어떻게'strsplit'을 사용했고 왜 작동하지 않았습니까? – nicola

답변

1

주셔서 감사합니다 여기에 일부 데이터

elt = ">SourceAccessionCode | StrainName | type/subtupe | OtherInfo | " 
lst = list(elt, elt)) 

아마 첫 번째 문제는이 목록입니다,하지만 당신이 목록에없는 싶습니다이다. 너무 큰되지 않은 데이터에 대한 정교한 속임수 텍스트가 어쩌면 stringsAsFactors=FALSE를 추가 read.delim()에 입력 또는

> read.delim(text=unlist(lst), sep="|", header=FALSE, strip.white=TRUE) 
        V1   V2    V3  V4 V5 
1 >SourceAccessionCode StrainName type/subtupe OtherInfo NA 
2 >SourceAccessionCode StrainName type/subtupe OtherInfo NA 

유사은 척하는 것입니다. Biostrings 패키지에는 fasta 파일 작업을위한 readDNAStringSet()이 포함되어 있습니다. 여기서 fasta 시퀀스의 이름은 names(readDNAStringSet('your.fasta'))

+0

사실 내 데이터 세트는 꽤 큽니다 (약 9000 시퀀스). DNA가 아닌 아미노산 서열을 가지고 ... –

+0

@ ASH.K'이름 (readAAStringSet ("your.fasta"))'; 9000 시퀀스는'read.delim()'해법을 위해 훌륭합니다 - 당신이 그것을 시도 했습니까? –

+0

방금 ​​read.delim() 솔루션을 시도했지만 완벽하게 작동했습니다! 도와 줘서 고마워. –