다음과 같은 fasta 파일이 있습니다. myfasta.fasta
>1_CDS
AAAAATTTCTGGGCCCCGGGGG
AAATTATTA
>2_CDS
TTAAAAATTTCTGGGCCCCGGGAAAAAA
>3_CDS
TTTGGGAATTAAACCCT
>4_CDS
TTTGGGAATTAAACCCT
>5_rRNA
TTAAAAATTTCTGGGCCCCGGGAAAAAA
>6_tRNA
TTAAAAATTTCTGGGCCCCGGGAAAAAA
'CDS', 'tRNA'등과 같은 패턴이 일치하는 ID를 기준으로 시퀀스를 구분하는 데 사용하고 싶은 코드가 있습니다. 아래 코드에서는 startswith를 사용하고 일치하지 않는 패턴도 사용하려고합니다. ' 작동하지 않는 것 같습니다. 누군가 파이썬에서 두 가지 조건을 찾는 방법을 도와주세요.
암호: python mycode.py myfasta.fasta
#!/usr/bin/env python
import sys
import os
myfasta = sys.argv[1]
fasta = open(myfasta)
for line in fasta:
if line.startswith('>') and 'CDS' in line:
print(line)
else:
print(line)
예상 출력 (을 사용하는 경우 CDS
) :
>1_CDS
AAAAATTTCTGGGCCCCGGGGG
AAATTATTA
>2_CDS
TTAAAAATTTCTGGGCCCCGGGAAAAAA
>3_CDS
TTTGGGAATTAAACCCT
>4_CDS
TTTGGGAATTAAACCCT
다음은 귀하에게 적합한 코드입니다. 행에 CDS가 있으면 행과 다음 행을 인쇄합니다. strip()
줄을 인쇄하는 동안 끝줄 문자를 제거합니다.
#!/usr/bin/env python
import sys
import os
myfasta = sys.argv[1]
flag = False
with open(myfasta) as fasta:
for line in fasta:
if line.startswith('>') and 'CDS' in line:
flag = True
elif line.startswith('>'):
flag = False
if flag:
print(line.strip())
편집 : 다음 코드로 elif 부분을 제거 할 수 있습니다.
#!/usr/bin/env python
import sys
import os
myfasta = sys.argv[1]
flag = False
with open(myfasta) as fasta:
for line in fasta:
if line.startswith('>'):
flag = 'CDS' in line
if flag:
print(line.strip())
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다