單細(xì)胞學(xué)習(xí)教程-Python+R學(xué)前準(zhǔn)備

Scripts for "Current best-practices in single-cell RNA-seq: a tutorial"

該教程來(lái)自已發(fā)表文獻(xiàn):

M.D. Luecken, F.J. Theis, "Current best practices in single-cell RNA-seq analysis: a tutorial", Molecular Systems Biology 15(6) (2019): e8746

https://pubmed.ncbi.nlm.nih.gov/31217225/

這篇論文被推薦到F1000上渐白,因?yàn)樗谠擃I(lǐng)域具有特殊的意義毛仪。發(fā)表1年引用量91吏颖,還是很驚人的送朱。

image.png

其GitHub存儲(chǔ)庫(kù)包含以下內(nèi)容:

  • 生成論文中圖形的腳本
  • 補(bǔ)充論文手稿的案例研究
  • 補(bǔ)充材料中標(biāo)記基因檢測(cè)研究的代碼

該存儲(chǔ)庫(kù)的主要部分是案例研究唉擂,其中將手稿中建立的最佳實(shí)踐應(yīng)用于來(lái)自Haber et al., Nature 551 (2018) 等人的小鼠小腸上皮區(qū)數(shù)據(jù)集,可從GEO獲得GSE92332解虱。此案例分析可以在latest_notebook/old_releases/目錄下找到不同的版本粥帚。

plotting_scripts/ folder中的腳本復(fù)制手稿和補(bǔ)充材料中顯示的數(shù)字灰蛙。這些腳本包含解釋每個(gè)步驟的注釋。plotting_scripts/ folder中沒有相應(yīng)腳本的每個(gè)圖形都取自案例研究或標(biāo)記基因研究隔躲。

如果有疑問或問題摩梧,請(qǐng)通過在此存儲(chǔ)庫(kù)中發(fā)布問題來(lái)聯(lián)系作者。

如果本教程中的材料對(duì)您有用宣旱,請(qǐng)考慮引用上述出版物仅父。

環(huán)境設(shè)置

感謝 Leander Dony,可以在 here 獲取一個(gè)運(yùn)行這個(gè)sc-tutorial的 docker container 工作環(huán)境. 如果您想要通過conda或在docker container外手動(dòng)設(shè)置環(huán)境响鹃,請(qǐng)按照以下說明操作驾霜。

要運(yùn)行教程案例研究,必須安裝幾個(gè)軟件包买置。因?yàn)橥瑫r(shí)需要Rpython包粪糙,所以我們更喜歡使用conda環(huán)境。為了方便設(shè)置conda環(huán)境忿项,我們提供了sc_tutorial_environment.yml文件蓉冈,該文件包含所有conda和pip可安裝的依賴項(xiàng)。R依賴項(xiàng)(尚未作為conda包提供)必須安裝到環(huán)境中轩触。

要設(shè)置conda小環(huán)境寞酿,必須遵循以下說明。

  1. 使用 sc_tutorial_environment.yml 設(shè)置小環(huán)境.

    conda env create -f sc_tutorial_environment.yml
    
  2. 確保環(huán)境可以從R找到gsl庫(kù)脱柱。這可以通過設(shè)置CFLAGSLDFLAGS環(huán)境變量來(lái)完成(請(qǐng)參見https://bit.ly/2CjJsgn)伐弹。在這里,我們對(duì)它們進(jìn)行設(shè)置榨为,以便每次激活環(huán)境時(shí)都能正確設(shè)置它們惨好。

    cd YOUR_CONDA_ENV_DIRECTORY
    mkdir -p ./etc/conda/activate.d
    mkdir -p ./etc/conda/deactivate.d
    touch ./etc/conda/activate.d/env_vars.sh
    touch ./etc/conda/deactivate.d/env_vars.sh
    

    其中YOUR_CONDA_ENV_DIRECTORY可以通過運(yùn)行conda info--envs,使用您的CONDA環(huán)境名對(duì)應(yīng)的目錄(默認(rèn)為sc-tutorail)找到随闺。

    WHILE NOT IN THE ENVIRONMENT(!!!!) 打開./etc/conda/activate.d/env_vars.sh下的env_vars.sh文件日川,輸入如下內(nèi)容:

    #!/bin/sh
    
    CFLAGS_OLD=$CFLAGS
    export CFLAGS_OLD
    export CFLAGS="`gsl-config --cflags` ${CFLAGS_OLD}"
     
    LDFLAGS_OLD=$LDFLAGS
    export LDFLAGS_OLD
    export LDFLAGS="`gsl-config --libs` ${LDFLAGS_OLD}"
    

    然后修改 ./etc/conda/deactivate.d/env_vars.sh 文件:

    #!/bin/sh
     
    CFLAGS=$CFLAGS_OLD
    export CFLAGS
    unset CFLAGS_OLD
     
    LDFLAGS=$LDFLAGS_OLD
    export LDFLAGS
    unset LDFLAGS_OLD
    

    再次注意,這些文件應(yīng)該在不在環(huán)境中時(shí)寫入矩乐。否則龄句,您可能會(huì)覆蓋base環(huán)境中的CFLAGS和LDFLAGS環(huán)境變量!

  3. 如果您在sc_tutorial_environment.yml文件中更改了環(huán)境名稱散罕,請(qǐng)通過conda activate sc-tutorialconda activate ENV_NAME進(jìn)入環(huán)境分歇。

  4. 打開R并通過以下命令安裝依賴R包:

    install.packages(c('devtools', 'gam', 'RColorBrewer', 'BiocManager'))
    update.packages(ask=F)#這一指令會(huì)更新所有的R包,耗時(shí)較長(zhǎng)慎重使用
    BiocManager::install(c("scran","MAST","monocle","ComplexHeatmap","slingshot","clusterExperiment"))
    

這些步驟應(yīng)該設(shè)置一個(gè)環(huán)境欧漱,以便在Linux系統(tǒng)上使用教程工作流程執(zhí)行單細(xì)胞分析职抡。請(qǐng)注意,我們?cè)贛ac OS上遇到了Conda環(huán)境的問題硫椰。當(dāng)使用Mac OS時(shí)繁调,我們建議不帶conda安裝軟件包,使用單獨(dú)安裝的pythonR版本靶草√阋龋或者,您也可以嘗試使用基本conda環(huán)境并安裝所有軟件包奕翔,如conda_env_instructions_for_mac.txt文件中所述裕寨。在基礎(chǔ)環(huán)境中,R應(yīng)該可以找到相關(guān)的gsl庫(kù)派继,所以應(yīng)該不需要設(shè)置LDFLAGSCFLAGS宾袜。

還要注意的是,conda和pip并不總是和睦相處驾窟。Conda開發(fā)人員建議首先安裝所有conda包庆猫,然后在conda包不可用的地方安裝pip包。因此绅络,在環(huán)境中安裝更多的conda包可能會(huì)導(dǎo)致問題月培。因此,請(qǐng)啟動(dòng)一個(gè)新環(huán)境恩急,并首先重新安裝所有conda包杉畜。

如果您更喜歡手動(dòng)設(shè)置環(huán)境,本文檔末尾提供了所有軟件包要求的列表衷恭。

下載數(shù)據(jù)

如上所述此叠,案例研究的數(shù)據(jù)來(lái)自GSE92332。要運(yùn)行所示的案例研究随珠,您必須下載此數(shù)據(jù)并將其放入正確的文件夾中灭袁。解壓數(shù)據(jù)需要targunzip,這兩個(gè)命令應(yīng)該在大多數(shù)系統(tǒng)上都已可用牙丽。如果您要克隆GitHub存儲(chǔ)庫(kù)并將案例研究腳本放在latest_notebook/文件夾中简卧,則可以從存儲(chǔ)案例研究ipynb文件的位置通過以下命令完成此操作:

cd ../  #To get to the main github repo folder
mkdir -p data/Haber-et-al_mouse-intestinal-epithelium/
cd data/Haber-et-al_mouse-intestinal-epithelium/
wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE92nnn/GSE92332/suppl/GSE92332_RAW.tar
mkdir GSE92332_RAW
tar -C GSE92332_RAW -xvf GSE92332_RAW.tar
gunzip GSE92332_RAW/*_Regional_*

我們?cè)趎otebook末尾簡(jiǎn)要比較結(jié)果的帶注釋的數(shù)據(jù)集可以從相同的GEO訪問ID(GSE92332)獲得】韭可以使用以下命令獲染倜洹:

cd data/Haber-et-al_mouse-intestinal-epithelium/
wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE92nnn/GSE92332/suppl/GSE92332_Regional_UMIcounts.txt.gz
gunzip GSE92332_Regional_UMIcounts.txt.gz

Case study notes

我們已經(jīng)注意到,可視化构罗、降維和聚類(因此也包括所有下游結(jié)果)等結(jié)果在不同的系統(tǒng)上可能會(huì)給出略有不同的結(jié)果铜涉。這與后端使用的數(shù)字庫(kù)有關(guān)。因此遂唧,我們不能保證筆記本的重新運(yùn)行將生成完全相同的clusters結(jié)果芙代。

雖然所有的結(jié)果在質(zhì)量上都是相似的,但是在不同的系統(tǒng)之間盖彭,特別是對(duì)于干細(xì)胞纹烹、TA細(xì)胞和腸系祖細(xì)胞页滚,將細(xì)胞分配到簇中的情況可能會(huì)有所不同。為了顯示預(yù)期的多樣性铺呵,我們將縮小的案例研究筆記本上傳到alternative_clustering_results/文件夾裹驰。

請(qǐng)注意,使用參數(shù)svd_solver='arpack'運(yùn)行sc.pp.pca()會(huì)大大降低系統(tǒng)之間的可變性片挂,但是輸出并不完全相同幻林。

為其他數(shù)據(jù)集調(diào)整pipeline:

pipeline被設(shè)計(jì)成可以很容易地適應(yīng)新的數(shù)據(jù)集。但是音念,當(dāng)前工作流程的一般適用性有幾個(gè)限制沪饺。在為您自己的數(shù)據(jù)集調(diào)整pipeline時(shí),請(qǐng)考慮以下事項(xiàng):

1.rpy2不支持稀疏數(shù)據(jù)格式(Sparse data)闷愤,因此不支持任何集成的R命令整葡。可以使用以下代碼將數(shù)據(jù)集轉(zhuǎn)換為密集格式:adata.X = adata.X.toarray()讥脐。

2.案例研究假設(shè)輸入數(shù)據(jù)為UMIS單細(xì)胞protocol獲取的計(jì)數(shù)數(shù)據(jù)掘宪。如果輸入數(shù)據(jù)是全長(zhǎng)讀取數(shù)據(jù),則可以考慮用包括基因長(zhǎng)度歸一化(例如攘烛,TPM)的另一種方法來(lái)替換歸一化方法魏滚。

手動(dòng)安裝軟件包要求

運(yùn)行案例研究notebook的第一個(gè)版本需要以下軟件包。有關(guān)更多版本坟漱,請(qǐng)參閱latest_notebook/old_releases/文件夾中的README.md鼠次。

General:

  • Jupyter notebook
  • IRKernel
  • rpy2
  • R >= 3.4.3
  • Python >= 3.5

Python:

  • scanpy
  • numpy
  • scipy
  • pandas
  • seaborn
  • louvain>=0.6
  • python-igraph
  • gprofiler-official (from Case study notebook 1906 version)
  • python-gprofiler from Valentine Svensson's github (vals/python-gprofiler)
    • only needed for notebooks before version 1906
  • ComBat python implementation from Maren Buettner's github (mbuttner/maren_codes/combat.py)
    • only needed for scanpy versions before 1.3.8 which don't include sc.pp.combat()

R:

  • scater
  • scran
  • MAST
  • gam
  • slingshot (change DESCRIPTION file for R version 3.4.3)
  • monocle 2
  • limma
  • ComplexHeatmap
  • RColorBrewer
  • clusterExperiment
  • ggplot2
  • IRkernel

手動(dòng)安裝中可能的錯(cuò)誤來(lái)源:

For R 3.4.3:

When using Slingshot in R 3.4.3, you must pull a local copy of slingshot via the github repository and change the DESCRIPTION file to say R>=3.4.3 instead of R>=3.5.0.

For R >= 3.5 and bioconductor >= 3.7:

The clusterExperiment version that comes for bioconductor 3.7 has slightly changed naming convention. clusterExperiment() is now called ClusterExperiment(). The latest version of the notebook includes this change, but when using the original notebook, please note that this may throw an error.

For rpy2 < 3.0.0:

Pandas 0.24.0 is not compatible with rpy2 < 3.0.0. When using old versions of rpy2, please downgrade pandas to 0.23.X. Please also note that Pandas 0.24.0 requires anndata version 0.6.18 and scanpy version > 1.37.0.

For enrichment analysis with g:profiler:

Ensure that the correct g:profiler package is used for the notebook. Notebooks until 1904 use python-gprofiler from valentine svensson's github, and Notebooks from 1906 use the gprofiler-official package from the g:profiler team.

If not R packages can be found:

Ensure that IRkernel has linked the correct version of R with your jupyter notebook. Check instructions at https://github.com/IRkernel/IRkernel.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芋齿,隨后出現(xiàn)的幾起案子腥寇,更是在濱河造成了極大的恐慌,老刑警劉巖觅捆,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赦役,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡栅炒,警方通過查閱死者的電腦和手機(jī)掂摔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赢赊,“玉大人乙漓,你說我怎么就攤上這事∈鸵疲” “怎么了叭披?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)玩讳。 經(jīng)常有香客問我涩蜘,道長(zhǎng)嚼贡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任同诫,我火速辦了婚禮编曼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剩辟。我一直安慰自己,他們只是感情好往扔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布贩猎。 她就那樣靜靜地躺著,像睡著了一般萍膛。 火紅的嫁衣襯著肌膚如雪吭服。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天蝗罗,我揣著相機(jī)與錄音艇棕,去河邊找鬼。 笑死串塑,一個(gè)胖子當(dāng)著我的面吹牛沼琉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桩匪,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼打瘪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了傻昙?” 一聲冷哼從身側(cè)響起闺骚,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妆档,沒想到半個(gè)月后僻爽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贾惦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年胸梆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片须板。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乳绕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逼纸,到底是詐尸還是另有隱情洋措,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布杰刽,位于F島的核電站菠发,受9級(jí)特大地震影響王滤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滓鸠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一雁乡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糜俗,春花似錦踱稍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至楔敌,卻和暖如春啤挎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卵凑。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工庆聘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勺卢。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓伙判,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親黑忱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澳腹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345