clear; fprintf('\n'); numcores=4; if numcores>1 if matlabpool('size')>0 matlabpool close; end eval(['matlabpool local ' num2str(numcores)]); end disp('--------------------------------START--------------------------------'); disp('This demo shows how we can use this program.'); disp('We can use the different search methods to test a specified model with a selected dataset.'); disp('When the program runs under multi-core environment it will turn to paralell mode automatically'); % Start tic [user sys] = memory; mem0=user.MemUsedMATLAB; % Load the selected database load(dataset); n=size(X,1); model=buildmodel(func,X,Y,delta); ntrain=ceil(n/3*2); ntest=n-ntrain; indtrain=ntest+1:n; indtest=1:ntest; parfor i=1:nr [trainmodel,testmodel]=seperatemodel(model,indtrain,indtest,randperm(n)); trainmodel2=trainmodel; testmodel2=testmodel; if strcmp(func,'APTER') trainmodel.X=[trainmodel.X,-trainmodel.X]; testmodel.X=[testmodel.X,-testmodel.X]; end bestpars=tune(trainmodel,tunemethod,tunepar,testmethod,testpar); gams(i)=bestpars(1); trainmodel.gam=bestpars(1); w=feval(func,trainmodel); W1(:,i)=w; %Calculate the c-index on both sets ctest(i)=cindex(testmodel.X*w,testmodel.Y,testmodel.delta); ctrain(i)=cindex(trainmodel.X*w,trainmodel.Y,trainmodel.delta); lrtest(i)=getlogrank(testmodel.Y,testmodel.delta,testmodel.X*w); lrtrain(i)=getlogrank(trainmodel.Y,trainmodel.delta,trainmodel.X*w); hrtest(i)=gethr(testmodel.Y,testmodel.delta,-testmodel.X*w); hrtrain(i)=gethr(trainmodel.Y,trainmodel.delta,-trainmodel.X*w); [trainmodel2.X, testmodel2.X]=changesign(trainmodel2,testmodel2.X); trainmodel.func=func2; testmodel.func=func2; bestpars=tune(trainmodel2,tunemethod,tunepar,testmethod,testpar); gams2(i)=bestpars(1); trainmodel2.gam=bestpars(1); w=feval(func2,trainmodel2); W2(:,i)=w; %Calculate the c-index on both sets ctest2(i)=cindex(testmodel2.X*w,testmodel2.Y,testmodel2.delta); ctrain2(i)=cindex(trainmodel2.X*w,trainmodel2.Y,trainmodel2.delta); lrtest2(i)=getlogrank(testmodel2.Y,testmodel2.delta,testmodel2.X*w); lrtrain2(i)=getlogrank(trainmodel2.Y,trainmodel2.delta,trainmodel2.X*w); hrtest2(i)=gethr(testmodel2.Y,testmodel2.delta,-testmodel2.X*w); hrtrain2(i)=gethr(trainmodel2.Y,trainmodel2.delta,-trainmodel2.X*w); fprintf('...%s\n',num2str(i)); end disp('Time cost:') ttime=toc [user sys] = memory; mem1=user.MemUsedMATLAB; memo=mem1-mem0; save B-APTER-nr48-10-o5-0dot2-CV3; figure; boxplot([ctest',ctest2']); % figure; % for i=1:50 % hist(W2(:,i));pause(1); end disp('---------------------------------END---------------------------------'); if matlabpool('size')>0 matlabpool close; end fprintf('\n');