OrthoMCL的使用分13步进行,如下:

1. 安装和配置数据库

Orthomcl可以使用Oracle和Mysql数据库,而在这里只介绍使用Mysql数据库。
修改配置文件/etc/my.cnf,对Mysql进行如下配置:

1. 设置InnoDB_sort_buffer_size的值为可用内存的一半;
2. 设置InnoDB_max_sort_file_size为orthomclBlastParser程序生成文件similarSequences.txt的5倍大小;
3. 软件的说明文档中设置read_buffer_size的值为???,但是设置为3个问号或1个问号,则mysql启动不了。我将其设置为2000M。

2. 安装mcl软件

mcl,即Markov Clustering algorithm,其最新的软件下载地址:http://www.micans.org/mcl/src/mcl-latest.tar.gz。下载后使用’./configure && make && make install’安装即可。

3. 安装并配置OrthoMCL软件

下载OrthoMCL软件(http://orthomcl.org/common/downloads/software/)后,解压缩后,其中包含文件夹:bin、config、doc、lib四个文件夹。
在一个工作目录中运行OrthoMCL,该目录包含数据文件和结果文件。将doc/OrthoMCLEngine/Main/orthomcl.config.template复制到工作目录中。该文件为OrthoMCL的配置文件,以使用mysql数据库为例,其中的内容如下:

dbVendor=mysql   #使用的数据库为mysql
dbConnectString=dbi:mysql:orthomcl #使用mysql数据库中名为orthomcl的数据库
dbLogin=test #数据库的用户名
dbPassword=123 #相应的密码
similarSequencesTable=SimilarSequences #
orthologTable=Ortholog
inParalogTable=InParalog
coOrthologTable=CoOrtholog
interTaxonMatchView=InterTaxonMatch
percentMatchCutoff=50
evalueExponentCutoff=-5
oracleIndexTblSpc=NONE

4. 安装orthomcl数据库的表

首先,进入mysql数据库,新建一个名为orthomcl的数据库;然后,使用orthomclInstallSchema命令在数据库中创建一些表,这些表的名字则是orthomcl.config.template配置文件中指定的5个名称。

$ mysql -u test -p
mysql> create database orthomcl;
$ cp /opt/biosoft/orthomclSoftware-v2.0.9/doc/OrthoMCLEngine/Main/orthomcl.config.template .
$ orthomclInstallSchema orthomcl.config.template [log species]

orthomclInstallSchema命令后面不接参数则给出帮助文档。以上命令使用orthomcl.config.template配置文件中的设置生成了数据库中相应的表,如果加入方括号中的内容,则会生成日志文件log,生成的表后缀都是species。

5. 创建orthomcl的输入文件

orthomcl的输入文件为fasta格式文件,但是fasta文件的序列名称要满足这样的要求:

>taxoncode|unique_protein_id
MHDR...
>hsa|sequence_1
MHDR...
>led|scaffold_1.1
MHDR...

序列名第一列是物种的代码,一般是3到4个字母;中间使用’|'符号隔开;第二列是蛋白质序列独一无二的id。
一般输入文件是fasta格式,其序列名由空格或’|'隔开,使用orthomclAdjustFasta程序,将fasta文件转换出兼容orthomcl的fasta文件

$ redun_remove protein.fasta > non_dun_protein.fasta
$ mkdir compliantFasta; cd compliantFasta
$ orthomclAdjustFasta led ../non_dun_protein.fasta 1

上述命令去除可变剪切的蛋白质序列;创建了文件夹compliantFasta;然后使用orthomclAdjustFasta命令选取了protein.fasta序列名的第一列作为输出的fasta文件的序列id;输出的文件为led.fasta.

6. 过滤序列

对compliantFasta文件夹中的序列进行过滤,允许的最短的protein长度是10,stop codons最大比例为20%;生成了两个文件goodProteins.fasta和poorProteins.fasta两个文件。

$ orthomclFilterFasta compliantFasta/ 10 20

compliantFasta只能过滤低质量的序列。而实际上最好还需要过滤掉可变剪切,只留取可变剪切中最长的蛋白质序列,这个需要自行解决。

7. 对goodProteins.fasta中的序列进行BLAST

下载最新版本的Blast+,和最新版本的OrthoMCL DB的protein序列,将OrthoMCL DB的protein序列加上gooProtein.fasta中的序列合到一起做成一个blast+的数据库。然后对基因组的蛋白质序列进行比对。

$ /opt/biosoft/ncbi-blast-2.2.28+/bin/makeblastdb -in orthomcl.fasta -dbtype prot -title orthomcl -parse_seqids -out orthomcl -logfile orthomcl.log
$ /opt/biosoft/ncbi-blast-2.2.28+/bin/blastp -db orthomcl -query goodProteins.fasta -seg yes -out orthomcl.blastout -evalue 1e-5 -outfmt 7 -num_threads 24

生成orthomcl的blast DB需要97秒左右;使用-outfmt 7生成带注释的表格结果,这一步需要很长时间了,取决于电脑的运算性能。我使用24个线程,每分钟运行约27.75条序列,大约7.2个小时,运行1.2万条protein序列的比对。
blast中使用了-seg yes表示使用seg程序来进行过滤,将那些影响比对结果的低复杂度区域过滤掉。blast生成的文件结果,从第1列到第12列分别是:query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, q. end, evalue, bit score。

8. 处理Blast的结果

对上一步blast的结果进行处理,从而得到序列的相似性结果,以用于导入到orthomcl数据库中。compliantFasta文件夹中包含下载下来的OrthoMCL DB的所有蛋白质数据的文件orthomcl.fasta.

$ grep -P "^[^#]" orthomcl.blastout > blastresult
$ orthomclBlastParser blastresult compliantFasta > similarSequences.txt
$ perl -p -i -e 's/\t(\w+)(\|.*)orthomcl/\t$1$2$1/' similarSequences.txt
$ perl -p -i -e 's/0\t0/1\t-181/' similarSequences.txt

第一条命令将orthomcl.blastout中的注释行去掉,生成新的文件blastresult,不然再下一个命令中会报错的。

第二条命令生成文件similarSequences.txt,从第1列到第8列分别是:query_id, subject_id, query_taxon, subject_taxon, evalue_mant, evalue_exp, percent_ident, percent_match。值得注意的是subject_taxon是orthomclBlastParser读取的在compliantFasta文件夹中fasta文件的前缀,在此结果中,这一列则全是orthomcl。

第三条命令将subject_taxon修改为正确的分类名。

第四条命令修改evalue_mant, evalue_exp,将evalue为0修改为1e-181,这在后续步骤寻找pairwise relationships时候有要求。

9. 将similarSequences.txt载入到数据库中

生成的similarSequences.txt文件大小为83M,则修改/etc/my.cnf文件,在InnoDB_sort_buffer_size这一行上加一行‘InnoDB_max_sort_file_size = 424960’。数值是83M的5倍。然后运行:

$ orthomclLoadBlast orthomcl.config.template similarSequences.txt

10. 寻找成对的蛋白质

$ orthomclPairs orthomcl.config.template orthomcl_pairs.log cleanup=no

输入为数据库中的表SimilarSequences,和数据库的空表InParalog, Ortholog, CoOrtholog tables;输出为对这些空表的操作。故配置文件中的用户要有 update/insert/truncate权限。

11. 将数据从数据库中导出

$ orthomclDumpPairsFiles orthomcl.config.template

生成了一个文件mclInput和一个文件夹pairs;文件夹中包含3个文件coorthologs.txt,inparalogs.txt,orthologs.txt。

12. 使用mcl进行对pairs进行聚类

$ mcl mclInput --abc -I 1.5 -o mclOutput

13. 对mcl的聚类结果进行编号

$ orthomclMclToGroups led 1 < mclOutput > groups.txt

对聚类结果进行编号,依次为led1,led2, led3…

注意事项

第7步Blast,是整个过程中最关键的一步。有以下2点需要注意:

1. 数据库中的蛋白质序列数量:在OrthoMCL DB中选取和要分析的物种亲缘关系较近的几个物种的基因组,或下载其它公布的基因组,加上要分析的物种的基因组;使用这些基因组总体的蛋白质序列来构建Blast数据库。如果只是使用要分析的物种的蛋白质序列建数据库,则inparalogs文件中成对的序列实际上是paralogs,数目比真正的inparalogs要多很多。使用所有的OrthoMCL DB中的序列,第5版版含150个基因组,信息量太大,不使用几百个核的超算或计算机集群去运行,是很不现实的。

2. 对数据库中所有的蛋白质序列来使用blast比对到该数据库中得到结果。如果只是对要分析的物种进行Blast,则只能得到inparalogs的信息,而没有orthologs和coorthologs。

原文来自:http://www.hzaumycology.com/chenlianfu_blog/?p=1818

OrhtoMCL 使用方法的更多相关文章

  1. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  2. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  3. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  4. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  5. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  6. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  7. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  8. [BOT] 一种android中实现“圆角矩形”的方法

    内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...

  9. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

随机推荐

  1. linux另一种安装方式

    linux中其实没有“安装”的概念:安装就是设下路径,拷贝文件,复制文件,运行下脚本这些(windows也应该如此) 法一.把bin运行路径设成环境变量 法二.ln一下,例如: 解压下载的文件: ta ...

  2. [IC]Lithograph(2)光刻技术的分辨率与分辨率增强技术

    接上一篇介绍IC制造的基本过程,光刻的基本过程.这篇文章继续介绍光刻过程中的一些概念. 该系列文章的目录如下: [IC]Lithograph(0)半导体制造的基本过程 [IC]Lithograph(1 ...

  3. FastJson的一些使用

    前言 最近经常使用json的一些转换,使用的是fastjson,所以就对fastjson进行了一些汇总,记录下来. 正文 主要的api 首先是一些类库的说明: SerializeWriter:相当于S ...

  4. 《DSP using MATLAB》示例Example7.10

    代码: ws1 = 0.2*pi; wp1 = 0.35*pi; wp2 = 0.65*pi; ws2 = 0.8*pi; As = 60; tr_width = min((wp1-ws1), (ws ...

  5. ssh连接至Ubuntu服务器时,提示以下错误:REMOTE HOST IDENTIFICATION HAS CHANGED!

    今天在使用Ubuntu搭建自己的git仓库的时候,搭建完成后clone时出现以下错误 经过搜索问题出现原因的描述如下:第一次使用SSH连接时,会生成一个认证,储存在客户端的known_hosts中. ...

  6. Wordpress网站添加七牛云cdn

    1.一个搭建好的网站和七牛云账号 2.七牛云进入控制面板 3创建存储空间 4创建好了空间拿七牛给你了测试域名(但只可以使用30天)所以绑定自定义域名(这个必须是备案过的) 5.设置自定义域名(加速域名 ...

  7. (转)Android自定义属性时format选项( <attr format="reference" name="background" /> )

    Android自定义属性时format选项可以取用的值   1. reference:参考某一资源ID. (1)属性定义: [html] view plaincopyprint? <declar ...

  8. Zend Studio 下载

    http://www.52pojie.cn/thread-507229-1-1.html THINKPHP :  http://www.cnblogs.com/TigerYangWTH/p/57250 ...

  9. JVM内存管理之JAVA语言的内存管理概述

    引言 内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑.不过世界上不存在十全十美的好事,在带来了便利的同时,也因此引入了很多令人抓 ...

  10. JAVA多线程三种实现方式

    JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...