Biopythonで遊ぶ
使えるデータベースの確認
アクセスする際に自分の責任を明確にするためにもメールアドレスを書こう
一応Biopythonの仕様で1秒に4個以上のクエリーを投げ込むことはしないが、バグでどうなるかわからないので、要注意
過剰アクセスで1事業所が1週間アクセス禁止になった現場を見たことがある
from Bio import Entrez, Medline, SeqIO
Entrez.email = "put@your_email.here"
handle = Entrez.einfo()
rec = Entrez.read(handle)
print(rec)
現状使えるDbListの一覧が見える
とりあえず犬のNGF(Nerve Growth Factor)のmRNA配列を取ってくる事を目標にする
#犬のNGFの遺伝子配列を取ってくる
handle = Entrez.esearch(db="nucleotide", term='NGF[Gene Name] AND "Canis Lupus"[Organism]')
rec_list = Entrez.read(handle)
id_list = rec_list['IdList']
hdl = Entrez.efetch(db='nucleotide', id=id_list, rettype='gb')
recs = list(SeqIO.parse(hdl, 'gb'))
print(recs)
これでNGFの情報が取得できた
設定はデフォルトのままなので20以上出てこない
けどどうせ3つしかないので良い
この後情報を抜くのにnameのカラムに記載があるものを選べば抜ける
なのでとりあえずXM_038690419の遺伝子情報を取得してみる
for rec in recs:
if rec.name == 'XM_038690419':
break
print(rec.name)
print(rec.description)
print(rec.seq)
目標は無事に達成
ついでにどんな情報があるのかも見てみる
for feature in rec.features:
if feature.type == 'gene':
print(feature.qualifiers['gene'])
elif feature.type == 'exon':
loc = feature.location
print('Exon', loc.start, loc.end, loc.strand)
else:
print('not processed:\n%s' % feature)
for name, value in rec.annotations.items():
print('%s=%s' % (name, value))
この配列ラブラドールレトリーバーから取られたものらしい
CDSの開始点は220番目から、終了は946番目の塩基
割と面白いこと書いてあるね