2014-04-01 3 views
3

아래 표준 FASTA 파일에서 시퀀스 'CCCCAAAA'와 'GGGGTTTT'의 발생을 기대하고있다 내 스크립트를계산 DNA 서열

>contig00001 
CCCCAAAACCCCAAAACCCCAAAACCCCTAcGAaTCCCcTCATAATTGAAAGACTTAAACTTTAAAACCCTAGAAT 

스크립트는 CCCCAAAA 순서는 여기 카운트 3 회

CCCCAAAACCCCAAAACCCCAAAA (계산되지 CCCC)는

누군가가 내가이 3.5의 값을 반환하는 반 카운트로 마지막에 CCCC 순서를 포함 할 것입니다 방법을 알려 주시기 바랍니다 수 있습니다.

나는 지금까지 시도에 실패했습니다. 다음과 같이

내 스크립트입니다 ...

from Bio import SeqIO 

input_file = open('telomer.test.fasta', 'r') 
output_file = open('telomer.test1.out.tsv','w') 
output_file.write('Contig\tCCCCAAAA\tGGGGTTTT\n') 

for cur_record in SeqIO.parse(input_file, "fasta") : 


    contig = cur_record.name 
    CCCCAAAA_count = cur_record.seq.count('CCCCAAAA') 
    CCCC_count = cur_record.seq.count('CCCC') 

    GGGGTTTT_count = cur_record.seq.count('GGGGTTTT') 
    GGGG_count = cur_record.seq.count('GGGG') 
    #length = len(cur_record.seq) 

    splittedContig1=contig.split(CCCCAAAA_count) 

    splittedContig2=contig.split(GGGGTTTT_count) 

    cnt1=len(splittedContig1)-1 
    cnt2=len(splittedContig2) 

    cnt1+sum([0.5 for e in splittedContig1 if e.startswith(CCCC_count)])) = CCCCAAAA_count 
    cnt2+sum([0.5 for e in splittedContig2 if e.startswith(GGGG_count)])) = GGGGTTTT_count 

    output_line = '%s\t%i\t%i\n' % \ 
    (CONTIG, CCCCAAAA_count, GGGGTTTT_count) 


    output_file.write(output_line) 

output_file.close() 

input_file.close() 

답변

2

다음과 같이 분할 및 startwith 목록 이해를 사용할 수 있습니다

contig="CCCCAAAACCCCAAAACCCCAAAACCCCTAcGAaTCCCcTCATAATTGAAAGACTTAAACTTTAAAACCCTAGAAT" 
splitbase="CCCCAAAA" 
halfBase="CCCC" 
splittedContig=contig.split(splitbase) 
cnt=len(splittedContig)-1 
print cnt+sum([0.5 for e in splittedContig if e.startswith(halfBase)]) 

출력 :

3.5 
  1. 분할 문자열은 CCCCAAAA을 기준으로합니다. 이 스플릿의
  2. 길이를 제거됩니다 CCCCAAAA 목록 요소의 목록을 줄 것이다 - 1이 갈라 요소에 CCCCAAAA
  3. 의 발생 수를 제공, CCCC로 시작하는 요소를 찾습니다. 발견되면 각각의 발생 횟수를 계산하기 위해 0.5를 더합니다.
+0

이것은 아주 잘 작동하지만 내 스크립트에 통합하려고하면 오류가 발생합니다. SyntaxError : 함수 호출에 할당 할 수 없습니다.이 작업을 수행 할 수 있습니까? – sheaph

+0

스크립트와 어떻게 통합 되었습니까? – user3

+0

위에 편집 된 버전을 입력했습니다. – sheaph