문제

서열의 시작 부분에서 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top