GPU版scanpy (rapids)實(shí)踐 | 大型單細(xì)胞數(shù)據(jù)分析利器

作者:ahworld
鏈接GPU版scanpy (rapids)實(shí)踐 | 大型單細(xì)胞數(shù)據(jù)分析利器
來源:微信公眾號(hào)-seqyuan
著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者。

隨著10x Genomics等商業(yè)化單細(xì)胞建庫平臺(tái)的快速推廣,單細(xì)胞轉(zhuǎn)錄組分析為更多的研究者使用,現(xiàn)在一個(gè)項(xiàng)目,不管是原創(chuàng)性自己測(cè)的,還是從海量公共數(shù)據(jù)搜集的研究,都要面臨分析巨大的單細(xì)胞數(shù)據(jù),例如2021年初張澤民老師團(tuán)隊(duì)發(fā)表在Cell的《COVID-19 immune features revealed by a large-scale singlecell transcriptome atlas》,文章分析了超過25T近150萬個(gè)細(xì)胞的單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)。

Ren X, Wen W, Fan X, et al. COVID-19 immune features revealed by a large-scale single cell transcriptome atlas[J]. Cell, 2021.

超大量的單細(xì)胞數(shù)據(jù)分析處理是一項(xiàng)極具挑戰(zhàn)性的工作,一般的單細(xì)胞數(shù)據(jù)處理軟件采用:

我們經(jīng)常調(diào)侃單細(xì)胞分析的精髓就是:不斷調(diào)整分群。調(diào)整分群的后果經(jīng)常是所有的后續(xù)依據(jù)分群的分析推倒重來。這樣的分析工作模式對(duì)于處理分析的計(jì)算集群是一個(gè)挑戰(zhàn),對(duì)于調(diào)整了N遍的分析工作者的心理更是一種挑戰(zhàn)。

如果涉及的樣本量和細(xì)胞數(shù)再大一些,不斷的調(diào)整分群重來更是一種折磨。我們自己做過的一個(gè)項(xiàng)目測(cè)了27個(gè)樣本的單細(xì)胞數(shù)據(jù),采用常用的軟件seuratscanpy時(shí)間消耗都很大,項(xiàng)目要求的時(shí)間也經(jīng)不起我們一遍遍的調(diào)整折騰。

所以迫切需要一種快速分析大型單細(xì)胞數(shù)據(jù)的解決方案。有幸了解到NVIDIA開發(fā)的RAPIDS能夠利用GPU在 11 分鐘內(nèi)分析一百萬個(gè)細(xì)胞

我自己在我們的GPU集群嘗試過Anaconda安裝相關(guān)的測(cè)試環(huán)境,但是cudf軟件包的安裝一直不成功。最近在NVIDIA的幫助下知道有RAPIDSdocker鏡像可以用。為了能夠幫助更多人解決大型單細(xì)胞數(shù)據(jù)分析的痛處,鑒于很多研究者對(duì)于docker類服務(wù)類操作不太熟悉,我把交互式測(cè)試環(huán)境相關(guān)的方案總結(jié)如下。

1. 下載測(cè)試數(shù)據(jù)

我的工作目錄是:/home/seqyuan/scanpy,在工作目錄依次執(zhí)行執(zhí)行以下命令

  1. git clone https://github.com/clara-parabricks/rapids-single-cell-examples.git
  2. cd rapids-single-cell-examples/ && mkdir data
  3. cd data/ && wget -c https://rapids-single-cell-examples.s3.us-east-2.amazonaws.com/1M_brain_cells_10X.sparse.h5ad

2. docker容器啟動(dòng)jupyter服務(wù)

參考1 rapids-single-cell-examples

參考2 rapids-single-cell-examples

docker run --gpus all --rm -it -p 8888:8888 -p 8787:8787 -p 8786:8786 -p 8889:8889 -v /home/seqyuan/scanpy:/workspace claraparabricks/single-cell-examples_rapids_cuda11.0:latest

如果是nohup執(zhí)行以上jupyter server命令,docker的-it參數(shù)要去掉,不然會(huì)報(bào)錯(cuò):the input device is not a TTY。

這一步驟請(qǐng)注意選擇對(duì)應(yīng)cuda版本的鏡像,查看cuda版本命令:cat /usr/local/cuda/version.txt

CUDA Version 11.0.182

鏡像倉庫地址:https://hub.docker.com/u/claraparabricks

3. 本地訪問遠(yuǎn)程集群的jupyter服務(wù)

3.1 設(shè)置ssh端口轉(zhuǎn)發(fā)

前面一步的docker jupyter服務(wù)我是在下面的集群上啟動(dòng):

  • Host: 60.211.88.180
  • Port: 8900
  • User: seqyuan

要想本地電腦訪問60.211.88.180這個(gè)遠(yuǎn)程節(jié)點(diǎn)的服務(wù),我們需要用到ssh端口轉(zhuǎn)發(fā)功能(也叫ssh隧道)。具體是這樣操作的:

打開本地電腦的命令行界面,不同系統(tǒng)命令行執(zhí)行工具

  • Macbook: 打開terminal
  • windows: 可以下載一個(gè)MobaXterm

在打開的命令行界面執(zhí)行

ssh -N -f -L localhost:9999:localhost:8889 -p 8900 seqyuan@60.211.88.180

3.2 網(wǎng)頁訪問jupyter服務(wù)

在本地瀏覽器地址欄輸入localhost:9999就能打開2.啟動(dòng)的docker jupyter服務(wù)了

4. 測(cè)試1M_brain_gpu_analysis_uvm.ipynb

打開notebook目錄里的1M_brain_gpu_analysis_uvm.ipynb,就能在線交互式做單細(xì)胞分析了,每一步驟的運(yùn)行時(shí)間都會(huì)像下面的示例一樣有記錄

1M的單細(xì)胞數(shù)據(jù)真的也可以交互式運(yùn)行,每一步驟運(yùn)行的時(shí)間都很短。CPU版本1M_brain_cpu_analysis.ipynb我也做了測(cè)試,但是在過濾細(xì)胞的步驟就運(yùn)行了很長(zhǎng)時(shí)間,所以就沒有測(cè)試完。

想了解每一步驟具體的時(shí)間消耗,可以下載查看我的jupyter notebook每一步驟的測(cè)試記錄:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容