##---- Should be DIRECTLY executable !! ---- ##-- ==> Define data, use random, ##-- or do help(data=index) for the standard data sets. ## The function is currently defined as function(Pnum,clust.lab,n.case,n.control,training.case,training.control,m.case=0,m.control=0, testing.case=NULL,testing.control=NULL,Kauc.cv=5,Kcv=5,deltalen=0.001,lambda=1.0,lowauc=0.85,upperauc=0.99) { para=c(Pnum,n.case,n.control,m.case,m.control,Kcv,deltalen,lambda,lowauc,upperauc,Kauc.cv) mm=0 tmp=table(clust.lab) nclust=dim(tmp)[1] nam=names(tmp) num.clust=NULL lab.clust=NULL p.loca=NULL loca=1:Pnum for(ti in 1:nclust) { tmp1=clust.lab==nam[ti] num.clust=c(num.clust,sum(tmp1)) p.loca=c(p.loca,loca[tmp1]) lab.clust=c(lab.clust,rep(ti,num.clust[ti])) } training.case=training.case[,p.loca] training.control=training.control[,p.loca] if(m.case>=1) testing.case=testing.case[,p.loca] if(m.control>=1) testing.control=testing.control[,p.loca] inmm=14+Pnum+11*nclust #dyn.load("groupauc.dll") #symbol.For("groupauc");is.loaded(symbol.For("groupauc")) ret=.Fortran("groupauc", n=as.integer(11), para=as.real(para), training.case=as.matrix(training.case), training.control=as.matrix(training.control), testing.case=as.matrix(testing.case), testing.control=as.matrix(testing.control), nclust=as.integer(nclust), lab.clust=as.integer(lab.clust), num.clust=as.integer(num.clust),mm=as.integer(mm) ,results=as.real(rep(0,inmm))) #dyn.unload("groupauc.dll") tmp<-ret$results tmp1=tmp[1:Pnum] tmp2=tmp[(Pnum+1):(Pnum+2*nclust)] auccv=tmp[(Pnum+2*nclust+1):(Pnum+3*nclust)] auc.predict=tmp[(Pnum+4*nclust+1):(Pnum+5*nclust)] cla.fit=cbind(tmp[(Pnum+5*nclust+1):(Pnum+6*nclust)],tmp[(Pnum+6*nclust+1):(Pnum+7*nclust)]) cla.pred=cbind(tmp[(Pnum+7*nclust+1):(Pnum+8*nclust)],tmp[(Pnum+8*nclust+1):(Pnum+9*nclust)]) temp=tmp[-(1:(Pnum+9*nclust))] auc.est=data.frame(num.clust=num.clust,auc.cv=auccv, auc.hat=tmp2[1:nclust],auc.sd=tmp2[-(1:nclust)],auc.predict=auc.predict, case.fit=cla.fit[,1],control.fit=cla.fit[,2], case.pred=cla.pred[,1],control.pred=cla.pred[,2]) dimnames(auc.est)[[1]]<-nam coef.in.clust=tmp1[p.loca] names(coef.in.clust)<-clust.lab if(m.case>0 & m.control>0) { list(geneset.res=auc.est, coef.in.clust=coef.in.clust,num.clust.select=temp[1],clust.select=temp[9:(8+temp[1])], coef.clust.select=temp[(9+temp[1]):(8+2*temp[1])], threshold.value=temp[13+2*temp[1]], AUC.fit=temp[2], classification.fit=temp[4:5]/c(n.case,n.control), AUC.predict=temp[3], classification.predict=temp[6:7]/c(m.case,m.control))->result } if(m.case>0 & m.control<=0) { list(geneset.res=auc.est, coef.in.clust=coef.in.clust,num.clust.select=temp[1],clust.select=temp[9:(8+temp[1])], coef.clust.select=temp[(9+temp[1]):(8+2*temp[1])], threshold.value=temp[13+2*temp[1]], AUC.fit=temp[2], classification.fit=temp[4:5]/c(n.case,n.control), AUC.predict=temp[3], classification.predict=c(temp[6]/m.case,0))->result } if(m.case<=0 & m.control>0) { list(geneset.res=auc.est, coef.in.clust=coef.in.clust,num.clust.select=temp[1],clust.select=temp[9:(8+temp[1])], coef.clust.select=temp[(9+temp[1]):(8+2*temp[1])], threshold.value=temp[13+2*temp[1]], AUC.fit=temp[2], classification.fit=temp[4:5]/c(n.case,n.control), AUC.predict=temp[3], classification.predict=c(0,temp[7]/m.control))->result } if(m.case<=0 & m.control<=0) { list(geneset.res=auc.est, coef.in.clust=coef.in.clust,num.clust.select=temp[1],clust.select=temp[9:(8+temp[1])], coef.clust.select=temp[(9+temp[1]):(8+2*temp[1])], threshold.value=temp[13+2*temp[1]], AUC.fit=temp[2], classification.fit=temp[4:5]/c(n.case,n.control), AUC.predict=temp[3], classification.predict=c(0,0))->result } result }