Mind the Gap: The PhysioNet/Computing in Cardiology Challenge 2010 1.0.0
(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