用ggsashimi做可變剪下的視覺化

2021-10-04 21:07:23 字數 2466 閱讀 4443

可變剪下的視覺化軟體ggsashimi用r和python來實現, python準備好資料, 利用r畫圖。簡單好用,但也折騰了半天,現在把完成本次視覺化的步驟詳細的記錄一下,必備以後用。

1. 準備視覺化的基因注釋檔案,基因的注釋檔案是gtf格式,每個檔案包含了這個基因的不同型別的可變剪下,可以從整個基因組注釋檔案中提取出來,但需要注意的是有時候注釋檔案中的染色體用,1,2,3等數字代替,而bam檔案中的染色體是用 chr1,chr2等表示,切記要一致。**如下:

#比如我要注釋的基因是at1g73660, 用轉錄本的正則來搜尋

grep -p "at1g73660\.\d+" arabidopsis_thaliana.tair10.46.gtf > at1g73660.gtf

awk -f"\t" 'begin $1="chr"$1' at1g73660_1.gtf > at1g73660_new.gtf #轉錄本的染色體的編號要和基因組的一致,基因組是chr1, 轉錄本也用chr1,新找的到轉錄本每行前面加chr

2. 準備bam檔案,可將進行視覺化的樣品的bam檔案放到乙個資料夾中,然後將每個bam的資訊寫到乙個tsv(文字檔案中),第一列是bam檔案等編號,第二列是存放這些檔案的位址,可以是相對路徑也可以是絕對路徑,第三列是每個bam檔案等屬性,比如是對照組還是處理組,那一種處理等資訊。這一列主要用來對樣品進行分類並且用不同的顏色表示。有幾類就在下邊的做圖引數 -c color_factor 寫幾。下邊是我整理的tsv檔案的乙個舉例

bam1

a0_col_1.psorted.bam

a0_col

bam2

a0_col_2.psorted.bam

a0_col

bam3

a200_col_1.psorted.bam

a200_col

bam4

a200_col_2.psorted.bam

a200_col

3.對樣品進行畫圖,採用ggsashimi的指令碼,需要畫那幾個可變剪下的外顯子需要將region寫出來,也可以畫整個基因的所有外顯子的可變剪下情況。**如下:

## example #1. overlay, intron shrinkage, gene annotation, pdf output, custom size and colors

sashimi-plot.py -b input_bam.tsv -c chr1:27693102-27693738 -g at1g73660_new.gtf -m 10 -c 3 -o 3 --shrink --alpha 0.25 --base-size=20 --ann-height=4 --height=3 --width=18 -p palette.txt -o at1g73660_2

## example #2. median coverage and number of reads supporting inclusion and exclusion, no gene annotation, tiff output (350 ppi), custom size, default colors

sashimi-plot.py -b input_bam.tsv -c chr1:27693102-27693738 -m 10 -c 3 -o 3 -a median --alpha 1 -f tiff -r 350 --base-size=16 --height=3 --width=18

4. 效果如下:

5.如果要批量操作,比如很多基因,要在同樣的幾個bam檔案中畫,按照如下**實現。

#準備乙個包含基因,區域的檔案,兩列,第一列是基因名字,第二列是染色體位置,chr1:start-end 格式 

#準備基因組的gtf檔案,從而提取每個基因的不同轉錄本

#需要注意grep命令, 在mac中是 -e, 而在linux 中是-p。不知道是為什麼。

cut -f1 gene_region.txt | while read id; do grep -e $id\\.\\d+ arabidopsis_thaliana.tair10.46.gtf | awk -f"\t" 'begin $1="chr"$1' > $id.gtf; done

#準備好每個基因的gtf檔案就可以批量做圖了

cat gene_region.txt | while read gene region; do ~/ggsashimi/sashimi-plot.py -b input_bam.tsv -c $region -g $gene.gtf -m 10 -c 3 -o 3 --shrink --alpha 0.25 --base-size=20 --ann-height=4 --height=3 --width=18 -p palette.txt -o $gene; done

可變值做函式引數的問題

1.用乙個可變的值作為預設值 下面是在函式裡使用預設值時會碰到的另一種相同問題 def print now now time.time print now 跟前面一樣,time.time 的值是可變的,那麼它只會在函式定義的時候計算,所以無論呼叫多少次,都會返回相同的時間 這裡輸出的時間是程式被py...

用VB做黑客

一 所用控制項 在程式中將使用winsock控制項。winsock控制項是乙個activex控制項,使用tcp協議或udp協議連線到遠端計算機上並與之交換資料。和定時器控制項一樣,winsock控制項在執行時是不可見的。winsock的工作原理是 客戶端向伺服器端發出連線請求,伺服器端則不停地監聽客...

用graphite diamond做監控

開局先貼兩個文章,值得一讀 很讚的blog 另一篇介紹graphite的文章 無論是什麼系統,只要上線,就需要運維,這時候很想看一些監控的圖表,graphite就很方便的實現了這個需求。而graphite採用metrics的方式,又有很多其他的tool為他做支援,所監控的不僅僅是機器的一些東西,你可...