文章僅是記錄自己的學習使用患亿,有錯誤請指出岖赋,我立刻改正!
官方說明
https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)
更多說明:
http://www.reibang.com/p/f7971dbf5f85
http://www.reibang.com/p/d25fb05ada97
http://www.reibang.com/p/6f1a191a0c3a
https://zhuanlan.zhihu.com/p/353490154
https://www.omicsclass.com/article/481
https://github.com/tanghaibao/jcvi/issues/387
- 關于JCVI的使用,唐老師在github上已經有很詳細的介紹,網絡上也有很多教程栏渺。
- 這篇文章的主要是記錄自己在安裝和使用JCVI中產生的問題。
一锐涯、JCVI的安裝
- JCVI依賴的東西非常多磕诊,不管是直接編譯還是用conda都需要額外安裝別的軟件,建議還是用conda安裝纹腌。
- 我自己是在ubuntu的虛擬機上安裝成功了霎终,因此后面的演示也都是在虛擬機上。
conda create -y -c bioconda -n JCVI jcvi
conda activate JCVI
conda install -c bioconda bedtools
conda install seqkit emboss
conda install last
(一)Latex安裝
- 我在安裝Latex過程中遇到了各種問題升薯,后來還是主要參考了http://www.reibang.com/p/6f1a191a0c3a
- 用yum安裝Latex后莱褒,我在使用JCVI過程中發(fā)現字體缺少類型報錯,如果只是運行- JCVI查看共線性結果的話涎劈,這個報錯是沒什么影響的广凸。但如果是要可視化的話,還需要額外下載字體文件责语。用非root安裝的Latex沒有報錯炮障。
1目派、有root權限
# ubuntu
sudo apt-get install -y texlive texlive-latex-extra texlive-latex-recommended
# centos
sudo yum install -y texlive texlive-latex texlive-xetex texlive-collection-latexrecommended
2坤候、無root權限
詳見http://www.reibang.com/p/a5e9ca5886a4
二、JCVI的運行
- 從網上下載了Arabidopsis_halleri和Arabidopsis_lyrata兩種擬南芥的cdna序列和gff3文件
- fig1.png
(一)GFF3轉BED文件
python -m jcvi.formats.gff bed --type=mRNA --key=transcript_id \
Arabidopsis_halleri.Ahal2.2.44.gff3 > halleri_all.bed
python -m jcvi.formats.gff bed --type=mRNA --key=transcript_id \
Arabidopsis_lyrata.v.1.0.44.gff3 > lyrata_all.bed
#根據cDNA文件的序列名以及類型調整type和key
#轉換完成的bed文件和fasta文件中的序列名要保持一致
(二)去重復
python -m jcvi.formats.bed uniq halleri_all.bed
python -m jcvi.formats.bed uniq lyrata_all.bed
#僅保留最長且唯一序列
(三)提取CDS序列
seqkit grep -f <(cut -f 4 halleri_all.uniq.bed ) \
Arabidopsis_halleri.Ahal2.2.cdna.all.fa | seqkit seq -i > halleri.cds
seqkit grep -f <(cut -f 4 lyrata_all.uniq.bed ) \
Arabidopsis_lyrata.v.1.0.cdna.all.fa | seqkit seq -i > lyrata.cds
- 這樣就獲得了每個物種唯一的cds和對應的bed文件
- fig2.png
(四)提取共線信息
- 這里首先要把之前獲得的四個文件的名字改成以下形式企蹭,使JCVI能夠識別
- fig3.png
python -m jcvi.compara.catalog ortholog --no_strip_names --cscore=.99 halleri lyrata
#cscore=.99:這個選項能夠有效地篩選出best hit白筹,建議加上
#C分數截止點為0.99智末,有效過濾LAST命中,一直到包含互為最佳命中(RBH)徒河。得到含有1:1基因對的直系同源區(qū)域
#1:1的基因對不是絕對的
#no_strip_names:是必加的參數
#dbtype:序列類型nucl還是prot
主要產生四個結果文件以及一個PDF文件的點圖
-
fig4.png
1系馆、.last文件是原始的 LAST 輸出
2、.last.filtered是過濾的 LAST 輸出
3顽照、.anchors是種子同線性塊(高質量)
4由蘑、.lifted.anchors招募額外的錨來形成最終的同線性塊 - fig5.官方文檔的配圖.png
(五)測試同線性模式是否確實是1:1
python -m jcvi.compara.synteny depth --histogram halleri.lyrata.anchors
- fig6.png
三、染色體水平的局部同線性圖繪制
進行這一步需要準備三個文件
(一)生成一個.simple比文件更簡潔的.anchors文件
python -m jcvi.compara.synteny screen --minspan=30 --simple \
halleri.lyrata.anchors \
halleri.lyrata.anchors.new
#minspan:是規(guī)定syntenic region的總長度(i.e. 基因個數)最低閾值代兵,默認是0
#minsize:是規(guī)定syntenic region的anchors總個數(i.e.有共線性關系的基因對數目)最低閾值尼酿,默認是0
(二)seqids文件,記錄需要展示的染色體
- 這里由于我的示例數據中有一個不是染色體水平植影,因此我只選取了幾條contigs
FJVB01000001.1,FJVB01000002.1,FJVB01000003.1,FJVB01000004.1,FJVB01000005.1,FJVB01000006.1,FJVB01000007.1,FJVB01000008.1,FJVB01000009.1,FJVB01000010.1,FJVB01000015.1
1,2,3,4,5,6,7,8
(三)layout文件裳擎,記錄繪圖的各種信息
- y, xstart, xend:兩個物種染色體在x軸或y軸的位置如y軸的0.6,0.4思币,如果是0.5鹿响,0.5兩個物種的染色體就會重疊
- rotation:旋轉角度,0代表水平
y, xstart, xend, rotation, color, label, va, bed
.6, .1, .8, 0, , halleri, top, halleri.bed
.4, .1, .8, 0, , lyrata, top, lyrata.bed
edges
e, 0, 1, halleri.lyrata.anchors.simple
- 然后就是運行繪圖模塊
python -m jcvi.graphics.karyotype seqid.txt layout.txt
- fig7.png
四谷饿、基因水平的局部同線性圖
(一)計算基因級匹配的布局
python -m jcvi.compara.synteny mcscan \
halleri.bed \
halleri.lyrata.lifted.anchors \
--iter=1 -o halleri.lyrata.blocks
#iter=1表示我們正在提取與halleri每個區(qū)匹配的對應lyrata的唯一最佳block
#查看生成的.blocks文件惶我,它的第一列為halleri的區(qū)塊,第二為lyrata區(qū)塊
#如果選項--iter設置為 2博投,則halleri每個區(qū)將匹配對應lyrata的2個block指孤,依此類推
(二)合并bed文件
cat halleri.bed lyrata.bed > halleri_lyrata.bed
(三)選取可視化區(qū)域
head -150 halleri.lyrata.blocks > blocks
(四)準備layout2文件
# x, y, rotation, ha, va, color, ratio, label
0.5, 0.6, 0, leftalign, center, m, 1, halleri
0.5, 0.4, 0, rightalign, center, #fc8d62, 1, lyrata
# edges
e, 0, 1
(五)運行
python -m jcvi.graphics.synteny \
--glyphcolor=orientation \
--format=png --glyphstyle=box --shadestyle=line \
--font=Helvetica --style=darkgrid --diverge=RdYlBu \
--figsize=8x7 \
blocks \
halleri_lyrata.bed \
layout2.txt
- fig8.png