2012-03-15 2 views
1

저는 '멍청한 놈'입니다. 최근에 Perl을 통해 프로그래밍하는 것에 대해 소개되었으므로 저는 아직도이 모든 것에 익숙해 져 있습니다. 나는 내가 사용할 수있는 .fasta 파일을 가지고 있는데, 나는 그것을 열 수 있는지 확신 할 수 없거나, 내가 그것을 '맹목적으로'해야만한다면, 말할 수있다..fasta 파일을 사용하여 시퀀스의 상대적인 내용을 계산하십시오.

어쨌든,이 파일에는이 .fasta 형식으로 쓰여진 3 개의 유전자에 대한 DNA 염기가 들어 있습니다.

은 분명히 그것을 이런 식으로 뭔가 :

>label 
sequence 
>label 
sequence 
>label 
sequence 

내 목표 열고 지금의 요령을 입수 한 파일을 읽을 수있는 스크립트를 작성하는 것입니다,하지만 난 상대 계산, 각 시퀀스를 읽을 필요 각 시퀀스 내에서 'G'와 'C'의 양을 입력 한 다음 유전자의 이름과 각각의 'G'및 'C'내용을 탭으로 구분 된 파일에 써야합니다.

누구에게 가이드를 제공 할 수 있습니까? TAB로 구분 된 파일이 무엇인지 확신 할 수 없으며 실제로 콘텐츠를보기 위해 .fasta 파일을 여는 방법을 알아 내려고합니다. 지금까지 나는 쉽게 열 수있는 .txt 파일로 작업했지만, .fasta는 열 수 없습니다.

나는 소리를 지르는 것에 대해 사과드립니다. 양해 해 주셔서 감사합니다. 나는 너 밖에 프로가 아니야 !!

답변

0

나는 그것이 혼란 것을 얻을 수 있지만, 당신이 정말로 콘크리트에 질문을 제한하려고한다 문제는 https://stackoverflow.com/faq#questions

을 참조하십시오.

".fasta"파일 또는 'G'와 'C'가 무엇인지 전혀 알지 못합니다.하지만 별 상관 없습니다. 일반적으로

:

  • 열기 입력 파일

  • 읽고 데이터를 구문 분석합니다. 구문 분석 할 수없는 이상한 형식 인 경우 http://metacpan.org에서 모듈을 읽으십시오. 운이 좋다면 누군가가 이미 당신을 위해 어려운 부분을 다뤘습니다. 당신이

  • 화면으로 출력 (표준 출력) 또는 다른 파일을 계산하기 위해 노력하고 어떤

  • 계산.

"TAB- 한정자"파일은 각 열이 탭 ("\ t") 문자로 구분 된 열 (Excel로 생각)이있는 파일입니다. 빠른 google 또는 stackoverflow 검색으로 알 수 있습니다 ..

+0

fasta 파일은 DNA (보통) 시퀀스를 포함합니다. DNA 서열은 A, C, T 및 G의 4 글자를 사용하여 암호화됩니다. Perl에서 이와 같이 생물학적 데이터를 처리하는 데 사용되는 라이브러리는 BioPerl입니다. http://bioperl.org/ – asjo

0

다음은 명령 줄에서 사용할 수있는 'awk'유틸리티를 사용하는 방법입니다.다음 프로그램은 경로를 지정하고 사용하여 실행합니다. awk -f <path> <sequence file>

#NR>1 means only look at lines above 1 because you said the sequence starts on line 2 
NR>1{ 
#this for-loop goes through all bases in the line and then performs operations below: 
    for (i=1;i<=length;i++) 
#for each position encountered, the variable "total" is increased by 1 for total bases   
     total++ 
    } 
    { 
    for (i=1;i<=length;i++) 
#if the "substring" i.e. position in a line == c or g upper or lower (some bases are 
#lowercase in some fasta files), it will carry out the following instructions: 
     if(substr($0,i,1)=="c" || substr($0,i,1)=="C") 
#this increments the c count by one for every c or C encountered, the next if statement does 
#the same thing for g and G:    
      c++; else 
     if(substr($0,i,1)=="g" || substr($0,i,1)=="G") 
      g++ 
    } 
    END{ 
#this "END-block" prints the gene name and C, G content in percentage, separated by tabs  
     print "Gene name\tG content:\t"(100*g/total)"%\tC content:\t"(100*c/total)"%" 
    } 
관련 문제