close
寫在前面
王驍老鐵的稿件,重點介紹了 WGCNAshiny 的具體使用和參數注意,非常難得。這是一篇萬字長文,建議仔細品讀。在品讀之前,我補充一小部分插件的安裝和使用。PS:推薦關注王驍老鐵的公眾號《Shawn Learn Bioinfo》;這個推文要火,大夥最好先轉發朋友圈再看.....
如果不太了解如何使用插件,那麼可以看看這部分。使用 WGCNAshiny 插件,大體需要完成幾個步驟,屬於「必然會安裝成功」的部分。
1.安裝 Rserver插件
直接到 TBtools大型插件鏈接收錄頁面下載 Rsever.plugin 插件
https://www.jianshu.com/p/5c5b839ae3b3

打開 TBtools,安裝 Rserver 插件。

2. 安裝 R Plugin Installation Helper 插件
可以參考推文《解決方案!TBtools R Plugin 安裝~ 終極奧義》。
3. 安裝WGCNAshiny.MetaPackage
使用 R Plugin Installation Helper 插件,可以安裝各類 MetaPackage,完美解決 R 插件依賴的問題。這樣所有人都可以開展差異表達分析和共表達網絡分析等等操作。具體 WGCNAshiny 的MetaPackage 下載鏈接可在其中查找
https://www.jianshu.com/p/5c5b839ae3b3

4. 安裝 WGCNAshiny 插件

直接從高速插件商店安裝即可

安裝後,重啟TBtools,打開點擊 Start 即可開始分析

「文中所有鏈接🔗請點擊下方閱讀原文跳轉」

原本以為畢業了就起飛了,沒想到,喵的比沒畢業還累... 又鴿了仨月,這個小插件到時完善了不少,但是上次承諾的視頻還是沒有錄。原因不說了,準備手打!還是寫個教程為好。錄視頻,怕是要不知何年何月了...

對比大佬的下班時間發現,忙從來不是藉口,懶才是....

本文只是對WGCNAShiny軟件使用的介紹,關於WGCNA原理建議閱讀文獻,簡書知乎B站各位大佬也有講解,我自己並沒有把握講清楚。下面放一個生信技能樹的原理講解,推薦大家花點時間看一下。有能力的跟着操作一遍加深理解。關於結果怎麼看,這個聽別人講聽不明白,多看幾篇文獻就搞清楚了。

生信技能樹-WGCNA原理與實踐part1

生信技能樹-WGCNA原理與實踐part2

elife-WGCNA經典文獻

篇幅太長 就不扯淡了

怎麼安裝

「方法一:」 對於熟練使用R和Rstudio的老鐵們,而且遇見報錯能通過google,Stack Overflow等途徑自己搞定的同學,直接去我的github倉庫 克隆到本地或者直接下載WGCNAbyClick.v1.R腳本。然後用Rstudio打開,點擊下圖中位置的RunApp直接運行,如果你運氣好,直接就裝上了,然後彈出網頁就可以直接做了,但大概率你運氣會不太好,底下一堆報錯,然後就靠你自己的本事debug把沒有裝上的包裝上了,我的鍋,為了讓這個shinyapp更好用,調了一堆奇葩包。😂 「「友情提示」:務必將你的R升級到4.1!!!!」

「方法二:」 如果你不想折騰,就用TBtools插件安裝吧!!CJ大佬為了幫大家搞定包安裝專門開發了R Plugin Installer Helper插件!由於我太菜了,😭目前WGCNAShiny的meta-package木有搞出來,不過很快會向大家見面。使用方法:「生信藥丸 解決方案!TBtools R Plugin 安裝~ 終極奧義」

更新內容

和之前的OneStepWGCNA插件相比確實改變了很多,開放和更多的參數,也使大家體驗一下調參俠的日常,WGCNAshiny推出後我考慮要下架OneStepWGCNA因為他不夠「智能」,很可能一些數據格式或者設置的錯誤會導致錯誤的結果。

☆☆☆☆ 保留了極低表達量篩選的步驟,這個根據WGCNA-FAQ(對於所有想做WGCNA分析的同學,不管你會不會敲代碼,這個真的推薦所有人看一遍,即使你不看WGCNA的原文,WGCNA tutorials,這個還是非常值得看一下的。因為你頭頂很多問號這裡面都給你掰扯明白了)
☆ 增加了數據變異程度篩選方法var,可以選擇通過絕對中位差(MAD)篩還是變異係數(Var)篩。
☆ 增加了原始數據格式防呆,比如有NA啦,有非數字形式的字符串啦。
☆☆☆☆☆ 增加了sft的自由選擇,這次直接把軟閾值的選擇權利完全放給你,可以通過軟閾值計算結果自由選擇,而不是在選擇不到合適的軟閾值時強行使用經驗的軟閾值。
☆☆☆☆☆ 增加了當前軟閾值下網絡的non-scale檢測。
☆☆☆☆☆☆ 放開了MaxBlockSize參數,這樣就可以擺脫電腦內存大小的限制,可以加入更多的基因進行WGCNA分析,不過如果硬件條件允許的情況下儘量把所有的基因放到一個block計算。
☆☆☆☆☆☆ 放開了minModuleSize和mergeCutHeight參數, 這樣你就可以靈活的調整模塊大小和模塊數量。
☆☆☆☆☆☆ 用ggplot重畫了WGCNA主要的圖,修正了上一個shinyapp版本的一個錯誤。
☆☆☆☆☆☆ 用ComplexHeatmap畫「module-trait」圖,放開了顏色選擇,可以根據自己的喜好調整顏色,畢竟顏值即正義。
☆☆☆☆☆☆ 用updateSelectInput升級了之前手動填寫module,trait的智障操作,現在可以根據module-trait的結果自動升級後續感興趣模塊性狀和模塊名字,直接選擇就好。
☆☆☆☆☆☆☆☆☆☆☆☆ 完善了WGCNA後續分析板塊:hubgene篩選和cytoscape網絡圖數據導出。
準備工作

「首先建議所有用戶折騰下這個:」BLAS加速矩陣運算簡單總結就是windows先去這裡下載文件,然後把這些文件複製到你R路徑下比如

C:\ProgramFiles\R\R-4.1\bin\x64

文件夾中,覆蓋掉原來的文件。mac用戶根據我博客那篇文章操作就好,linux用戶直接搜索linux怎麼裝openblas,跟着操作就ok啦。如果不替換BLAS,你會發現WGCNA跑得非常非常慢!因為系統自帶的BLAS矩陣處理速度太拉胯了.....

「其次,基因名稱最好不要是數字,材料名稱也不要以數字開頭,材料名稱中有'-'號,轉換成下劃線'_'或者'.'同時最好不要有各種奇葩符合,中文空格等。」 有幾個老鐵發郵件問我老跑不出來,結果發現是這些問題,建議你們自己做的時候發現geneid是純數字的時候,自己新建一個excel做一個類似這個的表,然後用後面符合規則的基因名字和樣品名稱替代你上傳的表達矩陣中的geneid和samplename。具體為啥有空再講。

「界面上的所有步驟請一步一步來,不要直接跳過步驟做後面,因為後面所有的步驟都是基於前面所有結果才能運行的」

「我自己承認這個shinyapp的操作可能有點反人類,畢竟不是商業軟件會考慮到易用性,是根據我的思維模式來的,所以這裡也沒辦法,只能你適應我,做不到我適應你」

使用方法第一步 數據上傳和數據清洗

手頭沒有數據的同學可以從這裡下載demo數據遵循圖中7個步驟,每個步驟都有默認的參數,如果你不想改動可以不動他,需要再改動。

點擊升級信息後會出現一個小進度條,顯示進度,「如果屏幕變灰了說明報錯了」 可能的原因就是你輸入的文件有問題,或者想保留的基因數大於你總基因數之類的。

看到進化樹後,恭喜你,「你的數據清洗步驟完成了!」,可以點擊下面的download下載nwk文件,這個文件就可以用figtree,itol等工具美化了,而且這個樹下面有個小三角,可以隨意拖動改變圖的大小。如果在這個樹中你發下個別離群樣本,就是幾個樣品和其他樣品分的很開,比如第二個圖中的F2_221,就用excel打開你的表達量矩陣,對應刪掉這個樣品所在的列,重新上傳。同樣在trait表中也刪掉這個樣品。如果要重新上傳表達量數據,刷新一下網頁就好了,運行開後如果遇見也沒變灰,說明報錯了,此後後面的步驟就不能運行了,這時候刷新下網頁也能恢復到初始狀態,不過你就要從頭開始了。

接下來就可以點擊導航欄的SFT and Power Select進入下一步軟閾值篩選步驟了!

軟閾值篩選和網絡無標度鑑定

選擇合適的軟閾值(sft 或者 power)對於構建無標度網絡來說至關重要,往往無法篩選出合適軟閾值的原因和你輸入的表達矩陣直接相關,最常見的原因就是樣品異質性,比如說不同組織(器官),差別很大的發育時期等,或者有明顯批次效應的樣品,比如網上down的不同測序平台,不同文獻來源的RNAseq數據合併一起。具體解決方案還是看WGCNA-FAQ 我說的沒作者明白....

選擇SFT and Power Select標籤頁(當時腦抽隨便起的名字懶得改了),就是軟閾值篩選的意思,我設定的默認R2是0.8,不過有篇中文文獻(忘記哪個了,具體大家可以知網搜一下)說R2到0.85時對應的軟閾值構建的網絡接近無標度網絡,但是power值越大,假陽性越高。所以儘量選擇第一次到達0.8時對應的power值。選擇好R2的cutoff後點擊start analysis就可以了,這裡的R2閾值指的是讓軟件判斷當R2等於xx是對應的power是多少。如果你選擇0.85,執行這個步驟後就會生成一個第一次R2 ≥ 0.8時對應的power值。具體看下圖2

該圖就是點擊start analysis運行完成之後的界面,會返回一個圖,左邊是power和R2的關係,右邊是power和平均連連接度(Mean connectivity)之間的關係,R2越接近1,平均連接度越接近0,網絡越接近無標度。這次結果我設定的R2閾值是0.8,對應的Power值是5,屏幕中會出現

ThepowerrecommendedbyWGCNAis:5

,說明在power等於5時,R2≥0.8,但是我們發下你當Power等於7時R2可以達到0.9,這是如果我們想選擇power = 7隻需要把Power type裡面改成customized,然後滑動下面滑塊到7就可以了,這一步是為後續scale free estimate設計的。同樣在set fig size之後可以下載到pdf格式的圖片,win下網頁中預覽的字體可能有點丑,渲染問題,但是下載下來就沒問題了。圖片的大小同樣可以通過拖動三角形調節。

第三部分是對你選擇的power所構建的網絡進行無標度拓撲結構檢測的,看在這個power值下構建的網絡是否符合無標度網絡。我們首先對R2=0.8對應的power = 5進行檢測這時Power Type選擇Recommended系統使用剛才自動生成的power值5,具體無標度網絡(無尺度網絡)和隨機網絡的區別我推薦生信技能樹的視頻中有講解,當然你數學學的好也能理解(數學學渣擼過)..

這裡你可以測試所有Power值構成的網絡,但是不推薦你這麼玩,因為每次都要重新構建網絡,這個速度還是很慢的,一般第一個圖R2最高能到多少你就檢測對應的power,但是不建議選擇太大的power,會造成假陽性,「這個一般是在實在選擇不到合適的軟閾值,最高只有0.5,0.6之類的,不過這種數據一般也不會構成無標度網絡,後續再去做共表達分析意義不是很大,但是這時你可以把WGCNA簡單的當做類似Hclust或者K-means來用,直到表達模塊分類之前都是可以用的,看你提供的基因到底可以分為多少個module,這些module內的基因是具有相似表達模式的。而後續的hubgene,調控網絡就別做了,意義不大」

「檢測這一步必須進行,因為我寫的腦殘設定後續使用的power就是最後一次檢測時你用的power,如果你不檢測,沒有power值。後續會報錯。」

這裡我們用R2第一次大於0.9時對應的power值7進行後續測試。

構建模塊

點擊最上面module-net標籤進入模塊構建步驟。這裡仍舊使用一步法構建模塊,而且釋放了3個關鍵參數用來調整模塊數量,並且在CJ大佬的指點下開放了MaxBlockSize參數來使低內存的PC也能跑上萬+基因。「請按照下表填寫這裡的數字,這裡只能填整數!!!!!」 具體我也沒有測試過,可能會報內存溢出的錯誤,報錯了就吧數字調小點再來億遍!(鬼知道我測試這玩意重跑了多少回...)「tips:」 如果你的pc內存足夠大,儘量把所有你選擇做WGCNA的基因都放到一個block中。比如你之前選擇了2w個做,你的pc內存又大於等於16G,這裡就選2w,如果內存溢出了就搞個1.5w也行。

內存大小數字0-4GB5000-80004-8GB8000-120008-16GB12000-2000016-32GB20000-40000> 32GB土豪你好,請隨意

整體步驟就是確定最小模塊內基因數,確定剪枝高度(推薦不用動這倆參數)然後根據電腦內存大小選擇好blocksize之後點擊運行。如果模塊數量太多了,可以適當提高前面兩個參數。比如這次結果產生了很多模塊,我們嘗試把min module size 提高到50,把剪枝高度提高到0.35

結果顯示模塊總數少了,min Module Size的變大必然導致grey模塊基因數量的增加。同時模塊數量的變少可能會導致module-trait相關性變低。因為這種剪枝高度的提高可能會導致模塊劃分更加粗放。

對比上面圖顯然模塊數量變少了。第二個選項卡是鄰接基因構建的相關性熱圖

「第三個選項卡是一個很重要的結果,模塊-基因的對應關係表」 可以下載下來,同樣是點擊download下載。

module構建完畢之後,就是和性狀,材料分類,或者其他你感興趣的數據做相關性分析。

模塊-表型相關性分析

具體表型數據的格式參考這個鏈接 由於代碼里默認之後兩列的表型數據表會轉換成分類的0,1矩陣,所以想只和一個性狀做關聯的我寫的這個shiny做不了.... 後續可能會改把。

這裡可以直接跑,也可以自己選擇顏色後再跑

我們發現demo數據中Luminal和yellow模塊成極顯著負相關和blue模塊成極顯著正相關。所以後續會分析這個性狀和對應模塊的關係。

第二個選項卡是具體的畫圖數據,就是鄰接基因和對應性狀之間的相關性及顯著性值。第三個選項卡非常重要,裡面是基因的模塊內連接度(kME),我們單純從module角度出發kME越高,說明該基因在模塊內越處於中心位置,可以被選為hubgene。如果你的module-trait結果不理想,也沒必要非得死磕,換一個角度對所有的module做富集分析,看這些模塊哪個可以解釋你的科學問題,對應的根據kME篩選出hubgene(排名前10,或者 > 0.9),然後圍繞hubgene構建該模塊的共表達網絡。這時你把這個表下載下來,選擇對應模塊排序找出kME排名靠前的基因擬定為hubgene即可。

我們從module-trait找到感興趣的模塊和性狀後可以進行後續interested module步驟

感興趣模塊信息挖掘

首先是看基因顯著性(GS gene significance)和模塊特徵值(MM module membership)之間的關係,如何理解基因顯著性,我們在做module-trait時起始是用的該模塊降維後的第一主成分或者叫鄰接基因與表型做的相關,但是這個模塊中有很多基因,鄰接基因和表型相關不一定代表模塊中所有基因都和表型相關,所以為了驗證模塊內基因與表型相關性,直接去做這個基因與表型的相關得到基因顯著性(GS),同時我們看這個基因和鄰接基因之間的關係也就是該基因模塊內連接度(kME)來反映該基因的模塊特徵值(MM),當該基因既在模塊中處於網絡中心地位,又顯著與性狀相關,那麼該基因極有可能是控制該性狀的hubgene。操作很簡單,beta版本的用戶可能知道這裡之前需要純手動輸入,現在不需要了,只要前面module-trait的結果作完,這裡相應的選項會更新。只需要點擊選擇即可。

然後我們會看模塊內所有基因的表達模式熱圖,而下部柱狀圖表示鄰接基因的表達模式。

下圖表示你選擇的表型和其他所有模塊的GS vs MM關係

我們對感興趣模塊探索完就可以進行下一步hubgene篩選過程了。

hubgene篩選和共表達網絡關係輸出

我們點擊hubgene選項卡同樣是選擇好trait和module點擊開始分析

第一個選項卡給的hubgene 一般不推薦.. 這個是同過WGCNA作者的一個function實現的,但是往往感覺GS和MM都很低...

第二個選項卡是基於GS和MM篩選的 如果你的module-trait中出現了R > 0.8的模塊甚至0.9的模塊,這時可以適當的把閾值卡嚴格一點,比如

|GS|>0.85&|MM|>0.9

來篩選hubgene,但是如果像本次demo數據一樣,只有0.7左右或者更低,卡如此嚴格的閾值很可能篩選不到hubgene,這樣就可以適當降低閾值。這裡的閾值並沒有一個金標準,當然越嚴格說明設計越合理,參數越準確。如果發現這種情況,可以返回module-net步驟,降低剪枝高度,縮小最小模塊大小參數,讓模塊劃分更加精細,再試一下。

其實和你做濕實驗一樣,對於不同的材料,不同的儀器要靈活調整配方,儀器參數,如果老用default,很可能做不出來,這也是調參俠的日常,我們的目的是解決生物學問題,而不是死磕所謂的金標準。當然調整是否合理,這需要大量的實踐和你對WGCNA背後算法的理解深度,這個無捷徑可走,所以真的要做好WGCNA分析還是需要下功夫讀點文獻,多做幾次嘗試的。

最後一部分就是輸出共表達網絡關係,用cytoscape作圖了

操作也很簡單,選一個閾值(建議不要大於0.1)點擊開始下面就會出現edgefile 和nodefile的預覽,具體權重閾值怎麼選,選多少,我的建議是你自己選選看,default是0.02. 這個也沒有標準。預覽表出來後向下拉就可以下載nodefile 和edgefile了,然後就是cytoscape的事了,具體怎麼可視化,B站教學一大堆,加油吧少年!

終於寫完了!!

後續大概率會直接寫個R包,更新一些內容,希望各位及時反饋軟件的問題到我的gitee issue 目前先在這個issue下吧 :https://gitee.com/shawnmagic/swtbplugin/issues/I2DMHS 各位大佬如果有好的建議也提一下,如果發現有錯誤請及時提醒我,用的人多了才能更好的完善。

通過WGCNAshiny的開發我第一次深度接觸shinyApp的編寫,開啟了我對R包編寫的興趣,並且把function打成了R package放在 https://github.com/ShawnWx2019/WGCNAShinyFun/tree/master

雖然app和package寫的都很辣眼睛,但我學到了更多知識,不斷突破自己。作為副產品這個小腳本小插件或許會為方便各位,這就足夠了,由於本人太菜怕自己的錯誤導致大家的分析出錯,所以這個插件還是以一個beta版本出現,這需要大家共同努力積極反饋才能使這個小玩意更加完善。

半條命已經廢了... 沒時間扯淡了... 幹活去了😭 祝各位磕鹽順利!!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()