2016-06-20 9 views
0

swiss-port(ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz)のfastaファイルを使用しています。「>」で始まる行には、次のものにあるタンパク質の情報があります。酸配列。Swiss-Prot Fastaファイルからインポートシーケンス

遺伝子名(xの遺伝子名である "GN=xxxxxxx"と示されている)を使用してその行を検索し、後でその列に含まれる配列をインポートする方法はありますか?

私は、行の途中で検索して次の行をコピーするためのループを作成する際に問題が発生しているので、これで苦労しています。

+0

使用しているOSはどれですか? –

答えて

0

Linuxを使用している場合は、sedawk、およびtail/headに慣れてください。彼らはあなたに将来の多くの時間を節約します。

我々は

sed -n '/GN=FV3-002L/,/^>/p' uniprot_sprot.fasta | head -n -1 

-n FV3-002L遺伝子を探していると仮定しましょう:あなたの検索用語

^>:あなたの終わりをそう

GN=FV3-002L言ったときだけ印刷するsedを指示します検索、^は、行の先頭です。> FASTAヘッダーの先頭です。

/p:試合に

| head -n -1を印刷するようにsedを伝えます:Pythonの使用


(より良い正規表現を見つけることがあまりにも怠惰な、しかし、あなたのアイデアを得る)のは、最後の行を取り除くみましょう:

gene = 'FV3-002L' 
gene_found = False 
fasta = '' 
with open('uniprot_sprot.fasta') as f: 
    for line in f: 
     if gene in line: 
      gene_found = True 
      fasta += line 
     elif gene_found and line.startswith('>'): 
      break 
     elif gene_found: 
      fasta += line 

print(fasta) 

ユニスクリプトファイルを開き、各行を読み込み、遺伝子名が見つかったかどうかを確認し、存在する場合は、次のヘッダーまですべての行を読み取り、最後にFASTAシーケンスを出力します。

注:これらのスニペットは1つの例で機能しますが、複数の遺伝子にも適用できます。これを日常的に実行したい場合は、データを効率的に処理する方法を検討する価値があります。生物学的データの操作については、BioPythonもご覧ください。

関連する問題