scvelo代碼演示

官網(wǎng)的代碼演示差不多已經(jīng)能夠完成我的部分需求,但是有部分函數(shù)他介紹的不太完善疆导,我進(jìn)行了一些修改,并對(duì)腳本進(jìn)行了封裝葛躏。

step1 數(shù)據(jù)讀取

1.讀取loom文件澈段,將所有的loom文件都放在一個(gè)名為loom_file的文件夾里,并進(jìn)行讀取舰攒。

loom_data = {}
index_sample = []

# 遍歷 loom 文件列表
for file in loom_file:
    # 檢查文件是否為 loom 文件
    if '.loom' in file:
        # 打印文件路徑
        print(f"{loom_dir}/{file}")
        
        # 讀取 loom 文件數(shù)據(jù)
        loom_temp_data = sc.read(f"{loom_dir}/{file}", cache=True)
        
        # 確卑芨唬基因名稱(chēng)唯一
        loom_temp_data.var_names_make_unique()
        
        # 替換觀(guān)測(cè)名稱(chēng)中的特殊字符,這段不固定,需要根據(jù)你的loom里面的barcode和單細(xì)胞數(shù)據(jù)里面的barcode進(jìn)行統(tǒng)一
        loom_temp_data.obs_names = loom_temp_data.obs_names.str.replace("x", "")
        
        # 將樣本索引添加到列表中
        index_sample += list(loom_temp_data.obs_names)
        
        # 將數(shù)據(jù)存儲(chǔ)在 loom 數(shù)據(jù)字典中
        loom_data[file] = loom_temp_data

2.讀取rds或者h(yuǎn)5ad文件摩窃,rds文件需要提前轉(zhuǎn)換成h5ad文件

sc_data = scv.read('test.h5ad')
loom_data_merge = loom_data[list(loom_data.keys())[0]]

# 遍歷 loom_data 中的其他 loom 數(shù)據(jù)
for i in range(1, len(loom_data)):
    # 獲取下一個(gè) loom 數(shù)據(jù)
    next_data = loom_data[list(loom_data.keys())[i]]
    
    # 將當(dāng)前 loom 數(shù)據(jù)與下一個(gè) loom 數(shù)據(jù)連接
    loom_data_merge = loom_data_merge.concatenate(next_data)

loom_data_merge.obs_names=index_sample

adata = scv.utils.merge(sc_data, loom_data_merge)

3.讀取一下每個(gè)cluster的剪切和未剪切的比例,也可以觀(guān)察其他的信息兽叮,比如sample芬骄,group,celltype等

groupby='clusters'
output='scvelocity_outdir'
scv.pl.proportions(adata, groupby=groupby,
save=f'{output}/spliced_proportions_groupby_{groupby}.pdf')

step2 數(shù)據(jù)處理

1.數(shù)據(jù)預(yù)處理鹦聪,有些人可能之前已經(jīng)用scanpy做過(guò)一些數(shù)據(jù)的預(yù)處理账阻,會(huì)疑問(wèn)這一步是否還有必要進(jìn)行,作者給出的答案是就算之前已經(jīng)做過(guò)了預(yù)處理泽本,但是也沒(méi)有對(duì)spliced和unspliced進(jìn)行處理淘太,還是要運(yùn)行這一步,該函數(shù)會(huì)自動(dòng)判斷數(shù)據(jù)是否進(jìn)行過(guò)標(biāo)準(zhǔn)化规丽,如今已經(jīng)進(jìn)行了蒲牧,則不會(huì)再log處理。

scv.pp.filter_and_normalize(adata赌莺,min_shared_counts=20, n_top_genes=2000)

scv.pp.moments(adata, n_pcs=30, n_neighbors=30)

step3 速度計(jì)算

scvelo支持動(dòng)態(tài)模型和穩(wěn)態(tài)模型冰抢,使用動(dòng)態(tài)模型比穩(wěn)態(tài)模型能夠獲得更多的信息。
通過(guò)代表基因推算細(xì)胞的未來(lái)分化方向艘狭,并投影到低緯度上挎扰。

scv.tl.recover_dynamics(adata)
scv.tl.velocity(adata,vkey='dynamical_velocity', mode='dynamical',n_jobs=5)
scv.tl.velocity_graph(adata,vkey='dynamical_velocity',n_jobs=5)

step4 結(jié)果可視化

作者提供三種速度投影到umap的展示方式
細(xì)胞水平 scv.pl.velocity_embedding,
網(wǎng)格線(xiàn) scv.pl.velocity_embedding_grid
流線(xiàn)型 scv.pl.velocity_embedding_stream

#第一張
scv.pl.velocity_embedding_stream(adata, basis='umap',key='dynamical_velocity',
title=f'velocity_embedding_stream_groupby_{groupby}',color=groupby,
legend_fontsize=18, legend_loc='right margin',colorbar=TRUE,dpi=300,
save=f'{output}/velocity_embedding_stream_groupby{groupby}.svg')
image.png
#第二張
scv.pl.velocity_embedding(adata, basis='umap',vkey='dynamical_velocity',
title=f'velocity_embedding_groupby_{groupby}',
arrow_length=2,color=groupby,arrow_size=1, legend_loc='right margin',
dpi=300,save=f'{output}/velocity_embedding_groupby_{groupby}.svg')

image.png
#第三張
scv.pl.velocity_embedding_grid(adata, basis='umap',vkey='dynamical_velocity',
color=groupby,dpi=300,title=f'velocity_embedding_grid_groupby_{groupby}',
legend_loc='right margin',save=f'{output}/velocity_embedding_grid_groupby_{groupby}.pdf')
image.png

step5 latent time

    #計(jì)算潛伏時(shí)間
    scv.tl.recover_latent_time(adata, vkey='dynamical_velocity')
    scv.pl.scatter(adata,basis='umap',
                   color='latent_time',
                   color_map='gnuplot',
                   colorbar=True,
                   perc=[2, 98], #指定連續(xù)著色的百分比缓升。
                   rescale_color=[0,1], #顏色重新縮放的邊界鼓鲁,設(shè)置顏色條的最小/最大值。
                   dpi = 300,
                   save=f'{output}/latent_time_based_dynamical.pdf')
image.png
    #取出Top300的likelihood genes信息港谊,并保存骇吭,繪制熱圖
    TopGenes = adata.var['fit_likelihood'].sort_values(ascending=False).index[:300]
    df = pd.DataFrame(TopGenes)
    df=df.transpose()
    df.to_csv(f'{output}/Top300_likelihood_genes_data.csv')
   #繪制熱圖
    scv.pl.heatmap(adata, var_names=TopGenes, 
                   sortby='latent_time', 
                   col_color=groupby,#選擇作為注釋條的列名
                   n_convolve=100,#平滑曲線(xiàn)的核數(shù)
                   dpi=400, #這個(gè)圖片很大,不要保存太大的dpi
                   save = f'{output}/latent_time_heatmap_groupby_{groupby}.pdf')
image.png

step6 Top-likelihood genes

動(dòng)態(tài)模型中的高似然基因可以認(rèn)為是驅(qū)動(dòng)基因歧寺。這些基因展現(xiàn)出明顯的動(dòng)態(tài)特征燥狰,并且可以明顯的地被檢測(cè)到

scv.pl.scatter(adata2,
        basis=top_genes[:15],
        ncols=5,
        use_raw=False,
        frameon=False,
        legend_loc='right margin',
        save=f'{output}/Top-likelihood_genes_groupby_{groupby}.pdf')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市斜筐,隨后出現(xiàn)的幾起案子龙致,更是在濱河造成了極大的恐慌,老刑警劉巖顷链,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件目代,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嗤练,警方通過(guò)查閱死者的電腦和手機(jī)榛了,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)煞抬,“玉大人霜大,你說(shuō)我怎么就攤上這事「锎穑” “怎么了战坤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵曙强,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我途茫,道長(zhǎng)碟嘴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任慈省,我火速辦了婚禮臀防,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘边败。我一直安慰自己袱衷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布笑窜。 她就那樣靜靜地躺著致燥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪排截。 梳的紋絲不亂的頭發(fā)上嫌蚤,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音断傲,去河邊找鬼脱吱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛认罩,可吹牛的內(nèi)容都是我干的箱蝠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼垦垂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宦搬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起劫拗,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤间校,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后页慷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體憔足,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年酒繁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滓彰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡欲逃,死狀恐怖找蜜,靈堂內(nèi)的尸體忽然破棺而出饼暑,到底是詐尸還是另有隱情稳析,我是刑警寧澤洗做,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站彰居,受9級(jí)特大地震影響诚纸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陈惰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一畦徘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抬闯,春花似錦井辆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至睡榆,卻和暖如春萍肆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胀屿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工塘揣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宿崭。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓亲铡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親劳曹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奴愉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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