1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mmCIFを見やすくするVScodeの拡張機能"Rainbow mmCIF"を作成しました!

1
Posted at

はじめに

構造生物学や構造バイオインフォマティクスで使われる構造ファイル形式の mmCIF は、
非常に多くの情報が詰め込まれている一方で、人間が読むにはなかなか大変です。

特に大きな loop_ ブロックになると、

どの列に何が書いてあるのか分からん!!

という状態になりがちだと思います。

中でも座標情報が入っている _atom_site あたりは、

  • どれが chain ID?
  • どれが残基番号?
  • どれが原子名?

と、スクロールしながらヘッダを何度も確認する ことがよくあります。

そこで、mmCIF の loop カラムを視覚的に分かりやすくする VS Code 拡張
Rainbow mmCIF
を作ってみました!!

Install / Repository

👉 VS Code Marketplace:

👉 GitHub:

着想元

この拡張は、VS Code 拡張の Rainbow CSV から着想を得ています。

screenshot

※ 画像は VS Code 拡張 Rainbow CSV の README より引用

CSV の各カラムを色分けすることで
「どの値がどの列に対応しているか」を直感的に分かるようにする、というアイデアを

mmCIF の loop_ にも欲しい

と思ったのがきっかけです。

mmCIF は実質的に「スペース区切りの巨大テーブル」になることが多いので、
同じ発想を持ち込むことで、かなり読みやすくなるのではと考えました。

Rainbow mmCIF の概要

rainbow_mmcif_anime.gif

Rainbow mmCIF は、
Visual Studio Code 上で mmCIF ファイルを開いたときに、

  • block 内の 各列(category / tag)を虹色で色分け
  • カーソル位置のカラムを強調表示
  • ホバーで tag 名を表示

といった、可読性を高めるための視覚的補助機能を提供する拡張です。

主な機能

本拡張は、loop_ ブロックだけでなく、
非 loop 部分(key–value pair) を含む
mmCIF の各 block に対応しています。

🌈 各 block 内のカテゴリータグのレインボー表示

rainbow_mmcif_scshot_view.png

block 内で、

  • category(例: _atom_site)に属する 各 tag
  • その下に続くデータ行

同じ色で対応付けて表示します。

これにより、

  • どの値がどの tag に対応しているのか
  • 行や列がずれていないか

が一目で分かるようになります。

🔦 カーソル位置のカラム強調表示

block 内の値を選択すると、

  • その カラム全体(ヘッダ+全行) をハイライト

します。

大きな block(特に _atom_site カテゴリ)でも、
「今見ている値がどの tag なのか」を迷わず追えます。

ℹ️ ホバーでタグ名を表示

mmcif_rainbow_scshot_hover.png

block 内の値にマウスオーバーすると、

  • 対応する tag 名(例: _atom_site.id

を表示します。

ヘッダまでスクロールしなくてよいのでとても便利です!!

現在の問題点

  • 50MB を超える巨大な mmCIF ファイルでは動作しません

VS Code の拡張 API の制限により、
一定サイズ以上のファイル内容にアクセスできないようです。

今のところ自分では回避方法が見つかっていません。
もし何か良い方法をご存知の方がいれば、ぜひ教えてください 🙏

今後やりたいこと

  • 超巨大 mmCIF ファイルへの対応(カスタム viewer など)
  • ホバー時に 辞書由来の詳細説明 を表示
  • 正直まだ未定ですが、
    VS Code を使わない非エンジニア向けの専用 viewer も検討中です
    (巨大ファイル対策も兼ねて)
  • 余裕があれば、Web ブラウザ上で使える mmCIF viewer も作れたらいいなと思っています

おわりに

mmCIF は人間でも読めますが、情報量が多く、
そのままでは把握するのがなかなか大変です。

この拡張が、

  • 構造解析
  • デバッグ
  • データ確認

のちょっとしたストレス軽減になれば嬉しいです。

それでは、素敵な mmCIF ライフを!

Issue・Pull Request 大歓迎です 🙌

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?