macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

GO enrichment解析結果を要約する GO-Figure!

 

 Gene Ontology(GO)は、大規模アッセイから得られた生物学的データを知識に基づいて計算機で解析し、発見を促す機能的ゲノミクス研究の基礎となるものである。この成功の鍵は、関心のある遺伝子のサブセットに過剰に発現している注釈付き機能を特定することによって、研究システムの生物学や進化に関する仮説や結論をサポートするためにGOをどのように利用できるかにある。このようなGOタームエンリッチメントの結果をグラフィカルに可視化することは、研究者に直感的な視覚的データサマリーを提示することによって、解釈を助け、バイアスを回避するために重要である。現在の可視化ツールやリソースの中で、複数のGOタームリストの主要な特徴を探索することを容易にするスタンドアローンオープンソースソフトウェアソリューションが不足している。この問題に対処するため、著者らは冗長性を減らしたGOタームリストのユーザーカスタマイズ可能なsemantic similarity scatterplotsを作成するためのオープンソースPythonソフトウェア、GO-Figure!を開発した。リストは、定量化された情報量と意味的類似性を用いて、類似した機能を持つ語彙をグループ化することにより簡素化され、グループ化の閾値をユーザーが制御することができる。次に、2 次元意味空間にプロットするための代表的な語彙が選択され、類似した語彙は散布図上で互いに近接して配置され、ユーザーがカスタマイズ可能なグラフ属性が設定される。GO-Figure! は、GO タームのリストをコマンドラインでプロットするシンプルなソリューションで、探索的データ解析やデータセット比較をサポートするように設計されている。

(一部略)探索的なデータ解析は、グラフィカルなデータサマリーによって大きく促進される(Lee et al)。例えば、遺伝子発現の差異を定量するために異なるソフトウェア、パラメータ、正規化、フィルターを使用すると、遺伝子セットのエンリッチメント解析の結果に影響を与える。また、遺伝子リストがクラスタリング手法で定義されている場合、入力特徴、距離関数、クラスタリングアルゴリズムを変えると、クラスタメンバーシップに影響を与え、結果としてエンリッチメント解析の結果にも影響を与える。データ探索だけでなく、複数のリストのエンリッチされたGOターム間の類似性や差異を可視化することにより、異なる組織、ライフステージ、条件、治療、あるいは異なる種や集団からの結果の比較から導き出される解釈や結論をサポートすることができる。

 

Githubより

GO-Figure! は、Gene Ontology Enrichment Visualization のための python パッケージで、 意味的類似性を利用して、大量の GO タームリストをより理解しやすい要約されたリストへと縮小します。GO-Figure! は、類似の機能を持つエンリッチされたGOタームの高速で再現性のある散布図を作成します。しかし、このような散布図がどのように見える必要があるかについては、誰もが異なるニーズと異なる意見を持っていることを私たちは認識しています。そのため、GO-Figure! は、配色の変更から凡例の変更、GOタームのクラスタリングのための異なる閾値まで、非常に柔軟なものとなっています。

 

Example plots

https://gitlab.com/evogenlab/GO-Figure/-/wikis/Example-plots

 

インストール

condaでpython3.8の環境を作ってテストした(macubuntu向けのバイナリが用意されている)。

依存

  •  

GitLab

mamba create -n gofigure python=3.8 -y
conda activate gofigure
#依存関係
pip3 install numpy matplotlib seaborn scikit-learn adjustText

#本体
git clone https://gitlab.com/evogenlab/GO-Figure.git
cd GO-Figure/

> python gofigure.py --help

$ python gofigure.py --help

usage: gofigure.py [-h] -i INPUT -o OUTPUT [-a MAX_CLUSTERS] [-j {topgo,gostats,standard,standard-plus}] [-n {bpo,mfo,cco,all}] [-r REPRESENTATIVES] [-si SIMILARITY_CUTOFF] [-v MAX_PVALUE]

                   [-so {pval,user,user-descending}] [-su {True,False}] [-to TOP_LEVEL] [-nc NAME_CHANGES] [-b OPACITY] [-c {pval,log10-pval,user,members,frequency,unique}] [-p PALETTE] [-rs RANDOM_STATE]

                   [-s SIZE] [-sr {small,medium,big}] [-u {numbered,go,go-arrows,description,description-numbered}] [-x XLABEL] [-y YLABEL] [-z COLOUR_LABEL] [-d {left,right,center}] [-e DESCRIPTION_LIMIT]

                   [-f {xx-small,x-small,small,medium,large,x-large,xx-large}] [-g {single,double,triple}] [-l {full,go,description,none}] [-m MAX_LABEL] [-dp DPI] [-q {png,pdf,tiff,svg}] [-w OUTFILE_APPENDIX]

                   [-k {xx-small,x-small,small,medium,large,x-large,xx-large}] [-t TITLE]

 

GOFigure!: GO enrichment visualization based on semantic similarity.

 

optional arguments:

  -h, --help            show this help message and exit

 

Required arguments:

  -i INPUT, --input INPUT

                        Input file in tabular format with the columns: GO ID + P-value for standard input, GO ID + P-Value + Significant for standard-plus input, TopGO output as an input, or GoStats output as

                        an input. Can use # or ! or % to comment out lines. Change --input_type accordingly. Default input is 'standard'. Example input files are found in the root directory.

  -o OUTPUT, --output OUTPUT

                        Output directory

 

Optional input file and data handling arguments:

  -a MAX_CLUSTERS, --max_clusters MAX_CLUSTERS

                        Maximum amount of clusters to plot (integer value). Default = 50.

  -j {topgo,gostats,standard,standard-plus}, --input_type {topgo,gostats,standard,standard-plus}

                        Type of input file. Use 'topgo' for standard TopGO input, 'gostats' for standard GOStats input, 'standard' for an input file where the first column is the GO ID and the second is the

                        p-value, and 'standard-plus' for standard input but with a third column containing a user defined numerical value (for TopGO and GOStats input, this is the 'significant' value). Default

                        = standard

  -n {bpo,mfo,cco,all}, --ontology {bpo,mfo,cco,all}

                        Which ontology to use: biological process ('bpo'), molecular function ('mfo'), cellular component ('cco'), or all ontologies ('all'). Default is all.

  -r REPRESENTATIVES, --representatives REPRESENTATIVES

                        A list of GO terms that have priority for being a representative of a cluster. I.e. if one term in a cluster has priority, that term will always be the representative. If two terms in a

                        cluster have priority, only those two will be considered. Input is a list of GO terms separated by a comma, such as 'GO:0000001,GO:0000002'.

  -si SIMILARITY_CUTOFF, --similarity_cutoff SIMILARITY_CUTOFF

                        Similarity cutoff to be used between GO terms, a value between 0 and 1. Default = 0.5.

  -v MAX_PVALUE, --max_pvalue MAX_PVALUE

                        Maximum p-value to consider (floating value). Default = 99999.99999.

  -so {pval,user,user-descending}, --sort_by {pval,user,user-descending}

                        Which values to use for sorting the clusters: 'pval' (p-value) or 'user' (user-defined value) or 'user-descending' (user-defined value descending). Default = pval.

  -su {True,False}, --sum_user {True,False}

                        To sum the user-defined values (column 3) for each member of a cluster. Either 'True' or 'False'. Default = False.

  -to TOP_LEVEL, --top_level TOP_LEVEL

                        Set top level GO terms for clusters as given by the GO DAG (see https://www.ebi.ac.uk/QuickGO). Top level GO terms have to be given separated by comma's, without spaces. E.g.:

                        'GO:000001,GO:000008'.

  -nc NAME_CHANGES, --name_changes NAME_CHANGES

                        A list of GO terms that will be used as representative of a cluster specifically for naming purposes, but not for internal calculations. This is opposed to the'--representatives option,

                        which provides GO terms to be used as representatives of a cluster both internally and externally. This specific option allows for the renaming of clusters without recalculating the

                        clusters when there is a need to reproduce the original figure. Input is a list of GO terms separated by a comma, such as 'GO:0000001,GO:0000002'.

 

Optional legend arguments:

  -d {left,right,center}, --legend_position {left,right,center}

                        Position the legend at the bottom left ('left'), bottom right ('right'), or bottom center ('center'). Default = center.

  -e DESCRIPTION_LIMIT, --description_limit DESCRIPTION_LIMIT

                        Integer character limit of GO term descriptions in the legend. Default = 35.

  -f {xx-small,x-small,small,medium,large,x-large,xx-large}, --font_size {xx-small,x-small,small,medium,large,x-large,xx-large}

                        Font size of the legend. 'xx-small', 'x-small', 'small', 'medium', 'large' , 'x-large', or 'xx-large'. Default = medium

  -g {single,double,triple}, --legend_columns {single,double,triple}

                        Legend as a single ('single') column or double ('double') column. Default = double.

  -l {full,go,description,none}, --legend {full,go,description,none}

                        Option to show GO terms and descriptions in the legend ('full'), GO term only 'go', description only ('description'), or no legend ('none'). Default = description.

  -m MAX_LABEL, --max_label MAX_LABEL

                        Maximum labels to display in the legend. Default = 10.

 

Optional scatterplot arguments:

  -b OPACITY, --opacity OPACITY

                        Set opacity for the clusters, floating point from 0 to 1. Default = 1

  -c {pval,log10-pval,user,members,frequency,unique}, --colours {pval,log10-pval,user,members,frequency,unique}

                        Color GO clusters based on p-value ('pval'), log10 p-value ('log10-pval'), number of GO terms that are a member of the cluster ('members'), frequency of the GO term in the GOA database

                        ('frequency'), a unique colour per cluster ('unique'), or a user defined value ('user'). Default = 'log10-pval'.

  -p PALETTE, --palette PALETTE

                        Set to any color brewer palette available for MatPlotLib (https://matplotlib.org/3.1.1/tutorials/colors/colormaps.html). Default = plasma

  -rs RANDOM_STATE, --random_state RANDOM_STATE

                        Set random state for the calculation of the X and Y label. Useful if you want the figures to be exactly the same. Needs to be an integer or None. Specifying 'None' will create a

                        different orientation of the plot every time. Default = 1

  -s SIZE, --size SIZE  Size of GO clusters based on how many GO terms are a member of the cluster ('members'), frequency in GOA database ('frequency'), p-value where smaller = larger size ('pval'), the user

                        defined value ('user'), or a fixed integer for every cluster. Default = 'members'.

  -sr {small,medium,big}, --size_range {small,medium,big}

                        Set cluster size range to 'small', 'medium', or 'big'. Default = medium.

  -u {numbered,go,go-arrows,description,description-numbered}, --cluster_labels {numbered,go,go-arrows,description,description-numbered}

                        Label clusters numbered based on the sorting option ('numbered'), based on the representative GO term ('go'), based on the representative GO term with arrows ('go-arrows') based on the

                        representative GO term name ('description'), or based on the representative GO term name with arrows ('description-numbered'). Default = numbered.

  -x XLABEL, --xlabel XLABEL

                        X-axis label. Default = 'Semantic space X'

  -y YLABEL, --ylabel YLABEL

                        Y-axis label. Default = 'Semantic space Y'

  -z COLOUR_LABEL, --colour_label COLOUR_LABEL

                        Colourbar label. Default is the description of the input used for --colours

 

Optional title arguments:

  -k {xx-small,x-small,small,medium,large,x-large,xx-large}, --title_size {xx-small,x-small,small,medium,large,x-large,xx-large}

                        Set title size. 'xx-small', 'x-small', 'small', 'medium', 'large' , 'x-large', or 'xx-large'. Default = medium

  -t TITLE, --title TITLE

                        Set figure title. Has to be between single or double quotation marks.

 

Optional outfile arguments:

  -dp DPI, --dpi DPI    Set DPI for outfiles. Default = 400

  -q {png,pdf,tiff,svg}, --file_type {png,pdf,tiff,svg}

                        Image file type. 'png', 'pdf', 'svg', or 'tiff'. Default = 'png'

  -w OUTFILE_APPENDIX, --outfile_appendix OUTFILE_APPENDIX

                        What to add to the outfiles after 'biological_process', 'molecular_function', or 'cellular_component'. By default it will add the value given for --outdir, replacing '/' with '_'.

 

 

テストラン

GO-Figure!は、standard'、 'standard-plus'、 'topgo'、'gostats' の4種類の入力形式を受け付ける。デフォルトのフォーマットは 'standard' になっている。

 

1、standardは、GO termとP-valueの2列の表形式ファイル(GO enrichment analysisの出力)。

f:id:kazumaxneo:20220316210043p:plain

'#', '!', '%' を使って不要な行をコメントアウトできる。

 

standardの入力データをランする。

cd GO-Figure/
python gofigure.py -i example_data/standard_example_input.tsv -o out_dir
  • -i    Input file in tabular format with the columns: GO ID + P-value for standard input, GO ID + P-Value + Significant for standard-plus input, TopGO output as an input, or GoStats output as an input. Can use # or ! or % to comment out lines. Change --input_type accordingly. Default input is 'standard'. Example input files are
  • -o    Output directory

出力ディレクト

f:id:kazumaxneo:20220316195801p:plain

散布図は、意味空間XとYにおいて最も類似しているGO用語が互いに近接するように配置された円のプロットとして表示される。プロットのグラデーションは統計的有意性のP値を表している。プロットされた円のサイズはGOの語彙の数によってスケーリングされている(REVIGOではGOの語彙の頻度)。

 

cellular_component_out_directory.png

f:id:kazumaxneo:20220316195657p:plain

 

molecular_function_out_directory.png

f:id:kazumaxneo:20220316195721p:plain

 

biological_process_out_directory.png

f:id:kazumaxneo:20220316195746p:plain

重要なのは、プロットされた語彙の相対的な位置関係であり、これが重要な機能情報を要約している。軸自体は、提供されたリストを用いた次元削減の結果であるため、リスト固有のものであり、特に機能的な意味を伝えるものではない。(マニュアルより)

 

 

2、standard-plusは、GO term、P-value、ユーザー定義値の3列からなる3列の表形式ファイルで構成される。ユーザー定義値は、GO enrichment analysisのGOタームで有意に変動した遺伝子で注釈された回数を表すなど、任意の数値を指定することができる。

f:id:kazumaxneo:20220316211919p:plain

standard-plusの入力データをランする。

python gofigure.py -i example_data/standard-plus_example_input.tsv -o out_directory3 -j standard-plus
  •  -j, --input_type    {topgo,gostats,standard,standard-plus} 

出力ディレクト

f:id:kazumaxneo:20220316212405p:plain

 

3、TopGOの出力も使用できる。TopGO出力の7列フォーマット

f:id:kazumaxneo:20220316212532p:plain

topGOの出力データをランする。

python gofigure.py -i example_data/topgo_example_input.tsv -o out_dir -j topgo

出力ディレクト

f:id:kazumaxneo:20220316195504p:plain

 

4、GOStatsの出力も使用できる。GOStats出力の7列フォーマット

f:id:kazumaxneo:20220316212824p:plain

GOStatsの出力データをランする。

python gofigure.py -i example_data/gostats_example_input.tsv -o out_dir -j gostats
  •  -j, --input_type    {topgo,gostats,standard,standard-plus} 

出力ディレクト

f:id:kazumaxneo:20220316213003p:plain

 

exampleにはカスタマイズの例もあります。興味がある方は確認して下さい。

引用

Summary Visualizations of Gene Ontology Terms With GO-Figure!
Maarten J. M. F. Reijnders and Robert M. Waterhouse

Front. Bioinform., 01 April 2021 

 

関連

topGOの使用例(non-model organism)