だから私は4行のコードを持っています
seq= 'ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA'
OR_0 = re.findall(r'ATG(?:...){9,}?(?:TAA|TAG|TGA)',seq)
私が最初にやろうとしていることを説明させてください。. . 混乱させて申し訳ありませんが、説明するために最善を尽くします。
だから私は、「ATG」で始まり、その後に「TAA」、「TAG」のいずれかに遭遇するまで、任意の単語文字の 3 単位が続くシーケンスを探しています [例えば、「GGG」、「GTT」、「TTA」など]または 'TGA'また、少なくとも 30 文字の長さにしたいと考えています。. . したがって、{9,}?
これはある程度機能しますが、seqにATG GAA GTT GGA TGA AAG TGG AGG TAA AGA GAA GAC GTT TGAがあることに気付いた場合
したがって、この場合、最初の「ATG」から始まり、次の「TAA」、「TAG」、または「TGA」まで進むと、「ATGGAAGTTGGATGA」が見つかるはずです。
ただし、コードの OR_0 行を実行すると、seq 文字列全体が吐き出されます。最初の 'TAA'、'TAG'、または 'TGA' とそれに続く最初の 'ATG' のみを考慮するようにする方法がわかりません
3 単位で読み取ったときに「ATG」の後に別の「ATG」が続く場合は問題ありません。最初からやり直す必要はありませんが、3 単位で読み取ったときに「TAA」、「TAG」、または「TGA」に遭遇した場合停止する必要があります。
私の質問は、「TAA」、「TAG」、または「TGA」の最初の出現ではなく、「ATG」xxx-xxx-[「TAA」、「TAG」または「TGA」] の最長シーケンスを見つける re.findall の理由です。 3 ? 単位の単語文字で区切られた ATG の後
繰り返しますが、これが紛らわしい場合は申し訳ありませんが、このテキストの最初の行に基づいて私が持っている複数のデータセットを台無しにしており、その理由を見つけようとしています.