% data splitting
load tutorial_data.mat XT LT

rand('seed', 8947584375) ;
p=randperm(size(XT,2)) ;
XTE=XT(:,p(1:20000)) ;
LTE=LT(:,p(1:20000)) ;
XT=XT(:,p(20001:30000)) ;
LT=LT(:,p(20001:30000)) ;


cache_size = 1000 ;
for order    = 1:8 % length of strings
  C        = 1000 ;     % regularization paramter
  use_sign = 0 ;     
  
  sg( 'send_command', 'clean_features TRAIN' );
  sg( 'send_command', 'clean_preproc' );
  sg( 'send_command', 'clean_kernel');

  sg( 'send_command', 'use_linadd 0');
  sg( 'send_command', 'use_batch_computation 0');
  sg( 'send_command', 'svm_epsilon 1e-6');
  sg( 'send_command','loglevel ALL') ; % for debugging
  
  sg( 'set_labels', 'TRAIN', LT) ;
  sg( 'send_command', sprintf('set_kernel COMBINED %i', cache_size) );

  sg('add_features', 'TRAIN', XT(1:99,:)) ;
  sg('send_command', sprintf('convert TRAIN SIMPLE CHAR SIMPLE WORD DNA %i %i',order,order-1)) ;
  sg('send_command', 'add_preproc SORTWORD') ;
  sg('send_command', 'attach_preproc TRAIN') ;
  sg( 'send_command', sprintf('add_kernel 1 COMM WORD 10 %i NO', use_sign) );

  sg('add_features', 'TRAIN', XT(102:end,:)) ;
  sg('send_command', sprintf('convert TRAIN SIMPLE CHAR SIMPLE WORD DNA %i %i',order,order-1)) ;
  sg('send_command', 'add_preproc SORTWORD') ;
  sg('send_command', 'attach_preproc TRAIN') ;
  sg( 'send_command', sprintf('add_kernel 1 COMM WORD 10 %i NO', use_sign) );

  sg( 'send_command', 'new_svm LIGHT') ;
  sg( 'send_command', 'init_kernel TRAIN' );
  sg( 'send_command', sprintf( 'c %1.2e', C ) );
  
  sg( 'send_command', 'svm_train' );
  sg('send_command', 'init_kernel_optimization') ;
  
  sg('send_command', 'clean_features TEST' );
  sg('add_features', 'TEST', XTE(1:99,:)) ;
  sg('send_command', sprintf('convert TEST SIMPLE CHAR SIMPLE WORD DNA %i %i',order,order-1)) ;

  sg('add_features', 'TEST', XTE(102:end,:)) ;
  sg('send_command', sprintf('convert TEST SIMPLE CHAR SIMPLE WORD DNA %i %i',order,order-1)) ;

  sg('send_command', 'attach_preproc TEST') ;
  sg('send_command', 'init_kernel TEST' );
  
  O = sg( 'svm_classify' );
  ROC(order)=calcrocscore(O, LTE)
  pause
  
end ;
