Mercurial > hg > mirex-meta-analysis
view collect_all_mirex_results.m @ 6:e2337cd691b1 tip
Finishing writing the matlab code to replicate all observations made in the article.
Added the article to the repository.
Renamed the two main scripts ("1-get_mirex_estimates.rb" and "2-generate_smith2013_ismir.m") to not have dashes (since this was annoying within Matlab)
Added new Michael Jackson figure.
author | Jordan Smith <jordan.smith@eecs.qmul.ac.uk> |
---|---|
date | Wed, 05 Mar 2014 01:02:26 +0000 |
parents | 92b5a46bc67b |
children |
line wrap: on
line source
function data = collect_all_mirex_results(base_directory, dsets, algos) % function data = collect_all_mirex_results(base_directory, dsets, algos) % GET ALL THE DATA! % This function collects the evaluation results for all algorithms from all years of MIREX. % It puts it all in a single structure. % % BASE_DIRECTORY should be the "mirex_path" specified in "get_mirex_estimates.rb", % or whatever directory contains all the downloaded MIREX data. For example: % "/Users/me/Desktop/MIREX_data" % % DSETS should contain the names of the datasets. The default value is all of them: % {'mrx09','mrx10_1','mrx10_2','sal'} % Keep the DSETS in a consistent order across your work, because the index of the dataset % is important for some of the other functions. % % ALGOS should contain the name of all the algorithms. The default value is all of them: % {'KSP1','KSP2','KSP3','MHRAF1','OYZS1','SBV1','SMGA1','SMGA2','SP1'} % As with the DSETS, keep these names consistent across all work. % % The output DATA structure contains the following fields: % % DATA(k).ALGO(j).RESULTS is a matrix giving the results for the kth dataset and % the jth algorithm. if nargin<2, dsets = {'mrx09','mrx10_1','mrx10_2','sal'}; end if nargin<3, algos = {'KSP1','KSP2','KSP3','MHRAF1','OYZS1','SBV1','SMGA1','SMGA2','SP1'}; end % Create output structure DATA. % DATA(k).ALGO(j).RESULTS will contain the results attained by algorithm J for all songs in dataset K. data = {}; % For every dataset (DSET), look at every algorithm (ALGO), and load the CSV file containing all the results. for k=1:length(dsets), dset = dsets{k}; for j=1:length(algos), algo = algos{j}; % Build the name of the CSV file: csv_file = fullfile(base_directory,dset,algo,'per_track_results.csv'); fid = fopen(csv_file); % Read it, assuming the first line is a header: data_tmp = textscan(fid,'%n%s%n%n%n%n%n%n%n%n%n%n%n%n%n%n','Delimiter',',','HeaderLines',1); fclose(fid); data(k).algo(j).names = data_tmp{2}; data(k).algo(j).results = zeros(size(data_tmp{1},1),length(data_tmp)-2); % The first two columns contain a dummy variable and the name of the song, respectively. Ignore these. for i=3:length(data_tmp) data(k).algo(j).results(:,i-2) = data_tmp{i}; end end end fprintf('Oh by the way, I just collected all the results spreadsheets into a data structure. That was fast.\n\n')