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
...

 
きったねーコードというのは承知しているんですけどね。
まぁ、ボチボチ手直ししつつ、さらにこれを使って先に進めれれば。