Link Search Menu Expand Document

研究室用gemの使い方

v0.1.7 時点での解説です。

研究室用でよく使われるであろう作業を簡単に扱う gem を作成したので、以下に使い方をまとめます。

インストールの仕方

システムの Ruby にインストールするには、以下を実行します。

$ gem install mizlab

プロジェクトのパッケージ管理に bundle などを使っている場合はそちらに合わせてください。

収録されている関数

  • getent
    GenBank からエントリを文字列として取得します。
      require "mizlab"
    
      # 1件だけの取得
      obj = Mizlab.getent("NC_012920")
      p obj.class # => String
        
      # 複数取得の場合はブロックを渡してください
      Mizlab.getent(["NC_012920", "NC_005089"]) do |obj|
        p obj.class # => String
      end
    
  • getobj
    GenBank からエントリを取得し、 Bio::GenBank クラスのオブジェクトとして返します。
      require "mizlab"
    
      # 1件だけの取得
      obj = Mizlab.getobj("NC_012920")
      p obj.accession # => "NC_012920"
        
      # 複数取得の場合はブロックを渡してください
      Mizlab.getobj(["NC_012920", "NC_005089"]) do |obj|
        p obj.accession # => "NC_012920", "NC_005089"
      end
    
  • savefile
    Bio::GenBank クラスなどのオブジェクトをファイルに書き出します。
    すでに存在するファイルに書き出そうとすると上書きするかどうかの確認をします。
      require "mizlab"
    
      obj Mizlab.getobj("NC_012920")
      Mizlab.savefile("#{obj.accession}.gbk", obj)
    
  • fetch_taxon
    TaxonomyID をもとに、NCBI の Taxonomy データベースから分類学の情報を取得します。
      require "mizlab"
    
      human_taxon_id = 9606
      p Mizlab.fetch_taxon(human_taxon_id)
      # => [{:TaxId=>"131567", :ScientificName=>"cellular organisms", :Rank=>"no rank"}, {:TaxId=>"2759", :ScientificName=>"Eukaryota", :Rank=>"superkingdom"}, {:TaxId=>"33154", :ScientificName=>"Opisthokonta", :Rank=>"clade"}, {:TaxId=>"33208", :ScientificName=>"Metazoa", :Rank=>"kingdom"}, {:TaxId=>"6072", :ScientificName=>"Eumetazoa", :Rank=>"clade"}, {:TaxId=>"33213", :ScientificName=>"Bilateria", :Rank=>"clade"}, {:TaxId=>"33511", :ScientificName=>"Deuterostomia", :Rank=>"clade"}, {:TaxId=>"7711", :ScientificName=>"Chordata", :Rank=>"phylum"}, {:TaxId=>"89593", :ScientificName=>"Craniata", :Rank=>"subphylum"}, {:TaxId=>"7742", :ScientificName=>"Vertebrata", :Rank=>"clade"}, {:TaxId=>"7776", :ScientificName=>"Gnathostomata", :Rank=>"clade"}, {:TaxId=>"117570", :ScientificName=>"Teleostomi", :Rank=>"clade"}, {:TaxId=>"117571", :ScientificName=>"Euteleostomi", :Rank=>"clade"}, {:TaxId=>"8287", :ScientificName=>"Sarcopterygii", :Rank=>"superclass"}, {:TaxId=>"1338369", :ScientificName=>"Dipnotetrapodomorpha", :Rank=>"clade"}, {:TaxId=>"32523", :ScientificName=>"Tetrapoda", :Rank=>"clade"}, {:TaxId=>"32524", :ScientificName=>"Amniota", :Rank=>"clade"}, {:TaxId=>"40674", :ScientificName=>"Mammalia", :Rank=>"class"}, {:TaxId=>"32525", :ScientificName=>"Theria", :Rank=>"clade"}, {:TaxId=>"9347", :ScientificName=>"Eutheria", :Rank=>"clade"}, {:TaxId=>"1437010", :ScientificName=>"Boreoeutheria", :Rank=>"clade"}, {:TaxId=>"314146", :ScientificName=>"Euarchontoglires", :Rank=>"superorder"}, {:TaxId=>"9443", :ScientificName=>"Primates", :Rank=>"order"}, {:TaxId=>"376913", :ScientificName=>"Haplorrhini", :Rank=>"suborder"}, {:TaxId=>"314293", :ScientificName=>"Simiiformes", :Rank=>"infraorder"}, {:TaxId=>"9526", :ScientificName=>"Catarrhini", :Rank=>"parvorder"}, {:TaxId=>"314295", :ScientificName=>"Hominoidea", :Rank=>"superfamily"}, {:TaxId=>"9604", :ScientificName=>"Hominidae", :Rank=>"family"}, {:TaxId=>"207598", :ScientificName=>"Homininae", :Rank=>"subfamily"}, {:TaxId=>"9605", :ScientificName=>"Homo", :Rank=>"genus"}]
    
  • calculate_coordinates
    配列をグラフ座標へ変換します。
    返り値は [[x座標, ...], [y座標, ...], ...] の形式です。
      require "mizlab"
    
      seq = "atgc"
      mapping = { "a" => [1, 1], "t" => [-1, 1], "g" => [-1, -1], "c" => [1, -1] }
      p Mizlab.calculate_coordinates(seq, mapping)
      # => [[0.0, 1.0, 0.0, -1.0, 0.0], [0.0, 1.0, 2.0, 1.0, 0.0]]
    
  • local_patterns
    座標をローカルパターンのヒストグラムに変換します。
      require "mizlab"
    
      seq = "atgc"
      mapping = { "a" => [1, 1], "t" => [-1, 1], "g" => [-1, -1], "c" => [1, -1] }
      coordinates =  Mizlab.calculate_coordinates(seq, mapping)
    
      p Mizlab.local_patterns(coordinates[0], coordinates[1])
      # => 長さ512の配列が返ってきます
    
  • Blast
    Blast+ を実行するためのクラスです。
    Bio::Blast では legacy blast を実行しようとする (blastall -p ~) ため、 blastall が実行できない環境での代替になります。

    • query
      blast+ を実行します。

        require "mizlab"
        require "bio"
              
        query = nil
        Bio::FlatFile.auto("query.fasta").each_entry do |e|
          query = e.seq
        end
      
        factory = Mizlab::Blast.new("blastp", "uniprot_sprot.fasta")
        res = factory.query(query, { "-num_descriptions" => 8, "-num_alignments" => 7 })
      
        r = 0
        res.each_hit do |hit|
          r += 1
        end
        p r  # => 7
      

      コンストラクタに渡すデータベースファイル (例では uniprot_sprot.fasta) は先に makeblastdb しておく必要があります。

より詳しい内容(引数の型など)についてはここを参考にしてください。