そのため、ファイルを読み取り、特定の単語が見つかると2つの値を抽出するスクリプトを作成しようとしています。この場合、文字列'exon'が検出されると、それに続く2つの整数が保存されます。
空の文字列を作成することから始めました。
exon_start = []
exon_end = []
これが私が使用している簡略化されたデータの例です:
for line in data:
print data
>>>
exon 1..35
/gene="CDKN1A"
CDS 73..567
/translation="MSEPAGDVRQNPCGSKACRRLFGPVDSEQLSRDCDALMAGCIQE
ARERWNFDFVTETPLEGDFAWERVRGLGLPKLYLPTGPRRGRDELGGGRRPGTSPALL
QGTAEEDHVDLSLSCTLVPRSGEQAEGSPGGPGDSQGRKRRQTSMTDFYHSKRRLIFS
KRKP"
misc_feature 76..78
/gene="CDKN1A"
exon 518..2106
/gene="CDKN1A"
re.findall()関数の正規表現モジュールをインポートしてみました。
indx_exon = range(0,len(data))
# so this relates each line of the data to a specific number in the index
最初に、個々の行内の「エクソン」フレーズを認識できませんでした。テキストのどの行にエクソンシーケンスが含まれているかを特定して、re.findall()が機能しているかどうかを確認しました。
for p,line in zip(indx_line,data):
if re.findall(r'exon',line) is True:
print p
そして私はなしを得た
私が置くとき:
for p,line in zip(indx_line,data):
exon_test = re.findall(r'exon',line)
print exon_test
'exon'を含まない行と'exon'を含む行については、[]の束を取得しました。したがって、re.findall()機能を使用して、各文字列内で出現するすべての「エクソン」を見つけることができることを知っています。
「エクソン」が見つかったときにどのように言うことができるかを正確に知る必要があります。「..」が見つかるまでその行を調べてから、それに隣接する整数を対応するリストに追加します。すなわち
exon_start = [1,518]
exon_end = [35,2106]