Mind the Gap: The PhysioNet/Computing in Cardiology Challenge 2010 1.0.0

File: <base>/sources/Rui-Rodrigues/octave_matlab/produceconfigs.m (4,099 bytes)
function [ordersignals, dimensions]=produceconfigs(folder,nameofinputsignals,nameaim)

%folder: exemple 'c16'
%val is the matrix obtained with 'load c16m.mat'
%nameofinputsignals is a cell array (1,numberofinputsignals) with the names of the signals we want to use to reconstruct target signal





  base='../';

  base=strcat(base,folder);

  configfile=strcat(base,'/config.txt');

  infofile=strcat(base,'/',folder,'m.info');


  %debug
  %fprintf(1,'config file is %s \n info file is %s \n',configfile,infofile);



  %get the order of input signals and aim in val


  numberofinputsignals=size(nameofinputsignals,2);

  nameofinputsignals{1,numberofinputsignals+1}=nameaim;
  

  ordersignals=findsignalsininfo(nameofinputsignals,numberofinputsignals+1,infofile);


  dimensions=zeros(numberofinputsignals+1,1);



  %dimensions for each input signal autoencoder

  for i=1:numberofinputsignals

    if((isecg(nameofinputsignals{1,i}))||(strcmpi (nameofinputsignals{1,i}, 'icp')==1))
	
      dimensions(i,1)=125;

      dimensions(i,2)=150;

      dimensions(i,3)=175;      
    
    elseif(strcmpi (nameofinputsignals{1,i}, 'resp')==1)

      dimensions(i,1)=125;

      dimensions(i,2)=75;

      dimensions(i,3)=100;      


    else

      dimensions(i,1)=63;

      dimensions(i,2)=75;

      dimensions(i,3)=100;      

    end

  end


  %dimensions for target signal autoencoder



  if (strcmpi (nameaim,'resp')==1)

    dimensions(numberofinputsignals+1,1)=125;

    dimensions(numberofinputsignals+1,2)=100;

    dimensions(numberofinputsignals+1,3)=35;  


  elseif(strcmpi (nameaim,'icp')==1)

    dimensions(numberofinputsignals+1,1)=125;

    dimensions(numberofinputsignals+1,2)=100;

    dimensions(numberofinputsignals+1,3)=60;  


  elseif (isecg(nameaim))
  
    dimensions(numberofinputsignals+1,1)=125;

    dimensions(numberofinputsignals+1,2)=100;

    dimensions(numberofinputsignals+1,3)=75;  
 

 
  else

    dimensions(numberofinputsignals+1,1)=63;

    dimensions(numberofinputsignals+1,2)=70;

    dimensions(numberofinputsignals+1,3)=50;  


  end



  %write everything on config file

  fid = fopen (configfile,'w');

  %debug
  %fid=1;

  %write numberofinputsignals, for each inputsignal its order in val
  %and aim order also  

  fprintf(fid,'%d',numberofinputsignals);

  for i=1:numberofinputsignals+1

    fprintf(fid,' %d',ordersignals(i));

  end

  fprintf(fid,'\n'); 

  for i=1:numberofinputsignals+1

    fprintf(fid,'%s %d %d %d\n',nameofinputsignals{1,i},dimensions(i,1),dimensions(i,2),dimensions(i,3));

   end

   fclose(fid);

end


function res=isecg(name)

  if(strcmpi (name,'II'))

    res=true;

  elseif(strcmpi (name,'V'))

    res=true;

  elseif(strcmpi (name,'I'))

    res=true;

  elseif(strcmpi (name,'III'))

    res=true;

  elseif(strcmpi (name,'V'))

    res=true;

  elseif(strcmpi (name,'AVR'))

    res=true;

  elseif(strcmpi (name,'AVF'))

    res=true;

  elseif(strcmpi (name,'MCL'))

    res=true;

  else

    res=false;

  end

end

function orders=findsignalsininfo(inputsignalsandaim,numberofinputsandaim,infofile)

%inputsignalsandaim is a cell array (numberofinputandaim,1) with the names of inputsignals and aim in the end
%configfile is a string wich includes the path to the file

  fid=fopen(infofile);


  % lin will be the number of lines in the the info file

  lin=0;

  while (~ feof (fid) )

    lin=lin+1;
    fgetl (fid);

  end


  totnumberofsignals=lin-8;

  frewind (fid)


  %trash

  for i=1:5
    fgetl (fid); 
  end

  signalsname=cell(lin-8,1);
  signalsnum=zeros(lin-8,1);

  for i=1:lin-8;

    signalsnum(i)=fscanf (fid,'%10d' ,1);

    signalsname{i,1}=fscanf (fid, '%s',1);

    %trash

    for j=1:2
      num=fscanf (fid,'%10f' ,1);
    end

    aux=fscanf (fid, '%s',1);

  end


  orders=zeros(1,numberofinputsandaim);


  for i=1:numberofinputsandaim

    res=strcmpi(inputsignalsandaim{1,i},signalsname);

    if(~any(res))

      printf('signal %s is not present!',inputsignalsandaim{1,i});

      return;

    else

      orders(i)=find(res);      
      
    end

  end

end