6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MSAデータ可視化Pythonパッケージ「pyMSAviz」の紹介

Last updated at Posted at 2023-01-23

本記事では、MSA(Multiple Sequence Alignment)データを簡単に可視化することを目的として個人開発してみたPythonパッケージ「pyMSAviz」(GitHub / Document)を紹介します。

MSAデータの可視化は、基本的にはJalviewSeaViewといったGUIツールを使えばいいと思います。ただ、場合によってはAPIやCLIで自動的にMSA可視化図を出力したいときもあります。そういったケースでpyMSAvizを利用することで、可視化範囲やハイライト位置等を柔軟に設定したMSA可視化図をいい感じに出力することができます。

実装機能

MSAデータの基本的な処理にはBiopythonのBio.Alignを活用して、Pythonの標準的な描画パッケージであるmatplotlibをベースにJalviewを参考にした表示スタイル・各種カラースキームでMSAデータを可視化するAPI/CLI機能を実装しています。機能実装する上で、MSAデータ可視化Rパッケージであるggmsaの実装も参考にしました。

pyMSAvizでは、主に以下のようなMSA可視化機能を実装しています。

  • MSAの可視化範囲の指定
  • 任意のMSA折返し長の指定
  • 各種カラースキームでの表示
  • コンセンサス配列・保存度バーの表示
  • 指定位置・範囲へのハイライトやマーカー、テキストアノテーション表示

api_example01.png
Fig1. シンプルなMSA可視化図例

api_example03.png
Fig2. カスタマイズしたMSA可視化図例

インストール方法

pyMSAvizはPyPIbiocondaにそれぞれパッケージを登録しているので、pipまたはcondaコマンドでインストール可能です。

PyPIパッケージ

pip install pymsaviz

Biocondaパッケージ

conda install -c conda-forge -c bioconda pymsaviz

API実行例

pyMSAvizのAPI実行例の一部をここに記載します。より詳細なAPI実行例に興味があれば、Getting StartedAPI Docsの各種ドキュメントを参照してください。

API Example1

from pymsaviz import MsaViz, get_msa_testdata

msa_file = get_msa_testdata("HIGD2A.fa")
mv = MsaViz(msa_file, wrap_length=60, show_count=True)
mv.savefig("api_example01.png")

api_example01.png

API Example2

from pymsaviz import MsaViz, get_msa_testdata

msa_file = get_msa_testdata("MRGPRG.fa")
mv = MsaViz(msa_file, color_scheme="Taylor", wrap_length=80, show_grid=True, show_consensus=True)
mv.savefig("api_example02.png")

api_example02.png

API Example3

from pymsaviz import MsaViz, get_msa_testdata

msa_file = get_msa_testdata("MRGPRG.fa")
mv = MsaViz(msa_file, end=180, wrap_length=60, show_consensus=True)

# Extract MSA positions less than 50% consensus identity
pos_ident_less_than_50 = []
ident_list = mv._get_consensus_identity_list()
for pos, ident in enumerate(ident_list, 1):
    if ident <= 50:
        pos_ident_less_than_50.append(pos)

# Add markers
mv.add_markers([1])
mv.add_markers([10, 20], color="orange", marker="o")
mv.add_markers([30, (40, 50), 55], color="green", marker="+")
mv.add_markers(pos_ident_less_than_50, marker="x", color="blue")
# Add text annotations
mv.add_text_annotation((76, 102), "Gap Region", text_color="red", range_color="red")
mv.add_text_annotation((112, 123), "Gap Region", text_color="green", range_color="green")

mv.savefig("api_example03.png")

api_example03.png

CLI実行例

簡単にコマンドからMSAデータ可視化をするためにpyMSAvizではCLIも実装しています。CLIのMSAデータ可視化の機能性・柔軟性は、APIと比較すると低くなります。
実行例で利用しているテストデータはこちらからダウンロードできます。

CLIオプション設定

$ pymsaviz -h
usage: pymsaviz [-i I] -o O [--format] [--color_scheme] [--start] [--end] [--wrap_length]
                [--wrap_space_size] [--show_grid] [--show_count] [--show_consensus] [--consensus_color]
                [--consensus_size] [--sort] [--dpi] [-v] [-h]

MSA(Multiple Sequence Alignment) visualization CLI tool

optional arguments:
-i I, --infile I    Input MSA file
-o O, --outfile O   Output MSA visualization file (*.png|*.jpg|*.svg|*.pdf)
--format            MSA file format (Default: 'fasta')
--color_scheme      Color scheme (Default: 'Zappo')
--start             Start position of MSA visualization (Default: 1)
--end               End position of MSA visualization (Default: 'MSA Length')
--wrap_length       Wrap length (Default: None)
--wrap_space_size   Space size between wrap MSA plot area (Default: 3.0)
--show_grid         Show grid (Default: OFF)
--show_count        Show seq char count without gap on right side (Default: OFF)
--show_consensus    Show consensus sequence (Default: OFF)
--consensus_color   Consensus identity bar color (Default: '#1f77b4')
--consensus_size    Consensus identity bar height size (Default: 2.0)
--sort              Sort MSA order by NJ tree constructed from MSA distance matrix (Default: OFF)
--dpi               Figure DPI (Default: 300)
-v, --version       Print version information
-h, --help          Show this help message and exit

Available Color Schemes:
['Clustal', 'Zappo', 'Taylor', 'Flower', 'Blossom', 'Sunset', 'Ocean', 'Hydrophobicity', 'HelixPropensity', 
 'StrandPropensity', 'TurnPropensity', 'BuriedIndex', 'Nucleotide', 'Purine/Pyrimidine', 'Identity', 'None']

CLI Example1

pymsaviz -i ./example/HIGD2A.fa -o cli_example01.png --color_scheme Identity

cli_example01.png

CLI Example2

pymsaviz -i ./example/MRGPRG.fa -o cli_example02.png --wrap_length 80 \
         --color_scheme Taylor --show_consensus --show_count

cli_example02.png

CLI Example3

pymsaviz -i ./example/MRGPRG.fa -o cli_example03.png --start 100 --end 160 \
         --color_scheme Flower --show_grid --show_consensus --consensus_color tomato 

cli_example03.png

最後に

matplotlibのプロット機能の理解をより深めるために、MSAデータの可視化を題材としてpyMSAvizを開発してみました。記事冒頭に記述した通り、MSAデータの可視化は基本的にはGUIツールを使えばいいと思っているので、あまり需要はないのかなと思っています。もし興味がある方がいれば、触ってみてください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?