2021-03-15 kojix2
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
- hts-python, hts-nim に準拠した API の実装を目指す。
- Bam クラスを
query
メソッドを含めて実装した。(中間報告から進展) - 高レベルの API を用いて Bam ファイルを読み込む example を作成した。
- Fai クラスの実装を開始し、いくつかのメソッドを追加した。(中間報告から進展)
- VCF クラスの実装を開始し、いくつかのメソッドを追加した。(中間報告から進展)
-
低レベルの API
- 構造体におけるビットフィールドのサポート
- 読み取りはある程度対応した。(中間報告から進展)
- 書き込みへの対応が課題。
- https://github.com/kojix2/ffi-bitstruct
- 関数形式マクロ・定数等への対応
- 必用な部分だけ Ruby で再実装する。
- c2ffi 等のツールによるバインディングの自動生成またはバリデーションを検討している。
- c2ffi は完璧ではないことがわかった。今後方針が変わる可能性もある。(中間報告から進展)
- 構造体におけるビットフィールドのサポート
-
高レベルの API
- hts-nim と同じことができる程度の機能の提供を目指す。
- 作者の HTS ファイルフォーマットに対する理解度は十分でなく、完成度が高まるまで年単位の時間がかかる。
- 短期的には、VCF クラスにメソッドを追加して、Bam/VCF で一通りのメソッドが揃うようにする。
- 処理速度を改善する
- ruby-htslib の "内側" で BioRuby の API との統合を行う
- Ruby-FFI から Fiddle へ移行する