Biopythonを使ってみる
俺は都会のマンションのベランダで、自分勝手に植物を育てる、ベランダーだ。
季節は春。俺は久しぶりに、ブログを更新することにした。
(植物男子ベランダー・一部改)
はてダがサービス終了ということで、はてブに移ってきました。
そもそもここにいろいろ書くのも最近はサボっていたので、まぁ、これを機会にまたちょこちょこ書くようにしていければとは思うんですけどねー(言うのは簡単)。
さてさて、ふとしたことでライフサイエンス系公共データをいじることとなり(ってまぁ、それが本業といえば本業なんですが)、いじるというか知識抽出なんですが、今までBioPerlでちゃらちゃらっとやっていたのを、せっかくだからBiopythonを使おうかと思い立ったわけです。
もともとpythonは10数年前から知ってはいてread-onlyだったです。今まで何回か、書きかけたこともあったですけどね。まぁ自分のころはperlが盛んにこの分野で使われていましたからねぇ。流行の最末端の自分ですが、世の中、だいぶpythonが隆盛してきたので(ってこともないですが)こういう機会でもないとpython使わねーしなというのもあり。
とまぁ、前置きが長いですが、
qiita.com
とか
biopython.org
を参考に書いてみたりして。
やったことはGenBankファイルのparse
元ファイル
LOCUS EU919294 1220 bp DNA linear INV 26-JUL-2016 DEFINITION Lampides boeticus voucher RMBR:102827 cytochrome c oxidase subunit I (COI) gene, partial cds; mitochondrial. ACCESSION EU919294 VERSION EU919294.1 KEYWORDS . SOURCE mitochondrion Lampides boeticus (pea blue) ORGANISM Lampides boeticus Eukaryota; Metazoa; Ecdysozoa; Arthropoda; Hexapoda; Insecta; Pterygota; Neoptera; Holometabola; Lepidoptera; Glossata; Ditrysia; Papilionoidea; Lycaenidae; Polyommatinae; Lampides. REFERENCE 1 (bases 1 to 1220) AUTHORS Lohman,D.J., Peggie,D., Pierce,N.E. and Meier,R. TITLE Phylogeography and genetic diversity of a widespread Old World butterfly, Lampides boeticus (Lepidoptera: Lycaenidae) JOURNAL BMC Evol. Biol. 8, 301 (2008) PUBMED 18973689 REMARK Publication Status: Online-Only REFERENCE 2 (bases 1 to 1220) AUTHORS Lohman,D.J., Peggie,D., Pierce,N.E. and Meier,R. TITLE Direct Submission JOURNAL Submitted (23-JUL-2008) Department of Biological Sciences, National University of Singapore, 14 Science Drive 4, Singapore 117543, Republic of Singapore FEATURES Location/Qualifiers source 1..1220 /organism="Lampides boeticus" /organelle="mitochondrion" /mol_type="genomic DNA" ...
書いたもの
#!/usr/env/python import sys import os import inspect from Bio import SeqIO gb_file = sys.argv[1] # input gb file path for record in SeqIO.parse(gb_file, 'genbank'): id = record.id name = record.name desc = record.description xrefs = record.dbxrefs # list annots = record.annotations # dic features = record.features # list seq = record.seq print('ID:\t' + id) print('name:\t' + name) print('desc:\t' + desc) print('seq:\t' + seq) # annotation ## source source = annots['source'] organism = annots['organism'] taxonomy = annots['taxonomy'] # list print('source:\t' + source) print('organism:\t' + organism) print('taxonomy:') for t in taxonomy: print('\t' + t) ## reference for ref in annots['references']: pmid = ref.pubmed_id medline = ref.medline_id journal = ref.journal print('pmid:\t' + pmid) print('medline:\t' + medline) print('journal:\t' + journal) # features for feat in features: type = feat.type print('type:\t' + type) for k in feat.qualifiers.keys(): print('subtype:\t' + k) vals = feat.qualifiers[k] for v in vals: print('\t' + v)
で、出てきたもの
ID: EU919294.1 name: EU919294 desc: Lampides boeticus voucher RMBR:102827 cytochrome c oxidase subunit I (COI) gene, partial cds; mitochondrial seq: AACATTATATTTTATTTTTGGAATTTGAGCAGGAATATTGGGAACATCATTAAGAATTTTAATTCGAATAGAATTAGGAACTCCAGGATCTTTAATTGGTGATGATCAAATTTATAATACTATTGTAACAGCTCATGCTTTTATTATAATTTTTTTTATAGTTATACCTATTATAATTGGTGGATTTGGAAACTGATTAATCC ... TTTCAGTTGATTAGCTACTATTTATGGAACTCAAATTAACTATAGACCTTCAATATTATGAAGTTTAGGTTTCATTTTTTTATTTACAGTAGGCGGATTAACAGGAGTAATTTTAGCTAACTCTTCAATTGATATTACTTTACATGATACTTATTATGTTGTAGCACATTTCCATTATGTTTTATCTATAGGAGCTGTATTTGCAATTTTTGGAGGATTTATTCATTGATATCCTTTATTTACTGGATTAATAATAAATCCTTATCTATTAAAAATTCAATTTATTATTATATTTATTGGAGTTAATT source: mitochondrion Lampides boeticus (pea blue) organism: Lampides boeticus taxonomy: Eukaryota Metazoa Ecdysozoa Arthropoda Hexapoda Insecta Pterygota Neoptera Holometabola Lepidoptera Glossata Ditrysia Papilionoidea Lycaenidae Polyommatinae Lampides pmid: 18973689 medline: journal: BMC Evol. Biol. 8, 301 (2008) ... type: source subtype: organism Lampides boeticus subtype: organelle mitochondrion subtype: mol_type genomic DNA ...
きったねーコードというのは承知しているんですけどね。
まぁ、ボチボチ手直ししつつ、さらにこれを使って先に進めれれば。