大年初一,單細胞分析從nature communication開始

2021-02-20 挑圈聯靠
大家好,我是風風。今天是大年初一,先給大家拜個年,祝大家辛丑年心想事成,萬事勝意!年年歲歲花相似,歲歲年年人不同,不知道今年的你,又是在跟誰團圓?是在家中?在宿舍?在單位?還是,在路上獨自一人呢?不管相伴還是遠離,不管匆忙還是從容,希望在這一年的第一天,你都是快樂的心情,把過去一年的憂愁和煩惱都忘掉,因為,今年花落顏色改,明年花開復誰在?好好珍惜現在,過去不必掛懷。我總是覺得元旦不算「過年」,只有到了春節才是真正意義上的「過年」,大概是因為只有到了春節,小孩才會有壓歲錢,門外才會響起鞭炮,當然,最重要的是,和父母的每年一聚,今年,你回家了嗎?《目送》一書中寫道:「我慢慢地、慢慢地了解到,所謂父女母子一場,只不過意味著,你和他的緣分就是今生今世不斷地在目送他的背影漸行漸遠。你站立在小路的這一端,看著他逐漸消失在小路轉彎的地方,而且,他用背影默默告訴你:不必追。」我想,千言萬語都概括在了這段話裡。所以,今天歡慶之餘,即使是打電話也好,別忘了跟家中長輩說一句「新年快樂,我很好!」

辛丑年初始,風風專欄打算開一個新的系列——從零開始單細胞系列一。看到後面帶了個一,大家就可以猜到這是一個長期系列,如果後面有新的內容或者你們有新的單細胞相關的需求,我們可以再開個二,與時俱進嘛!今天大年初一嘛,所以主要是跟大家聊一聊這個系列會有什麼內容。

這次的系列推文總共分為3個部分:

第一部分:單細胞文章解讀。

計劃為大家準備3篇論著和兩篇綜述,3篇論著已經找好了,分為三個階段,分別來自:Cell Report(沒錯,就是前段時間被某個事件誤傷的那本Cell 子刊)、Nature Communication以及Nature Medicine。綜述的文章我還沒找好,所以沒辦法放出來截圖。

我們先進行單細胞論著的文章解讀,對單細胞系列的文章有一個大致的認識之後,接著開始通過兩篇綜述學習單細胞分析的一些常識和前沿知識。這也是酸菜校長在《三十六策》教給大家的一種方法:通過閱讀綜述學習一個領域的常識。兩篇綜述解讀完如果覺得不夠的話,可以再加兩篇,這個我們後續再說。

第二部分:模塊分析。

按照生信全書中酸菜校長的四字心法:挑、圈、聯、靠,我們分模塊學習在單細胞分析中對應的內容,內容包括但不局限於GEO單細胞數據下載、數據質控和過濾、批次效應和數據整合、聚類和分類分析、細胞注釋、鑑定標誌物和擬時序分析等等內容。

第三部分:實戰演練與文章復現。

學習完第二部分的模塊分析內容之後,我們需要把模塊組合起來應用到自己的分析中從而產出自己的文章,最好的辦法就是復現別人文章,然後對比和作者結果的差異。目前也是計劃復現兩篇文章的部分圖片,也是分別來自:Cell Report和Nature Communication,先說好,不是完整復現啊哈哈哈,不然我會罷工的!如果大家有覺得比較容易上手又跟第二部分所學的知識比較接近的文章想要復現的話,也歡迎來提供文獻,看看我能不能駕馭得住(駕馭不住那我也是愛莫能助/(ㄒoㄒ)/~~)。

好啦,就是以上三部分的內容,考慮到大家可能R也還不太熟悉,甚至可能跟我一樣「菜」,更別說其他的程式語言了,所以這個系列全部使用R語言來完成,不涉及到python和Linux(Flag我先立在這,就看會不會倒了),如果R語言是零基礎,歡迎參加我們的R語言基礎訓練營或者參加B站直播教小白學習R語言的直播課,直播課目前用的講義是風風打賞營第一期的一部分講義,所以參加過打賞營的各位就不要去浪費時間啦!如果還是對自己沒信心的話,在留言區告訴我,我們可以用2-3期推文來一起 從0開始R語言(安裝軟體不算,以前有推文了我記得)。對了對了對了,最後,單細胞數據都很大,對電腦要求也高,希望你們有個心裡準備,比如我的電腦,寫教程時候竟然崩潰了兩次???完蛋!

如果你能看到這裡,那我相信你是「真愛」了,那總要有點驚喜嘛,我們提前來復現下面這張Nature Communication的圖片吧,體驗一下單細胞的圖片和分析代碼吧,年初一,我們整個簡單點的,大家先看一看,圖個開心,詳細的代碼講解我們後面復現的時候會再具體講§(* ̄▽ ̄*)§

我們先把數據讀取進來,並且對數據進行相應處理:

rm(list=ls())source("utils.R")library(stringr)library(reshape2)library(scales)library(scater)library(pheatmap)
pathway_file <- "KEGG_metabolism.gmt"
selected_impute_sce <- readRDS("selected_impute_sce.rds")
pathways <- gmtPathways(pathway_file)pathway_names <- names(pathways)all_cell_types <- as.vector(selected_impute_sce$cellType)cell_types <- unique(all_cell_types)我們知道,每個通路都有很多基因,並且這些通路之間的基因可能有交叉,因此,我們計算一下每個基因參與的通路數目,同時計算通路活性:gene_pathway_number <- num_of_pathways(pathway_file, rownames(selected_impute_sce)[rowData(selected_impute_sce)$metabolic])
set.seed(0413)
norm_rds_file <- file.path("Deconvolution_tpm.rds")norm_tpm <- readRDS(norm_rds_file)
mean_expression_shuffle <- matrix(NA, nrow=length(pathway_names), ncol=length(cell_types), dimnames = list(pathway_names,cell_types))mean_expression_noshuffle <- matrix(NA, nrow=length(pathway_names), ncol=length(cell_types), dimnames = list(pathway_names,cell_types))pvalues_mat <- matrix(NA, nrow=length(pathway_names), ncol=length(cell_types), dimnames = (list(pathway_names, cell_types)))
for(p in pathway_names){ genes <- pathways[[p]] genes_comm <- intersect(genes, rownames(norm_tpm)) if(length(genes_comm) < 5) next pathway_metabolic_tpm <- norm_tpm[genes_comm, ] pathway_metabolic_tpm <- pathway_metabolic_tpm[rowSums(pathway_metabolic_tpm)>0,] mean_exp_eachCellType <- apply(pathway_metabolic_tpm, 1, function(x)by(x, all_cell_types, mean)) keep <- colnames(mean_exp_eachCellType)[colAlls(mean_exp_eachCellType > 0.001)] if(length(keep) < 3) next pathway_metabolic_tpm <- pathway_metabolic_tpm[keep,] pathway_metabolic_tpm <- t( apply(pathway_metabolic_tpm, 1, function(x) {x[x<=0] <- min(x[x>0]);x} )) pathway_number_weight = 1 / gene_pathway_number[keep,] mean_exp_eachCellType <- apply(pathway_metabolic_tpm, 1, function(x)by(x, all_cell_types, mean)) ratio_exp_eachCellType <- t(mean_exp_eachCellType) / colMeans(mean_exp_eachCellType) col_quantile <- apply(ratio_exp_eachCellType, 2, function(x) quantile(x, na.rm=T)) col_q1 <- col_quantile["25%",] col_q3 <- col_quantile["75%",] col_upper <- col_q3 * 3 col_lower <- col_q1 / 3 outliers <- apply(ratio_exp_eachCellType, 1, function(x) {any( (x>col_upper)|(x<col_lower) )} ) if(sum(!outliers) < 3) next keep <- names(outliers)[!outliers] pathway_metabolic_tpm <- pathway_metabolic_tpm[keep,] pathway_number_weight = 1 / gene_pathway_number[keep,] mean_exp_eachCellType <- apply(pathway_metabolic_tpm, 1, function(x)by(x, all_cell_types, mean)) ratio_exp_eachCellType <- t(mean_exp_eachCellType) / colMeans(mean_exp_eachCellType) mean_exp_pathway <- apply(ratio_exp_eachCellType, 2, function(x) weighted.mean(x, pathway_number_weight/sum(pathway_number_weight))) mean_expression_shuffle[p, ] <- mean_exp_pathway[cell_types] mean_expression_noshuffle[p, ] <- mean_exp_pathway[cell_types] group_mean <- function(x){ sapply(cell_types, function(y) rowMeans(pathway_metabolic_tpm[,shuffle_cell_types_list[[x]]==y,drop=F])) } column_weigth_mean <- function(x){ apply(ratio_exp_eachCellType_list[[x]],2, function(y) weighted.mean(y, weight_values)) } times <- 1:5000 weight_values <- pathway_number_weight/sum(pathway_number_weight) shuffle_cell_types_list <- lapply(times,function(x) sample(all_cell_types)) names(shuffle_cell_types_list) <- times mean_exp_eachCellType_list <- lapply(times,function(x) group_mean(x)) ratio_exp_eachCellType_list <- lapply(times, function(x) mean_exp_eachCellType_list[[x]] / rowMeans(mean_exp_eachCellType_list[[x]])) mean_exp_pathway_list <- lapply(times,function(x) column_weigth_mean(x)) shuffle_results <- matrix(unlist(mean_exp_pathway_list), ncol=length(cell_types),byrow = T) rownames(shuffle_results) <- times colnames(shuffle_results) <- cell_types for(c in cell_types){ if(is.na(mean_expression_shuffle[p,c])) next if(mean_expression_shuffle[p,c]>1){ pval <- sum(shuffle_results[,c] > mean_expression_shuffle[p,c]) / 5000 }else if(mean_expression_shuffle[p,c]<1){ pval <- sum(shuffle_results[,c] < mean_expression_shuffle[p,c]) / 5000 } if(pval>0.01) mean_expression_shuffle[p, c] <- NA pvalues_mat[p,c] <- pval }}all_NA <- rowAlls(is.na(mean_expression_shuffle))mean_expression_shuffle <- mean_expression_shuffle[!all_NA,]好了,現在準備數據完成,我們來繪製一下原文中的熱圖,需要說明的是,由於有隨機種子,所以我們復現的結果可能跟原文有出入,總體結果沒有影響,我們來看看繪圖:dat <- mean_expression_shufflesort_row <- c()sort_column <- c()
for(i in colnames(dat)){ select_row <- which(rowMaxs(dat,na.rm = T) == dat[,i]) tmp <- rownames(dat)[select_row][order(dat[select_row,i],decreasing = T)] sort_row <- c(sort_row,tmp)}sort_column <- apply(dat[sort_row,],2,function(x) order(x)[nrow(dat)])sort_column <- names(sort_column)dat[is.na(dat)] <- 1
mybreaks <- c( seq(0, 0.5, length.out=33), seq(0.51, 1.5, length.out=33), seq(1.51, max(dat),length.out=34)) color <- colorRampPalette(c("skyblue","white","red")) (100)pheatmap(dat[sort_row,sort_column], cluster_cols = F, cluster_rows = F, color=color, breaks=mybreaks)

好了,我知道很多人都覺得看不懂,不過沒關係,我也不懂!!!那就後面一起學習吧,希望經過第二部分的學習,在第三部分文章復現的時候,你能夠看懂代碼,並且用自己的數據畫圖吧!Flag立在這裡,希望不會倒下!如果還是覺得有困難,並且大家也比較感興趣的話,後面等空下來再給大家錄個精品課,當然能文字解決的的事我們儘量別麻煩視頻了是不O(∩_∩)O?

按照慣例,後臺回復「feng37」獲得本次數據和代碼

牛年快樂,希望大家牛年文章發得越來越牛,我們下回見吧!


撥開數據迷雲霧,得見缺失值真面目

師兄用臨床數據一年發五篇文章,原來靠這個訣竅!(建議收藏!)

單個組學玩膩了,來試試20分文章喜歡的多組學聯合聚類吧!

頂刊JCO的ROC曲線繪製秘訣,讓你的臨床研究再上一個level!

手把手教你復現一篇CNS級別美圖!附代碼,建議收藏!

CNS級別的美圖復現起來難不難?小白也能快速上手(附代碼)(二)

小白課堂 | 學個R包,復現一張CNS級別美圖(附代碼)

學一個R包給文章加一張CNS級別的美圖(四)

學一個R包給文章加一張CNS級別的美圖(五)

學一個R包給文章加一張CNS級別的美圖(六)

拆和疊?原來你和高階論文的圖片就差這點

可繁可簡,可鹽可甜,這才是upset的真面目吧!

高分文章不講xx,竟然用這種圖片

盪氣迴腸一柄劍,看T細胞捨生取義

Cancer Cell的一張美圖送給你,新年也發個CC

嘀嘀嘀,美圖系列末班車已到站,來收拾最後的圖片下車

歡迎大家關註解螺旋生信頻道-挑圈聯靠公號~


2020
感謝所有小夥伴的一路陪伴
開心這一路和大家共同成長
2021
我們仍要一起並肩前行
朝更新的目標一起努力

為了感謝大家一路的支持
在春節大年初五迎財神時
酸談將進行一場福利抽獎直播
純抽獎part、全新福利周邊
大家一定記得來觀看直播奧


直播信息
直播時間:大年初五
直播地點:B站解螺旋直播間
直播內容:福利直播抽獎party
直播地址:https://live.bilibili.com/8116225

掃碼直達直播間






長按識別二維碼免費包郵領取!

相關焦點

  • Nature:新型單細胞分析技術揭示幹細胞中的複雜突變
    2014年12月30日 訊 /生物谷BIOON/ --近日,來自波士頓兒童醫院等處的研究人員利用新型的單細胞基因分析技術揭示了多能幹細胞的多種遺傳突變,相關研究刊登於國際著名雜誌Nature上,為後期開發治療疾病的新型再生性療法提供了一定的幫助和希望
  • 單細胞RNA測序揭示腸肌層神經元類別的多樣性
    單細胞RNA測序揭示腸肌層神經元類別的多樣性 作者:小柯機器人 發布時間:2020/12/9 13:22:22 瑞典卡羅林斯卡醫學院Ulrika Marklund研究小組利用單細胞RNA測序揭示腸肌層神經元類別的多樣性
  • Nature communication:亦正亦邪的狠角色——Sox2
    2015年4月7日訊 /生物谷BIOON/ --近日,國際學術期刊nature communication在線發表了美國紐約大學醫學院的一項最新發現,他們發現在幹細胞轉錄因子Sox2依賴性的癌症幹細胞中,Sox2能夠通過拮抗
  • Nature communication:巨噬細胞促進慢性胰腺炎發展
    2015年5月20日訊 /生物谷BIOON/ --近日,來自美國史丹福大學醫學院的研究人員在國際學術期刊nature communication在線發表了一項最新研究進展,他們發現選擇性激活的巨噬細胞在慢性胰腺炎的胰腺纖維化過程中具有重要促進作用,並且這種作用是通過胰腺星狀細胞釋放的IL-4/IL-13實現的。
  • Nature communication:REGγ調節經典wnt信號途徑促進皮膚癌發生
    2015年4月27日訊 /生物谷BIOON/ --近日,國際學術期刊nature
  • ...學院張強鋒課題組利用深度學習人工智慧算法分析單細胞ATAC-seq...
    生命學院張強鋒課題組利用深度學習人工智慧算法分析單細胞ATAC-seq數據清華新聞網10月12日電 10月8日,清華大學生命學院的張強鋒課題組在《自然·通訊》(Nature Communications)上發表題為「SCALE方法基於隱特徵提取進行單細胞ATAC-seq數據分析」(SCALE method for
  • Nature communication:保護植物多樣性 增加土壤碳儲備
    2015年4月13日訊 /生物谷BIOON/ --近日,國際學術期刊naturecommunication在線發表了德國科學家的一項最新研究進展,他們發現植物多樣性越高,土壤中碳源儲備越豐富,而這種變化主要是由於土壤微生物群落促進植物對新碳源的固定,而受現存土壤碳源分解的影響較小。
  • Nature communication:DNA損傷促衰老體內新證據
    2015年4月13日訊 /生物谷BIOON/ --近日,國際學術期刊nature communication在線發表了美國科學家的一項最新研究進展,他們利用腺病毒系統在小鼠肝臟細胞內製造DNA雙鏈斷裂(DSB),在體內證明了
  • Nature:首次對阿爾茨海默病進行單細胞轉錄組分析
    在一項新的研究中,來自美國麻省理工學院的研究人員首次對阿爾茨海默病患者的單個腦細胞中表達的基因進行了綜合分析。所獲得的分析結果允許他們鑑定出在神經元和其他類型的腦細胞中受到影響的獨特細胞通路。這一分析可能為阿爾茨海默病提供許多潛在的新型藥物靶點。
  • Nature communication:非經典WNT受體相互作用 抑制腫瘤轉移
    近日,來自同濟大學的研究人員在國際學術期刊nature communication在線發表了他們關於LRP5/6 在frizzled介導的腫瘤轉移中發揮抑制作用的最新研究進展。 在該項研究中,研究人員發現wnt受體frizzled及其共受體LRP5/6能夠發生直接相互作用,並且這種相互作用受到LRP6胞外結構域的調節作用。
  • Nature communication:中國科學家發現抗擊H7N9禽流感病毒新抗體
    2015年4月2日訊 /生物谷BIOON/ --近日,國際學術期刊nature communication在線發表了中國醫學科學院和北京協和醫學院研究人員關於應用單克隆抗體治療H7N9禽流感病毒的最新研究進展
  • Nature最新特刊:關於單細胞生物學
    7月5日的Nature推出了一期關於單細胞生物學的特刊:通過觀察細胞,研究人員如何試圖了解它們的性質——有多少種不同的存在,它們做什麼,以及它們如何隨著時間的推移改變。本期一篇單細胞研究的文章Cell-cycle dynamics of chromosomal organization at single-cellresolution繼續闡明細胞自身的內在生命過程。
  • 同樣是單細胞研究,為啥你發的文章和其他人有所差距?
    bronchoalveolar immune cells in patients with COVID-19投稿日期:2020年2月24日接收日期:2020年4月23日發表日期:2020年5月12日雜誌:Nature Medicine文章在:https://www.nature.com
  • 單細胞中3D基因組結構和DNA甲基化的同步分析
    單細胞中3D基因組結構和DNA甲基化的同步分析 作者:小柯機器人 發布時間:2019/9/10 15:16:34 美國索爾克生物研究所的Joseph R. Ecker和Jesse R.
  • Nature communication:科學家發現重要肥胖基因FTO促肥胖機制
    2015年4月22日訊 /生物谷BIOON/ --近日,來自英國的科學家在國際學術期刊nature communication在線發表了他們的一項最新研究成果,他們發現脂肪含量與肥胖相關基因(FTO)能夠通過調節脂肪前體細胞的有絲分裂克隆擴增,影響脂肪生成,而這一過程是通過增強促脂肪生成因子RUNX1T1的表達實現的。
  • 單細胞基因測序市場分析
    一、單細胞基因測序行業:剛啟程,面臨引爆點  BCC Research的一項分析報告指出,2014年全球單細胞分析(Single-cell Analysis)的市場達5.4億美金,預測將從2015年的6.3億美金增長到2020年的16億美金,複合增長率達21%。
  • Nature重磅:新研究顛覆了單細胞生物進化多細胞生物的核心理論
    單細胞生物怎麼進化成多細胞生物?在進化史上,有許多重大的轉變,從微觀的單細胞世界向多細胞動物世界的飛躍,就是其中之一。長期存在的觀點認為:多細胞動物是從類似現代海綿細胞的單細胞祖先進化而來的。昆士蘭大學的科學家6月12日發表在《nature》最新研究結果,顛覆了生物學家對動物進化史長達一個世紀的理解。
  • 單細胞數據高級分析——解碼細胞通信網絡
    隨著單細胞RNA測序的日益流行,RNA測序數據量的指數增長,使得測量多種細胞類型中配體和受體的表達,並系統地解碼細胞間通信網絡,最終解釋組織在穩態中的功能及其在疾病中的變化成為可能。只有表達受體和配體基因的細胞佔比超過指定的閾值時(默認為10%),該配體-受體對才會被納入分析。對於聚合體而言,則選擇表達平均值較小的亞基的表達值代表該受體的表達用於後續的統計分析(圖b)。
  • 單細胞RT-PCR表達量數據也可以差異分析
    最近搜集整理單細胞研究的時候,看到於2015年發表在nature雜誌的文章是:Single-cell analysis reveals a stem-cell
  • 這些軟體讓單細胞測序分析越來越Easy
    原標題:這些軟體讓單細胞測序分析越來越Easy 作者Perkel 編譯:麥子 轉載請註明:解螺旋·臨床醫生科研成長平臺 單細胞生物學成了時下熱門話題,這其中最前沿的便是單細胞RNA測序(scRNA-Seq)。 傳統的「大量細胞(bulk)」RNA測序法是一次處理成千上萬個細胞,然後抹平它們之間的差異。