R/get_pcascoredistplots_child.R

Defines functions get_pcascoredistplots_child

get_pcascoredistplots_child <-
function(X,Y,feature_table_file,parentoutput_dir,class_labels_file,
                                      sample.col.opt="rainbow",plots.width=2000,plots.height=2000,plots.res=300,
                                      alphacol=0.3,col_vec=NA,pairedanalysis=FALSE,pca.cex.val=4,legendlocation="topright",pca.ellipse=TRUE,ellipse.conf.level=0.95,filename="all",paireddesign=NA,
                                      error.bar=TRUE,lineplot.col.opt="black",lineplot.lty.option=c("solid", "dashed", "dotted", "dotdash", "longdash", "twodash"),newdevice=FALSE,timeseries.lineplots=FALSE,alphabetical.order=FALSE,pcascale=TRUE,pcacenter=TRUE,study.design="oneway",lme.modeltype="RI",cex.plots=0.8,ypos.adj.factor=0.5,...)
{
  
  analysistype=study.design
  
  if(is.na(X)==TRUE){
    data_matrix<-read.table(feature_table_file,sep="\t",header=TRUE,stringsAsFactors=FALSE,check.names=FALSE)
    
  }else{
    
    data_matrix<-X
  }
  
  
  
  if(typeof(Y)=="logical"){
    classlabels<-read.table(class_labels_file,sep="\t",header=TRUE)
    
  }else{
    
    classlabels<-Y
  }
  
  dir.create(parentoutput_dir,showWarnings = FALSE)
  setwd(parentoutput_dir)
  
  if(newdevice==TRUE){
    
    fname<-paste("pcaplots",filename,".pdf",sep="")
    pdf(fname)
    
    
  }
  
  
  
  cnames<-colnames(data_matrix)
  cnames<-tolower(cnames)
  
  check_names<-grep(cnames,pattern="^name$")
  
  
  if(length(check_names)>0){
    
    if(check_names==1){
      
      check_names1<-grep(cnames,pattern="^mz$")
      check_names2<-grep(cnames,pattern="^time$")
      
      
      if(length(check_names1)<1 & length(check_names2)<1){
        mz<-seq(1.00001,nrow(data_matrix)+1,1)
        time<-seq(1.01,nrow(data_matrix)+1,1.00)
        check_ind<-gregexpr(cnames,pattern="^name$")
        check_ind<-which(check_ind>0)
        data_matrix<-as.data.frame(data_matrix)
        
        Name<-as.character(data_matrix[,check_ind])
        
        rownames(data_matrix)<-Name
        
        data_matrix<-cbind(mz,time,data_matrix[,-check_ind])
        names_with_mz_time=cbind(Name,mz,time)
        
        names_with_mz_time<-as.data.frame(names_with_mz_time)
        data_matrix<-as.data.frame(data_matrix)
        
        #write.table(names_with_mz_time,file="Stage1/Name_mz_time_mapping.txt",sep="\t",row.names=FALSE)
        
        write.table(names_with_mz_time,file="Name_mz_time_mapping.txt",sep="\t",row.names=FALSE)
        
        
      }else{
        
        if(length(check_names1)>0 & length(check_names2)>0){
          
          check_ind<-gregexpr(cnames,pattern="^name$")
          check_ind<-which(check_ind>0)
          Name<-as.character(data_matrix[,check_ind])
          data_matrix<-data_matrix[,-check_ind]
          names_with_mz_time=cbind(Name,data_matrix$mz,data_matrix$time)
          colnames(names_with_mz_time)<-c("Name","mz","time")
          names_with_mz_time<-as.data.frame(names_with_mz_time)
          data_matrix<-as.data.frame(data_matrix)
          write.table(names_with_mz_time,file="Name_mz_time_mapping.txt",sep="\t",row.names=FALSE)
        }
      }
      
    }
  }else{
    
    
    check_names1<-grep(cnames[1],pattern="^mz$")
    check_names2<-grep(cnames[2],pattern="^time$")
    if(length(check_names1)<1 || length(check_names2)<1){
      stop("Invalid feature table format. The format should be either Name in column A or mz and time in columns A and B. Please check example files.")
    }
  }
  
  data_m<-data_matrix[,-c(1:2)]
  
  data_m<-as.matrix(data_m)
  
  check_rnames<-rownames(data_matrix)
  
  
  mzvec<-data_matrix[,1]
  rtvec<-data_matrix[,2]
  
  if(length(check_rnames)<1){
    if(length(check_names)<1){
    rnames<-paste(mzvec,rtvec,sep="_")
    
    rownames(data_m)<-as.character(rnames)
    }
    
  }else{
  #if(length(check_names)<1){ 
   rownames(data_m)<-rownames(data_matrix)
    
  }
  #rnames<-paste(mzvec,rtvec,sep="_")
  
  #rownames(data_m)<-as.character(rnames)
  
  
  classlabels_orig<-classlabels
  
  #classlabelsorig<-classlabelsorig[match(rownames(X),classlabelsorig[,1]),]
  
 #save(data_m,classlabels,file="pcaclasslabels.Rda")
  
  if(analysistype=="twowayrepeat" | analysistype=="2wayrepeat" | analysistype=="onewayrepeat" | analysistype=="1wayrepeat"){
    
    pairedanalysis=TRUE
  }
  
  if(dim(classlabels)[2]>2){
    
    if(pairedanalysis==TRUE){
      
      if(is.na(paireddesign)==TRUE){
        paireddesign=classlabels_orig[,2]
      }
      classlabels_orig<-classlabels_orig[,-c(2)]
    }
    
   # print("here0")
    if(analysistype=="twoway" | analysistype=="2way" | analysistype=="twowayrepeat" | analysistype=="2wayrepeat"){
      if(dim(classlabels_orig)[2]>2){
        classgroup<-paste(classlabels_orig[,2],":",classlabels_orig[,3],sep="") #classlabels_orig[,2]:classlabels_orig[,3]
      }
      
     # print("here1")
     # print(head(classlabels_orig))
     # print(head(classgroup))
      
    }else{
      
      classgroup<-classlabels_orig[,2]
    }
    
    
    
    do_pca_anova=FALSE
  }else{
    
    if(analysistype=="regression"){
      
      classgroup<-rep("A",nrow(classlabels_orig))
      do_pca_anova=FALSE
      
    }else{
      classgroup<-classlabels_orig[,2]
      
      do_pca_anova=TRUE
    }
  }
  
  ##save(classgroup,file="classgroup.Rda")
  if(alphabetical.order==FALSE){
    classgroup <- factor(classgroup, levels=unique(classgroup))
  }
  
  # do_pca_anova=FALSE
  
  class_labels_levels<-levels(as.factor(classgroup))
  
  
  ordered_labels<-classgroup
  
  class_label_alphabets<-paste("C",1:length(class_labels_levels),sep="") #c("A","B","C","D","E","F","G","H","I","J","K","L","M")
  
  classlabels<-classlabels_orig
  
  if(is.na(col_vec)==TRUE)
  {
    if(sample.col.opt=="default"){
      
      col_vec<-c("#CC0000","#AAC000","blue","mediumpurple4","mediumpurple1","blueviolet","cornflowerblue","cyan4","skyblue",
                 "darkgreen", "seagreen1", "green","yellow","orange","pink", "coral1", "palevioletred2",
                 "red","saddlebrown","brown","brown3","white","darkgray","aliceblue",
                 "aquamarine","aquamarine3","bisque","burlywood1","lavender","khaki3","black")
      
    }else{
      if(sample.col.opt=="topo"){
        #col_vec<-topo.colors(256) #length(class_labels_levels))
        
        #col_vec<-col_vec[seq(1,length(col_vec),)]
        
        col_vec <- topo.colors(length(class_labels_levels), alpha=alphacol)
      }else{
        if(sample.col.opt=="heat"){
          #col_vec<-heat.colors(256) #length(class_labels_levels))
          
          col_vec <- heat.colors(length(class_labels_levels), alpha=alphacol)
        }else{
          if(sample.col.opt=="rainbow"){
            #col_vec<-heat.colors(256) #length(class_labels_levels))
            col_vec<-rainbow(length(class_labels_levels), start = 0, end = alphacol)
            
            #col_vec <- heat.colors(length(class_labels_levels), alpha=alphacol)
          }else{
            
            if(sample.col.opt=="terrain"){
              #col_vec<-heat.colors(256) #length(class_labels_levels))
              #col_vec<-rainbow(length(class_labels_levels), start = 0, end = alphacol)
              
              col_vec <- cm.colors(length(class_labels_levels), alpha=alphacol)
            }else{
              
              if(sample.col.opt=="colorblind"){
                #col_vec <-c("#386cb0","#fdb462","#7fc97f","#ef3b2c","#662506","#a6cee3","#fb9a99","#984ea3","#ffff33")
                # col_vec <- c("#0072B2", "#E69F00", "#009E73", "gold1", "#56B4E9", "#D55E00", "#CC79A7","black")
                
                if(length(class_labels_levels)<9){
                  
                  col_vec <- c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7", "#E64B35FF", "grey57")
                  
                }else{
                  
                  col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","#E64B35B2", "#4DBBD5B2","#00A087B2","#3C5488B2","#F39B7FB2","#8491B4B2","#91D1C2B2","#DC0000B2","#7E6148B2",
                             "#374E55B2","#DF8F44B2","#00A1D5B2","#B24745B2","#79AF97B2","#6A6599B2","#80796BB2","#0073C2B2","#EFC000B2", "#868686B2","#CD534CB2","#7AA6DCB2","#003C67B2","grey57")
                  
                  #colorRampPalette(brewer.pal(10, "RdBu"))(length(class_labels_levels)))
                }
                
                
              }else{
                
                check_brewer<-grep(pattern="brewer",x=sample.col.opt)
                
                if(length(check_brewer)>0){
                  
                  sample.col.opt_temp=gsub(x=sample.col.opt,pattern="brewer.",replacement="")
                  
                  col_vec <- colorRampPalette(brewer.pal(10, sample.col.opt_temp))(length(class_labels_levels))
                  
                }else{
                  
                  if(sample.col.opt=="journal"){
                    
                    col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","#E64B35FF","#3C5488FF","#F39B7FFF",
                               "#8491B4FF","#91D1C2FF","#DC0000FF","#B09C85FF","#5F559BFF",
                               "#808180FF","#20854EFF","#FFDC91FF","#B24745FF",
                               
                               "#374E55FF","#8F7700FF","#5050FFFF","#6BD76BFF",
                               "#E64B3519","#4DBBD519","#631879E5","grey75")
                    if(length(class_labels_levels)<8){
                      col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","grey75")
                      
                      #col_vec2<-brewer.pal(n = 8, name = "Dark2")
                      
                    }else{
                      if(length(class_labels_levels)<=28){
                        # col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7", "grey75","#D95F02", "#7570B3", "#E7298A", "#66A61E", "#E6AB02", "#A6761D", "#666666","#1B9E77", "#7570B3", "#E7298A", "#A6761D", "#666666", "#1B9E77", "#D95F02", "#7570B3", "#E7298A", "#66A61E", "#E6AB02", "#A6761D", "#666666")
                        
                        col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","#E64B35FF","#3C5488FF","#F39B7FFF",
                                   "#8491B4FF","#91D1C2FF","#DC0000FF","#B09C85FF","#5F559BFF",
                                   "#808180FF","#20854EFF","#FFDC91FF","#B24745FF",
                                   
                                   "#374E55FF","#8F7700FF","#5050FFFF","#6BD76BFF", "#8BD76BFF",
                                   "#E64B3519","#9DBBD0FF","#631879E5","#666666","grey75")
                        
                      }else{
                        
                        
                        
                        
                        colfunc <-colorRampPalette(c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","grey75"));col_vec<-colfunc(length(class_labels_levels))
                        
                        col_vec<-col_vec[sample(col_vec)]
                        
                        
                      }
                    }
                  }else{
                    #colfunc <-colorRampPalette(sample.col.opt);col_vec<-colfunc(length(class_labels_levels))
                 #   if(length(sample.col.opt)==1){
                  #    col_vec <-rep(sample.col.opt,length(class_labels_levels))
                   # }else{
                      
                    #  colfunc <-colorRampPalette(sample.col.opt);col_vec<-colfunc(length(class_labels_levels))
                      
                    #}
                    
                    if(length(sample.col.opt)==1){
                      col_vec <-rep(sample.col.opt,length(class_labels_levels))
                    }else{
                      
                      if(length(sample.col.opt)>=length(class_labels_levels)){
                        
                        col_vec <-sample.col.opt
                        col_vec <- rep(col_vec,length(class_labels_levels))
                        
                        
                      }else{
                        colfunc <-colorRampPalette(sample.col.opt);col_vec<-colfunc(length(class_labels_levels))
                      }
                      
                    }
                    
                    
                  }
                }
                
              }
              
            }
          }
          
        }
        
      }
    }
  }else{
    
    colfunc <-colorRampPalette(col_vec);col_vec<-colfunc(length(class_labels_levels))
  }
  
  class_col_vec=rep("red",nrow(classlabels))
  #    print(class_labels_levels)
  
  ordered_labels={}
  num_samps_group<-new("list")
  num_samps_group[[1]]<-0
  groupwiseindex<-new("list")
  groupwiseindex[[1]]<-0
  
  S<-new("list")
  
# save(class_labels_levels,col_vec,sample.col.opt,lineplot.col.opt,classlabels,file="pcaclass_labels_levels.Rda")
  for(c in 1:length(class_labels_levels))
  {
    
    classlabels_index<-which(classlabels[,2]==class_labels_levels[c])
    #ordered_labels<-c(ordered_labels,as.character(classlabels[classlabels_index,2]))
    num_samps_group[[c]]<-length(classlabels_index)
    groupwiseindex[[c]]<-classlabels_index
    
    class_col_vec[which(classlabels[,2]==class_labels_levels[c])]<-col_vec[c]
    # S[[c]]<-cov(t(data_m[,c(classlabels_index)]))
    
  }
  
  
  
  sampleclass<-{}
  patientcolors<-{}
  
  classlabels<-as.data.frame(classlabels)
  
  
  for(c in 1:length(class_labels_levels)){
    
    num_samps_group_cur=length(which(ordered_labels==class_labels_levels[c]))
    
    
    sampleclass<-c(sampleclass,rep(paste("Class",class_label_alphabets[c],sep=""),num_samps_group_cur))
    
    patientcolors <-c(patientcolors,rep(col_vec[c],num_samps_group[[c]]))
  }
  
  if(length(mzvec)>4){
    max_per_row<-3
    
    
    par_rows<-ceiling(9/max_per_row)
    
  }else{
    max_per_row<-length(mzvec)
    par_rows<-1
  }
  
  file_ind<-0
  boxplots_fname<-paste("xyplots.pdf",sep="")
  
  suppressWarnings(dir.create("Tables",showWarnings = FALSE))
  t1<-table(classgroup)
  
  l1<-levels(as.factor(classgroup))
  
  
  patientcolors <- rep(col_vec[1:length(t1)], t1)
  
 # save(data_m,classgroup,legendlocation,filename,pcacenter,paireddesign,pcascale,col_vec,
  #     sample.col.opt,pca.cex.val,pca.ellipse,do_pca_anova,paireddesign,classlabels_orig,
   #   alphabetical.order,analysistype,file="pcad1A.Rda")
  
  #save(data_m,file="data_m.Rda")
  
  if(dim(data_m)[1]>2){
    
    
    res<-get_pca(X=data_m,samplelabels=classgroup,legendlocation=legendlocation,filename=filename,ncomp=10,pcacenter=pcacenter,pcascale=pcascale,legendcex=0.5,outloc=getwd(),
                 col_vec=col_vec,sample.col.opt=sample.col.opt,alphacol=0.3,class_levels=NA,pca.cex.val=pca.cex.val,pca.ellipse=pca.ellipse,do_pca_anova=do_pca_anova,
                 paireddesign=paireddesign,classlabelsorig=classlabels_orig,alphabetical.order=alphabetical.order,analysistype=analysistype,pairedanalysis=pairedanalysis,lme.modeltype=lme.modeltype)
    numcomp_plot<-res$numcomp_plot
    pcnum_limit=numcomp_plot
   
    pc_pval_vec<-res$pca_pval_vec
    res<-res$result
   
   
    
    fname<-paste("Tables/PCAloadings_",filename,"features.txt",sep="")
    
    loadings_res<-res$rotation
    scores_res<-res$x
    
    loadings_res<-round(loadings_res,2)
    scores_res<-round(scores_res,2)
    
    if(dim(loadings_res)[2]>10){
      loadings_res<-loadings_res[,c(1:10)]
      scores_res<-scores_res[,c(1:10)]
    }
    
    write.table(loadings_res,file=fname,sep="\t")
    
    fname<-paste("Tables/PCAscores_",filename,"features.txt",sep="")
    
    #save(classlabels_orig,scores_res,file="c2.Rda")
    
    classlabels_orig<-classlabels_orig[match(rownames(scores_res),classlabels_orig[,1]),]
    scores_res1<-cbind(classlabels_orig,scores_res)
    
    
    write.table(scores_res1,file=fname,sep="\t",row.names=FALSE)
    
    #pcnum_limit<-res$numcomp_plot #min(2,dim(scores_res)[2])
    
    get_pooled_sp<-function(n1,n2,S1,S2){a<-(n1-1)*S1;b<-(n2-1)*S2;c<-(n1+n2-2);return((a+b)/c)}
    
    
    if(analysistype=="regression"){
      
      
      df.sub1<-cbind(classlabels_orig[,2],scores_res[,1])
      
      
      colnames(df.sub1)<-c("Outcome","PCscore")
      df.sub1<-as.data.frame(df.sub1)
      
      s1<-summary(df.sub1$PCscore)
      sadj=(s1[5]-s1[3])*0.5
      
      plot_res<-suppressMessages(ggscatter(df.sub1,x="Outcome",y="PCscore",xlab="Outcome",ylab="PC1score",
                          title="Outcome vs PC1 scores scatter plot",col="darkblue",
                          palette="jco", shape = 20, size = 3, # Points color, shape and size
                          add = "reg.line",  # Add regressin line
                          add.params = list(color = "#0072B2", fill = "lightgray"), # Customize reg. line
                          conf.int = TRUE))+theme(plot.title = element_text(hjust = 0.5,size=10))+stat_cor(method = "spearman",
                                                                                                          label.y=max(df.sub1$PCscore+sadj))
      
      suppressMessages(print(plot_res))
      if(pcnum_limit>1){
      df.sub1<-cbind(classlabels_orig[,2],scores_res[,2])
      df.sub1<-as.data.frame(df.sub1)
      colnames(df.sub1)<-c("Outcome","PCscore")
      
      s1<-summary(df.sub1$PCscore)
      sadj=(s1[5]-s1[3])*0.5
      
      plot_res<-suppressMessages(ggscatter(df.sub1,x="Outcome",y="PCscore",xlab="Outcome",ylab="PC2score",
                          title="Outcome vs PC2 scores scatter plot",col="darkblue",
                          palette="jco", shape = 20, size = 3, # Points color, shape and size
                          add = "reg.line",  # Add regressin line
                          add.params = list(color = "#0072B2", fill = "lightgray"), # Customize reg. line
                          conf.int = TRUE))+theme(plot.title = element_text(hjust = 0.5,size=10))+stat_cor(method = "spearman",
                                                                                                          label.y=max(df.sub1$PCscore+sadj))
      
      
      suppressMessages(print(plot_res))
      }
      
      if(pcnum_limit>2){
      df.sub1<-cbind(classlabels_orig[,2],scores_res[,3])
      
      df.sub1<-as.data.frame(df.sub1)
      colnames(df.sub1)<-c("Outcome","PCscore")
      
      s1<-summary(df.sub1$PCscore)
      sadj=(s1[5]-s1[3])*0.5
      
      plot_res<-suppressMessages(ggscatter(df.sub1,x="Outcome",y="PCscore",xlab="Outcome",ylab="PC3score",
                          title="Outcome vs PC3 scores scatter plot",col="darkblue",
                          palette="jco", shape = 20, size = 3, # Points color, shape and size
                          add = "reg.line",  # Add regressin line
                          add.params = list(color = "#0072B2", fill = "lightgray"), # Customize reg. line
                          conf.int = TRUE))+theme(plot.title = element_text(hjust = 0.5,size=10))+stat_cor(method = "spearman",
                                                                                                          label.y=max(df.sub1$PCscore+sadj))
      
      suppressMessages(print(plot_res))
      }
      
      
    }else{
      
      class_levels<-levels(as.factor(classlabels_orig[,2]))
      
      
      if(alphabetical.order==FALSE){
        classlabels_orig[,2]<- factor(classlabels_orig[,2], levels=unique(classlabels_orig[,2]))
        
        if(dim(classlabels_orig)[2]>2){
          
          classlabels_orig[,3]<- factor(classlabels_orig[,3], levels=unique(classlabels_orig[,3]))
        }
      }
      
      
      
      #sample.col.opt=lineplot.col.opt
      
      {
        if(sample.col.opt=="default"){
          
          col_vec<-c("#CC0000","#AAC000","blue","mediumpurple4","mediumpurple1","blueviolet","cornflowerblue","cyan4","skyblue",
                     "darkgreen", "seagreen1", "green","yellow","orange","pink", "coral1", "palevioletred2",
                     "red","saddlebrown","brown","brown3","white","darkgray","aliceblue",
                     "aquamarine","aquamarine3","bisque","burlywood1","lavender","khaki3","black")
          
        }else{
          if(sample.col.opt=="topo"){
            #col_vec<-topo.colors(256) #length(class_labels_levels))
            
            #col_vec<-col_vec[seq(1,length(col_vec),)]
            
            col_vec <- topo.colors(length(class_labels_levels), alpha=alphacol)
          }else{
            if(sample.col.opt=="heat"){
              #col_vec<-heat.colors(256) #length(class_labels_levels))
              
              col_vec <- heat.colors(length(class_labels_levels), alpha=alphacol)
            }else{
              if(sample.col.opt=="rainbow"){
                #col_vec<-heat.colors(256) #length(class_labels_levels))
                col_vec<-rainbow(length(class_labels_levels), start = 0, end = alphacol)
                
                #col_vec <- heat.colors(length(class_labels_levels), alpha=alphacol)
              }else{
                
                if(sample.col.opt=="terrain"){
                  #col_vec<-heat.colors(256) #length(class_labels_levels))
                  #col_vec<-rainbow(length(class_labels_levels), start = 0, end = alphacol)
                  
                  col_vec <- cm.colors(length(class_labels_levels), alpha=alphacol)
                }else{
                  
                  if(sample.col.opt=="colorblind"){
                    
                    if(length(class_labels_levels)<9){
                      
                      col_vec <- c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7", "#E64B35FF", "grey57")
                      
                    }else{
                      
                      col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","#E64B35B2", "#4DBBD5B2","#00A087B2","#3C5488B2","#F39B7FB2","#8491B4B2","#91D1C2B2","#DC0000B2","#7E6148B2",
                                 "#374E55B2","#DF8F44B2","#00A1D5B2","#B24745B2","#79AF97B2","#6A6599B2","#80796BB2","#0073C2B2","#EFC000B2", "#868686B2","#CD534CB2","#7AA6DCB2","#003C67B2","grey57")
                      
                      
                    }
                    
                    
                  }else{
                    
                    check_brewer<-grep(pattern="brewer",x=sample.col.opt)
                    
                    if(length(check_brewer)>0){
                      
                      sample.col.opt_temp=gsub(x=sample.col.opt,pattern="brewer.",replacement="")
                      
                      col_vec <- colorRampPalette(brewer.pal(10, sample.col.opt_temp))(length(class_labels_levels))
                      
                    }else{
                      
                      if(sample.col.opt=="journal"){
                        
                        
                        col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","#E64B35FF","#3C5488FF","#F39B7FFF",
                                   "#8491B4FF","#91D1C2FF","#DC0000FF","#B09C85FF","#5F559BFF",
                                   "#808180FF","#20854EFF","#FFDC91FF","#B24745FF",
                                   
                                   "#374E55FF","#8F7700FF","#5050FFFF","#6BD76BFF",
                                   "#E64B3519","#4DBBD519","#631879E5","grey75")
                        if(length(class_labels_levels)<8){
                          col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","grey75")
                          
                          #col_vec2<-brewer.pal(n = 8, name = "Dark2")
                          
                        }else{
                          if(length(class_labels_levels)<=28){
                            # col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7", "grey75","#D95F02", "#7570B3", "#E7298A", "#66A61E", "#E6AB02", "#A6761D", "#666666","#1B9E77", "#7570B3", "#E7298A", "#A6761D", "#666666", "#1B9E77", "#D95F02", "#7570B3", "#E7298A", "#66A61E", "#E6AB02", "#A6761D", "#666666")
                            
                            col_vec<-c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","#E64B35FF","#3C5488FF","#F39B7FFF",
                                       "#8491B4FF","#91D1C2FF","#DC0000FF","#B09C85FF","#5F559BFF",
                                       "#808180FF","#20854EFF","#FFDC91FF","#B24745FF",
                                       
                                       "#374E55FF","#8F7700FF","#5050FFFF","#6BD76BFF", "#8BD76BFF",
                                       "#E64B3519","#9DBBD0FF","#631879E5","#666666","grey75")
                            
                          }else{
                            
                            
                            
                            
                            colfunc <-colorRampPalette(c("#0072B2", "#E69F00", "#009E73", "#56B4E9", "#D55E00", "#CC79A7","grey75"));col_vec<-colfunc(length(class_labels_levels))
                            
                            col_vec<-col_vec[sample(col_vec)]
                            
                            
                          }
                        }
                        
                      }else{
                        #colfunc <-colorRampPalette(sample.col.opt);col_vec<-colfunc(length(class_labels_levels))
                      #  if(length(sample.col.opt)==1){
                          
                          ###save(sample.col.opt,file="sample.col.opt.Rda")
                          ###save(class_labels_levels,file="class_labels_levels.Rda")
                       #   col_vec <-rep(sample.col.opt,length(class_labels_levels))
                      #  }else{
                          #fixthis2
                          #colfunc <-colorRampPalette(sample.col.opt)
                          
                       #   col_vec<-sample.col.opt #colfunc(length(class_labels_levels))
                          
                        #}
                        
                        if(length(sample.col.opt)==1){
                          col_vec <-rep(sample.col.opt,length(class_labels_levels))
                        }else{
                          
                          #if(length(sample.col.opt)>=length(class_labels_levels)){
                            
                            col_vec <-sample.col.opt
                            #col_vec <- rep(col_vec,length(class_labels_levels))
                            
                            
                          #}else{
                          #  colfunc <-colorRampPalette(sample.col.opt);col_vec<-colfunc(length(class_labels_levels))
                          #}
                          
                        }
                      }
                    }
                    
                  }
                  
                }
              }
              
            }
            
          }
        }
      }
      df_matrix<-{}
      
      
      #lineplot.lty.option={}
      
      
      
      class_levels<-levels(as.factor(classlabels_orig[,2]))
      
      
      
      if(length(class_levels)>6){
        
        lineplot.lty.option=c(lineplot.lty.option,rep("solid",(length(class_levels)-6)))
      }
      #if(filename=="all")
      {
        
        
        fname<-paste("PCAloadings_",filename,"features.txt",sep="")
        
        loadings_res<-res$rotation
        scores_res<-res$x
        
        loadings_res<-round(loadings_res,2)
        scores_res<-round(scores_res,2)
        
        if(dim(loadings_res)[2]>10){
          loadings_res<-loadings_res[,c(1:10)]
          scores_res<-scores_res[,c(1:10)]
        }
        #   ##save(res,file="res.Rda")
        # write.table(loadings_res,file=fname,sep="\t")
        
        fname<-paste("PCAscores_",filename,"features.txt",sep="")
        
        scores_res1<-cbind(classlabels_orig,scores_res)
        
        
        # write.table(scores_res1,file=fname,sep="\t",row.names=FALSE)
        
        
      }
      
      #pcnum_limit<-res$numcomp_plot #min(5,dim(scores_res)[2])
      
      get_pooled_sp<-function(n1,n2,S1,S2){a<-(n1-1)*S1;b<-(n2-1)*S2;c<-(n1+n2-2);return((a+b)/c)}
      #S2<-cov(scores_res[16:46,1:2])
      #S1<-cov(scores_res[1:15,1:2])
      
      if(alphabetical.order==FALSE){
        
        
      }
      class_levels<-levels(as.factor(classlabels_orig[,2]))
      
      #if(length(class_labels_levels)==2)
      if(do_pca_anova==TRUE)
      {
        if(FALSE){
          h1<-hotelling.test(scores_res[1:num_samps_group[[1]],c(1)],scores_res[(1+num_samps_group[[1]]):(num_samps_group[[1]]+num_samps_group[[2]]),c(1)],shrinkage=FALSE)
          print("Hotelling test using PC1: ")
          print(h1)
          
          h2<-hotelling.test(scores_res[1:num_samps_group[[1]],c(2)],scores_res[(1+num_samps_group[[1]]):(num_samps_group[[1]]+num_samps_group[[2]]),c(2)],shrinkage=FALSE)
          print("Hotelling test using PC2: ")
          print(h2)
          
          h3<-hotelling.test(scores_res[1:num_samps_group[[1]],c(3)],scores_res[(1+num_samps_group[[1]]):(num_samps_group[[1]]+num_samps_group[[2]]),c(3)],shrinkage=FALSE)
          print("Hotelling test using PC3: ")
          print(h3)
        }
        
        pc_pval_vec<-{}
        
        
        
        for(pcnum in 1:pcnum_limit){
          
          pc1_pval<-anova(lm(cbind(scores_res[,pcnum])~classlabels_orig[,2]))
          pc1_pval<-round(pc1_pval[[5]][1],3)
          pc_pval_vec<-c(pc_pval_vec,pc1_pval)
        }
        
        
        
        
      }
      # #savenum_samps_group,scores_res,file="HotellingTestInput.Rda")
      #h1<-hotelling.test(scores_res[1:15,c(4:5)],scores_res[16:46,c(4:5)],shrinkage=FALSE)
      #h1<-hotelling.test(scores_res[1:15,c(2:3)],scores_res[16:46,c(2:3)],shrinkage=FALSE)
      
      df_matrix<-{}
      
      #keeps the class order same as in the input file; avoids arrangement by alphabetical order
      if(alphabetical.order==FALSE){
        classlabels_orig[,2] <- factor(classlabels_orig[,2], levels=unique(classlabels_orig[,2]))
      }
      
      class_col_vec=col_vec
      
     # save(res,classlabels_orig,file="df1.Rda")
      #save(pc_pval_vec,file="pc_pval_vec.Rda")
      
      #if(pairedanalysis==TRUE)
      {
        if(dim(classlabels_orig)[2]>2){
          class_levels<-levels(as.factor(classlabels_orig[,2]))
          t1<-table(classlabels_orig[,3])
          
          for(c in 1:length(class_levels))
          {
            
            
            #  class_col_vec[which(classlabels[,2]==class_levels[c])]<-col_vec[c]
            
            
          }
          #print("Doing two factors")
          
          # for(pc in 1:pcnum_limit)
          lapply(1:pcnum_limit,function(pc)
          {
            
            ylabel_text=paste("PC",pc,"score",sep="")
            
            classlabels_orig<-as.data.frame(classlabels_orig)
            classgroup<-as.data.frame(classgroup)
            res$x<-as.data.frame(res$x)
            if(pairedanalysis==FALSE){
              df<-cbind(res$x[,pc],classgroup,classlabels_orig[,2],classlabels_orig[,3])
              
              mzname<-paste("PC",pc," scores distribution with 95% confidence interval \n in each group using ",filename," feats vs factors",sep="")
              
            }else{
              
              
              df<-cbind(res$x[,pc],classgroup,classlabels_orig[,2],classlabels_orig[,3])
              
              mzname<-paste("PC",pc," scores distribution with 95% confidence interval \n in each group using ",filename," feats vs time",sep="")
              
            }
            
            fname<-paste("pc_",pc,"_scoreplot",".tiff",sep="")
            par_rows=3
            
            colnames(df)<-c("y","x","Class","time")
            df=as.data.frame(df)
            df$y<-as.numeric(as.character(df$y))
            
            
            
           #save(df,file="df.Rda")
            
            df_fname<-paste("dftable_pc",pc,".txt",sep="")
            
            if(pc>1){
              if(pc==2){
                PC2Score=df[,1]
                df_matrix<-cbind(df_matrix,PC2Score)
              }else{
                
                
                PC3Score=df[,1]
                df_matrix<-cbind(df_matrix,PC3Score)
                
                
              }
            }else{
              PC1Score<-df[,1]
              df_matrix<-cbind(df[,-c(1)],PC1Score)
              
            }
            
            if(alphabetical.order==FALSE){
              df$Class <- factor(df$Class, levels=unique(df$Class))
              df$time <- factor(df$time, levels=unique(df$time))
              
            }
            
            
            df.summary <- aggregate(df$y,
                                    by = list(df$Class,df$time),
                                    FUN = function(y) c(ysd = sd(y),
                                                        yse =sd(y)/sqrt(length(y)),
                                                        Score = mean(y),number=length(y)))
           # save(df.summary,file="df.summary.Rda")
            df.summary<-do.call(data.frame, df.summary)
            
            df.summary<-cbind(df.summary[,c(1,3,4,5,6,1,2)])
            
            colnames(df.summary)<-c("x","sd","se","PCscore","number","Class","time")
            df.summary<-as.data.frame(df.summary)
            
            ymax = df.summary$PCscore + 1.96* df.summary$se
            
            ymin =  df.summary$PCscore - 1.96* df.summary$se
            
            max_yval<-ceiling(max((df.summary$PCscore + (6* df.summary$se)),na.rm=TRUE)) #round(max( df.summary$Intensity+(4* df.summary$se),na.rm=TRUE))
            
            
            min_yval<-floor(min((df.summary$PCscore - (6*df.summary$se)),na.rm=TRUE))
            
            class_levels_time<-levels(as.factor(classlabels_orig[,3]))
            
            df.summary$Class<-as.numeric(as.factor(df.summary$Class))
            
            Class<-{}
            for(cnum in 1:length(class_levels)){
              
              Class<-c(Class,rep(class_levels[cnum],length(t1)))
              
              df.summary$Class[which(df.summary$Class==cnum)]<-class_levels[cnum]
              
            }
            
            df_time<-df.summary$time
            df.summary$time<-as.numeric(as.factor(df.summary$time))
            
            
            Class<-unique(Class)
            if(alphabetical.order==FALSE){
              df.summary$Class <- factor(df.summary$Class, levels=unique(df.summary$Class))
            }
            ###save(df.summary,file="df.summary.Rda")
            df.summary$x<- df.summary$time
            
            #savelist=ls(),file="pcadebugfactor.Rda")
            
            shape_vec=c(0:2,5:25)
            t1shape=levels(factor(df.summary$Class))
            
            shape_vec1<-df.summary$Class
            
            for(i in 1:length(t1shape)){
              shape_vec1[which(shape_vec1==t1shape[i])]<-shape_vec[i]
            }
            
            
            pca_plot_fname<-paste("pca_plots_",pc,".Rda",sep="")
            
            unique_class_col_vec=unique(class_col_vec)
            
            #save(df.summary,shape_vec1,df_time,col_vec,classlabels,
            #  classgroup,classlabels_orig,unique_class_col_vec,class_col_vec,ymin,ymax,pca.cex.val,df_time,file=pca_plot_fname)
            
            
            if(pairedanalysis==TRUE){
              
              
              sizeval=1.5
              #plot.margin=unit(c(10,8,8,8),"mm"),
              
              #+ labs(color = "Class")
              shape_vec1<-as.numeric(as.character(shape_vec1))
              
              
              
              
              plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(x), y = PCscore,
                                                                color = as.factor(Class),linetype=Class)) + 
                                           labs(color = "Class",linetype="Class") + 
                                           geom_point(size = pca.cex.val,shape=shape_vec1) + 
                                           geom_line(aes(group =as.factor(Class)),size=sizeval) + 
                                           geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1) + 
                                           xlab("TimePoint") + theme_bw() + 
                                           theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                 panel.grid.minor = element_blank(),
                                                 axis.line = element_line(colour = "black",size=sizeval),
                                                 axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                 
                                                 strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                 strip.text = element_text(face="bold")) + 
                                           scale_y_continuous(breaks = scales::pretty_breaks(n = 10)))
              
              
              
              if(length(unique_class_col_vec)==1){
                plot_res<-plot_res+scale_color_manual(values=rep(unique(class_col_vec),length(class_labels_levels)))
                
              }else{
                plot_res<-plot_res+scale_color_manual(values=unique(class_col_vec))
              }
              
              plot_res<-plot_res+scale_x_discrete(name ="Time",labels=as.factor(unique(df_time)))
              
              plot_res<-plot_res+theme(legend.text = element_text(size = 11*cex.plots))+guides(fill = guide_legend(title = NULL))+theme(axis.text.x = element_text(angle = 45, hjust = 1))
              
              #if(FALSE)
              {
                plot_res<-plot_res+guides(fill = guide_legend(title = FALSE),colour=FALSE)+guides(colour = guide_legend(override.aes = list(shape = unique(shape_vec1))))
              }
              
              #  plot_res<-plot_res+guides(fill = guide_legend(title = FALSE),colour=FALSE)+guides(colour = guide_legend(override.aes = list(shape = unique(shape_vec1))))
              
              # plot_res+guides(color=FALSE,linetype=FALSE)
              
              
            }else{
              
              
              
              if(timeseries.lineplots==TRUE){
                
                
                shape_vec1<-as.numeric(as.character(shape_vec1))
                sizeval=1.5
                
                
                if(is.na(lineplot.lty.option)==TRUE){
                  plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(x), y = PCscore,colour = as.factor(Class),linetype=Class)) + geom_point(size = pca.cex.val,shape=shape_vec1) + geom_line(aes(group =Class),size=sizeval)  + labs(colour = "Class") + geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1)  + theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                                                                                                                                                                                                                                                                                                                           panel.grid.minor = element_blank(), axis.line = element_line(colour = "black",size=sizeval),
                                                                                                                                                                                                                                                                                                                                                           axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                                                                                                                                                                                                                                                                                                                           strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                                                                                                                                                                                                                                                                                                                           strip.text = element_text(face="bold")) + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)))
                }else{
                  plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(x), y = PCscore,colour = as.factor(Class))) + geom_point(size = pca.cex.val,shape=shape_vec1) + geom_line(aes(group =Class),size=sizeval)  + labs(colour = "Class") + geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1)  + theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                                                                                                                                                                                                                                                                                                            panel.grid.minor = element_blank(), axis.line = element_line(colour = "black",size=sizeval),
                                                                                                                                                                                                                                                                                                                                            axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                                                                                                                                                                                                                                                                                                            strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                                                                                                                                                                                                                                                                                                            strip.text = element_text(face="bold")) + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)))
                }
                
                
                if(length(unique_class_col_vec)==1){
                  plot_res<-plot_res+scale_color_manual(values=rep(unique(class_col_vec),length(class_labels_levels)))
                  
                }else{
                  plot_res<-plot_res+scale_color_manual(values=unique(class_col_vec))
                }
                plot_res<-plot_res+scale_x_discrete(name ="Time",labels=unique(df_time))
                plot_res<-plot_res+theme(legend.text = element_text(size = 11*cex.plots))+guides(fill = guide_legend(title = NULL))
                
                #legend.labs=levels(factor(df.summary$Class)), color = "strata")
                #plot.margin = unit(c(25,25,5.5,28), "pt"),
                
                uniq_class<-unique(df.summary$Class)
                plot_res<-plot_res+guides(fill = guide_legend(title = FALSE),colour=FALSE)+guides(colour = guide_legend(override.aes = list(shape = unique(shape_vec1))))+theme(axis.text.x = element_text(angle = 45, hjust = 1))
                
                
                
                #    plot_res<-plot_res+guides(linetype=FALSE)
                
              }else{
                sizeval=1.5
                
                
                
                plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(x), y = PCscore,color = as.factor(Class))) + geom_point(size = pca.cex.val,shape=shape_vec1) + labs(color = "Class") +  geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1) + xlab("") + scale_color_manual(values=unique(class_col_vec)) + theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                                                                                                                                                                                                                                                                                                                         panel.grid.minor = element_blank(), axis.line = element_line(colour = "black",size=sizeval),
                                                                                                                                                                                                                                                                                                                                                         axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                                                                                                                                                                                                                                                                                                                         strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                                                                                                                                                                                                                                                                                                                         strip.text = element_text(face="bold")) + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + scale_fill_manual(values=unique(class_col_vec)))
                
                
                plot_res<-plot_res+theme(legend.text = element_text(size = 11*cex.plots))+guides(fill = guide_legend(title = NULL))
                
                
                plot_res<-plot_res+scale_x_discrete(name ="Factor2",labels=as.factor(unique(df_time)))
                
                plot_res<-plot_res+guides(fill = guide_legend(title = FALSE),colour=FALSE)+guides(colour = guide_legend(override.aes = list(shape = unique(shape_vec1))))+theme(axis.text.x = element_text(angle = 45, hjust = 1))
                
                
              }
              
              
              
            }
            
            plot_res<-plot_res + ggtitle(mzname)
            
            plot_res<-plot_res + theme(plot.title = element_text(size=8))
            # x axis title
            plot_res<-plot_res + theme(axis.title.x = element_text(size=14*cex.plots))
            # y axis title
            plot_res<-plot_res + theme(axis.title.y = element_text(size=14*cex.plots))+theme(axis.text.x = element_text(angle = 45, hjust = 1,size=11**cex.plots))
            
            # plot_res<-plot_res + theme(axis.title.x=element_blank(),axis.text.x=element_blank(),axis.ticks.x=element_blank())
            
            
            #plot_res
            print(plot_res)
            
          })
          
          ##############
        }else{
          
          if(alphabetical.order==FALSE){
            classgroup <- factor(classgroup, levels=unique(classgroup))
          }
          class_levels<-levels(as.factor(classgroup))
          t1<-table(classgroup)
          
          
          for(c in 1:length(class_levels))
          {
            
            
            class_col_vec[which(as.factor(classgroup)==class_levels[c])]<-col_vec[c]
            
            
          }
          
          # for(pc in 1:pcnum_limit)
          
          
          #save(classgroup,class_levels,pcnum_limit,classlabels_orig,res,pairedanalysis,col_vec,pc_pval_vec,file="debuglpA.Rda")
          lapply(1:pcnum_limit,function(pc)
          {
            ylabel_text<-paste("PC",pc,"score",sep="")
            df<-cbind(res$x[,pc],as.character(classlabels_orig[,2]),as.character(classlabels_orig[,2]))
            
            df=as.data.frame(df)
            
            if(pairedanalysis==FALSE){
              #  mzname<-paste("PC",pc," scores distribution (25th percentile, median, 75th percentile) \n in each group using ",filename," feats vs factors (p=",pc_pval_vec[pc],")",sep="")
              
              mzname<-paste("PC",pc," scores distribution with 95% confidence interval in each group using ",filename," feats vs factors (p=",pc_pval_vec[pc],")",sep="")
            }else{
              
              #mzname<-paste("PC",pc," scores distribution (25th percentile, median, 75th percentile) \n in each group using ",filename," feats vs time",sep="")
              mzname<-paste("PC",pc," scores distribution with 95% confidence interval in each group using ",filename," feats vs time (p=",pc_pval_vec[pc],")",sep="")
              
            }
            
            fname<-paste("pc_",pc,"_scoreplot",".tiff",sep="")
            par_rows=3
            
            colnames(df)<-c("y","x","Class")
            df=as.data.frame(df)
            df$y<-as.numeric(as.character(df$y))
            
            
            
            #savedf,file="pcadf.Rda")
            
            df_fname<-paste("dftable_pc",pc,".txt",sep="")
            # write.table(df,file=df_fname,sep="\t",row.names=FALSE)
            
            if(pc>1){
              if(pc==2){
                PC2Score=df[,1]
                df_matrix<-cbind(df_matrix,PC2Score)
              }else{
                
                
                PC3Score=df[,1]
                df_matrix<-cbind(df_matrix,PC3Score)
                
                
              }
            }else{
              PC1Score<-df[,1]
              df_matrix<-cbind(df[,-c(1)],PC1Score)
              
            }
            
            
            if(FALSE){
              df.summary <- aggregate(df$y,
                                      by = list(df$Class),
                                      FUN = function(y) c(ymin = quantile(y,0.25),
                                                          ymax = quantile(y,0.75),
                                                          Score = median(y),number=length(y)))
            }
            
            if(alphabetical.order==FALSE){
              df$Class <- factor(df$Class, levels=unique(df$Class))
              
              
            }
            df.summary <- aggregate(df$y,
                                    by = list(df$Class),
                                    FUN = function(y) c(ysd = sd(y),
                                                        yse =sd(y)/sqrt(length(y)),
                                                        Score = mean(y),number=length(y)))
            
            df.summary<-do.call(data.frame, df.summary)
            
            df.summary<-cbind(df.summary[,c(1,2:5,1)])
            
            colnames(df.summary)<-c("x","sd","se","PCscore","number","Class")
            df.summary<-as.data.frame(df.summary)
            ymax = df.summary$PCscore + 1.96* df.summary$se
            
            df.summary<-as.data.frame(df.summary)
            
            ymin =  df.summary$PCscore - 1.96* df.summary$se
            
            max_yval<-ceiling(max((df.summary$PCscore + (6* df.summary$se)),na.rm=TRUE)) #round(max( df.summary$Intensity+(4* df.summary$se),na.rm=TRUE))
            
            
            min_yval<-floor(min((df.summary$PCscore - (6*df.summary$se)),na.rm=TRUE))
            
            # ##save(df.summary,ymin,ymax,classlabels_orig,class_levels,file="df.summary.Rda")
            
            time.hour<- c(unique(as.character(classlabels_orig[,2])),
                          unique(as.character(classlabels_orig[,2])))
            
            
            ##save(df.summary,class_col_vec,pca.cex.val,file="pca_plots.Rda")
            
            
            sizeval=1.5
            
            #save(df.summary,df,pca.cex.val,class_levels,class_labels_levels,pairedanalysis,timeseries.lineplots,ymin,ymax,
            #class_col_vec,sizeval,classlabels_orig,file="pcad1plotB.Rda")
            
            
            
            {
              if(pairedanalysis==FALSE){
                
                if(timeseries.lineplots==TRUE){
                  sizeval=1.5
                  plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(Class), y = PCscore,group=1)) 
                                             + geom_point(size = cex.plots) + geom_line(size=sizeval)
                                             + geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1) + xlab("") 
                                             + scale_color_manual(values=unique(class_col_vec)) + scale_size_manual(values=c(sizeval)) 
                                             + theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                                  panel.grid.minor = element_blank(), axis.line = element_line(colour = "black",size=sizeval),
                                                                  axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                                  strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                                  strip.text = element_text(face="bold")) + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)))
                  
                  plot_res<-plot_res+scale_x_discrete(name ="Time",labels=unique(df.summary$Class))
                  plot_res<-plot_res+theme(legend.text = element_text(size = 12))+guides(fill = guide_legend(title = NULL))
                  
                  
                }else{
                  
                  sizeval=1.5
                  # #save(df.summary,pca.cex.val,ymin,ymax,sizeval,class_col_vec,cex.plots,file="debug1.Rda")
                  if(length(unique(class_col_vec))==1){  
                    if(length(unique(class_col_vec))==1 && analysistype=="regression"){
                      
                      df.sub1<-df.summary[,c("x","PCscore")]
                      df.sub1<-apply(df.sub1,2,as.numeric)
                      df.sub1<-as.data.frame(df.sub1)
                      
                      s1=summary(df.sub1$PCscore)
                      
                      sadj=(s1[5]-s1[3])*ypos.adj.factor
                      
                      plot_res<-suppressMessages(ggscatter(df.sub1,x="x",y="PCscore",xlab="Outcome",col=class_col_vec,
                                          palette="jco", shape = 20, size = 3, # Points color, shape and size
                                          add = "reg.line",  # Add regressin line
                                          add.params = list(color = "#0072B2", fill = "lightgray"), # Customize reg. line
                                          conf.int = TRUE))+stat_cor(method = "spearman",
                                 #aes(label = paste(..r.label.., ..p.label..),
                                 label.x = 3,label.y=max(df.sub1$PCscore+sadj)
                      )
                      
                      
                      
                      
                    }else{
                      plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(Class), y = PCscore)
                                                        + geom_point(size = pca.cex.val) +
                                                          geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1) + xlab("") +
                                                          theme_bw() +
                                                          scale_size_manual(values=c(sizeval)) +
                                                          theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                                panel.grid.minor = element_blank(), axis.line = element_line(colour = "black",size=sizeval),
                                                                axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                                strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                                strip.text = element_text(face="bold")) +
                                                          scale_y_continuous(breaks = scales::pretty_breaks(n = 10))))
                      
                    }
                    
                    #   if(length(unique_class_col_vec)==1){
                    plot_res<-plot_res+scale_color_manual(values=class_col_vec) #rep(unique(class_col_vec),length(class_labels_levels)))
                    
                    plot_res<-plot_res+theme(legend.title = element_blank())
                    
                    # plot_res<-plot_res+theme(legend=FALSE)
                  }else{
                    #   print("here1")
                    
                    plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(Class), y = PCscore,color = as.factor(Class))) 
                                               + geom_point(size = pca.cex.val) + labs(color = "Class") + 
                                                 geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1) + xlab("") +
                                                 scale_color_manual(values=unique(class_col_vec)) + theme_bw() +
                                                 scale_size_manual(values=c(sizeval)) + 
                                                 theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                       panel.grid.minor = element_blank(), axis.line = element_line(colour = "black",size=sizeval),
                                                       axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                       strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                       strip.text = element_text(face="bold")) + 
                                                 scale_y_continuous(breaks = scales::pretty_breaks(n = 10)))
                    plot_res<-plot_res+scale_x_discrete(name ="",labels=as.factor(class_levels))
                    plot_res<-plot_res+theme(legend.text = element_text(size = 11*cex.plots))+guides(fill = guide_legend(title = NULL))
                    
                  }
                  
                  
                  #,legend.position="none",
                }
              }else{
                #print("here2")
                
                 #save(df.summary,pca.cex.val,ymin,ymax,class_col_vec,class_levels,classgroup,file="t1.Rda")
                sizeval=1.5
                plot_res<-suppressWarnings(ggplot(df.summary, aes(x = as.factor(x), y = PCscore,group=1)) +  geom_point(size = pca.cex.val) + geom_line(size=sizeval) + geom_errorbar(aes(ymin = ymin, ymax = ymax),size=1,width=0.1) + scale_color_manual(values=unique(class_col_vec)) + scale_size_manual(values=c(sizeval)) + theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
                                                                                                                                                                                                                                                                                                                                                     panel.grid.minor = element_blank(), axis.line = element_line(colour = "black",size=sizeval),
                                                                                                                                                                                                                                                                                                                                                     axis.text= element_text(size=14*cex.plots), axis.title=element_text(size=16*cex.plots,face="bold"),
                                                                                                                                                                                                                                                                                                                                                     strip.background=element_rect(colour="#f0f0f0",fill="#f0f0f0"),
                                                                                                                                                                                                                                                                                                                                                     strip.text = element_text(face="bold")) + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)))
                
                #plot_res<-plot_res+suppressWarnings(scale_x_discrete(name ="Time",labels=unique(Class)))
                plot_res<-plot_res+scale_x_discrete(name ="",labels=as.factor(class_levels))
                plot_res<-plot_res+theme(legend.text = element_text(size = 11*cex.plots))+guides(fill = guide_legend(title = NULL))
                
                
                
              }
            }
            
            
            plot_res<-plot_res + ggtitle(mzname)
            
            plot_res<-plot_res + theme(plot.title = element_text(size=8))
            # x axis title
            plot_res<-plot_res + theme(axis.title.x = element_text(size=14*cex.plots))
            # y axis title
            plot_res<-plot_res + theme(axis.title.y = element_text(size=14*cex.plots))+theme(axis.text.x = element_text(angle = 45, hjust = 1,size=11*cex.plots))
            
            #    plot_res<-plot_res + theme(axis.title.x=element_blank(),axis.text.x=element_blank(),axis.ticks.x=element_blank())
            
            suppressMessages(print(plot_res))
            
          })
        }
        
      }
    }
  }
  
  df_fname<-paste("PC_score_distribution_matrix_",filename,"features.txt",sep="")
  
  if(newdevice==TRUE){
    
    dev.off()
  }
  
  return(res)
}
kuppal2/xmsPANDA documentation built on May 15, 2021, 5:48 a.m.