macでインフォマティクス

macでインフォマティクス

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

BUSCO v5

2021 8/14 誤字修正

2021 11/29 誤字修正

2022/06/08 インストールのバージョン更新, 7/3 追記, 7/20 追記

2024/03/07 追記, 3/16 BUSCOv5.7.0について追記、06/10 誤字修正

2025/02/14 3.8.2に変更, 8/13 誤字修正

 

 ゲノムデータやメタゲノムデータの品質を評価する方法は、ゲノムアセンブリを助け、その後の解析結果を正しく解釈するために不可欠である。BUSCOは、ユニバーサル・シングルコピー・オルソログに基づいて、処理されたゲノムデータの完全性と冗長性を評価する。ここでは、BUSCOソフトウェアの新機能と大幅な改良、およびOrthoDB v10のリリースに合わせた基礎データの更新と拡張について紹介する。主な改良点としては、BUSCOでは入力配列の系統的な配置が可能になり、評価に最適なデータセットを自動的に選択することができるようになったため、起源が不明なメタゲノムアセンブリゲノム解析が可能になった。新たに導入されたゲノムワークフローにより、特に大規模な真核生物のゲノムに対する効率と実行時間が向上している。BUSCOは、真核生物と原核生物の両方の種を評価できる唯一のツールであり、ゲノムアセンブリやメタゲノムビン、トランスクリプトームや遺伝子セットなど、さまざまな種類のデータに適用することができる。

新しいアプローチ
BUSCO v3のリリース後に導入された新機能とデータセットについて説明する。 BUSCOの最終バージョンであるv5には以下の特徴がある。1) OrthoDB v10と同期して基礎データセットの大幅なアップグレード、2) 遺伝子予測ツールProdigalを使用した原核生物およびウイルスゲノムの評価のための更新されたワークフロー、3) 遺伝子予測ツールMetaEuk、4)最適なBUSCOデータセットを自動的に選択し、由来不明の配列の解析を可能にするワークフロー、5)大規模なデータセットやメタゲノムビンのハイスループット評価を容易にするために、複数の入力のバッチ解析を実行するオプション、6)コードの大幅なリファクタリングを行い、Bioconda(Grüning et al. 2018)とDocker(Merkel 2014)の2つの配布チャネルの整備した。これらの開発により、BUSCOは、大規模な真核生物のゲノムから、微生物の真核生物、原核生物、ウイルスのメタゲノムアセンブリゲノムまで、大規模な異種データセットの包括的な解析に適している。

 

HP

https://busco.ezlab.org/

Manual

https://busco.ezlab.org/busco_userguide.html

Best practices

https://busco.ezlab.org/busco_userguide.html#best-practices

 

(説明するスレッドになっています。読んでください)

 

インストール

GitLab

#conda (link) v5の最新はv5.8.3 (v6も出てきている)
mamba create -n busco5 -y
conda activate busco5
mamba install -c conda-forge -c bioconda busco=5.8.3 -y

#docker (v5.2.2の場合)link
docker pull ezlabgva/busco:v5.2.2_cv1
#v5.8.2
docker pull ezlabgva/busco:v5.8.2_cv1

> busco -h #5.8.2

$ busco -h

usage: busco -i [SEQUENCE_FILE] -l [LINEAGE] -o [OUTPUT_NAME] -m [MODE] [OTHER OPTIONS]

 

Welcome to BUSCO 5.8.2: the Benchmarking Universal Single-Copy Ortholog assessment tool.

For more detailed usage information, please review the README file provided with this distribution and the BUSCO user guide. Visit this page https://gitlab.com/ezlab/busco#how-to-cite-busco to see how to cite BUSCO

 

optional arguments:

  -i SEQUENCE_FILE, --in SEQUENCE_FILE

                        Input sequence file in FASTA format. Can be an assembled genome or transcriptome (DNA), or protein sequences from an annotated gene set. Also possible to use a path to a directory containing multiple input files.

  -o OUTPUT, --out OUTPUT

                        Give your analysis run a recognisable short name. Output folders and files will be labelled with this name. The path to the output folder is set with --out_path.

  -m MODE, --mode MODE  Specify which BUSCO analysis mode to run.

                        There are three valid modes:

                        - geno or genome, for genome assemblies (DNA)

                        - tran or transcriptome, for transcriptome assemblies (DNA)

                        - prot or proteins, for annotated gene sets (protein)

  -l LINEAGE, --lineage_dataset LINEAGE

                        Specify the name of the BUSCO lineage to be used.

  --augustus            Use augustus gene predictor for eukaryote runs

  --augustus_parameters "--PARAM1=VALUE1,--PARAM2=VALUE2"

                        Pass additional arguments to Augustus. All arguments should be contained within a single string with no white space, with each argument separated by a comma.

  --augustus_species AUGUSTUS_SPECIES

                        Specify a species for Augustus training.

  --auto-lineage        Run auto-lineage to find optimum lineage path

  --auto-lineage-euk    Run auto-placement just on eukaryote tree to find optimum lineage path

  --auto-lineage-prok   Run auto-lineage just on non-eukaryote trees to find optimum lineage path

  -c N, --cpu N         Specify the number (N=integer) of threads/cores to use.

  --config CONFIG_FILE  Provide a config file

  --contig_break n      Number of contiguous Ns to signify a break between contigs. Default is n=10.

  --datasets_version DATASETS_VERSION

                        Specify the version of BUSCO datasets, e.g. odb10, odb12 (default odb12)

  --download [dataset ...]

                        Download dataset. Possible values are a specific dataset name, "all", "prokaryota", "eukaryota", or "virus". If used together with other command line arguments, make sure to place this last.

  --download_base_url DOWNLOAD_BASE_URL

                        Set the url to the remote BUSCO dataset location

  --download_path DOWNLOAD_PATH

                        Specify local filepath for storing BUSCO dataset downloads

  -e N, --evalue N      E-value cutoff for BLAST searches. Allowed formats, 0.001 or 1e-03 (Default: 1e-03)

  -f, --force           Force rewriting of existing files. Must be used when output files with the provided name already exist.

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

  --limit N             How many candidate regions (contig or transcript) to consider per BUSCO (default: 3)

  --list-datasets       Print the list of available BUSCO datasets

  --long                Optimization Augustus self-training mode (Default: Off); adds considerably to the run time, but can improve results for some non-model organisms

  --metaeuk             Use Metaeuk gene predictor

  --metaeuk_parameters "--PARAM1=VALUE1,--PARAM2=VALUE2"

                        Pass additional arguments to Metaeuk for the first run. All arguments should be contained within a single string with no white space, with each argument separated by a comma.

  --metaeuk_rerun_parameters "--PARAM1=VALUE1,--PARAM2=VALUE2"

                        Pass additional arguments to Metaeuk for the second run. All arguments should be contained within a single string with no white space, with each argument separated by a comma.

  --miniprot            Use Miniprot gene predictor

  --skip_bbtools        Skip BBTools for assembly statistics

  --offline             To indicate that BUSCO cannot attempt to download files

  --opt-out-run-stats   Opt out of data collection. Information on the data collected is available in the user guide.

  --out_path OUTPUT_PATH

                        Optional location for results folder, excluding results folder name. Default is current working directory.

  -q, --quiet           Disable the info logs, displays only errors

  -r, --restart         Continue a run that had already partially completed.

  --scaffold_composition

                        Writes ACGTN content per scaffold to a file scaffold_composition.txt

  --tar                 Compress some subdirectories with many files to save space

  -v, --version         Show this version and exit

> generate_plot.py -h

$ generate_plot.py -h

usage: python3 generate_plot.py -wd [WORKING_DIRECTORY] [OTHER OPTIONS]

 

BUSCO plot generation tool.

Place all BUSCO short summary files (short_summary.[generic|specific].dataset.label.txt) in a single folder. It will be your working directory, in which the generated plot files will be written

See also the user guide for additional information

 

required arguments:

-wd PATH, --working_directory PATH

Define the location of your working directory

 

optional arguments:

-rt RUN_TYPE, --run_type RUN_TYPE

type of summary to use, `generic` or `specific`

--no_r To avoid to run R. It will just create the R script file in the working directory

-q, --quiet Disable the info logs, displays only errors

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

 

 

 

 

 実行方法

1、利用できるデータベースを確認

busco --list-datasets

 

2、BUSCOのラン。モードは3つある。ゲノムアセンブリを評価するなら”-m genome”、de novo transcriptomeアセンブリアノテーションして得たcDNA配列から評価するなら”-m transcriptome”、アノテーションして得たタンパク質配列セットから評価するなら”-m protein”。

#genome
busco -m genome -i INPUT.nucleotides -o OUTPUT -l LINEAGE -c 20
#最近のバージョンならgeno

#transcriptome
busco -m transcriptome -i INPUT.nucleotides -o OUTPUT -l LINEAGE -c 20
#最近のバージョンならtran

#protein
busco -m protein -i INPUT.amino_acids -o OUTPUT -l LINEAGE -c 20
#最近のバージョンならprot
  • -i   Input sequence file in FASTA format. Can be an assembled genome or transcriptome (DNA), or protein sequences from an annotated gene set. Also possible to use a path to a directory containing multiple input files.
  • -o   Give your analysis run a recognisable short name. Output folders and files will be labelled with this name. WARNING: do not provide a path
  • -m   Specify which BUSCO analysis mode to run
  • -c   Specify the number (N=integer) of threads/cores to use. 
  • --update-data  Download and replace with last versions all lineages datasets and files necessary to their automated selection

-l bacteria_odb10 のようにデータセットの名前が渡されると、BUSCO は自動的にダウンロードを行う。BUSCOに-l /my/own/path/bacteria_odb10のようにデータベースのフルパスが渡された場合、こちらが使用される。ファイルの新バージョンが利用可能な場合、BUSCOは警告を出す。引数 --update-data を渡すと、BUSCO は現在のファイルやフォルダを最新のバージョンに置き換え、以前のバージョンをアーカイブする。

 

 

系統の自動選択が出来るようになった。オプションの”--auto-lineage, --auto-lineage-prok, --auto-lineage-euk"のいずれかをつける。

busco -m MODE -i INPUT -o OUTPUT --auto-lineage

#ignoring eukaryotes to save runtim
busco -m MODE -i INPUT -o OUTPUT --auto-lineage-prok

#ignoring non-eukaryotes to save runtim
busco -m MODE -i INPUT -o OUTPUT --auto-lineage-euk

細菌ゲノム(シアノバクテリア)でテストした。 bacteria_odb10とsynechococcales_odb10が評価に使用された。

f:id:kazumaxneo:20210813180830p:plain

 

scripts/generate_plot.pyスクリプトを使用すると、BUSCOのサマリー結果を分かりやすい棒グラフで素早く表示することができる。使用するには、BUSCOの出力ディレトリにできるショートサマリ―ファイルをディレクトリにコピーする(比較するには複数ランしておく必要がある)。そのディレクトリを指定してランする。

generate_plot.py -wd BUSCO_summaries/

 

メタゲノムのbin配列の評価にBUSCOを使ってみる。bin1.fastaからbin10.fastaまでを自動系統モードで評価する(mockデータ使用)。ショートサマリ―ファイルをディレクトリにコピーする。

mkdir BUSCO_summaries
for file in `\find bin*fasta -maxdepth 1 -type f`; do
genome=${file}
folder=${file%.fasta}
busco -m genome -i $genome -o ${folder} --auto-lineage-prok -c 40 -q
cp ${folder}/short_summary* BUSCO_summaries/
done

#評価
generate_plot.py -wd BUSCO_summaries/

 

f:id:kazumaxneo:20210813185122p:plain

実際にはバッチモードで複数のゲノムの評価を実行することができます。

https://currentprotocols.onlinelibrary.wiley.com/doi/full/10.1002/cpz1.323

のBasic Protocol 3を参照して下さい。

 

Manualより

  • BUSCOは、ゲノムアセンブリ、トランスクリプトーム、アノテーションされた遺伝子セットの期待される遺伝子含有量の観点から、その完全性を定量的に評価しようとするものです。結果は「Complete and single-copy」、「Complete and duplicated」、「Fragmented」、「Missing BUSCO」というカテゴリーに分類されます。

  • BUSCOの完全性の結果は、あなたの生物学的な観点からのみ意味を持ちます。欠落している遺伝子や重複している遺伝子が、生物学的なものなのか、技術的なものなのかを理解する必要があります。例えば、高いレベルの重複は、最近の全重複イベント(生物学的)またはハプロタイプのキメラ的アセンブリ(技術的)(*1)によって説明されるかもしれません。トランスクリプトームやタンパク質のセットでアイソフォームのフィルターをかけていないものは、重複の割合が高くなります。そのため、BUSCO解析を行う前にフィルターをかける必要があります。最後に、トランスクリプトーム実験において、特定の組織や特定のライフステージや条件に焦点を当てても、BUSCO完全なトランスクリプトームが得られる可能性は低い。このような場合、サンプル間の一貫性が目標となります。

  • Complete
    シングルコピーでも重複でも、BUSCOマッチのスコアが予想範囲内であり、BUSCOプロファイルとのアラインメントの長さも予想範囲内であり、完全であることが判明した場合Completeとなります。実際に入力データにオルソログが存在しないか、オルソログが部分的にしか存在しない(断片化が激しい)場合に、同一性の高い完全長のホモログが存在すると、そのホモログが誤って完全なBUSCOとして同定される可能性があります。スコアのしきい値はこの可能性を最小限にするように最適化されていますが、それでも発生する可能性はあります。

  • Fragmented
    断片化されていると判断された場合、BUSCOのマッチはスコアの範囲内ではあるが、BUSCOプロファイルとの長さの整合性の範囲内ではないことを意味します。トランスクリプトームやアノテーションされた遺伝子セットの場合は、トランスクリプトや遺伝子モデルが不完全であることを示します。ゲノムアセンブリの場合は、遺伝子が部分的にしか存在していないか、完全な遺伝子がアセンブリ内に存在していても、配列検索と遺伝子予測のステップで完全長の遺伝子モデルを生成できなかったことを示しています。真核生物のデータセットを実行する際、このような断片的な結果が得られたマッチには、完全であると判断されたBUSCOでトレーニングされたパラメータを使用して再度配列検索と遺伝子予測を行うという「セカンドチャンス」が与えられるが、それでも遺伝子全体を復元できない場合があります。ゲノムアセンブリ評価で断片化されたBUSCOの中には、完全なものもありますが、発散しすぎていたり、非常に複雑な遺伝子構造をしていたりして、そのようなものから完全なものを探し出して予測するのは非常に難しい。

  • Missing
    欠落していると判断された場合、有意なマッチが全くないか、BUSCOマッチのスコアがBUSCOプロファイルのスコア範囲を下回っていることを意味します。トランスクリプトームやアノテーションされた遺伝子セットの場合は、これらのオルソログが実際に見つからないか、トランスクリプトや遺伝子モデルがあまりにも不完全で断片化されているため、断片化されているとみなされる基準を満たすことすらできないことを示します。ゲノムアセンブリの場合は、オルソログが実際に見つからないか、配列検索ステップで重要なマッチを特定できなかったか、遺伝子予測ステップで断片化されたBUSCOマッチとして認識される可能性のある部分的な遺伝子モデルすら作成できなかったことを示しています。フラグメントの場合と同様に、真核生物のデータセットを実行する際には、最初のラウンドで欠落したBUSCOは、2回目のシーケンス検索と、完全なBUSCOでトレーニングされたパラメータを使用した遺伝子予測によって「2度目のチャンス」が与えられますが、それでも遺伝子を復元できない場合があります。ゲノムアセンブリ評価で欠落したBUSCOの中には、部分的に存在していたり、完全である可能性もありますが、あまりにも分岐していたり、非常に複雑な遺伝子構造を持っていたりするため、正確に位置を特定したり、部分的にでも予測することが非常に困難です。

  • 一般的に、評価のために選択する系統は、利用可能な最も具体的な系統でなければならない。例えば、魚類のデータを評価する場合は、Metazoa(後生動物)ではなく、actinopterygiiを選択する(注;側系統ではなく単系統を選ぶ)。例えば、20個の鳥類ゲノムをそれぞれ数種類の異なるアセンブリバージョンで評価する場合、少なくとも評価の最初のラウンドでは、aves系統ではなくvertebrata系統またはmetazoa系統を選択することができます。

  • BUSCO v5には27個のウイルスデータセットが含まれており、ウイルスのサブセットの解析をサポートしています。

  • -downloadオプションを使用すると、データセットまたはデータセットをダウンロードすることができる(全データは約127GB)(論文より)。
  • インターネットに接続できる別のマシンでデータセットをダウンロードしてコピーしておけば、インターネットに接続できないシステムでBUSCOをランできる。具体的には--offlineフラグを追加して実行する(論文より)。
  • 入力ファイルがタンパク質の場合、BUSCO遺伝子の重複の量を適切に評価するためには、前もってアイソフォームタンパク質をフィルタリングする必要がある。転写産物を評価する時も同様。
  • 新しいバージョンのデータセットが利用可能な場合、常にデータセットを更新するには、コマンドに--update-dataフラグを追加する(論文より)。
  • トランスクリプトームが特定の臓器/組織または時点から得られたものである場合、BUSCOセットのほんの一部しか含まれていない可能性がある(論文より)。
  • 2021年に出たプロトコル論文では、基本的なBUSCOの使い方の他、多数のゲノム評価に使うためにSnakemakeを使用する例や、Dockerを使ったラン方法、それ以外の発展的な使用方法について説明されています。
  • Biostars; BUSCOシングルコピーとOrthofinderのシングルコピーの違いなど(リンク)。

その他

  • 上でも述べたように、より系統特異的な遺伝子セットを選択することが重要です。
    例えば、bacteria_odb10 では complete 値がほぼ100であっても、系統特異的な BUSCO を用いると品質の低いゲノムアセンブリが見つかる場合があります(例:MAG 由来の bin 配列)。こうした bin 配列は、宿主内で寄生的な生活を送る過程で系統特異的な BUSCO を失い、必須度の高い遺伝子のみを保持している可能性も考えられます。しかし実際には、その多くが binning 計算の不十分さに起因していると予想されます。これは、BUSCO遺伝子がゲノム上で偏ってコードされる場合があり、一部領域のみが回収された可能性を考慮する必要があるためです(miCompleteの論文参照)マーカーが偏在しているゲノムでは、bacteria_odb10 に含まれる遺伝子が偏って配置されている contig が1つでも binning で回収されれば、他の contig が欠けていてもスコアが上昇してしまいます。一方、系統特異的な遺伝子セットは bacteria_odb10 より遺伝子数が多く、ゲノム上のコーディングバイアスの影響を受けにくいため、より正確な完全性評価が可能になります。

  • BUSCOスコアをゲノムアセンブリやゲノムアセンブル後に予測されたタンパク質セットに適用する時の注意点として、スコアが高くなりがちな点が挙げられる。これはBUSCO遺伝子が系統的にシングルコピーの遺伝子を対象にしていることが関係している。de brujin graph(DBG)でもoverlap layput consensus (OLC) もグラフから得られたコンティグで断片化が発生しやすいのは、分岐が生じる繰り返し配列部分となる。つまり配列同一性が非常に高いファミリー遺伝子やコピー遺伝子の部分でアセンブリが切れ、シングルコピーのBUSCO遺伝子部分では連続性の高いコンティグが得られやすい。従ってある程度断片化したドラフトアセンブリであってもBUSCOスコアは飽和しやすい。BUSCOスコアが100に近いからといって、染色体全長に近いゲノムアセンブリが必ずしも出来ていると保証されないことは理解しておく必要がある。逆に言えば、BUSCOスコアが低いアセンブリは、シングルコピー遺伝子構造すら表現できていないため、理想的な条件でのde novoアセンブリが行えてない可能性があるとも言える。

 

引用
BUSCO update: novel and streamlined workflows along with broader and deeper phylogenetic coverage for scoring of eukaryotic, prokaryotic, and viral genomes
Mosè Manni, Matthew R Berkeley, Mathieu Seppey, Felipe A Simão, Evgeny M Zdobnov
Mol Biol Evol. 2021 Jul 28;msab199

 

2022/07/03

BUSCO: Assessing Genomic Data Quality and Beyond
Mosè Manni,Matthew R. Berkeley,Mathieu Seppey,Evgeny M. Zdobnov

Curr Protoc. 2021 Dec;1(12):e323

 

関連

*1

https://www.biorxiv.org/content/10.1101/2021.06.01.446499v1.full.pdf

こちらのPrunus fruticosa Pall.(4倍体)のゲノムアセンブリを報告したプレプリントでは、purge_dups(紹介)を使ってヘテロ接合性の高い染色体領域からの冗長な配列を取り除いています。表1を見ると、purge_dupsの実行で、ドラフトゲノムサイズが1/4近くに減っています。BUSCOで冗長なオルソログが多く出るのは、このような背景で発生する技術的な複製を多く見てしまっている可能性もあります。

 

関連ツイート