码迷,mamicode.com
首页 > 其他好文 > 详细

ROC

时间:2016-09-05 17:11:47      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
  1 # -*- coding: utf-8 -*-
  2 # __author__ = "JieYao"
  3 
  4 from biocluster.agent import Agent
  5 from biocluster.tool import Tool
  6 import os
  7 import string
  8 import types
  9 import subprocess
 10 from biocluster.core.exceptions import OptionError
 11 
 12 class RocAgent(Agent):
 13     """
 14     需要calc_roc.pl
 15     version v1.1
 16     author: JieYao
 17     last_modifued:2016.08.22
 18     """
 19 
 20     def __init__(self, parent):
 21         super(RocAgent, self).__init__(parent)
 22         options = [
 23             {"name": "mode", "type": "int", "default":1},
 24             {"name": "genus_table", "type": "string"},
 25             {"name": "group_table", "type": "string"},
 26             {"name": "method", "type": "string", "default":""},
 27             {"name": "name_table", "type": "string", "default":""},
 28             {"name": "top_n", "type": "int", "default": 20}
 29             ]
 30         self.add_option(options)
 31         self.step.add_steps(RocAnalysis)
 32         self.on(start, self.step_start)
 33         self.on(end, self.step_end)
 34 
 35     def step_start(self):
 36         self.step.RocAnalysis.start()
 37         self.step.update()
 38 
 39     def step_end(self):
 40         self.step.RocAnalysis.finish()
 41         self.step.update()
 42 
 43     def check_options(self):
 44         if not os.path.exists(self.option(genus_table)):
 45             raise OptionError("必须提供Genus Table")
 46         if not os.path.exists(self.option(group_table)):
 47             raise OptionError("必须提供分组表格")
 48         if self.option(method):
 49             if self.option(method) not in [sum, average, median]:
 50                 raise OptionError("丰度计算方法只能选择sum,average,median之一")
 51         if self.option(mode) == 2:
 52             if not os.path.exists(self.option(name_table)):
 53                 raise OptionError("Mode 2 模式下必须提供物种名列表文件")
 54         os.system(cat %s | awk -F "\t" \‘{ print $1 }\‘ > tmp.txt %(self.option(genus_table)))
 55         genus_data = open("tmp.txt", "r").readlines()[1:]
 56         os.remove(tmp.txt)
 57         genus_data = map(string.rstrip, genus_data)
 58         sample_data = open(self.option(genus_table), "r").readline().strip().split()[1:]
 59 
 60         group_data = open(self.option(group_table), "r").readlines()[1:]
 61         group_data = map(string.strip, group_data)
 62         for s in group_data:
 63             if s.split()[0] not in sample_data:
 64                 raise OptionError("物种%s不在Genus Table中" % s.split()[0])
 65             if s.split()[1] not in [0,1]:
 66                 raise OptionError("物种分组只能有0和1!")
 67 
 68         if self.option(mode)==2:
 69             name_data = open(self.option(name_table), "r").readlines()[1:]
 70             name_data = map(string.strip, name_data)
 71             for s in name_data:
 72                 if s not in genus_data:
 73                     raise OptionError("物种%s不在Genus Table中" % s)
 74 
 75         if self.option(mode)==1:
 76             if self.option(top_n)>len(genus_data):
 77                 raise OptionError("选择丰度前N高物种时,设定的N多于物种总数:%d>%d" %(self.option(top_n), len(genus_data)))
 78             
 79         return True
 80 
 81     
 82     def set_resource(self):
 83         """
 84         """
 85         self._cpu = 2
 86         self._memory = ‘‘
 87 
 88     def end(self):
 89         result_dir = self.add_upload_dir(self.output_dir)
 90         result_dir.add_relpath_rules([
 91                 [".", "", "ROC分析结果目录"],
 92                 ["./roc_curve.pdf", "pdf", "ROC受试者工作特征曲线图"],
 93                 ["./roc_auc.xls", "xls", "ROC受试者工作特征曲线-AUC VALUE"]
 94                 ])
 95         print self.get_upload_files()
 96         super(RocAgent, self).end()
 97 
 98 class RocTool(Tool):
 99     def __init__(self, config):
100         super(RocTool, self).__init__(config)
101         self._version = 1.0.1
102     
103     def run(self):
104         """
105         运行
106         """
107         super(RocTool, self).run()
108         self.run_roc_perl()
109 
110     def run_roc_perl(self):
111         """
112         运行calc_roc.perl
113         """
114         os.system(export PATH=/mnt/ilustre/users/sanger-dev/app/gcc/5.1.0/bin:$PATH)
115         os.system(export LD_LIBRARY_PATH=/mnt/ilustre/users/sanger-dev/app/gcc/5.1.0/lib64:$LD_LIBRARY_PATH)
116         cmd = self.config.SOFTWARE_DIR + /program/perl/perls/perl-5.24.0/bin/perl  + self.config.SOFTWARE_DIR + /bioinfo/meta/scripts/plot_roc.pl 
117         cmd += -o %s  %(self.work_dir + /ROC/)
118         cmd += -i %s  %(self.option(genus_table))
119         cmd += -mode %d  %(self.option(mode))
120         cmd += -group %s  %(self.option(group_table))
121         if self.option(mode)==2:
122             cmd += -name %s  %(self.option(name_table))
123         if self.option(method):
124             cmd += -method %s  %(self.option(method))
125         if self.option(mode)==1:
126             cmd += -n %d  %(self.option(top_n))
127         cmd += -labels F 
128         self.logger.info(开始运行calc_roc.pl计算ROC相关数据)
129         
130         try:
131             subprocess.check_output(cmd, shell=True)
132             self.logger.info(生成 roc.cmd.r 成功)
133         except subprocess.CalledProcessError:
134             self.logger.info(生成 roc.cmd.r 失败)
135             self.set_error(无法生成 roc.cmd.r 文件)
136         try:
137             subprocess.check_output(self.config.SOFTWARE_DIR +
138                                     /program/R-3.3.1/bin/R --restore --no-save < %s/roc.cmd.r % (self.work_dir + /ROC), shell=True)
139             self.logger.info(ROC计算成功)
140         except subprocess.CalledProcessError:
141             self.logger.info(ROC计算失败)
142             self.set_error(R运行计算ROC失败)
143             raise "运行R脚本计算ROC相关数据失败"
144         self.logger.info(运行calc_roc.pl程序进行ROC计算完成)
145         allfiles = self.get_roc_filesname()
146         self.linkfile(self.work_dir + /ROC/ + allfiles[0], roc_curve.pdf)
147         self.linkfile(self.work_dir + /ROC/ + allfiles[1], roc_auc.xls)
148         self.end()
149 
150     def linkfile(self, oldfile, newname):
151         newpath = os.path.join(self.output_dir, newname)
152         if os.path.exists(newpath):
153             os.remove(newpath)
154         os.link(oldfile, newpath)
155 
156     def get_roc_filesname(self):
157         filelist = os.listdir(self.work_dir + /ROC)
158         roc_curve = None
159         roc_auc = None
160         for name in filelist:
161             if roc_curve.pdf in name:
162                 roc_curve = name
163             elif roc_aucvalue.xls in name:
164                 roc_auc = name
165         if (roc_curve and roc_auc):
166             return [roc_curve, roc_auc]
167         else:
168             self.set_error("未知原因,ROC计算结果丢失")
169     
View Code
技术分享
  1  #!/usr/bin/perl
  2 
  3 use strict;
  4 use warnings;
  5 use Getopt::Long;
  6 my %opts;
  7 my $VERSION = "v1.20160817"; 
  8 
  9 GetOptions( \%opts,"mode=s","i=s","group=s","o=s","n=s","method=s","name=s","ncuts=i","labels=s","labelsize=s","rocci=s","siglevel=f","w=f","h=f","facet_wrap=s","theme=s");
 10 my $usage = <<"USAGE";
 11        Program : $0   
 12        Discription:   
 13        Version : $VERSION
 14        Usage :perl $0 [options]        
 15                         -mode    *1 or 2 or 3; The Receiver:1)The relative abundance of the top n  Bacteria(could analysis with more than one group)
 16                                                            2)The relative abundance of special bacteria(one or more)
 17                                                            3)The receiver is any other factors      
 18             -i    *Input genus table file(or other Taxonomic level) or any other factors(mode_3).
 19             -group  *Group name in mapping file .
 20                         -o    *Output dir
 21                         -n    (*mode_1)Top n genus or other taxonomic level(relative abundance)
 22                         -method (*mode_1)If you choose the mode_2 to analyze, you can also choose the analysis "methed". If you dont have a choice, you will make a separate analysis of them.   Follow method are available:sum, average, median
 23                         -name    (*mode_2)the name of Bacteria 
 24             -ncuts    Number of cutpoints to display along each curve.Default:20
 25             -labels    Logical, display cutoff text labels:Default:F
 26             -labelsize    Size of cutoff text labels.Default:3
 27             -rocci    Confidence regions for the ROC curve.Default:F
 28             -siglevel    Significance level for the confidence regions.Default:0.05
 29             -w    default:6
 30             -h    default:5
 31             -facet_wrap      Logical,display group in different panel.Default:F
 32             -theme  themes for display roc.Follow themes are available:theme_bw,theme_classic,theme_dark,theme_gray,theme_light.Default:theme_bw
 33        Example:$0 -mode 1 -i genus.xls -group group.txt -o output_dir -n 30  -labels F -method sum
 34                    $0 -mode 2 -i genus.xls -group group_1.txt -o output_dir -name name.txt  -labels F -w 7.8 
 35                    $0 -mode 2 -i genus.xls -group group_1.txt -o output_dir -name name.txt  -labels F -method sum
 36                    $0 -mode 3 -i factor.txt -group group.txt -o output_dir -labels F -w 7.8
 37 
 38 USAGE
 39 
 40 die $usage if(!($opts{mode}&&$opts{i}&&$opts{group}&&$opts{o}));
 41 #die $usage if(!(($opts{mode}==F)&&$opts{i}&&$opts{group}&&$opts{o}&&$opts{name}));
 42 
 43 
 44 $opts{n}=defined $opts{n}?$opts{n}:"20";
 45 $opts{method}=defined $opts{method}?$opts{method}:"chengchen.ye";
 46 $opts{name}=defined $opts{name}?$opts{name}:"NULL";
 47 $opts{ncuts}=defined $opts{ncuts}?$opts{ncuts}:20;
 48 $opts{labels}=defined $opts{labels}?$opts{labels}:"F";
 49 $opts{labelsize}=defined $opts{labelsize}?$opts{labelsize}:"3";
 50 $opts{w}=defined $opts{w}?$opts{w}:6;
 51 $opts{h}=defined $opts{h}?$opts{h}:5;
 52 $opts{facet_wrap}=defined $opts{facet_wrap}?$opts{facet_wrap}:"F";
 53 $opts{theme}=defined $opts{theme}?$opts{theme}:"";
 54 $opts{rocci}=defined $opts{rocci}?$opts{rocci}:"F";
 55 $opts{siglevel}=defined $opts{siglevel}?$opts{siglevel}:"0.05";
 56 
 57 if(! -e $opts{o}){
 58         `mkdir $opts{o}`;
 59 }
 60         
 61 
 62 open CMD,">$opts{o}/roc.cmd.r";
 63 
 64 print CMD "
 65     library(plotROC)
 66 
 67     
 68         group <- read.table(\"$opts{group}\",header=T,check.names=F,comment.char=\"\")
 69         otu_table <-read.table(\"$opts{i}\",sep=\"\t\",head=T,check.names = F,row.names=1)
 70         y<-length(otu_table[1,])
 71         
 72 
 73 
 74 
 75 ###The Receiver:A)The relative abundance of the Bacteria
 76 if($opts{mode}==1){
 77         group<-as.data.frame(group)
 78         x<-length(group[1,])
 79         ###D
 80         D<-group[,2]
 81 
 82         ####M        
 83         otu_table<-cbind(otu_table,rowsum=rowSums(otu_table))
 84         otu_table<- otu_table[order(otu_table[,y+1],decreasing=T),]
 85         otu_table_top20<- otu_table[1:$opts{n},]
 86              ####sum
 87 if(\"$opts{method}\"==\"sum\" ){
 88              v<-y+1
 89              m<-data.frame(colSums(otu_table_top20))[-v,]
 90 }
 91 
 92 
 93              ####average
 94 if(\"$opts{method}\"==\"average\"){                     
 95              v<-y+1
 96              m<-data.frame(colSums(otu_table_top20)/$opts{n})[-v,]
 97 }
 98           
 99              ####median
100 if(\"$opts{method}\"==\"median\"){          
101              top20<-otu_table_top20[,1:y]
102              m<-as.matrix(as.matrix(top20[ceiling($opts{n}/2),])[1,])
103 }        
104 
105          ###Z
106          Z<-c(rep(\"group1\",y))
107          i<-2
108      
109          while (i <= x-1) {
110               ###D
111               D<-c(D,group[,i+1])
112               ###M
113               m<-c(m,m)
114               ###Z
115               w<-paste(\"group\",i,sep=\"\")
116               Z<-c(Z,rep(w,y))
117               i <- i +1
118          }
119          #
120          M <- scale(m, center=T,scale=T)  #标准化
121          if(x!=2){ 
122              rocdata<- data.frame(diagnosis = D, measure = M, group = Z)       
123              p <- ggplot(rocdata, aes(m = measure , d = diagnosis ,color=group)) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
124 
125              if($opts{rocci}==T){
126                  p <- p + geom_rocci(sig.level=$opts{siglevel})
127              }
128 
129              if($opts{facet_wrap}==T){
130                  p <- p + facet_wrap(~ group) + theme(axis.text = element_text(size = 4))
131              }
132 
133          }
134 
135          if(x==2){
136 
137              rocdata<- data.frame(diagnosis = D, measure = M)
138              p <- ggplot(rocdata, aes(m = measure , d = diagnosis )) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
139 
140          if($opts{rocci}==T){
141              p <- p + geom_rocci(sig.level=$opts{siglevel})
142          }
143 
144 
145         }
146 x<-x-1
147 }
148 
149 ###The Receiver:2)The relative abundance of special bacteria.
150 if($opts{mode}==2){
151       
152 if(\"$opts{method}\"==\"chengchen.ye\"){
153        name <- read.table(\"$opts{name}\",header=T,check.names=F,comment.char=\"\")
154        name<-as.data.frame(name)
155        x<-length(name[,1])
156        a<-as.character(name[1,1])
157        D<-group[,2] 
158        m<-as.matrix(as.matrix(otu_table)[a,])
159 
160        Z<-c(rep(a,y))
161        i<-2
162        while (i <= x) {
163            D<-c(D,group[,2])
164            a<-as.character(name[i,1])
165            m<-c(m,as.matrix(as.matrix(otu_table)[a,]))
166            a<-as.character(name[i,1])
167            Z<-c(Z,rep(a,y))
168            i <- i +1
169        }
170 
171 
172         M <- scale(m, center=T,scale=T)  #标准化
173 if(x!=1){ 
174         rocdata<- data.frame(diagnosis = D, measure = M, Bacteria = Z)       
175     p <- ggplot(rocdata, aes(m = measure , d = diagnosis ,color=Bacteria)) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
176 
177 if($opts{rocci}==T){
178     p <- p + geom_rocci(sig.level=$opts{siglevel})
179 }
180 
181 if($opts{facet_wrap}==T){
182     p <- p + facet_wrap(~ group) + theme(axis.text = element_text(size = 4))
183     }
184 
185 }
186 
187 if(x==1){
188 
189         rocdata<- data.frame(diagnosis = D, measure = M)
190         p <- ggplot(rocdata, aes(m = measure , d = diagnosis )) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
191 
192 if($opts{rocci}==T){
193         p <- p + geom_rocci(sig.level=$opts{siglevel})
194         }
195 }
196 }
197 ######choose method
198 if(\"$opts{method}\"!=\"chengchen.ye\"){
199 name <- read.table(\"name.txt\",header=T,check.names=F,comment.char=\"\")
200 otu_table<-as.data.frame(otu_table)
201 nu<-length(name[,1])
202 
203 genus<-otu_table[as.character(name[1,1]),]
204 i<-2
205 while (i <= nu) {
206 genus<-rbind(genus,otu_table[as.character(name[i,1]),])
207 i<-i+1
208 }
209 genus 
210 group<-as.data.frame(group)
211 x<-length(group[1,])
212     ###D
213         D<-group[,2]
214 
215     ####M        
216         genus<-cbind(genus,rowsum=rowSums(genus))
217         genus<- genus[order(genus[,y+1],decreasing=T),]        
218 
219         
220 
221              ####sum
222 if(\"$opts{method}\"==\"sum\" ){
223              hh<-y+1
224              m<-data.frame(colSums(genus))[-hh,]
225 }
226 
227 
228              ####average
229 if(\"$opts{method}\"==\"average\"){                     
230              hh<-y+1
231              m<-data.frame(colSums(genus)/nu)[-hh,]
232 }
233           
234              ####median
235 if(\"$opts{method}\"==\"median\"){          
236              genus_order<-genus[,1:y]
237              m<-as.matrix(as.matrix(genus_order[ceiling(nu/2),])[1,])
238 }
239      ###Z
240          Z<-c(rep(\"group1\",y))
241          i<-2
242      
243          while (i <= x-1) {
244               ###D
245               D<-c(D,group[,i+1])
246               ###M
247               m<-c(m,m)
248               ###Z
249               w<-paste(\"group\",i,sep=\"\")
250               Z<-c(Z,rep(w,y))
251               i <- i +1
252          }
253          #
254          M <- scale(m, center=T,scale=T)  #标准化    
255          if(x!=2){ 
256              rocdata<- data.frame(diagnosis = D, measure = M, group = Z)       
257              p <- ggplot(rocdata, aes(m = measure , d = diagnosis ,color=group)) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
258 
259              if($opts{rocci}==T){
260                  p <- p + geom_rocci(sig.level=$opts{siglevel})
261              }
262 
263              if($opts{facet_wrap}==T){
264                  p <- p + facet_wrap(~ group) + theme(axis.text = element_text(size = 4))
265              }
266 
267          }
268 
269          if(x==2){
270 
271              rocdata<- data.frame(diagnosis = D, measure = M)
272              p <- ggplot(rocdata, aes(m = measure , d = diagnosis )) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
273 
274          if($opts{rocci}==T){
275              p <- p + geom_rocci(sig.level=$opts{siglevel})
276          }
277 
278 
279         }
280 
281 
282 
283 
284 x<-x-1
285 
286 
287 
288 }
289 }
290 
291 
292 
293 
294 ###The Receiver:3)The receiver is any other factors 
295 if($opts{mode}==3){
296 
297 factor <-read.table(\"$opts{i}\",sep=\"\t\",head=T,check.names = F,row.names=1)
298 x<-length(factor[1,])
299 
300 D<-group[,2] 
301 
302 m<-factor[,1]      
303 ####Z
304 factor_name <-read.table(\"$opts{i}\",sep=\"\t\",check.names = F,row.names=1)
305 name<-as.character(factor_name[1,1])
306 len<-length(factor[,1])
307 Z<-c(rep(name,len))
308 i<-2
309 while (i <= x) {
310     D<-c(D,D)
311         m<-c(m,factor[,i])           
312             name<-as.character(factor_name[1,i])
313                 Z<-c(Z,rep(name,len))     
314                     i <- i +1
315                     }
316 M <- scale(m, center=T,scale=T)
317 
318 if(x!=1){ 
319         rocdata<- data.frame(diagnosis = D, measure = M, factor = Z)       
320         p <- ggplot(rocdata, aes(m = measure , d = diagnosis ,color=factor)) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
321 
322 if($opts{rocci}==T){
323         p <- p + geom_rocci(sig.level=$opts{siglevel})
324 }
325 
326 if($opts{facet_wrap}==T){
327         p <- p + facet_wrap(~ group) + theme(axis.text = element_text(size = 4))
328         }
329 
330 }
331 
332 if(x==1){
333 
334         rocdata<- data.frame(diagnosis = D, measure = M)
335         p <- ggplot(rocdata, aes(m = measure , d = diagnosis )) + geom_roc(labels=$opts{labels},labelsize=$opts{labelsize},n.cuts=$opts{ncuts}) + style_roc(major.breaks = c(0, 0.25, 0.5, 0.75, 1), theme=$opts{theme},xlab=\"1-Specificity\",ylab=\"Sensitivity\") 
336 
337 if($opts{rocci}==T){
338         p <- p + geom_rocci(sig.level=$opts{siglevel})
339         }
340 
341 }
342 
343 
344 }
345 
346 
347 
348 
349 
350 
351 
352 
353 ### Caculate the Area under the ROC curve
354 p.auc <- calc_auc(p)
355 write.table(p.auc,\"$opts{o}/roc_aucvalue.xls\",col.names=T,row.names=F,sep=\"\t\",quote=F)
356 
357 
358 if($opts{mode}==1){
359 
360 
361 ###paste AUC to graph
362 if(x==1){
363 
364 test_auc<-paste(\"AUC=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
365 
366 p<-p + geom_text(x=0.8,y=0.1,label=test_auc,size=4)
367 
368 
369 }
370 
371 
372 
373 if(x==2){
374 test_auc1<-paste(\"AUC_group1=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
375 test_auc2<-paste(\"AUC_group2=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
376 p<-p + geom_text(x=0.8,y=0.21,label=test_auc1,size=4,colour=\"black\")
377 p<-p + geom_text(x=0.8,y=0.15,label=test_auc2,size=4,colour=\"black\")
378 
379 }
380 
381 
382 if(x==3){
383 test_auc1<-paste(\"AUC_group1=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
384 test_auc2<-paste(\"AUC_group2=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
385 test_auc3<-paste(\"AUC_group3=\",round(p.auc[3,3] * 100, 2),\"%\",sep = \"\")
386 p<-p + geom_text(x=0.8,y=0.18,label=test_auc1,size=4,colour=\"black\")
387 p<-p + geom_text(x=0.8,y=0.12,label=test_auc2,size=4,colour=\"black\")
388 p<-p + geom_text(x=0.8,y=0.06,label=test_auc3,size=4,colour=\"black\")
389 }
390 
391 }
392 
393 if($opts{mode}==2){
394       
395 if(\"$opts{method}\"==\"chengchen.ye\"){
396 
397 ###auc_name
398 auc_name<-as.data.frame(sort(name[,1],decreasing=F))
399 
400 ###paste AUC to graph
401 if(x==1){
402 
403 test_auc<-paste(\"AUC=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
404 
405 p<-p + geom_text(x=0.8,y=0.1,label=test_auc,size=4)
406 
407 
408 }
409 
410 
411 
412 if(x==2){
413 test_auc1<-paste(\"AUC\(\",as.character(auc_name[1,1]),\"\)=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
414 test_auc2<-paste(\"AUC\(\",as.character(auc_name[2,1]),\"\)=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
415 p<-p + geom_text(x=Inf,y=-Inf,hjust=1.2,vjust=-4,label=test_auc1,size=4,colour=\"black\")
416 p<-p + geom_text(x=Inf,y=-Inf,hjust=1.2,vjust=-2,label=test_auc2,size=4,colour=\"black\")
417 
418 }
419 
420 
421 if(x==3){
422 test_auc1<-paste(\"AUC\(\",as.character(auc_name[1,1]),\"\)=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
423 test_auc2<-paste(\"AUC\(\",as.character(auc_name[2,1]),\"\)=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
424 test_auc3<-paste(\"AUC\(\",as.character(auc_name[3,1]),\"\)=\",round(p.auc[3,3] * 100, 2),\"%\",sep = \"\")
425 p<-p + geom_text(x=Inf,y=-Inf,hjust=1.1,vjust=-6,label=test_auc1,size=4,colour=\"black\")
426 p<-p + geom_text(x=Inf,y=-Inf,hjust=1.1,vjust=-4,label=test_auc2,size=4,colour=\"black\")
427 p<-p + geom_text(x=Inf,y=-Inf,hjust=1.1,vjust=-2,label=test_auc3,size=4,colour=\"black\")
428 }
429 
430 
431 }
432 
433 if(\"$opts{method}\"!=\"chengchen.ye\"){
434 
435 ###paste AUC to graph
436 if(x==1){
437 
438 test_auc<-paste(\"AUC=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
439 
440 p<-p + geom_text(x=0.8,y=0.1,label=test_auc,size=4)
441 
442 
443 }
444 
445 
446 
447 if(x==2){
448 test_auc1<-paste(\"AUC_group1=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
449 test_auc2<-paste(\"AUC_group2=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
450 p<-p + geom_text(x=0.8,y=0.3,label=test_auc1,size=4,colour=\"black\")
451 p<-p + geom_text(x=0.8,y=0.25,label=test_auc2,size=4,colour=\"black\")
452 
453 }
454 
455 
456 if(x==3){
457 test_auc1<-paste(\"AUC_group1=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
458 test_auc2<-paste(\"AUC_group2=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
459 test_auc3<-paste(\"AUC_group3=\",round(p.auc[3,3] * 100, 2),\"%\",sep = \"\")
460 p<-p + geom_text(x=0.8,y=0.22,label=test_auc1,size=4,colour=\"black\")
461 p<-p + geom_text(x=0.8,y=0.16,label=test_auc2,size=4,colour=\"black\")
462 p<-p + geom_text(x=0.8,y=0.1,label=test_auc3,size=4,colour=\"black\")
463 }
464 }
465 }
466 
467 
468 
469 if($opts{mode}==3){
470 
471 
472 ###auc_name
473 
474 auc_name<-as.data.frame(sort(factor_name[1,],decreasing=F))
475 
476 
477 ###paste AUC to graph
478 if(x==1){
479 
480 test_auc<-paste(\"AUC=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
481 
482 p<-p + geom_text(x=0.8,y=0.1,label=test_auc,size=4)
483 
484 
485 }
486 
487 
488 
489 if(x==2){
490 test_auc1<-paste(\"AUC_\",as.character(auc_name[1,1]),\"=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
491 test_auc2<-paste(\"AUC_\",as.character(auc_name[1,2]),\"=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
492 p<-p + geom_text(x=Inf,y=-Inf,hjust=1.2,vjust=-4,label=test_auc1,size=4,colour=\"black\")
493 p<-p + geom_text(x=Inf,y=-Inf,hjust=1.2,vjust=-2,label=test_auc2,size=4,colour=\"black\")
494 
495 }
496 
497 
498 if(x==3){
499 test_auc1<-paste(\"AUC_\",as.character(auc_name[1,1]),\"=\",round(p.auc[1,3] * 100, 2),\"%\",sep = \"\")
500 test_auc2<-paste(\"AUC_\",as.character(auc_name[1,2]),\"=\",round(p.auc[2,3] * 100, 2),\"%\",sep = \"\")
501 test_auc3<-paste(\"AUC_\",as.character(auc_name[1,3]),\"=\",round(p.auc[3,3] * 100, 2),\"%\",sep = \"\")
502 p<-p + geom_text(x=0.8,y=0.18,label=test_auc1,size=4,colour=\"black\")
503 p<-p + geom_text(x=0.8,y=0.12,label=test_auc2,size=4,colour=\"black\")
504 p<-p + geom_text(x=0.8,y=0.06,label=test_auc3,size=4,colour=\"black\")
505 }
506 
507 
508 
509 
510 
511 
512 
513 
514 }
515 
516 
517 pdf(\"$opts{o}/roc_curve.pdf\",width=$opts{w},height=$opts{h})
518 p
519 dev.off()
520 
521     
522 ";
523 
524 
525 
526 
527 
528 
529 `R --restore --no-save < $opts{o}/roc.cmd.r`;
View Code

 

ROC

标签:

原文地址:http://www.cnblogs.com/neverforget/p/5842372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!