美文网首页群体遗传学
SSREnricher:一种基于比较转录组分析的多态微卫星大规模

SSREnricher:一种基于比较转录组分析的多态微卫星大规模

作者: 学生信的大叔 | 来源:发表于2022-07-18 12:13 被阅读0次

常用链接

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)。

运行过程

大部分内容翻译自论文,我自己写的内容是“郑:”后面的内容

  1. 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.)
  2. 序列聚类:CD-HIT-EST用于聚类相似度≥90%的转录本,以获得序列的聚类和正链或负链信息。
  3. 序列修饰:将负链序列转化为反向互补序列。
  4. 包含多态性 SSR 序列的富集:过滤掉仅具有单核苷酸的重复单元。距离序列开头或结尾少于 50 bp 的重复单元也被删除。

郑:过滤掉单核苷酸,这里可能是考虑单核苷酸重复容易发生错配而测序失败[1]

  1. 去除假阳性:软件根据富集结果筛选假阳性。包含具有多个具有相同基序的 SSR 基因座的序列的簇,而其他簇缺少一些 SSR 基因座,将被删除。
  2. 结果输出和多序列比对:对获得的簇进行多序列比对,观察SSR的位置并生成结果文件。

郑:后续实验,论文中验证部分提到的是Primer Premier 5 软件设计引物,然后PCR 扩增,产物用毛细管电泳分离,使用 GeneMarker 软件分析峰高和片段大小。由于我没做过这种实验,对于SSR多态性理解也不够,这部分内容如果要更换方法,有哪些因素要考虑,还需要自己去斟酌下。


Schematic.png

软件配置

软件依赖于 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.plmisa.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就可以,当然,你也可以根据我自问自答 中的内容尝试修改输入文件。

参考


  1. 李翠婷,张广辉,马春花,孟珍贵,陈军文,杨生超.野三七转录组中SSR位点信息分析及其多态性研究[J].中草药,2014,45(10):1468-1472.

相关文章

网友评论

    本文标题:SSREnricher:一种基于比较转录组分析的多态微卫星大规模

    本文链接:https://www.haomeiwen.com/subject/cnarirtx.html