私はPythonにかなり慣れていないので、for
ループに問題があり、まったく理解できないようです。
次のサンプル テキストを含む FASTA ファイルを読み込もうとしています。
>seq1
AAACTACCGCGTTT
>seq2
AAACTGCAACTAGCGTTT
>seq3
AAACCGGAGTTACCTAGCGTTT
私がやりたいことは、自分のファイルを読み込んで FASTA ヘッダー (例: ヘッダーが >seq1) を出力することです。次に、DNA シーケンスに存在する 2 つの一意のパターン (この例では "AAA" と "TTT") を照合し、これら 2 つのパターンの間にある DNA 配列を出力します。
したがって、私の出力は次のようになります。
>seq1
CTACCGCG
>seq2
CTGCAACTAGCG
>seq3
CCGGAGTTACCTAGCG
次のコードがあります。
import re
def find_seq(filename):
with open(filename) as file:
seq=''
for line in file:
header = re.search(r'^>\w+', line)
if(header):
print (header.group())
seq = seq.replace('\n','')
find_Lpattern = re.sub(r'.*AAA', '',seq)
find_Rpattern = re.sub(r'TTT.*', '',find_Lpattern)
if(find_Rpattern):
print (find_Rpattern)
seq = ''
else:
seq += line
filename = 'test.txt'
print(find_seq(filename))
私はこれを出力として取得し続けます:
>seq1
>seq2
CTACCGCG
>seq3
CTGCAACTAGCG
基本的に、私の for ループは seq1 をスキップしてから、seq1 から seq2 に DNA シーケンスを割り当てます。私の for ループの反復はオフです。この問題を解決できるように、誰かが私を正しい方向に向けてもらえますか?