ここで、Pythonが上記のコードのコドン位置番号5を見つけて、そのシーケンスを位置12(ATGG * CTTTACCTCGTC * TCACAGGAG)まで抽出できる方法を見つける必要があります。したがって、出力は次のようになります。
>CCODE1112_5..11
CTTTACCTCGTC
最初の「_」の後に開始値を取得し、「..」の後に終了値を取得するようにpythonに指示して、自動的に実行できるようにするにはどうすればよいですか??ありがとう!!!
ここで、Pythonが上記のコードのコドン位置番号5を見つけて、そのシーケンスを位置12(ATGG * CTTTACCTCGTC * TCACAGGAG)まで抽出できる方法を見つける必要があります。したがって、出力は次のようになります。
>CCODE1112_5..11
CTTTACCTCGTC
最初の「_」の後に開始値を取得し、「..」の後に終了値を取得するようにpythonに指示して、自動的に実行できるようにするにはどうすればよいですか??ありがとう!!!
def extractseq( queryseq , begin=5, end =12):
queryseq=queryseq.split('\n')#transform the string in a list of lines included in the string
return queryseq[1][begin-1:end-1]
Pythonでは0から始まるインデックスに注意してください。この関数は機能するはずです。
スクリプトにそれを書き込んだ後、関数subs = extractseq(seq、5,12)を呼び出す必要があります
申し訳ありませんが、サブストリングに含まれる5と12を抽出する場合、それを簡単に行う1つの方法は次のとおりです。
substring=queryseq.split('\n')[0].split('_')[1].split('...')#extraction of the substring
begin=substring[0]
end = substring[1]
私はおそらく(ため息をつく)正規表現を使用してCCODE1112_5..12_ABCから5と12を抽出します。
次に、抽出された文字列をintに変換します。
次に、DNAデータの文字列スライスのインデックスとしてintを使用します。
正規表現の場合:
regex = re.compile(r'^ [^ ] *(\ d +)..(\ d +)_。* $')regex.match('CCODE1112_5..12_ABC')match = regex.match('CCODE1112_5。。 12_ABC')match.group(1)' 5'match.group(2)' 12 '
それらをintに変換するには、たとえばint(match.group(1))を使用します。
次に、インデックスは1ベースですが、Pythonは0ベースです。また、スライスのpythonの開始点は必要な値にあり、スライスのpythonの終了点は必要な値の1つ過ぎています。したがって、group(1)から1を引き、group(2)はそのままにしておきます。
つまり、次のようになります。substring = dna_data [left_point-1:right_point]