2016-04-14 20 views
0

ファイル内容をREでフィルタリングしたいのですが、 タンパク質に関するファイルです。タンパク質ごとにいくつかの情報があります。二つのタンパク質のためのファイルのPython正規表現

例:

>sp|B3MGT3|AKTP2_DROAN (266 aa) 

Protein crossbronx-like. [Drosophila ananassae (Fruit fly)] 

MWYSIRNNQRMALIKQGYKILAEYRLVQDHLKNIYAIPSYASGLHWFGVIFVHSGIYAGSMFRFSILLPENFPDDTILPT 

VIFNAAIFHPHICPHSKSLDLGPCFKEWRKDQHHIWHLLRYIQAVFADPEGSICTGKSPSGDLVVLDEVNNLEALNMLAK 

SRPEYIKRIQELAISSRRHMYDKPMIEDPHYIIVEPYCAERHLRFMEQLKSPSWREATCEDDSPPAELLGHIDSSRQLDE 

DEANQRGKLQAATTDLQHGARCSVAQ 

     131 - 138:  GsictGKS 





>sp|Q9AT00|TGD3_ARATH (345 aa) 

Protein TRIGALACTOSYLDIACYLGLYCEROL 3, chloroplastic. [Arabidopsis thaliana (Mouse-ear cress)] 

MLSLSCSSSSSSLLPPSLHYHGSSSVQSIVVPRRSLISFRRKVSCCCIAPPQNLDNDATKFDSLTKSGGGMCKERGLEND 

SDVLIECRDVYKSFGEKHILKGVSFKIRHGEAVGVIGPSGTGKSTILKIMAGLLAPDKGEVYIRGKKRAGLISDEEISGL 

RIGLVFQSAALFDSLSVRENVGFLLYERSKMSENQISELVTQTLAAVGLKGVENRLPSELSGGMKKRVALARSLIFDTTK 

EVIEPEVLLYDEPTAGLDPIASTVVEDLIRSVHMTDEDAVGKPGKIASYLVVTHQHSTIQRAVDRLLFLYEGKIVWQGMT 

HEFTTSTNPIVQQFATGSLDGPIRY 

    117 - 124:  GpsgtGKS 

IはREでのみタンパク質について、上記の情報をフィルタリングする必要があり、それらの配列の "[AG] {4} GK [ST]。"。

今私は2つの質問があります。これは動作しません

  1. を...誰もがなぜ知っていますか?

    import re 
    file = open ("ploop.fa", "r") 
    motief = re.search("[AG].{4}GK[ST]", file) 
    
    for line in file: 
    if motief in line: 
    print (line) 
    
  2. だから、私はRE、だけではなく配列を含有するタンパク質のための全ての情報(Accessioncode、名前、アミノ酸など)が必要です。これどうやってするの?

+0

:すべての有用な行のリストを作成する

regex = "[AG].{4}GK[ST]" for line in f: if re.search(regex, line): print(line) 

リストの内包のバージョンは次のようになりますか?また、あなたが印刷しようとしているこの 'line'は何ですか?どこにも定義されていません。 –

+0

さて、正規表現は[あなたのテキストに一致するものが見つかりません](https://regex101.com/r/hI5gS8/1)。また、ファイルの内容を正規表現に渡すためには、ファイルを読む必要があります。上記のサンプルテキストの正確な出力はどれくらいですか? –

+0

あなたの最初の質問のために、 'line'とは何でしょうか? – Adib

答えて

0

ああ、それは私が試したものです。また試しました:

import re 
file = open ("ploop.fa", "r") 
motief = re.search("[AG].{4}GK[ST]") 

for line in file: 
    if motief in line: 
    print (line) 

ええ、ドットはランダムトークンでなければなりませんか? AまたはGで始まり、次に4つのランダムな文字、次にGK、そしてSまたはTで始まるシーケンスのために必要です。

+0

私たちが求めているのは、ファイル内の行がどのように見えるかです。例えば、 'AGTASTAGTCTCTCTATGTGTCTATC'のようなものですか? – Adib

+0

これはタンパク質配列でありDNA配列ではないので、ほとんどすべての文字が可能です。 (TKALLCKNFLKKWRMなど) – jordinec

+0

例のスクリーンショット:http://i64.tinypic.com/ejbo2a.png – jordinec

0

可変モチーフをre.MatchObjectに設定しています。次に、あなたのループで

if motief in line: 

はおそらくあなたが望む真

になることはありません正規表現を宣言し、それがあるかどうかを見つけるために、各ライン上にre.search使用することです。あなたは `.`は、正規表現で特別な意味を持っていることを理解して

[line for line in f if re.search(regex, line)]