蛋白组

作者: 一只小脑斧 | 来源:发表于2022-02-23 20:00 被阅读0次

    rm(list = ls())

    setwd("/data3/ff/project/XCL/pro")

    ##########

    library(data.table)

    all<-fread("pro.txt",data.table = F)

    colnames(all)

    ###########1,8,15,22

    HFDVAT.CDVAT<-all[,c(1:7)]

    HFD_S.CD_S<-all[,c(8:14)]

    HFDKPC.CDKPC<-all[,c(15:21)]

    S.HFDKPC.S.CDKPC<-all[,c(22:28)]

    ################################测试

    library(impute)

    library(limma)

    library(dplyr)

    ##################################################################对于非向量的循环,推荐构建list,然后用lapply

    #####

    ##################################过滤一些全为0的行

    HFD_S.CD_S

    class(HFD_S.CD_S[1,2])

    #过滤至少有一个样本不为0

    keep<-rowSums(HFD_S.CD_S> 0) > 1   

    HFD_S.CD_S <- HFD_S.CD_S[keep,]

    data<-list(HFDVAT.CDVAT=HFDVAT.CDVAT,

               HFD_S.CD_S=HFD_S.CD_S,

               HFDKPC.CDKPC=HFDKPC.CDKPC,

               S.HFDKPC.S.CDKPC=S.HFDKPC.S.CDKPC)

    #data<-HFDVAT.CDVAT

    #data<- HFD_S.CD_S

    data<-HFDKPC.CDKPC

    data<- S.HFDKPC.S.CDKPC

    ##################################################################函数体knn.diff

    knn.diff <- function(data){

      print(data)

    data <- na.omit(data)

    #将所有0值替换为NA

    data[data == 0] <- NA

    ####去重基因名

    table(duplicated(data$`Gene name`))

    #对重复基因名取平均表达量,获得表达矩阵

    if(sum(duplicated(data$`Gene name`))>0) #判断是否有重复基因

      data<-avereps(data,ID=data$`Gene name`) %>% as.data.frame

    ##更改行名

    row.names(data)<-data[,1]

    gene<-data[,1]#取出基因名

    data<-data[,-1]

    #########补全

    data=as.matrix(data)

    #数据补缺

    mat=impute.knn(data)

    data=mat$data %>% as.data.frame

    #转为数值型

    data=as.data.frame(lapply(data,as.numeric))

    row.names(data)<-gene

    #对数据进行矫正

    data=normalizeBetweenArrays(as.matrix(data))

    #class(data[1,1])

    ######################################################差异

    pFilter=0.05                                                  #p值临界值

    logFCfilter=0                                                 #logFC临界值

    conNum=3                                                    #sample1组样品数目

    treatNum=3                                                   #sample2组样品数目

    #读取输入文件

    outTab=data.frame()

    group=c(rep(1,conNum),rep(2,treatNum))

    data=as.matrix(data)

    ###################################################去掉数据是恆量

    #编写函数,返回一行有几个不同值

    uniq.num <- function(x){

      y<-length(unique(x[1:3]))+length(unique(x[4:6]))

      return(y)

    }

    #length () 函数用于获取或设置向量 (列表)或其他对象的长度

    #按行运行函数,计算每行的不同值

    uniq.num.df <- data.frame(num = apply(data, 1, uniq.num))

    #过滤掉uniq.num为1或2的,留下>2的

    uniq.num.df.2 <- filter(uniq.num.df, num>2)

    #过滤原数据

    data <- data[rownames(uniq.num.df.2), ]

    #差异分析

    for(i in row.names(data)){

      geneName=i

      rt=rbind(expression=data[i,],group=group)

      rt=as.matrix(t(rt))

      tTest<-t.test(expression ~ group, data=rt)

      pvalue=tTest$p.value

      conGeneMeans=mean(data[i,1:conNum])

      treatGeneMeans=mean(data[i,(conNum+1):ncol(data)])

      logFC=log2(treatGeneMeans/conGeneMeans)

      conMed=median(data[i,1:conNum])

      treatMed=median(data[i,(conNum+1):ncol(data)])

      diffMed=treatMed-conMed

      if( ((logFC>0) & (diffMed>0)) | ((logFC<0) & (diffMed<0)) ){ 

        outTab=rbind(outTab,cbind(gene=i,conMean=conGeneMeans,treatMean=treatGeneMeans,logFC=logFC,pValue=pvalue))

      }

    }

    #table(duplicated(outTab$gene))

    #对重复基因名取平均表达量,一模一样

    #if(sum(duplicated(outTab$gene))>0) #判断是否有重复基因

      #outTab<-avereps(outTab,ID=outTab$gene) %>% as.data.frame

    #改行名

    row.names(outTab)<-outTab$gene

    outTab<-outTab[,-1]

    #将表达值和结果合并

    results<-merge(data,outTab,by="row.names",all.x=TRUE)

    return(results)

    }

    HFDVAT.CDVAT.results<-results

    HFD_S.CD_S.results<-results

    HFDKPC.CDKPC.results<-results

    S.HFDKPC.S.CDKPC.results<-results

    write.csv(HFDVAT.CDVAT.results,"HFDVAT.CDVAT.results.csv")

    write.csv(HFD_S.CD_S.results,"HFD_S.CD_S.results.csv")

    write.csv(HFDKPC.CDKPC.results,"HFDKPC.CDKPC.results.csv")

    write.csv(S.HFDKPC.S.CDKPC.results,"S.HFDKPC.S.CDKPC.results.csv")

    ###########写函数过滤

    ###########放入自变量

    list<- list(HFDVAT.CDVAT.results,HFD_S.CD_S.results,HFDKPC.CDKPC.results,S.HFDKPC.S.CDKPC.results)

    #############写过滤函数

    filler <- function(x){

      x<-na.omit(x)

      x<-x[(as.numeric(as.vector(x$logFC))>0.1 & as.numeric(as.vector(x$pValue))<0.05),]

      y<-x$Row.names

      return(y)

    }

    #####应用函数

    results.list<- lapply(list,filler)

    ####取交集

    a<-intersect(results.list[[1]],intersect(results.list[[2]],results.list[[3]]))

    b<-intersect(results.list[[1]],intersect(results.list[[2]],results.list[[4]]))

    相关文章

      网友评论

          本文标题:蛋白组

          本文链接:https://www.haomeiwen.com/subject/cbyglrtx.html