Python : Fasta 형식의 시퀀스 시작부터 문자 제거
문제
서열의 시작 부분에서 17 bp의 프라이머를 포함하는 Fasta 형식의 서열이 있습니다. 그리고 프라이머는 때때로 불일치가 있습니다. 따라서 Fasta 헤더를 제외하고 시퀀스의 첫 17 숯을 제거하고 싶습니다.
시퀀스는 다음과 같습니다.
> name_name_number_etc
SEQUENCEFOLLOWSHERE
> name_number_etc
SEQUENCEFOLLOWSHERE
> name_name_number_etc
SEQUENCEFOLLOWSHERE
파이썬에서 어떻게 할 수 있습니까?
감사! 존
해결책
내가 올바르게 이해하면 잠재적으로 멀티 린 시퀀스의 첫 17 자에서만 프라이머를 제거해야합니다. 당신이 묻는 것은 조금 더 어렵습니다. 예, 간단한 솔루션이 존재하지만 어떤 상황에서는 실패 할 수 있습니다.
내 제안은 : 사용입니다 바이오 파티 톤 Fasta 파일의 구문 분석을 수행합니다. 튜토리얼에서 바로
from Bio import SeqIO
handle = open("ls_orchid.fasta")
for seq_record in SeqIO.parse(handle, "fasta") :
print seq_record.id
print repr(seq_record.seq)
print len(seq_record)
handle.close()
그런 다음 처음 17 글자가 삭제 된 상태에서 시퀀스를 다시 작성하십시오. 현재 컴퓨터에 Biopython이 설치되어 있지 않지만 튜토리얼을 살펴보면 총 15 줄 이상의 코드가 필요하지 않습니다.
하드 코어로 가서 수동으로 수행하려면 이와 같은 일을해야합니다 (첫 번째 포스터에서 수정).
f = open('sequence.fsa')
first_line = False
for line in f.xreadlines():
if line[0] == ">":
first_line=True
print line,
else:
if first_line:
print line[17:],
else:
print line,
first_line = False
다른 팁
with open('fasta_file') as f:
for line in f:
if not line.startswith('>'):
print line[17:]
파일이 보이는 경우
>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken
ADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMINEVDADGNGTID
FPEFLTMMARKMKDTDSEEEIREAFRVFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIREA
DIDGDGQVNYEEFVQMMTAK*
그리고 모든 시퀀스 라인의 처음 17 숯을 제거하려고합니다.
f = open('sequence.txt')
for line in f.xreadlines():
if line.find('>') < 0:
print line.strip()[17:]
이 스레드에 게시하는 것이 무의미한 지 모르겠지만 .fasta 파일로 작업하기 시작하는 동안 실제로 도움이되는 방법을 발견했습니다.
file = input('Input your fasta file')
o_file = open(file).readlines()
o_file = o_file[1:]
for line in o_file:
#do something
제휴하지 않습니다 StackOverflow