常用链接
SSREnricher github :https://github.com/byemaxx/SSREnricher #该作者还fork了一些生信教程,可以看看。
pubmed 【PeerJ (IF: 2.98 ; Q2 ),2020.7.2发表】 :https://pubmed.ncbi.nlm.nih.gov/32676221/
文章全文:https://peerj.com/articles/9372/
介绍
微卫星 (SSR) 标记是最流行的植物和动物遗传分析和分子选择育种标记。然而,目前可用的开发 SSR 的方法相对耗时且昂贵。最重要的因素之一是多态 SSR 的频率较低。在这项研究中,我们开发了一个软件SSREnricher,它由六个核心分析程序组成,包括SSR挖掘、序列聚类、序列修改、包含多态SSR序列的富集、假阳性去除和结果输出以及多序列比对。在该软件上运行转录组序列后,可以识别出大量多态性 SSR。验证实验显示几乎所有标记(> 90%)被 SSREnricher 鉴定为推定的多态性标记确实是多态性的。SSREnricher 识别出的多态性 SSR 的频率明显更高(P < 0.05) 优于传统方法和 HTS 方法。
作者单位:川农(唯一单位)
软件版本:linux版本和macOS的图形交互界面版本。
本文仅介绍linux版本(因为我没有MAC)。
运行过程
大部分内容翻译自论文,我自己写的内容是“郑:”后面的内容
- SSR 挖掘:MISA 集成到 SSREnricher 中,用于挖掘转录本中的 SSR 序列信息,使用以下设置:分别显示 SSR 基序和重复数,单体 10、二聚体 6、三聚体 5、四聚体 5,五聚体 5 和六聚体 5。复合微卫星中的最大中断碱基对数设置为 100。(monomer-10, dimer-6, trimer-5, tetramer-5, pentamer-5, and hexamer-5. The maximal number of interrupting basepairs in a compound microsatellite is set to 100.)
- 序列聚类:CD-HIT-EST用于聚类相似度≥90%的转录本,以获得序列的聚类和正链或负链信息。
- 序列修饰:将负链序列转化为反向互补序列。
- 包含多态性 SSR 序列的富集:过滤掉仅具有单核苷酸的重复单元。距离序列开头或结尾少于 50 bp 的重复单元也被删除。
郑:过滤掉单核苷酸,这里可能是考虑单核苷酸重复容易发生错配而测序失败[1]。
- 去除假阳性:软件根据富集结果筛选假阳性。包含具有多个具有相同基序的 SSR 基因座的序列的簇,而其他簇缺少一些 SSR 基因座,将被删除。
- 结果输出和多序列比对:对获得的簇进行多序列比对,观察SSR的位置并生成结果文件。
郑:后续实验,论文中验证部分提到的是Primer Premier 5 软件设计引物,然后PCR 扩增,产物用毛细管电泳分离,使用 GeneMarker 软件分析峰高和片段大小。由于我没做过这种实验,对于SSR多态性理解也不够,这部分内容如果要更换方法,有哪些因素要考虑,还需要自己去斟酌下。

软件配置
软件依赖于 Biopython Perl CD-HIT muscle。muscle在之后改版参数有变动,注意下面指定的muscle版本不要改为最新版。
git clone https://github.com/byemaxx/SSREnricher.git
conda create -n ssr -c bioconda -c conda-forge biopython perl cd-hit muscle==3.8.31 -y #不要更换muscle版本
conda activate ssr
示例运行
示例数据,2个组装结果:
Samplefiles/
├── sample1.fa
├── sample2.fa
运行命令:
python ssrEnricher.py ./Samplefiles/ > log
./Samplefiles/
下应该包含以.fasta
为后缀的多个Trinity组装结果。
结果文件
tree ./Samplefiles/
./Samplefiles/
├── Result_2022-07-17_22-39
│ ├── Fasta_Result.txt
│ ├── muscle_Result
│ │ ├── seq0
│ │ ├── seq0.muscle
│ │ ├── seq1
│ │ ├── seq10
│ │ ├── seq10.muscle
│ │ ├── seq11
│ │ ├── seq11.muscle
│ │ ├── seq12
│ │ ├── seq12.muscle
│ │ ├── seq13
│ │ ├── seq13.muscle
│ │ ├── seq1.muscle
│ │ ├── seq2
│ │ ├── seq2.muscle
│ │ ├── seq3
│ │ ├── seq3.muscle
│ │ ├── seq4
│ │ ├── seq4.muscle
│ │ ├── seq5
│ │ ├── seq5.muscle
│ │ ├── seq6
│ │ ├── seq6.muscle
│ │ ├── seq7
│ │ ├── seq7.muscle
│ │ ├── seq8
│ │ ├── seq8.muscle
│ │ ├── seq9
│ │ └── seq9.muscle
│ └── SSR_Result.txt
├── sample1.fasta
├── sample2.fasta
└── WorkingDrictory
├── all.reformed
├── all.ssr.fa
├── cd-hit
├── cd-hit.clstr
├── Fasta_Result.txt
├── misa.ini
├── misa.pl
├── plus.ssr.fa
├── SSR_Result.txt
├── T1.fa
├── T1.fa.misa
├── T1.fa.ssr.reformed
├── T1.fa.statistics
├── T2.fa
├── T2.fa.misa
├── T2.fa.ssr.reformed
└── T2.fa.statistics
3 directories, 49 files
自问自答
个人理解,可能有误,请仔细辨别。本部分主要用于个人理解。
输入文件为什么必须是*.fasta
脚本内的命名把组装结果写死了,后缀必须是.fasta
。毕竟Trinity结果就是Trinity.fasta
或者是*.Trinity.fasta
为什么WorkingDrictory会有T1.fa与T2.fa
这是因为Trinity软件结果序列命名与样本无关,多个组装结果可能具有相同ID,这在后续cd-hit聚类与获取SSR序列的时候可能会造成麻烦。所以,作者将组装结果统一重命名为T+数字.fa
,而其文件内组装的结果,也就是序列,他们的ID按'_'分割后将第一部分改为了T+数字
。
只要稍加检查(如根据序列长度),就很容易
注意(这一步我未实际测试):当你使用Trinity之外的组装软件时,由于脚本是将组装结果内序列ID中按_
的第一部分重命名,所以你所用的软件的ID中,也必须包含'_
' ,且各序列不依赖第一个'_
' 作为唯一识别序列标志。也就是改了'_
' 前的内容,所有序列的ID还不许是唯一的。如果你用的软件组装结果中序列ID没有'_
' ,你可以试试粗暴的运行sed ‘s/>/Trinity_/g' your_unigene.fasta
说SSREnricher整合了MISA程序,怎么没在其程序文件夹内看到?
确实整合了MISA的,而且是1.0版本,不过是整合到了ssrEnricher.py
内部,通过ssrEnricher.py
(ssrEnricherV1.1
) 的第314到318行,产生了misa.pl
与misa.ini
文件。并且最后保留到了结果目录WorkingDrictory
下。
进阶
- 程序参数修改
ssrEnricher.py
中misa、muscle和cd-hit都是默认参数,如果你对参数理解足够深,可以自行修改。另外,需要注意muscle 5.1版本是没有这里的-msf
选项的。
f.write('''definition(unit_size,min_repeats): 1-10 2-6 3-5 4-5 5-5 6-5\ninterruptions(max_difference_between_2_SSRs): 100\n''')
os.system('cd-hit-est -i all.ssr.fa -o cd-hit')
os.system(
'muscle -msf -in seq' +
str(n) +
' -out seq' +
str(n) +
'.muscle')
- 使用除Trinity之外的组装结果进行分析
SSREnricher程序的文章中也是用的Trinity,一般用Trinity就可以,当然,你也可以根据我自问自答
中的内容尝试修改输入文件。
参考
-
李翠婷,张广辉,马春花,孟珍贵,陈军文,杨生超.野三七转录组中SSR位点信息分析及其多态性研究[J].中草药,2014,45(10):1468-1472. ↩
网友评论