首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一条命令画出发表级微生物基因组circos圈图:MGCplotter 实战详解

一条命令画出发表级微生物基因组circos圈图:MGCplotter 实战详解

作者头像
用户1075469
发布2026-03-25 12:25:13
发布2026-03-25 12:25:13
250
举报

小编导读

在微生物基因组分析中,“circos圈图”(circular plot)是最常用的可视化方式之一,但是circos软件的配置文件的复杂程度总是令人望而却步,今天小编介绍的 MGCplotter可以解我们忧。 它利用 Circos 实现漂亮、发表级的图形输出,同时结合 COG 功能分类和 MMseqs2 序列比对结果,帮助我们在比较基因组研究中快速看到结构与功能层面的差异与共性。其使用简单友好、参数可控且支持多样颜色与轨道定制,是做微生物进化、比较基因组分析不可多得的可视化利器。

软件安装

MGCplotter 基于 Python3 实现,并封装了对 Circos 的调用,因此需要先满足运行依赖(特别是 Circos)。常规安装方式如下:

环境要求

  • • Python3 环境(3.8-3.10)
  • • 推荐使用 Conda 管理依赖
  • • 需要 Circos(单独软件)
  • • 建议配置 MMseqs2 与 COGclassifier 安装路径到环境

安装方式

最简单的还是使用 Conda:

代码语言:javascript
复制
conda install -c conda-forge -c bioconda mgcplotter

如果使用 pip 安装:

代码语言:javascript
复制
pip install mgcplotter

如果你希望更简单的运行环境,也可以直接使用 Docker 镜像:

代码语言:javascript
复制
docker pull moshi4/mgcplotter:latest
docker run moshi4/mgcplotter:latest MGCplotter -h

软件帮助:参数详细信息

MGCplotter 的核心是命令行参数,它可以精准控制图形内容、样式、功能分类等。以下是主要可调参数及含义说明(整理自 README 帮助信息):

通用参数

参数

含义

-r , --ref_file

必需;参考基因组 GenBank 格式文件(.gb/.gbk/.gbff)

-o , --outdir

输出目录

--query_files

比较基因组的序列/GenBank 文件,用于绘制保守 CDS

--cog_evalue

COGclassifier e-value 搜索阈值(默认 1e-02)

--mmseqs_evalue

MMseqs2 RBH 分析阈值(默认 1e-03)

-t , --thread_num

并行线程数(默认最大线程-1)

-f, --force

是否覆盖旧结果

-v, --version

版本信息

-h, --help

帮助信息

图形尺寸与轨道参数

参数

含义

--forward_cds_r

正向 CDS 轨道半径

--reverse_cds_r

反向 CDS 轨道半径

--rrna_r

rRNA 轨道半径

--trna_r

tRNA 轨道半径

--conserved_cds_r

保守 CDS 轨道半径

--gc_content_r

GC 含量轨道半径

--gc_skew_r

GC 倾向轨道半径

--ticks_labelsize

圆周刻度文字大小

颜色配置参数

参数

含义

--assign_cog_color

是否根据 COG 分类着色

--cog_color_json

自定义 COG 颜色 JSON 文件

--forward_cds_color

正向 CDS 颜色

--reverse_cds_color

反向 CDS 颜色

--rrna_color

rRNA 颜色

--trna_color

tRNA 颜色

--conserved_cds_color

保守 CDS 颜色

--gc_content_p_color

GC 含量高于平均值颜色

--gc_content_n_color

GC 含量低于平均值颜色

--gc_skew_p_color

GC 倾向正向颜色

--gc_skew_n_color

GC 倾向负向颜色

颜色参数既支持 Matplotlib 内置颜色名称,也支持 HEX 色值输入。([GitHub][1])


软件使用方法:输入与输出

MGCplotter 的主要输入是一个 参考基因组的 GenBank 文件(如 .gbff),可选输入是多个 查询基因组的 CDS 或 GenBank 文件,输出则是一个或多个 Circos 图像(SVG/PNG)以及中间计算结果。

输入要求

  • • 参考基因组必须是标准的 GenBank 格式
  • • 查询可以是序列 FASTA 或 GenBank
  • • 若要进行 COG 功能分类展示,需允许 MGCplotter 调用 COGclassifier

输出说明

结束后输出目录会包含:

  • circos.png 和/或 circos.svg:圆形基因组可视化图(可直接用于论文绘图)
  • • 基因组 CDS Fasta 提取(reference_cds.faa
  • • Circos 配置文件目录(circos_config/
  • • COGclassifier 分类结果目录(cogclassifier/
  • • MMseqs2 保守 CDS 搜索结果(rbh_search/
  • • 图例文件与图层信息(circos_legend/

这些输出可进一步用于后续分析和图表美化。

实战示例:命令与运行说明

下面是几个常见的实战命令示例,方便你快速上手:

简单基因组圆图

绘制单个参考基因组的基本圆图:

代码语言:javascript
复制
MGCplotter -r Mycobacterium.gbff -o ./result01 --assign_cog_color

该命令会展示参考基因组的基本特征(CDS、rRNA、tRNA、GC 信息)并用 COG 分类着色。

带多个基因组比较

如果有多个基因组想比对保守 CDS 并可视化:

代码语言:javascript
复制
MGCplotter -r Mycobacterium.gbff -o ./result02 --assign_cog_color \
           --query_files ./other_genomes/*.gbff

在图中,保守 CDS 轨道层会按 --query_files 的顺序从外向内排列,可以很直观地看到哪些 CDS 在其他基因组也存在及其相似性。

自定义图层与样式

如果你希望控制每种图层半径与颜色:

代码语言:javascript
复制
MGCplotter -r Mycobacterium.gbff -o ./result03 \
           --forward_cds_r 0.08 --reverse_cds_r 0.08 \
           --gc_content_p_color orange --gc_content_n_color blue \
           --gc_skew_p_color purple --gc_skew_n_color pink

这样可以调整不同信息的视觉表达层次与美观度。

小编的使用体会

开源软件优势在于开放和包容,那么缺点便是兼容性,保不齐同样的版本下,某个模块或依赖的更新就让软件运行变得困难,这里就遇到了这样的问题,Biopython的兼容性问题,以前可能需要自己翻好多网页解决。好在,现在是AI的时代,我们可以借助对话式AI或者claudecode/codebuddy等agent式的命令行AI来帮助我们解决问题,特别是后者,基本可以是我们的助理,帮我们操作电脑,分析数据不在话下。当然,如果搭配上MCP,skills更是极好的。以下是我的运行脚本,除了解决报错,还实现了图例合并到图上,给出更完善的图。 另外关于COG的注释,下载需要好长时间,如果有比较好的网络,可以手动下载了放在相应目录,默认是在/home/*/.cache/cogclassifier/

代码语言:javascript
复制
#!/usr/bin/env python3
import sys
from pathlib import Path

# 修复 Biopython 兼容性问题
import Bio.SeqUtils
if not hasattr(Bio.SeqUtils, 'GC'):
    Bio.SeqUtils.GC = Bio.SeqUtils.gc_fraction

from mgcplotter.mgcplotter import run

# 设置路径
ref_file = Path("E.coli.gb")
outdir = Path("mgcplotter_out")
query_files = []  # 如果没有 query 文件,使用空列表

# 创建输出目录
outdir.mkdir(exist_ok=True)

# 运行 MGCplotter
try:
    run(
        ref_file=ref_file,
        outdir=outdir,
        query_files=query_files,
        cog_evalue=1e-5,
        mmseqs_evalue=1e-5,
        thread_num=4,
        force=True,
        ticks_labelsize=35,
        forward_cds_r=0.07,
        reverse_cds_r=0.07,
        rrna_r=0.07,
        trna_r=0.07,
        conserved_cds_r=0.04,
        gc_content_r=0.15,
        gc_skew_r=0.15,
        forward_cds_color='red',
        reverse_cds_color='blue',
        rrna_color='green',
        trna_color='magenta',
        conserved_cds_color='chocolate',
        gc_content_p_color='black',
        gc_content_n_color='grey',
        gc_skew_p_color='olive',
        gc_skew_n_color='purple',
        assign_cog_color=True
    )
    print(f"圈图生成完成!结果保存在: {outdir}")

    # 自动添加图例
    print("\n正在添加图例到圈图...")
    try:
        from add_legends_advanced import LegendMerger

        merger = LegendMerger(
            circos_img_path=outdir / "circos.png",
            legend_dir=outdir / "circos_legend",
            output_dir=outdir
        )

        # 生成并排布局
        merger.create_side_by_side_layout(
            scale_factor=1.0,
            padding=20,
            margin=50,
            output_name="circos_with_legends_side_by_side.png"
        )

        # 生成紧凑布局
        merger.create_compact_layout(
            scale_factor=0.7,
            padding=15,
            margin=30,
            output_name="circos_with_legends_compact.png"
        )

        print("图例添加完成!")
    except ImportError:
        print("警告:无法导入图例添加模块,跳过图例添加步骤")
    except Exception as e:
        print(f"警告:添加图例时出错: {e}")

except Exception as e:
    print(f"错误: {e}")
    sys.exit(1)

欣赏下最后的成果吧!

结束语

MGCplotter 为微生物基因组可视化提供了一条轻量级、友好且可定制的路径。对于做比较基因组进化、基因功能分类分布等任务的同学,它能在保证分析深度的同时输出高质量图形。配合 Circos、MMseqs2 和 COGclassifier,MGCplotter 减少了手动整理和绘图的重复工作。即便是初学 Python 的生信同学,也能在安装和运行过程中掌握跨工具集成的基本思路。希望本文对你的科研推进有所帮助。

参考

  • • https://github.com/moshi4/MGCplotter/ "GitHub - moshi4/MGCplotter: Microbial Genome Circular plotting tool for comparative genomics using Circos"
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小编导读
  • 软件安装
    • 环境要求
    • 安装方式
  • 软件帮助:参数详细信息
    • 通用参数
    • 图形尺寸与轨道参数
    • 颜色配置参数
  • 软件使用方法:输入与输出
  • 实战示例:命令与运行说明
    • 简单基因组圆图
    • 带多个基因组比较
    • 自定义图层与样式
  • 小编的使用体会
  • 结束语
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档