R:組內相關分析袄友,pheatmap熱圖和cytoscape網絡圖

導讀

相關pheatmap圖,cytoscape網絡圖霹菊,一文打盡杠河。

一、模擬輸入文件

ko_abun = as.data.frame(matrix(abs(round(rnorm(200, 100, 10))), 10, 20))
colnames(ko_abun) = paste("KO", 1:20, sep="_")
rownames(ko_abun) = paste("sample", 1:10, sep="_")
ko_abun

二浇辜、組內相關分析

1 寫函數(shù)

library(psych)
library(stringr)

correlate = function(other, metabo, route)
{
    #  讀取方式:check.name=F, row.names=1, header=T
    # 計算相關性:
    #other = data
    #metabo = env
    #route="gut"
    result=data.frame(print(corr.test(other, metabo, use="pairwise", method="spearman", adjust="fdr", alpha=.05, ci=TRUE, minlength=100), short=FALSE, digits=5))
    # FDR矯正
    result_raw=data.frame(print(corr.test(other, metabo, use="pairwise", method="spearman", adjust="none", alpha=.05, ci=TRUE, minlength=100), short=FALSE, digits=5))
    # 原始P value

    # 整理結果
    pair=rownames(result)  # 行名
    result2=data.frame(pair, result[, c(2, 4)])  # 提取信息

    # P值排序
    # result3=data.frame(result2[order(result2[,"raw.p"], decreasing=F),])

    # 格式化結果【將細菌代謝物拆成兩列】
    result4=data.frame(str_split_fixed(result2$pair, "-", 2), result2[, c(2, 3)], p_value=result_raw[, 4])
    colnames(result4)=c("feature_1", "feature_2", "r_value", "fdr_p_value", "raw_p_value")

    # 保存提取的結果
    write.table(result4, file=paste(route, "Correlation_result.txt", sep="/"), sep="\t", row.names=F, quote=F)
}

2 相關分析

dir.create("Result")  # 創(chuàng)建結果目錄
correlate(ko_abun, ko_abun, "Result")

三、pheatmap熱圖

1 寫函數(shù)

library(reshape2)
library(pheatmap)

correlate_pheatmap = function(infile, route)
{
    data=read.table(paste(route, infile, sep="/"), sep="\t", header=T)

    data_r=dcast(data, feature_1 ~ feature_2, value.var="r_value")
    data_p=dcast(data, feature_1 ~ feature_2, value.var="raw_p_value")
    rownames(data_r)=data_r[,1]
    data_r=data_r[,-1]
    rownames(data_p)=data_p[,1]
    data_p=data_p[,-1]
    
    # 剔除不顯著的行
    del_row = c()
    for(i in 1:length(data_p[, 1]))
    {
        if(all(data_p[i, ] > 0.05))
        {
            del_row = c(del_row, i)
        }
    }

    # 剔除不顯著的列
    del_col = c()
    for(j in 1:length(data_p[1, ]))
    {
        if(all(data_p[, j] > 0.05))
        {
            del_col = c(del_col, j)
        }
    }
    
    # null值處理
    if(is.null(del_row) && !(is.null(del_col)))
    {
        data_p = data_p[, -del_col]
        data_r = data_r[, -del_col]
    }else if(is.null(del_col) && !(is.null(del_row)))
    {
        data_p = data_p[-del_row,]
        data_r = data_r[-del_row,]
    }else if(is.null(del_row) && is.null(del_col))
    {
        print("delete none")
    }else if(!(is.null(del_row)) && !(is.null(del_col)))
    {
        data_p = data_p[-del_row, -del_col]
        data_r = data_r[-del_row, -del_col]
    }
    
    # data_p = data_p[-del_row, -del_col]
    # data_r = data_r[-del_row, -del_col]
    write.csv(data_p, file=paste(route, "data_p.csv", sep="/"))
    write.csv(data_r, file=paste(route, "data_r.csv", sep="/"))

    # 用"*"代替<=0.05的p值唾戚,用""代替>0.05的相對豐度
    data_mark=data_p
    for(i in 1:length(data_p[,1])){
        for(j in 1:length(data_p[1,])){
            #data_mark[i,j]=ifelse(data_p[i,j] <= 0.05, "*", "")
            if(data_p[i,j] <= 0.001)
            {
                data_mark[i,j]="***"
            }
            else if(data_p[i,j] <= 0.01 && data_p[i,j] > 0.001)
            {
                data_mark[i,j]="**"
            }
            else if(data_p[i,j] <= 0.05 && data_p[i,j] > 0.01)
            {
                data_mark[i,j]="*"
            }
            else
            {
                data_mark[i,j]=""
            }
        }
    }
    write.csv(data_mark, file=paste(route, "data_mark.csv", sep="/"))

    pheatmap(data_r, display_numbers=data_mark, cellwidth=20, cellheight=20, fontsize_number=18, filename=paste(route, "Correlation_result.pdf", sep="/"))
    pheatmap(data_r, display_numbers=data_mark, cellwidth=20, cellheight=20, fontsize_number=18, filename=paste(route, "Correlation_result.png", sep="/"))
}

2 可視化

correlate_pheatmap("Correlation_result.txt", "Result")

3 結果

三個繪圖文件和兩幅圖



四柳洋、cytoscape網絡圖

1 文件準備

先刪除自我相關,也就是r值為1的相關叹坦。
然后熊镣,更新行號。
接著,建feature1-feature2的box绪囱。
遍歷所有feature2-feature1與box[-1]匹配测蹲,如果匹配成功則是重復,記錄行號鬼吵,最后刪除扣甲。

data = read.table("Result/Correlation_result.txt", sep="\t", header=T)
# 刪除自我相關
data = data[data$r_value != 1,]
# 刪除重復相關
rownames(data) = 1:nrow(data)
box = paste(data$feature_1, data$feature_2, sep="-")
delete = c()
for(i in 1:nrow(data))
{
    tmp = paste(data[i, 2], data[i, 1], sep="-")
    box = box[-1]
    if(tmp %in% box)
    {
        delete = c(delete, i)
    }
}

data = data[-delete,]

# 畫圖文件
data = data[data$raw_p_value <= 0.05,]
r_label = c()
for(i in 1:nrow(data))
{
    if(data[i, 3] < 0)
    {
        r_label = c(r_label, "neg")
    }
    else
    {
        r_label = c(r_label, "pos")
    }
}

data$r_label = r_label
write.table(data, file="Result/input_pre.txt", sep="\t", row.names=F, quote=F)
data$r_value = abs(data$r_value)
input_network = data[, c(1,2,3,6)]
write.table(input_network, file="Result/input_network.txt", sep="\t", row.names=F, quote=F)

2 cytoscape繪圖

繪圖流程見我的另一篇:Cytoscape繪制相關網絡圖
網絡圖結果如下:

圓圈表示KO,相關越多degree齿椅,圓越大
先粗細表示|r|琉挖,紅色負相關,藍色正相關

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末涣脚,一起剝皮案震驚了整個濱河市示辈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遣蚀,老刑警劉巖矾麻,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芭梯,居然都是意外死亡险耀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門粥帚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胰耗,“玉大人,你說我怎么就攤上這事芒涡〔竦疲” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵费尽,是天一觀的道長赠群。 經常有香客問我,道長旱幼,這世上最難降的妖魔是什么查描? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮柏卤,結果婚禮上冬三,老公的妹妹穿的比我還像新娘。我一直安慰自己缘缚,他們只是感情好勾笆,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桥滨,像睡著了一般窝爪。 火紅的嫁衣襯著肌膚如雪弛车。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天蒲每,我揣著相機與錄音纷跛,去河邊找鬼。 笑死邀杏,一個胖子當著我的面吹牛贫奠,可吹牛的內容都是我干的。 我是一名探鬼主播淮阐,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼叮阅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泣特?” 一聲冷哼從身側響起浩姥,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎状您,沒想到半個月后勒叠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡膏孟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年眯分,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柒桑。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡弊决,死狀恐怖,靈堂內的尸體忽然破棺而出魁淳,到底是詐尸還是另有隱情飘诗,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布界逛,位于F島的核電站昆稿,受9級特大地震影響,放射性物質發(fā)生泄漏息拜。R本人自食惡果不足惜溉潭,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望少欺。 院中可真熱鬧喳瓣,春花似錦、人聲如沸赞别。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氯庆。三九已至蹭秋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間堤撵,已是汗流浹背仁讨。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留实昨,地道東北人洞豁。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像荒给,于是被迫代替她去往敵國和親丈挟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容

  • 導讀 用R軟件corr.test函數(shù)進行兩組數(shù)組的相關性分析曙咽,用Cytoscape繪制相關網絡圖。 一洒嗤、輸入數(shù)據 ...
    胡童遠閱讀 20,812評論 14 34
  • 說起互作網絡圖终吼,大家都不陌生际跪∧反颍看文獻的時候,經诚醒樱看見相互作用網絡圖展示了circRNA-miRNA的靶向關系或者c...
    Seurat_Satija閱讀 11,087評論 0 23
  • 基礎理論 網絡圖 網絡圖非常常見,不僅被用在生物信息學分析,在生活中也很常見益老,如民航航線圖、食物鏈互婿、基因調控網絡都...
    EwanH閱讀 30,539評論 4 35
  • pheatmap是繪制熱圖的經典R包刮萌。其中一些細節(jié)參數(shù)設置壮锻,之前每次遇到都是網上搜索。這次系統(tǒng)整理下常用用法掰邢,為以...
    小貝學生信閱讀 13,398評論 0 39
  • 自己只做了幾個樣本的RNAseq測序或芯片怀估,發(fā)愁文章里沒有什么絢麗的圖片可放?別著急多搀,我們可以把差異分析的基因拿來...
    鄧老師呦閱讀 1,584評論 2 15