在微生物基因组分析中,“circos圈图”(circular plot)是最常用的可视化方式之一,但是circos软件的配置文件的复杂程度总是令人望而却步,今天小编介绍的 MGCplotter可以解我们忧。 它利用 Circos 实现漂亮、发表级的图形输出,同时结合 COG 功能分类和 MMseqs2 序列比对结果,帮助我们在比较基因组研究中快速看到结构与功能层面的差异与共性。其使用简单友好、参数可控且支持多样颜色与轨道定制,是做微生物进化、比较基因组分析不可多得的可视化利器。
MGCplotter 基于 Python3 实现,并封装了对 Circos 的调用,因此需要先满足运行依赖(特别是 Circos)。常规安装方式如下:
最简单的还是使用 Conda:
conda install -c conda-forge -c bioconda mgcplotter如果使用 pip 安装:
pip install mgcplotter如果你希望更简单的运行环境,也可以直接使用 Docker 镜像:
docker pull moshi4/mgcplotter:latest
docker run moshi4/mgcplotter:latest MGCplotter -hMGCplotter 的核心是命令行参数,它可以精准控制图形内容、样式、功能分类等。以下是主要可调参数及含义说明(整理自 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)以及中间计算结果。
输入要求:
输出说明:
结束后输出目录会包含:
circos.png 和/或 circos.svg:圆形基因组可视化图(可直接用于论文绘图)reference_cds.faa)circos_config/)cogclassifier/)rbh_search/)circos_legend/)这些输出可进一步用于后续分析和图表美化。
下面是几个常见的实战命令示例,方便你快速上手:
绘制单个参考基因组的基本圆图:
MGCplotter -r Mycobacterium.gbff -o ./result01 --assign_cog_color该命令会展示参考基因组的基本特征(CDS、rRNA、tRNA、GC 信息)并用 COG 分类着色。

如果有多个基因组想比对保守 CDS 并可视化:
MGCplotter -r Mycobacterium.gbff -o ./result02 --assign_cog_color \
--query_files ./other_genomes/*.gbff
在图中,保守 CDS 轨道层会按 --query_files 的顺序从外向内排列,可以很直观地看到哪些 CDS 在其他基因组也存在及其相似性。

如果你希望控制每种图层半径与颜色:
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/
#!/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 的生信同学,也能在安装和运行过程中掌握跨工具集成的基本思路。希望本文对你的科研推进有所帮助。