「生信」同源基因分析——OrthoMCL

目录

  • 介绍
  • 环境配置
  • OrthoMCL使用
  • 统计聚类结果
  • 最后

介绍

  • OrthoMCL是一款直系同源基因聚类软件, 它不仅能得到多个物种共有的直系同源基因, 还能够分别获得不同物种特有基因家族的扩张情况
  • 关于直系同源和旁系同源的区别, 我就盗一张图简单解释吧


    直系/旁系关系图
  • 这个软件操作起来还算简单, 官方给的userguide还算详细, 但问题是, 运行前需要确认服务器存储等各种环境, 并且还要搞定mysql数据库, 下面就从环境配置到拿到结果一步一步说吧

环境配置

因为在之前服务器上已经配过一遍了, 怕出问题, 就不在那重配了. 上个月在华为云买了个1核1G的垃圾服务器, 今天就搞它了

OrthoMCL安装

Too simple, 只需要下载解压就可以了

  • 下载
$wget http://orthomcl.org/common/downloads/software/v2.0/orthomclSoftware-v2.0.9.tar.gz
  • 解压
$tar zxvf orthomclSoftware-v2.0.9.tar.gz
  • 添加到环境
$vi ~/.bash_profile
export PATH=/root/software/orthomclSoftware-v2.0.9/bin:$PATH

环境配置

软件运行需要UNIX系统, BLAST工具, Oracle/MySql数据库, Perl, MCL, 推荐硬件配置为4G内存+100G存储

  • BLAST安装
$conda install blast

强烈推荐使用Anaconda来下载并管理软件, 方便又条理
除了常用的BLASTN/P/X, 还有好多其他的啊, 以后用的时候再看吧...

  • MySql安装及配置
    在 orthomclSoftware-v2.0.9/doc/OrthoMCLEngine/Main/mysqlInstallGuide.txt 文件中有非常详细的介绍
  1. 安装
$yum install -y mysql-server mysql mysql-devel
$service mysqld start   #开启服务
$mysqladmin -u root password '******' #创建管理员账号和密码
$service mysqld restart
$mysql -u root -p  #检查登陆

大多数做生信的服务器都会安装此数据库, 大家只需找管理员创建个人账户即 可, 如果服务器之前没有安装, 非超级用户安装起来会麻烦一些

  1. 利用 OrthoMCL 提供的 config 文件进行编译
$mysql -u root -p   #登陆数据库超级用户
mysql> CREATE DATABASE orthomcl;   #创建database, 我的路径为 /var/lib/mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE VIEW,CREATE, INDEX, DROP on orthomcl.* TO orthomcl@localhost;  #新建跑OrthoMCL的账号
mysql> set password for orthomcl@localhost = password('yourpassword'); #设置密码
$cd /home/scr/02_software/orthomclSoftware-v2.0.9/doc/OrthoMCLEngine/Main
$cp mysql.cnf my.cnf
$vi my.cnf
#只留下以下部分, 其他全部注释掉
[client]
[mysqld]
myisam_sort_buffer_size=4G
myisam_max_sort_file_size=200G
read_buffer_size=2G
mysql --defaults-file=my.cnf -u orthomcl -p #登陆成功即配置完成
  • Perl
    没有perl的只能从安装perl开始了,
  1. 检查是否有 DBI and DBD::mysql modules 是否安装
$perl -MDBI -e 1
$perl -MDBD::mysql -e 1
  1. 哈哈, 让管理员给你装吧...
perl -MCPAN -e shell
cpan> o conf makepl_arg "mysql_config=/path_to_your_mysql_dir/bin/mysql_config"
cpan> install Data::Dumper
cpan> install DBI
cpan> force install DBD::mysql

卧槽, 华为云给配的这个系统还挺好的, perl的的两个modules竟然都有, 哈哈
安装说明文档(上面提到过)中也有 non-root 用户的安装说明, 很繁琐, 反正我也没用, 不说了, 嘻嘻~

  • MCL安装
$conda install mcl

OrthoMCL使用

整个过程需要13个步骤, 下面一一介绍

    1. Install and configure the relational database
      通过 Oracle/MySQLuserguide 进行安装和配置, 上面已经做了
    1. install mcl
      推荐的是去官网下载, 我是用conda装的
    1. install and configure OrthoMCL programs
      install就不说了, 这 userguide 是真的啰嗦, 能读到这部分, 还能不下载&解压软件??
$mkdir orthomcl  #创建自己的工作目录
$cd orthomcl
$cp ~/02_software/orthomclSoftware-v2.0.9/doc/OrthoMCLEngine/Main/orthomcl.config.template .out_01/00.orthomcl.config 
$vi 00.orthomcl.config
# this config assumes a mysql database named 'orthomcl'.  adjust according
# to your situation.
dbVendor=mysql
dbConnectString=dbi:mysql:orthomcl:localhost:3307 #设置你使用的数据库和hostname及其使用端口,默认是3307;
dbLogin=orthomcl
dbPassword=5201314
similarSequencesTable=SimilarSequences_new   #以下五项可以修改的
orthologTable=Ortholog_new 
inParalogTable=InParalog_new
coOrthologTable=CoOrtholog_new
interTaxonMatchView=InterTaxonMatch_new
percentMatchCutoff=50
evalueExponentCutoff=-5
oracleIndexTblSpc=NONE
    1. orthomclInstallSchema
#将上一步设置的模型提交给 database 
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclInstallSchema out_01/00.orthomcl.config out_01/install_tables.log
    1. orthomclAdjustFasta
#处理 fasta 格式文件
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclAdjustFasta pdel out_02/pdel.pep.fa 1  
# argv[1] 表示修改后每条序列的开头名称及文件名, argv[2]表示取原始序列名称的第一部分作为名称, 两个名称之间用'|'连接
# 将要做同源分析的物种逐个处理
    1. orthomclFilterFasta
#序列筛选(The filter is based on length and percent stop codons)
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclFilterFasta out_02 10 20
# argv[1] 为存放上一步结果的目录, argv[2] 表示蛋白序列最小允许长度, 官方建议为10, argv[3] 表示终止密码子最大比例, 官方建议为20
    1. All-v-all BLAST
#blastp, 最好时间, 可以拆分一下再比对
$makeblastdb -in out_03/goodProteins.fasta -dbtype prot -out out_04/orthomcl
$blastp -query out_03/goodProteins.fa -out out_04/orthomcl_blastp.out -db out_04/orthomcl -evalue 1e-5 -num_threads 5
    1. orthomclBlastParser
#处理比对结果, 用于提交给orthomcl database
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclBlastParser out_04/orthomcl_blastp.out out_02 >> out05/similarSequences.txt
#要根据结果文件大小修改my.cnf中参数, 太累了,不想写了, 参考mysqlConfigurationGuide.txt改吧
    1. orthomclLoadBlast
#提交给orthomcl database
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclLoadBlast out_01/00.orthomcl.config out_05/ilarSequences.txt
    1. orthomclPairs
#这一步是主要的计算环节, 用于找到配对的蛋白
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclPairs out_01/00.orthomcl.config out_07/orthomcl_pairs.log cleanup=no
#第二次运行时往往会出错, 要把之前的database删掉, 重跑上边的命令
    1. orthomclDumpPairsFiles
#获得ortholog, coortholog, inparalog文件
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclDumpPairsFiles out_01/00.orthomcl.config
    1. mcl
#马尔科夫模型聚类算法软件
$mcl mclInput --abc -I 1.5 -o out_09/mclOutput
    1. orthomclMclToGroups
#输出聚类之后的结果文件
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclMclToGroups all_ 1 < out_09/mclOutput > out10/all.txt

统计聚类结果

  • perl脚本
#!/usr/bin/perl -w
use strict;
#用于基因家族的鉴定

my $input=shift;
my $output=shift;
open (I,"<$input");
open (O,">$output");

my %family;
my %choose;
while (<I>){
    chomp;
    my $line=$_;
    my @inf=split/\s+/,$line;
    my $family=shift @inf;
    my %unique;
    foreach my $gene (@inf){
    $gene=~/^(\w+)\|/;
    my $species=$1;
    $family{$species}{$family}{$gene}++;
    $unique{$species}++;
    }
    my @species=keys %unique;
    my $speciesnumber=scalar(@species);
    if ($speciesnumber==1){
    $choose{$species[0]}{family}++;
    $choose{$species[0]}{genes}+=$unique{$species[0]};
    }

}

print O "species\tgene number\tfamily number\n";
my @species=keys %family;
foreach my $species (@species){
    my $totalgene=0;
    my @familyid=keys %{$family{$species}};
    my $familynumber=scalar(@familyid);
    foreach my $familyid (@familyid){
    my @genes=keys %{$family{$species}{$familyid}};
    my $genenumber=scalar(@genes);
    $totalgene+=$genenumber;
    }
    print O "$species\t$totalgene\t$familynumber\n";
}

print O "species\tuniuqe family\tunique genes\n";
my @unique=keys %choose;
foreach my $unique (@unique){
    print O "$unique\t$choose{$unique}{family}\t$choose{$unique}{genes}\n";
}
close I;
close O;
  • 结果展示
species gene number     family number
Rcom    20608   14905
Grai    31538   15160
Egra    28651   13941
Peup    47929   17082
Atha    23426   13234
Swil    30699   17085
Ptri    35629   21303
Vvin    19252   13044
pdel    34566   20516
species uniuqe family   unique genes
Grai    799     2576
Egra    842     3296
Rcom    792     2354
Atha    787     3024
Swil    223     512
Peup    375     975
Ptri    291     689
pdel    138     309
Vvin    665     1915

最后

  • 吐槽一下简书, 为什么不能生成目录????
  • 以后用遇到问题我再来补充
  • 有问题欢迎交流~
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容