Skip to content

Instantly share code, notes, and snippets.

@kojix2
Created January 16, 2021 10:33
Show Gist options
  • Save kojix2/8ac33171c969450478c70ec030ab222c to your computer and use it in GitHub Desktop.
Save kojix2/8ac33171c969450478c70ec030ab222c to your computer and use it in GitHub Desktop.

Ruby-htslib - 次世代シーケンサーのデータをRubyで操作する 中間報告

2021-01-16 kojiox2

Github - https://github.com/kojix2/ruby-htslib

Slack - https://sciruby.slack.com

概要

   次世代のシーケンサーに関連する生命情報分野のファイルフォーマット SAM, BAM, VCF, BCF 等を Ruby から利用できるようにするために、これらのファイルを読み書きするC言語で書かれたライブラリ htslib の Ruby バインディングを作成する。

実装

  • 低レベルの API

    • HTS::FFI モジュールに約 320 個のhtslibのメソッドを追加した。
    • 主に正規表現による置換や、手作業により追加されている。
    • ビットフィールドに未対応である。
    • 関数形式マクロや、#defineによるエイリアスは一部のみ実装済。
    • 低レベルのAPIを用いてBamファイルを読み込むexampleを作成した。
  • 高レベルのAPI

課題

  • 低レベルのAPI

    • 信頼性の確保
      • テストを少しずつ追加する。
    • ビットフィールド・関数形式マクロ・定数等への対応
    • 自動生成
      • c2ffiによるバインディング生成の一部自動化が検討されている。
  • 高レベルのAPI

    • 現在作業中である。
  • Exampleとなりうるある程度高度な解析ワークフローの追加

やらないことリスト

  • 処理速度の改善
  • ruby-htslibの内側でBioRubyのAPIとの統合
  • Ruby-FFIからFiddleへの移行

資料

Qiita - 次世代シーケンサーのデータをRubyで操作するライブラリを作りたい話 ruby-htslib

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment