By liyupeng, 29 November, 2025
Forums

famCircle绘制多物种共线性图

介绍

  1. famCircle能够绘制挺好看的共线性图(算了,只是因为接触到这个软件而已,因为需要用这个软件绘制共线性图而已,实际上好看不好看都无所谓了,能用就行了)
  2. 单次能够绘制共线性图的物种数量上限应该是7个,超过这个数量图就会崩坏,在这个数量之下还是能够画出挺漂亮的图的,比如这张

  1. 使用famcircle前,可能需要参考这一篇论坛中写的geneclear软件包用法:https://www.kdocs.cn/l/cjXtkBnqXjZh;这个工具包因为受众小,几乎没有使用教程的讲解,吾辈找到的唯一一篇也在CSDN上成为付费观看的了

软件安装

如果有需要的话,这边可以提供准备好的condabag(封装下面所有工具的虚拟环境包,解压启动后就能够使用)

conda create -n famcircle -y #创建famcirlce的虚拟环境,软件依赖统一放在这下面
conda install seqkit -y #多余了,大概
conda install seqtk -y
conda install pip -y
conda install gffread -y
conda install -c bioconda blast -y
conda install mcscanx -y
conda install -c conda-forge biopython -y 
conda install biopython -y
conda install numpy -y
wget https://github.com/lkiko/GeneClear/archive/refs/tags/v0.0.0.zip
#下载,解压,然后能够得到whl这个文件;这里下载的是2024年的,源代码?不是很清楚,总之只有这个能够正常通过pip来安装geneclear软件包;参考文档给的那个下载whl命令,下载的whl文件会出现invalid的问题。
pip install GeneClear-0.0.0-py3-none-any.whl #安装脚本包geneclear

wget https://github.com/lkiko/famCircle/archive/refs/tags/v0.2.6.tar.gz
tar -zxvf v0.2.6.tar.gz
famCircle-0.2.6-py3-none-any.whl

运行流程

数据预处理

  1. 筛选保留染色体序列(去掉contig的序列,反正画图用不上,还会影响geneclear的正常运行;这一步可选,如果基因组里面没有片段序列的话可以跳过
    1. 提取染色体编号的id
    2. 如果没有fai文件的话,用gffread根据gff从genome文件中提取一遍蛋白/cds就能够自动生成了
grep "^chr" Rsimsii.genome.fasta.fai | cut -f 1 > chr.id
  1. 提取染色体序列
seqtk subseq Rsimsii.genome.fasta chr.id > Rsimsii.genome_chr.fasta
  1. 根据染色体编号提取对应的gff3文件
grep -f chr.id Rsimsii.genome.repre.gff3 > Rsimsii.genome.repre_chr.gff3
  1. 重新提取染色体上的所有cds和蛋白序列
gffread Rsimsii.genome.repre_chr.gff3 -g Rsimsii.genome_chr.fasta -x cds.fa -y protein.fa
  1. 生成geneclear的参数文件文档total.conf,然后编辑
GeneClear -getpasa ? > run.conf
  1. 如果是NCBI上下载的数据,则通过这一步来清洗一下(前提是cds和protein的序列id一致)
[getNCBI]
cds_file = cds.fa
pep_file = protein.fa
genome_file = Rsimsii.genome_chr.fasta
gff3_file = Rsimsii.genome.repre_chr.gff3
species = Rsimsii
  1. 运行清洗命令行
GeneClear -getncbi run.conf

MCScanx共线性比对

  1. 可以先建立需要共线性比对的两两物种的文件夹,把上一步生成的_gene.gff和.pep文件(2份)拷贝过来,然后进行下面的流程
  2. 蛋白的blastp:选择一个物种的蛋白序列,建库然后比对
    1. 建库
makeblastdb -in Rsimsii.lst.pep  -dbtype prot -parse_seqids -out Rsimsii
  1. 比对
nohup blastp \
  -query KNX.hap2.lst.pep \
  -db Rsimsii \
  -out Rsimsii_KNX.hap2.blast \
  -evalue 1e-5 \
  -num_threads 40 \
  -outfmt 6 \
  -num_alignments 5 \
  & 
  1. 合并两个要共线性分析的mcscanx的gff文件
  2. 运行mcscanx共线性分析
    1. 需要注意的点
      1. 指定的文件夹需要绝对路径
      2. 文件夹下方所有文件的前缀要相同,比如rmi_kn.lens,rmi_kn.gff......
      3. 指定的绝对路径后需要加上前缀,比如这里的绝对路径是:/home/server/work/allRho_for_synteny/test/rmi_kn/,然后是这个文件夹下方所有文件的前缀:rmi_kn
MCScanX /home/server/work/allRho_for_synteny/test/rmi_kn/rmi_kn

famCircle绘图

  1. 参数重定向
    1. 之后就直接在total.conf文件中输入各个文件的信息
famCircle -sl ? > total.conf
  1. 绘图命令行
famCircle -sl total.conf
  1. total.conf样本实例
    1. 注意1,输入文件名之间用英文逗号,不能存在空格
    2. 注意2,按照顺序排列所有文件(提前准备好物种顺序表)
    3. 注意3,设置每个物种的染色体颜色,数量等于参与物种
    4. 注意4,设置两两物种之间共线性颜色,数量等于参与物种-1
    5. 注意5,参数all,默认绘制所有染色体;如果想要绘制选择的部分染色体,则是需要把所有的选择的染色体单独写在上面
    6. 注意6,起始高度,终止高度,染色体高度;这个基本没法调整,实际上能够调整,多长十几遍并且处理的好的话,但是字体大小没法调整,所以从这方面限制了和三个参数的调整范围
    7. 注意7,最大参与物种数量为7
    8. 注意8,相邻之间的两个物种的染色体编号命名格式不能相同
      1. 比如chr01和chr01
      2. 要变成Chr01和chr01
      3. 染色体编号相同会导致线条绘制出问题,就是有一些线条出现在染色体上,而不是在染色体之间进行连接
[sline]
genepairs = Rsimsii_KNX.hap2.collinearity,KNX.hap2_Rpulchrum.collinearity,Rpulchrum_KNX.hap1.collinearity,KNX.hap1_Roldhamii.hap1.collinearity,Roldhamii.hap1_Roldhamii.hap2.collinearity,Rovatum_Roldhamii.hap2.collinearity

genepairsfile_type = MCScanX
position = order
lens = Rsimsii.lens,KNX.hap2.lens,Rpulchrum.lens,KNX.hap1.lens,Roldhamii.hap1.lens,Roldhamii.hap2.lens,Rovatum.lens

gffs = Rsimsii_gene.gff,KNX.hap2_gene.gff,Rpulchrum_gene.gff,KNX.hap1_gene.gff,Roldhamii.hap1_gene.gff,Roldhamii.hap2_gene.gff,Rovatum_gene.gff

# all 默认绘制全部染色体,共线性颜色设置为linecs;
# 若要控制指定染色体的颜色需要使用':'来指定,三个物种一般设置中间物种的颜色,四个物种则需要设置第二和第四个物种的颜色...
chr_name = all 
#block控制线条数量;数值越大,稀碎的共线性越少;物种亲缘关系较近,可以适当提高
block = 6
# 设置每个物种的染色体颜色
cols = #265073,#9AD0C2,#265073,#265073,#9AD0C2,#265073,#9AD0C2
# 若无指定独特的染色体共线性颜色,给两辆物种之间的共线性设置颜色
linecs = #a8c97f,#a8c97f,#a8c97f,#a8c97f,#a8c97f,#a8c97f,#a8c97f
savefile = sp7.png
# Fine-tuning
# h2起始高度
# h1终止高度
# h染色体高度
h1 = 0.1
h2 = 0.9
h = 0.01
#gap控制染色体之间的间隙
gap = 4 
focus_list = None
focus_p = True
focusc = red

参考

  1. 基因组共线性工具MCScanX使用说明-CSDN博客
    1. 徐州更大佬的有关mcscanx前提文件的准备,还有python脚本(github上)
  2. https://mp.weixin.qq.com/s/kFUJN9G2XkxvtylI0yPkpQ
    1. 公众号文章,共线性绘图的

附件

吾辈绘制的多物种共线性图

这张还不错,就是染色体字体部分有些挤,可惜字体大小没法调整