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

目錄

  • 介紹
  • 環(huán)境配置
  • OrthoMCL使用
  • 統(tǒng)計(jì)聚類結(jié)果
  • 最后

介紹

  • OrthoMCL是一款直系同源基因聚類軟件, 它不僅能得到多個(gè)物種共有的直系同源基因, 還能夠分別獲得不同物種特有基因家族的擴(kuò)張情況
  • 關(guān)于直系同源和旁系同源的區(qū)別, 我就盜一張圖簡(jiǎn)單解釋吧


    直系/旁系關(guān)系圖
  • 這個(gè)軟件操作起來(lái)還算簡(jiǎn)單, 官方給的userguide還算詳細(xì), 但問(wèn)題是, 運(yùn)行前需要確認(rèn)服務(wù)器存儲(chǔ)等各種環(huán)境, 并且還要搞定mysql數(shù)據(jù)庫(kù), 下面就從環(huán)境配置到拿到結(jié)果一步一步說(shuō)吧

環(huán)境配置

因?yàn)樵谥胺?wù)器上已經(jīng)配過(guò)一遍了, 怕出問(wèn)題, 就不在那重配了. 上個(gè)月在華為云買了個(gè)1核1G的垃圾服務(wù)器, 今天就搞它了

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
  • 添加到環(huán)境
$vi ~/.bash_profile
export PATH=/root/software/orthomclSoftware-v2.0.9/bin:$PATH

環(huán)境配置

軟件運(yùn)行需要UNIX系統(tǒng), BLAST工具, Oracle/MySql數(shù)據(jù)庫(kù), Perl, MCL, 推薦硬件配置為4G內(nèi)存+100G存儲(chǔ)

  • BLAST安裝
$conda install blast

強(qiáng)烈推薦使用Anaconda來(lái)下載并管理軟件, 方便又條理
除了常用的BLASTN/P/X, 還有好多其他的啊, 以后用的時(shí)候再看吧...

  • MySql安裝及配置
    在 orthomclSoftware-v2.0.9/doc/OrthoMCLEngine/Main/mysqlInstallGuide.txt 文件中有非常詳細(xì)的介紹
  1. 安裝
$yum install -y mysql-server mysql mysql-devel
$service mysqld start   #開啟服務(wù)
$mysqladmin -u root password '******' #創(chuàng)建管理員賬號(hào)和密碼
$service mysqld restart
$mysql -u root -p  #檢查登陸

大多數(shù)做生信的服務(wù)器都會(huì)安裝此數(shù)據(jù)庫(kù), 大家只需找管理員創(chuàng)建個(gè)人賬戶即 可, 如果服務(wù)器之前沒(méi)有安裝, 非超級(jí)用戶安裝起來(lái)會(huì)麻煩一些

  1. 利用 OrthoMCL 提供的 config 文件進(jìn)行編譯
$mysql -u root -p   #登陸數(shù)據(jù)庫(kù)超級(jí)用戶
mysql> CREATE DATABASE orthomcl;   #創(chuàng)建database, 我的路徑為 /var/lib/mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE VIEW,CREATE, INDEX, DROP on orthomcl.* TO orthomcl@localhost;  #新建跑OrthoMCL的賬號(hào)
mysql> set password for orthomcl@localhost = password('yourpassword'); #設(shè)置密碼
$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
    沒(méi)有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

臥槽, 華為云給配的這個(gè)系統(tǒng)還挺好的, perl的的兩個(gè)modules竟然都有, 哈哈
安裝說(shuō)明文檔(上面提到過(guò))中也有 non-root 用戶的安裝說(shuō)明, 很繁瑣, 反正我也沒(méi)用, 不說(shuō)了, 嘻嘻~

  • MCL安裝
$conda install mcl

OrthoMCL使用

整個(gè)過(guò)程需要13個(gè)步驟, 下面一一介紹

    1. Install and configure the relational database
      通過(guò) Oracle/MySQLuserguide 進(jìn)行安裝和配置, 上面已經(jīng)做了
    1. install mcl
      推薦的是去官網(wǎng)下載, 我是用conda裝的
    1. install and configure OrthoMCL programs
      install就不說(shuō)了, 這 userguide 是真的啰嗦, 能讀到這部分, 還能不下載&解壓軟件??
$mkdir orthomcl  #創(chuàng)建自己的工作目錄
$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 #設(shè)置你使用的數(shù)據(jù)庫(kù)和hostname及其使用端口,默認(rèn)是3307;
dbLogin=orthomcl
dbPassword=5201314
similarSequencesTable=SimilarSequences_new   #以下五項(xiàng)可以修改的
orthologTable=Ortholog_new 
inParalogTable=InParalog_new
coOrthologTable=CoOrtholog_new
interTaxonMatchView=InterTaxonMatch_new
percentMatchCutoff=50
evalueExponentCutoff=-5
oracleIndexTblSpc=NONE
    1. orthomclInstallSchema
#將上一步設(shè)置的模型提交給 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]表示取原始序列名稱的第一部分作為名稱, 兩個(gè)名稱之間用'|'連接
# 將要做同源分析的物種逐個(gè)處理
    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] 為存放上一步結(jié)果的目錄, argv[2] 表示蛋白序列最小允許長(zhǎng)度, 官方建議為10, argv[3] 表示終止密碼子最大比例, 官方建議為20
    1. All-v-all BLAST
#blastp, 最好時(shí)間, 可以拆分一下再比對(duì)
$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
#處理比對(duì)結(jié)果, 用于提交給orthomcl database
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclBlastParser out_04/orthomcl_blastp.out out_02 >> out05/similarSequences.txt
#要根據(jù)結(jié)果文件大小修改my.cnf中參數(shù), 太累了,不想寫了, 參考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
#這一步是主要的計(jì)算環(huán)節(jié), 用于找到配對(duì)的蛋白
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclPairs out_01/00.orthomcl.config out_07/orthomcl_pairs.log cleanup=no
#第二次運(yùn)行時(shí)往往會(huì)出錯(cuò), 要把之前的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
#輸出聚類之后的結(jié)果文件
$/home/scr/02_software/orthomclSoftware-v2.0.9/bin/orthomclMclToGroups all_ 1 < out_09/mclOutput > out10/all.txt

統(tǒng)計(jì)聚類結(jié)果

  • 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;
  • 結(jié)果展示
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

最后

  • 吐槽一下簡(jiǎn)書, 為什么不能生成目錄????
  • 以后用遇到問(wèn)題我再來(lái)補(bǔ)充
  • 有問(wèn)題歡迎交流~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末气忠,一起剝皮案震驚了整個(gè)濱河市娃弓,隨后出現(xiàn)的幾起案子荆永,更是在濱河造成了極大的恐慌沐兰,老刑警劉巖况既,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罪针,死亡現(xiàn)場(chǎng)離奇詭異啤它,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)工扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門徘钥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人定庵,你說(shuō)我怎么就攤上這事吏饿∽傥#” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵猪落,是天一觀的道長(zhǎng)贞远。 經(jīng)常有香客問(wèn)我,道長(zhǎng)笨忌,這世上最難降的妖魔是什么蓝仲? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮官疲,結(jié)果婚禮上袱结,老公的妹妹穿的比我還像新娘。我一直安慰自己途凫,他們只是感情好垢夹,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著维费,像睡著了一般果元。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犀盟,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天而晒,我揣著相機(jī)與錄音,去河邊找鬼阅畴。 笑死倡怎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贱枣。 我是一名探鬼主播监署,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冯事!你這毒婦竟也來(lái)了焦匈?” 一聲冷哼從身側(cè)響起血公,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昵仅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后累魔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摔笤,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年垦写,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吕世。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡互亮,死狀恐怖荞雏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情异吻,我是刑警寧澤尔艇,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布尔许,位于F島的核電站,受9級(jí)特大地震影響终娃,放射性物質(zhì)發(fā)生泄漏味廊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一棠耕、第九天 我趴在偏房一處隱蔽的房頂上張望余佛。 院中可真熱鬧,春花似錦窍荧、人聲如沸辉巡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)红氯。三九已至,卻和暖如春咕痛,著一層夾襖步出監(jiān)牢的瞬間痢甘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工茉贡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塞栅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓腔丧,卻偏偏與公主長(zhǎng)得像放椰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愉粤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容