Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 5962cfa3 authored by Nicolas Bellot's avatar Nicolas Bellot Committed by hhakim
Browse files

demo Brain Source Localization

parent 1530351d
Branches
Tags
No related merge requests found
...@@ -125,6 +125,25 @@ set(FAUST_ALGORITHM_FACTORIZATION_BIN_DIR ${FAUST_ALGORITHM_BIN_DIR}/factorizati ...@@ -125,6 +125,25 @@ set(FAUST_ALGORITHM_FACTORIZATION_BIN_DIR ${FAUST_ALGORITHM_BIN_DIR}/factorizati
#set(FAUST_FAUSTCORE_SRC_DIR ${PROJECT_SOURCE_DIR}/faust_core CACHE INTERNAL "") #set(FAUST_FAUSTCORE_SRC_DIR ${PROJECT_SOURCE_DIR}/faust_core CACHE INTERNAL "")
############## INSTALL DIRECTORIES #############################
set(FAUST_INSTALL_LIB ${CMAKE_INSTALL_PREFIX}/lib)
set(FAUST_INSTALL_TESTING_BIN ${CMAKE_INSTALL_PREFIX}/bin)
set(FAUST_INSTALL_TESTRUNCOMP ${CMAKE_INSTALL_PREFIX}/bin/runtime_comparison)
set(FAUST_INSTALL_DOC ${CMAKE_INSTALL_PREFIX}/doc)
set(FAUST_INSTALL_CMDLINE ${CMAKE_INSTALL_PREFIX}/CmdLine)
set(FAUST_INSTALL_TESTING_DATA ${CMAKE_INSTALL_PREFIX}/testing/data)
##################################################################
###### WRAPPER DIRECTORIES ###### ###### WRAPPER DIRECTORIES ######
set(FAUST_WRAPPER_DIR ${PROJECT_SOURCE_DIR}/wrapper CACHE INTERNAL "") set(FAUST_WRAPPER_DIR ${PROJECT_SOURCE_DIR}/wrapper CACHE INTERNAL "")
set(FAUST_WRAPPER_BIN_DIR ${PROJECT_BINARY_DIR}/wrapper CACHE INTERNAL "") set(FAUST_WRAPPER_BIN_DIR ${PROJECT_BINARY_DIR}/wrapper CACHE INTERNAL "")
...@@ -164,20 +183,49 @@ set(FAUST_TESTSRC_SRC_DIR ${FAUST_TEST_SRC_DIR}/src CACHE INTERNAL "") ...@@ -164,20 +183,49 @@ set(FAUST_TESTSRC_SRC_DIR ${FAUST_TEST_SRC_DIR}/src CACHE INTERNAL "")
set(FAUST_TESTDATA_SRC_DIR ${FAUST_MISC_DIR}/data/mat CACHE INTERNAL "") set(FAUST_TESTDATA_SRC_DIR ${FAUST_MISC_DIR}/data/mat CACHE INTERNAL "")
###### WRAPPER MATLAB DIRECTORIES ######
if (FAUST_USE_MEX)
###### SRC DIRECTORY #####
set(FAUST_MATLAB_SRC_DIR ${FAUST_WRAPPER_DIR}/matlab CACHE INTERNAL "")
set(FAUST_MATLAB_TOOLS_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/tools CACHE INTERNAL "")
set(FAUST_MATLAB_MEX_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/src CACHE INTERNAL "")
set(FAUST_MATLAB_DOC_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/doc CACHE INTERNAL "")
###### BIN DIRECTORY ######
set(FAUST_MATLAB_BIN_DIR ${FAUST_WRAPPER_BIN_DIR}/matlab CACHE INTERNAL "")
set(FAUST_MATLAB_MEX_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/mex CACHE INTERNAL "")
set(FAUST_MATLAB_TOOLS_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/tools CACHE INTERNAL "")
#### INSTALL DIRECTORY ####
set(FAUST_MATLAB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/matlab)
set(FAUST_MATLAB_MEX_INSTALL_DIR ${FAUST_MATLAB_INSTALL_DIR}/mex)
set(FAUST_MATLAB_TOOLS_INSTALL_DIR ${FAUST_MATLAB_INSTALL_DIR}/tools CACHE INTERNAL "")
endif(FAUST_USE_MEX)
###### DEMO DIRECTORIES ######
set(FAUST_DEMO_BIN_DIR ${PROJECT_BINARY_DIR}/demo)
set(FAUST_DEMO_SRC_DIR ${FAUST_MISC_DIR}/demo CACHE INTERNAL "")
set(FAUST_DEMOTOOLS_SRC_DIR ${FAUST_DEMO_SRC_DIR}/tools CACHE INTERNAL "")
#set(FAUST_DEMO_BIN_DIR ${FAUST_DEMO_SRC_DIR} CACHE INTERNAL "")
set(FAUST_DEMOTOOLS_BIN_DIR ${PROJECT_BINARY_DIR}/tools CACHE INTERNAL "")
#set(FAUST_DEMODATA_SRC_DIR ${FAUST_DEMO_SRC_DIR}/data CACHE INTERNAL "")
set(FAUST_DEMODATA_SRC_DIR ${FAUST_MISC_DIR}/data/mat/demoLuc CACHE INTERNAL "")
########## DEMO DIRECTORIES #############
###### SRC DIRECTORY #####
set(FAUST_DEMO_SRC_DIR ${FAUST_MISC_DIR}/demo CACHE INTERNAL "")
set(FAUST_DEMO_BSL_SRC_DIR ${FAUST_DEMO_SRC_DIR}/Brain_source_localization CACHE INTERNAL "")
set(FAUST_DEMO_HADAMARD_SRC_DIR ${FAUST_DEMO_SRC_DIR}/Hadamard_factorization CACHE INTERNAL "")
set(FAUST_DEMO_TOOLS_SRC_DIR ${FAUST_DEMO_SRC_DIR}/tools CACHE INTERNAL "")
set(FAUST_DEMO_BSL_DATA_SRC_DIR ${FAUST_DEMO_BSL_SRC_DIR}/data/ CACHE INTERNAL "")
###### BIN DIRECTORY ######
set(FAUST_DEMO_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/demo CACHE INTERNAL "")
set(FAUST_DEMO_BSL_BIN_DIR ${FAUST_DEMO_BIN_DIR}/Brain_source_localization CACHE INTERNAL "")
set(FAUST_DEMO_HADAMARD_BIN_DIR ${FAUST_DEMO_BIN_DIR}/Hadamard_factorization CACHE INTERNAL "")
set(FAUST_DEMO_TOOLS_BIN_DIR ${FAUST_DEMO_BIN_DIR}/tools CACHE INTERNAL "")
set(FAUST_DEMO_BSL_DATA_BIN_DIR ${FAUST_DEMO_BSL_BIN_DIR}/data/ CACHE INTERNAL "")
set(FAUST_DEMO_BSL_OUTPUT_BIN_DIR ${FAUST_DEMO_BSL_BIN_DIR}/output/ CACHE INTERNAL "")
#### INSTALL DIRECTORY ####
set(FAUST_DEMO_INSTALL_DIR ${FAUST_MATLAB_INSTALL_DIR}/demo CACHE INTERNAL "")
set(FAUST_DEMO_BSL_INSTALL_DIR ${FAUST_DEMO_INSTALL_DIR}/Brain_source_localization CACHE INTERNAL "")
set(FAUST_DEMO_BSL_DATA_INSTALL_DIR ${FAUST_DEMO_BSL_INSTALL_DIR}/data CACHE INTERNAL "")
set(FAUST_DEMO_TOOLS_INSTALL_DIR ${FAUST_DEMO_INSTALL_DIR}/tools CACHE INTERNAL "")
set(FAUST_DEMO_BSL_DATA_INSTALL_DIR ${FAUST_DEMO_BSL_INSTALL_DIR}/data CACHE INTERNAL "")
set(FAUST_DEMO_BSL_OUTPUT_INSTALL_DIR ${FAUST_DEMO_BSL_INSTALL_DIR}/output CACHE INTERNAL "")
## examples directories including some examples of the use of the library FAuST ## examples directories including some examples of the use of the library FAuST
set(FAUST_TEST_DIR ${FAUST_DEMO_BIN_DIR}/run_test CACHE INTERNAL "") set(FAUST_TEST_DIR ${PROJECT_BINARY_DIR}/run_test CACHE INTERNAL "")
set(FAUST_TEST_BIN_DIR ${FAUST_TEST_DIR}/bin CACHE INTERNAL "") set(FAUST_TEST_BIN_DIR ${FAUST_TEST_DIR}/bin CACHE INTERNAL "")
set(FAUST_TESTSRC_BIN_DIR ${FAUST_TEST_DIR}/src CACHE INTERNAL "") set(FAUST_TESTSRC_BIN_DIR ${FAUST_TEST_DIR}/src CACHE INTERNAL "")
set(FAUST_TESTTMP_BIN_DIR ${FAUST_TEST_DIR}/tmp CACHE INTERNAL "") set(FAUST_TESTTMP_BIN_DIR ${FAUST_TEST_DIR}/tmp CACHE INTERNAL "")
...@@ -190,19 +238,7 @@ set(FAUST_TESTTOOLS_BIN_DIR ${FAUST_TEST_DIR}/tools CACHE INTERNAL "") ...@@ -190,19 +238,7 @@ set(FAUST_TESTTOOLS_BIN_DIR ${FAUST_TEST_DIR}/tools CACHE INTERNAL "")
################################################################## ##################################################################
###### WRAPPER MATLAB DIRECTORIES ######
if (FAUST_USE_MEX)
set(FAUST_MATLAB_SRC_DIR ${FAUST_WRAPPER_DIR}/matlab CACHE INTERNAL "")
set(FAUST_MATLABTOOLS_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/tools CACHE INTERNAL "")
set(FAUST_MATLABMEX_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/src CACHE INTERNAL "")
set(FAUST_MATLABDOC_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/doc CACHE INTERNAL "")
###### WRAPPER MATLAB BINARY DIRECTORIES ######
# MEX function
set(FAUST_MATLAB_BIN_DIR ${FAUST_WRAPPER_BIN_DIR}/matlab CACHE INTERNAL "")
set(FAUST_MATLABMEX_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/mex CACHE INTERNAL "")
set(FAUST_MATLABTOOLS_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/tools CACHE INTERNAL "")
endif(FAUST_USE_MEX)
...@@ -245,6 +281,11 @@ file(MAKE_DIRECTORY ${FAUST_TESTOUTPUT_BIN_DIR}) ...@@ -245,6 +281,11 @@ file(MAKE_DIRECTORY ${FAUST_TESTOUTPUT_BIN_DIR})
file(MAKE_DIRECTORY ${FAUST_TESTFIG_BIN_DIR}) file(MAKE_DIRECTORY ${FAUST_TESTFIG_BIN_DIR})
file(MAKE_DIRECTORY ${FAUST_TESTTMP_BIN_DIR}) file(MAKE_DIRECTORY ${FAUST_TESTTMP_BIN_DIR})
file(MAKE_DIRECTORY ${FAUST_DEMO_BSL_OUTPUT_BIN_DIR})
# CANNOT CREATE EMPTY DIRECTORY IN INSTALL_DIR !!!!! MODIFY !!!!!
install(DIRECTORY ${FAUST_DEMO_BSL_OUTPUT_BIN_DIR} DESTINATION ${FAUST_DEMO_BSL_OUTPUT_INSTALL_DIR})
#INSTALL(CODE "FILE(MAKE_DIRECTORY /logs)")
###### INSTALL DIRECTORIES (RELATIVES PATHS FROM CMAKE_INSTALL_PREFIX) ###### ###### INSTALL DIRECTORIES (RELATIVES PATHS FROM CMAKE_INSTALL_PREFIX) ######
#set(FAUST_INSTALL_MEX ${CMAKE_INSTALL_PREFIX}/mex) #set(FAUST_INSTALL_MEX ${CMAKE_INSTALL_PREFIX}/mex)
...@@ -254,15 +295,7 @@ file(MAKE_DIRECTORY ${FAUST_TESTTMP_BIN_DIR}) ...@@ -254,15 +295,7 @@ file(MAKE_DIRECTORY ${FAUST_TESTTMP_BIN_DIR})
#set(FAUST_INSTALL_TESTING_DATA ${CMAKE_INSTALL_PREFIX}/testing/data) #set(FAUST_INSTALL_TESTING_DATA ${CMAKE_INSTALL_PREFIX}/testing/data)
#set(FAUST_INSTALL_TESTRUNCOMP ${CMAKE_INSTALL_PREFIX}/testing/runtime_comparison CACHE INTERNAL "") #set(FAUST_INSTALL_TESTRUNCOMP ${CMAKE_INSTALL_PREFIX}/testing/runtime_comparison CACHE INTERNAL "")
set(FAUST_INSTALL_LIB ${CMAKE_INSTALL_PREFIX}/lib)
set(FAUST_INSTALL_TESTING_BIN ${CMAKE_INSTALL_PREFIX}/bin)
set(FAUST_INSTALL_TESTRUNCOMP ${CMAKE_INSTALL_PREFIX}/bin/runtime_comparison)
set(FAUST_INSTALL_DOC ${CMAKE_INSTALL_PREFIX}/doc)
set(FAUST_INSTALL_MEX ${CMAKE_INSTALL_PREFIX}/mex)
set(FAUST_INSTALL_CMDLINE ${CMAKE_INSTALL_PREFIX}/CmdLine)
set(FAUST_INSTALL_TESTING_DATA ${CMAKE_INSTALL_PREFIX}/testing/data)
##################################################################
#message(STATUS "ALALALLLLLLLLLLL CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}") #message(STATUS "ALALALLLLLLLLLLL CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
#message(STATUS "ALALALLLLLLLLLLL FAUST_INSTALL_TESTING_BIN=${FAUST_INSTALL_TESTING_BIN}") #message(STATUS "ALALALLLLLLLLLLL FAUST_INSTALL_TESTING_BIN=${FAUST_INSTALL_TESTING_BIN}")
#message(STATUS "ALALALLLLLLLLLLL FAUST_INSTALL_LIB=${FAUST_INSTALL_LIB}") #message(STATUS "ALALALLLLLLLLLLL FAUST_INSTALL_LIB=${FAUST_INSTALL_LIB}")
...@@ -502,7 +535,7 @@ if (FAUST_USE_GPU) ...@@ -502,7 +535,7 @@ if (FAUST_USE_GPU)
endif (FAUST_USE_GPU) endif (FAUST_USE_GPU)
if (FAUST_USE_MEX) if (FAUST_USE_MEX)
add_subdirectory(${FAUST_MATLAB_SRC_DIR} ${FAUST_MATLABMEX_BIN_DIR}) add_subdirectory(${FAUST_MATLAB_SRC_DIR} ${FAUST_MATLAB_MEX_BIN_DIR})
add_subdirectory(${FAUST_DEMO_SRC_DIR} ${FAUST_DEMO_BIN_DIR}) add_subdirectory(${FAUST_DEMO_SRC_DIR} ${FAUST_DEMO_BIN_DIR})
endif() endif()
################################################################## ##################################################################
......
%% Description BSL
% Brain source localization
%
% This script performs brain source localization using several gain
% matrices [2], including FAuSTs, and several solvers. It reproduces the
% source localization experiment of [1].
% The results are stored in "./output/results_BSL_user.mat".
% DURATION: Computations should take around 10 minutes.
%
% The MEG gain matrices used are
% - those in "./output/M_user.mat" if available
% - or the precomputed ones in "./precomputed_results_MEG/M_X.mat"
%
% For more information on the FAuST Project, please visit the website of
% the project : <http://faust.gforge.inria.fr>
%
%% License:
% Copyright (2016): Luc Le Magoarou, Remi Gribonval
% INRIA Rennes, FRANCE
% http://www.inria.fr/
%
% The FAuST Toolbox is distributed under the terms of the GNU Affero
% General Public License.
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU Affero General Public License as published
% by the Free Software Foundation.
%
% This program is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% See the GNU Affero General Public License for more details.
%
% You should have received a copy of the GNU Affero General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
%
%% Contacts:
% Nicolas Bellot : nicolas.bellot@inria.fr
% Leman Adrien : adrien.leman@inria.fr
% Luc Le Magoarou: luc.le-magoarou@inria.fr
% Remi Gribonval : remi.gribonval@inria.fr
%
%% References:
% [1] Le Magoarou L. and Gribonval R., "Flexible multi-layer sparse
% approximations of matrices and applications", Journal of Selected
% Topics in Signal Processing, 2016.
% <https://hal.archives-ouvertes.fr/hal-01167948v1>
%
% [2] A. Gramfort, M. Luessi, E. Larson, D. Engemann, D. Strohmeier,
% C. Brodbeck, L. Parkkonen, M. Hamalainen, MNE software for processing
% MEG and EEG data <http://www.ncbi.nlm.nih.gov/pubmed/24161808>,
% NeuroImage, Volume 86, 1 February 2014, Pages 446-460, ISSN 1053-8119,
% [DOI] <http://dx.doi.org/10.1016/j.neuroimage.2013.10.027>
%%
%% This is an example of a little experience of source localization in magnetoencephalography (MEG) using faust factorisation for speed-up the calculus, %% This is an example of a little experience of source localization in magnetoencephalography (MEG) using faust factorisation for speed-up the calculus,
%% the sparse algorithm used is greed_omp_chol from the toolbox smallbox2.0/Sparsify/GreedLab under GNU GPL 2.0 License %% the sparse algorithm used is greed_omp_chol from the toolbox smallbox2.0/Sparsify/GreedLab under GNU GPL 2.0 License
%% to show the different performance figure run figure_localisze_src after this script %% to show the different performance figure run figure_localisze_src after this script
clear all runPath=which(mfilename);
close all pathname = fileparts(runPath);
clc BSL_data_pathName=strcat(pathname,'/data/');
set_path;
RCG_approxS_MEG=[6,8,16,25]; RCG_approxS_MEG=[6,8,16,25];
...@@ -17,8 +72,8 @@ MEG_approxS_norm = cell(1,nb_approx_MEG); ...@@ -17,8 +72,8 @@ MEG_approxS_norm = cell(1,nb_approx_MEG);
%Loading of the MEG matrix %Loading of the MEG matrix
load 'X_meg.mat' load([BSL_data_pathName 'X_meg.mat' ]);
load curv.mat load ([BSL_data_pathName 'curv.mat']);
points2 = points; points2 = points;
points = points(points_used_idx,:); points = points(points_used_idx,:);
X = X_fixed; X = X_fixed;
...@@ -37,7 +92,7 @@ for i=1:nb_approx_MEG ...@@ -37,7 +92,7 @@ for i=1:nb_approx_MEG
RCG_approxS_MEG(i); RCG_approxS_MEG(i);
load(['M_' int2str(RCG_approxS_MEG(i))]); load([BSL_data_pathName 'M_' int2str(RCG_approxS_MEG(i)) ]);
facts{1}=lambda*facts{1}; facts{1}=lambda*facts{1};
X_approx =dvp(facts); X_approx =dvp(facts);
%X_hat = X' + 0.05*randn(size(X')); %X_hat = X' + 0.05*randn(size(X'));
...@@ -69,9 +124,9 @@ Ntraining = 500; % Number of training vectors ...@@ -69,9 +124,9 @@ Ntraining = 500; % Number of training vectors
Sparsity = 2; % Number of sources per training vector Sparsity = 2; % Number of sources per training vector
dist_paliers = [0.01,0.05,0.08]; dist_paliers = [dist_paliers, 0.5]; dist_paliers = [0.01,0.05,0.08]; dist_paliers = [dist_paliers, 0.5];
resDist = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Sparsity,Ntraining); % (Matrice,mthode,dist_sources,src_nb,run); resDist = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Sparsity,Ntraining); % (Matrice,mthode,dist_sources,src_nb,run);
compute_Times = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Ntraining); compute_Times = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Ntraining);
resDist_matlab = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Sparsity,Ntraining); % (Matrice,mthode,dist_sources,src_nb,run); resDist_matlab = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Sparsity,Ntraining); % (Matrice,mthode,dist_sources,src_nb,run);
compute_Times_matlab = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Ntraining); compute_Times_matlab = zeros(nb_approx_MEG+1,numel(dist_paliers)-1,Ntraining);
for k=1:numel(dist_paliers)-1 for k=1:numel(dist_paliers)-1
disp(['k=' num2str(k) '/' num2str(numel(dist_paliers)-1)]) disp(['k=' num2str(k) '/' num2str(numel(dist_paliers)-1)])
...@@ -90,25 +145,6 @@ for k=1:numel(dist_paliers)-1 ...@@ -90,25 +145,6 @@ for k=1:numel(dist_paliers)-1
Data = X_norm*Gamma; Data = X_norm*Gamma;
sol_ist = zeros(size(Gamma));
sol_ist_hat = zeros(size(Gamma));
sol_ist_hat2 = zeros(size(Gamma));
err_ist = zeros(2,Ntraining);
err_ist_hat = zeros(2,Ntraining);
err_ist_hat2 = zeros(2,Ntraining);
dist_ist = zeros(Sparsity,Ntraining);
dist_ist_hat = zeros(Sparsity,Ntraining);
dist_ist_hat2 = zeros(Sparsity,Ntraining);
sol_iht = zeros(size(Gamma));
sol_iht_hat = zeros(size(Gamma));
sol_iht_hat2 = zeros(size(Gamma));
err_iht = zeros(2,Ntraining);
err_iht_hat = zeros(2,Ntraining);
err_iht_hat2 = zeros(2,Ntraining);
dist_iht = zeros(Sparsity,Ntraining);
dist_iht_hat = zeros(Sparsity,Ntraining);
dist_iht_hat2 = zeros(Sparsity,Ntraining);
sol_omp = zeros(size(Gamma)); sol_omp = zeros(size(Gamma));
sol_omp_hat = zeros(size(Gamma)); sol_omp_hat = zeros(size(Gamma));
...@@ -178,8 +214,9 @@ for k=1:numel(dist_paliers)-1 ...@@ -178,8 +214,9 @@ for k=1:numel(dist_paliers)-1
end end
toc toc
heure = clock ; heure = clock ;
% save(['results_BSL_JOURNAL_6approx' date '-' num2str(heure(4)) '-' num2str(heure(5)) ],'resDist','RCG_approxS_MEG','nb_approx_MEG','compute_Times','RCG_approxS_MEG');
save('results_localise_src','resDist','resDist_matlab','RCG_approxS_MEG','nb_approx_MEG','compute_Times','compute_Times_matlab', 'RCG_approxS_MEG'); matfile = fullfile(pathname, 'output/results_BSL_user');
save(matfile,'resDist','resDist_matlab','RCG_approxS_MEG','nb_approx_MEG','compute_Times','compute_Times_matlab', 'RCG_approxS_MEG');
close all %% Description Fig_BSL
clear all % Brain source localization figures
set_path % This script builds the BSL figure (Fig. 9.) used in [1].
load 'results_localise_src' %
% For more information on the FAuST Project, please visit the website of
% the project : <http://faust.gforge.inria.fr>
%
%% License:
% Copyright (2016): Luc Le Magoarou, Remi Gribonval
% INRIA Rennes, FRANCE
% http://www.inria.fr/
%
% The FAuST Toolbox is distributed under the terms of the GNU Affero
% General Public License.
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU Affero General Public License as published
% by the Free Software Foundation.
%
% This program is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% See the GNU Affero General Public License for more details.
%
% You should have received a copy of the GNU Affero General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
%
%% Contacts:
% Nicolas Bellot : nicolas.bellot@inria.fr
% Leman Adrien : adrien.leman@inria.fr
% Luc Le Magoarou: luc.le-magoarou@inria.fr
% Remi Gribonval : remi.gribonval@inria.fr
%
%% References:
% [1] Le Magoarou L. and Gribonval R., "Flexible multi-layer sparse
% approximations of matrices and applications", Journal of Selected
% Topics in Signal Processing, 2016.
% <https://hal.archives-ouvertes.fr/hal-01167948v1>
%
% [2] A. Gramfort, M. Luessi, E. Larson, D. Engemann, D. Strohmeier,
% C. Brodbeck, L. Parkkonen, M. Hamalainen, MNE software for processing
% MEG and EEG data <http://www.ncbi.nlm.nih.gov/pubmed/24161808>,
% NeuroImage, Volume 86, 1 February 2014, Pages 446-460, ISSN 1053-8119,
% [DOI] <http://dx.doi.org/10.1016/j.neuroimage.2013.10.027>
%%
runPath=which(mfilename);
pathname = fileparts(runPath);
matfile = fullfile(pathname, 'output/results_BSL_user.mat');
if (not(exist(matfile)))
error('run BSL.m before Fig_BSL.m');
end
load(matfile);
%% convergence analysis %% convergence analysis
d1 = cat(4,resDist(:,1,1,:),resDist(:,1,2,:)); d1 = cat(4,resDist(:,1,1,:),resDist(:,1,2,:));
...@@ -10,6 +57,7 @@ d2 = cat(4,resDist(:,2,1,:),resDist(:,2,2,:)); ...@@ -10,6 +57,7 @@ d2 = cat(4,resDist(:,2,1,:),resDist(:,2,2,:));
d3 = cat(4,resDist(:,3,1,:),resDist(:,3,2,:)); d3 = cat(4,resDist(:,3,1,:),resDist(:,3,2,:));
test2 = 100*[squeeze(d1);zeros(1,1000);squeeze(d2);zeros(1,1000);squeeze(d3)]; test2 = 100*[squeeze(d1);zeros(1,1000);squeeze(d2);zeros(1,1000);squeeze(d3)];
%boxPlot(test2') %boxPlot(test2')
figure('color',[1 1 1]); figure('color',[1 1 1]);
T = bplot(test2','linewidth',1.5); T = bplot(test2','linewidth',1.5);
legend(T) legend(T)
...@@ -38,6 +86,10 @@ text(xTicks(round(mean(1:(nb_approx_MEG+1)))), minY - verticalOffset2, '$1<d<5$' ...@@ -38,6 +86,10 @@ text(xTicks(round(mean(1:(nb_approx_MEG+1)))), minY - verticalOffset2, '$1<d<5$'
text(xTicks(round(mean(nb_approx_MEG+2:2*(nb_approx_MEG+1)))), minY - verticalOffset2, '$5<d<8$','HorizontalAlignment','center','interpreter', 'latex'); text(xTicks(round(mean(nb_approx_MEG+2:2*(nb_approx_MEG+1)))), minY - verticalOffset2, '$5<d<8$','HorizontalAlignment','center','interpreter', 'latex');
text(xTicks(round(mean(2*(nb_approx_MEG+1)+1:3*(nb_approx_MEG+1)))), minY - verticalOffset2, '$d>8$','HorizontalAlignment','center','interpreter', 'latex'); text(xTicks(round(mean(2*(nb_approx_MEG+1)+1:3*(nb_approx_MEG+1)))), minY - verticalOffset2, '$d>8$','HorizontalAlignment','center','interpreter', 'latex');
for i=1:nb_approx_MEG for i=1:nb_approx_MEG
text(xTicks(i+1), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex'); text(xTicks(i+1), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex');
text(xTicks(i+2+nb_approx_MEG), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) ' }$' ],'HorizontalAlignment','center','interpreter', 'latex'); text(xTicks(i+2+nb_approx_MEG), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) ' }$' ],'HorizontalAlignment','center','interpreter', 'latex');
...@@ -45,6 +97,8 @@ for i=1:nb_approx_MEG ...@@ -45,6 +97,8 @@ for i=1:nb_approx_MEG
end end
title('Fig 9 : C++ wrapper faust');
%% MATLAB convergence analysis %% MATLAB convergence analysis
...@@ -89,7 +143,7 @@ for i=1:nb_approx_MEG ...@@ -89,7 +143,7 @@ for i=1:nb_approx_MEG
end end
title('Fig 9 : matlab faust');
...@@ -129,6 +183,7 @@ for i=1:nb_approx_MEG ...@@ -129,6 +183,7 @@ for i=1:nb_approx_MEG
text(xTicks(i+1), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex'); text(xTicks(i+1), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex');
end end
title(' C++ wrapper faust');
...@@ -168,7 +223,7 @@ for i=1:nb_approx_MEG ...@@ -168,7 +223,7 @@ for i=1:nb_approx_MEG
text(xTicks(i+1), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex'); text(xTicks(i+1), minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex');
end end
title('MATLAB'); title('MATLAB faust');
...@@ -193,5 +248,6 @@ verticalOffset=1.01; ...@@ -193,5 +248,6 @@ verticalOffset=1.01;
for i=1:nb_approx_MEG for i=1:nb_approx_MEG
text(i, minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex'); text(i, minY - verticalOffset, ['$\widehat{\mathbf{M}}_{' int2str(RCG_approxS_MEG(i)) '}$' ],'HorizontalAlignment','center','interpreter', 'latex');
end end
legend('theoretical RCG','speed up faust','speed up MATLAB'); legend('theoretical RCG','speed up C++ wrapper faust','speed up MATLAB faust');
title('speed up');
file(GLOB MATLAB_SCRIPTS "*.m") file(GLOB MATLAB_SCRIPTS "*.m")
file(GLOB MATLAB_SCRIPTS "*.m") file(GLOB MATLAB_SCRIPTS "*.m")
# configure_file(${FAUST_MEXINTERFACETOOLS_SRC_DIR}/matlab_faust.m.in ${FAUST_TESTMATLABSCRIPT_BIN_DIR}/matlab_faust.m COPYONLY)
if(FAUST_USE_MEX)
foreach(matlab_script Brain_source_localization.m figure_localize_src.m)
configure_file(${FAUST_DEMO_SRC_DIR}/${matlab_script} ${FAUST_DEMO_BIN_DIR}/${matlab_script} COPYONLY)
endforeach()
configure_file(${FAUST_DEMO_SRC_DIR}/set_path.m.in ${FAUST_DEMO_BIN_DIR}/set_path.m @ONLY)
endif() if(FAUST_USE_MEX)
############# Brain source localization demo ####################
foreach(matlab_script BSL Fig_BSL)
configure_file(${FAUST_DEMO_BSL_SRC_DIR}/${matlab_script}.m ${FAUST_DEMO_BSL_BIN_DIR}/${matlab_script}.m COPYONLY)
install(FILES ${FAUST_DEMO_BSL_BIN_DIR}/${matlab_script}.m DESTINATION ${FAUST_DEMO_BSL_INSTALL_DIR})
endforeach()
foreach(data_BSL curv M_6 M_8 M_16 M_25 X_meg)
configure_file(${FAUST_DEMO_BSL_DATA_SRC_DIR}/${data_BSL}.mat ${FAUST_DEMO_BSL_DATA_BIN_DIR}/${data_BSL}.mat COPYONLY)
install(FILES ${FAUST_DEMO_BSL_DATA_BIN_DIR}/${data_BSL}.mat DESTINATION ${FAUST_DEMO_BSL_DATA_INSTALL_DIR})
endforeach()
endif()
#################### Tools directory ############################
foreach(tools bplot dvp faust_transpose f_mult greed_omp_chol make_sparse sparse_coeffs UpdateCholesky)
configure_file(${FAUST_DEMO_TOOLS_SRC_DIR}/${tools}.m ${FAUST_DEMO_TOOLS_BIN_DIR}/${tools}.m COPYONLY)
install(FILES ${FAUST_DEMO_TOOLS_BIN_DIR}/${tools}.m DESTINATION ${FAUST_DEMO_TOOLS_INSTALL_DIR})
endforeach()
addpath('@FAUST_MATLABMEX_BIN_DIR@');%% access to the mexfunction
addpath('@FAUST_DEMOTOOLS_SRC_DIR@');%% access to the tools.m function (sparsify toolbox, figure toolbox ...)
addpath('@FAUST_DEMODATA_SRC_DIR@');%% access to the data
addpath('@FAUST_MATLABTOOLS_BIN_DIR@');%% access to matlab_faust.m (interface betwwen faust_core C++ class and matlab class)
addpath('@FAUST_MATLABMEX_BIN_DIR@');%% access to the mexfunction addpath('@FAUST_MATLAB_MEX_BIN_DIR@');%% access to the mexfunction
addpath('@FAUST_TESTDATA_SRC_DIR@');%% access to the data (meg and faust_hier configuration) addpath('@FAUST_TESTDATA_SRC_DIR@');%% access to the data (meg and faust_hier configuration)
addpath('@FAUST_MATLABTOOLS_BIN_DIR@');%% access to matlab_faust.m (interface betwwen faust_core C++ class and matlab class) addpath('@FAUST_MATLAB_TOOLS_BIN_DIR@');%% access to matlab_faust.m (interface betwwen faust_core C++ class and matlab class)
...@@ -3,14 +3,14 @@ ...@@ -3,14 +3,14 @@
#INCLUDE("${PROJECT_SOURCE_DIR}/CMake/define_variables.cmake") #INCLUDE("${PROJECT_SOURCE_DIR}/CMake/define_variables.cmake")
configure_file(${FAUST_MATLABTOOLS_SRC_DIR}/matlab_faust.m.in ${FAUST_MATLABTOOLS_BIN_DIR}/matlab_faust.m COPYONLY) configure_file(${FAUST_MATLAB_TOOLS_SRC_DIR}/matlab_faust.m.in ${FAUST_MATLAB_TOOLS_BIN_DIR}/matlab_faust.m COPYONLY)
install(FILES ${FAUST_MATLABTOOLS_BIN_DIR}/matlab_faust.m DESTINATION ${FAUST_INSTALL_MEX}) install(FILES ${FAUST_MATLAB_TOOLS_BIN_DIR}/matlab_faust.m DESTINATION ${FAUST_MATLAB_TOOLS_INSTALL_DIR})
file(GLOB CPP_MEXTOOLS_FILES "${FAUST_MATLABTOOLS_SRC_DIR}/*.cpp") file(GLOB CPP_MEXTOOLS_FILES "${FAUST_MATLAB_TOOLS_SRC_DIR}/*.cpp")
# include directory # include directory
#{${FAUST_EXCEPTION_SRC_DIR} #{${FAUST_EXCEPTION_SRC_DIR}
include_directories(${FAUST_LINEAR_OPERATOR_SRC_DIR} ${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR} ${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR} ${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR} ${FAUST_MATLABTOOLS_SRC_DIR} ${MATLAB_INCLUDE_DIR} ${EIGEN_INC_DIR} ) include_directories(${FAUST_LINEAR_OPERATOR_SRC_DIR} ${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR} ${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR} ${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR} ${FAUST_MATLAB_TOOLS_SRC_DIR} ${MATLAB_INCLUDE_DIR} ${EIGEN_INC_DIR} )
#modif compatibilite ubuntu avec openblas #modif compatibilite ubuntu avec openblas
if (FAUST_USE_OPENBLAS) if (FAUST_USE_OPENBLAS)
include_directories(${OPENBLAS_INC_DIR}) include_directories(${OPENBLAS_INC_DIR})
...@@ -20,7 +20,7 @@ add_library(${FAUST_MEXTOOLS_TARGET} OBJECT ${CPP_MEXTOOLS_FILES}) ...@@ -20,7 +20,7 @@ add_library(${FAUST_MEXTOOLS_TARGET} OBJECT ${CPP_MEXTOOLS_FILES})
#target_link_libraries(${FAUST_MEXTOOLS_TARGET} ${FAUST_TARGET}) #target_link_libraries(${FAUST_MEXTOOLS_TARGET} ${FAUST_TARGET})
file(GLOB CPP_MEX_FILES "${FAUST_MATLABMEX_SRC_DIR}/*.cpp") file(GLOB CPP_MEX_FILES "${FAUST_MATLAB_MEX_SRC_DIR}/*.cpp")
## modif AL : bug pour les noms de PATH avec un point comme par exemple : ./faust_v1.10/interface_matlab/ ## modif AL : bug pour les noms de PATH avec un point comme par exemple : ./faust_v1.10/interface_matlab/
string(REGEX REPLACE "[a-zA-Z0-9_/:.]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}") string(REGEX REPLACE "[a-zA-Z0-9_/:.]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}")
#string(REGEX REPLACE "[a-zA-Z0-9_/:]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}") #string(REGEX REPLACE "[a-zA-Z0-9_/:]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}")
...@@ -31,7 +31,7 @@ if(CXX_MEX_FLAGS) ...@@ -31,7 +31,7 @@ if(CXX_MEX_FLAGS)
endif() endif()
#"-I${FAUST_FAUSTCORE_SRC_DIR}" "-I${FAUST_EXCEPTION_SRC_DIR}" #"-I${FAUST_FAUSTCORE_SRC_DIR}" "-I${FAUST_EXCEPTION_SRC_DIR}"
set(CMAKE_CXX_FLAGS_LIST ${CMAKE_CXX_FLAGS_LIST} "-I${MATLAB_INCLUDE_DIR}" "-I${EIGEN_INC_DIR}" "-I${FAUST_LINEAR_OPERATOR_SRC_DIR}" "-I${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}" "-I${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}" "-I${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR}" "-I${FAUST_MATLABTOOLS_SRC_DIR}") set(CMAKE_CXX_FLAGS_LIST ${CMAKE_CXX_FLAGS_LIST} "-I${MATLAB_INCLUDE_DIR}" "-I${EIGEN_INC_DIR}" "-I${FAUST_LINEAR_OPERATOR_SRC_DIR}" "-I${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}" "-I${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}" "-I${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR}" "-I${FAUST_MATLAB_TOOLS_SRC_DIR}")
if(FAUST_USE_OPENBLAS AND UNIX) if(FAUST_USE_OPENBLAS AND UNIX)
set(CMAKE_CXX_FLAGS_LIST "${CMAKE_CXX_FLAGS_LIST}" "-I${OPENBLAS_INC_DIR}") set(CMAKE_CXX_FLAGS_LIST "${CMAKE_CXX_FLAGS_LIST}" "-I${OPENBLAS_INC_DIR}")
...@@ -50,7 +50,7 @@ endif() ...@@ -50,7 +50,7 @@ endif()
if(UNIX) if(UNIX)
add_custom_target(${FAUST_MEX_TARGET} ALL DEPENDS ${MEXFILE_TARGET_LIST} ${FAUST_TARGET} ${FAUST_MEXTOOLS_TARGET} ) add_custom_target(${FAUST_MEX_TARGET} ALL DEPENDS ${MEXFILE_TARGET_LIST} ${FAUST_TARGET} ${FAUST_MEXTOOLS_TARGET} )
elseif(WIN32) elseif(WIN32)
file(GLOB CPP_SRC_FILES "${FAUST_LINEAR_OPERATOR_SRC_DIR}/*.cpp" "${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR}/*.cpp" "${FAUST_MATLABTOOLS_SRC_DIR}/*.cpp") file(GLOB CPP_SRC_FILES "${FAUST_LINEAR_OPERATOR_SRC_DIR}/*.cpp" "${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR}/*.cpp" "${FAUST_MATLAB_TOOLS_SRC_DIR}/*.cpp")
string(REGEX REPLACE "([a-zA-Z0-9_/:]+)\\.cpp(;|$)" "\\1\\2" MEXSRC_FULL "${CPP_SRC_FILES}") string(REGEX REPLACE "([a-zA-Z0-9_/:]+)\\.cpp(;|$)" "\\1\\2" MEXSRC_FULL "${CPP_SRC_FILES}")
string(REGEX REPLACE "[a-zA-Z0-9_/:]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "${FAUST_TMPMEX_DIR}/\\1.${MEXOBJ_EXT}\\2" MEXOBJ_FILES "${CPP_SRC_FILES}") string(REGEX REPLACE "[a-zA-Z0-9_/:]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "${FAUST_TMPMEX_DIR}/\\1.${MEXOBJ_EXT}\\2" MEXOBJ_FILES "${CPP_SRC_FILES}")
...@@ -63,10 +63,10 @@ endif() ...@@ -63,10 +63,10 @@ endif()
foreach(mex_target ${MEXFILE_TARGET_LIST}) foreach(mex_target ${MEXFILE_TARGET_LIST})
if(WIN32) if(WIN32)
add_custom_target(${mex_target} DEPENDS ${FAUST_MATLABMEX_SRC_DIR}/${mex_target}.cpp ${mex_target}.${MEX_EXT} MEXOBJ_FILES_TARGET ) add_custom_target(${mex_target} DEPENDS ${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp ${mex_target}.${MEX_EXT} MEXOBJ_FILES_TARGET )
elseif(UNIX) elseif(UNIX)
add_custom_target(${mex_target} DEPENDS ${FAUST_MATLABMEX_SRC_DIR}/${mex_target}.cpp ${mex_target}.${MEX_EXT} ${FAUST_MEXTOOLS_TARGET} ${FAUST_TARGET}) add_custom_target(${mex_target} DEPENDS ${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp ${mex_target}.${MEX_EXT} ${FAUST_MEXTOOLS_TARGET} ${FAUST_TARGET})
endif() endif()
if(UNIX) if(UNIX)
...@@ -75,7 +75,7 @@ foreach(mex_target ${MEXFILE_TARGET_LIST}) ...@@ -75,7 +75,7 @@ foreach(mex_target ${MEXFILE_TARGET_LIST})
if(APPLE) if(APPLE)
add_custom_command(OUTPUT ${mex_target}.${MEX_EXT} add_custom_command(OUTPUT ${mex_target}.${MEX_EXT}
COMMAND ${MATLAB_ROOT}/bin/mex COMMAND ${MATLAB_ROOT}/bin/mex
ARGS "-v" "-largeArrayDims" "${FAUST_MATLABMEX_SRC_DIR}/${mex_target}.cpp" ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp"
"-O" "-O"
${CMAKE_CXX_FLAGS_LIST} ${CMAKE_CXX_FLAGS_LIST}
${LDD_MEX_FLAGS} ${LDD_MEX_FLAGS}
...@@ -83,7 +83,7 @@ foreach(mex_target ${MEXFILE_TARGET_LIST}) ...@@ -83,7 +83,7 @@ foreach(mex_target ${MEXFILE_TARGET_LIST})
else(APPLE) else(APPLE)
add_custom_command(OUTPUT ${mex_target}.${MEX_EXT} add_custom_command(OUTPUT ${mex_target}.${MEX_EXT}
COMMAND ${MATLAB_ROOT}/bin/mex COMMAND ${MATLAB_ROOT}/bin/mex
ARGS "-v" "-largeArrayDims" "${FAUST_MATLABMEX_SRC_DIR}/${mex_target}.cpp" ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp"
"LDFLAGS=$$LDFLAGS -Wl,-rpath=${MATLAB_ROOT}/bin/${MEX_SUBDIR_LIB}:${FAUST_INSTALL_LIB}:${PROJECT_BINARY_DIR}" "LDFLAGS=$$LDFLAGS -Wl,-rpath=${MATLAB_ROOT}/bin/${MEX_SUBDIR_LIB}:${FAUST_INSTALL_LIB}:${PROJECT_BINARY_DIR}"
"-O" "-O"
${CMAKE_CXX_FLAGS_LIST} ${CMAKE_CXX_FLAGS_LIST}
...@@ -94,7 +94,7 @@ foreach(mex_target ${MEXFILE_TARGET_LIST}) ...@@ -94,7 +94,7 @@ foreach(mex_target ${MEXFILE_TARGET_LIST})
elseif(WIN32) elseif(WIN32)
add_custom_command(OUTPUT ${mex_target}.${MEX_EXT} add_custom_command(OUTPUT ${mex_target}.${MEX_EXT}
COMMAND ${MATLAB_ROOT}/bin/mex COMMAND ${MATLAB_ROOT}/bin/mex
ARGS "-v" "-largeArrayDims" "${FAUST_MATLABMEX_SRC_DIR}/${mex_target}.cpp" "${FAUST_TMPMEX_DIR}/*.${MEXOBJ_EXT}" ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp" "${FAUST_TMPMEX_DIR}/*.${MEXOBJ_EXT}"
${CMAKE_CXX_FLAGS_LIST} ${CMAKE_CXX_FLAGS_LIST}
DEPENDS ${MEXOBJ_FILES} DEPENDS ${MEXOBJ_FILES}
COMMENT "Creating mex function ${mex_target}.${MEX_EXT}") COMMENT "Creating mex function ${mex_target}.${MEX_EXT}")
...@@ -102,9 +102,9 @@ foreach(mex_target ${MEXFILE_TARGET_LIST}) ...@@ -102,9 +102,9 @@ foreach(mex_target ${MEXFILE_TARGET_LIST})
else() else()
message(FATAL_ERROR "Unable to compile mex functions") message(FATAL_ERROR "Unable to compile mex functions")
endif() endif()
configure_file(${FAUST_MATLABDOC_SRC_DIR}/${mex_target}.m ${FAUST_MATLABMEX_BIN_DIR}/${mex_target}.m COPYONLY) configure_file(${FAUST_MATLAB_DOC_SRC_DIR}/${mex_target}.m ${FAUST_MATLAB_MEX_BIN_DIR}/${mex_target}.m COPYONLY)
install(FILES ${FAUST_MATLABMEX_BIN_DIR}/${mex_target}.m DESTINATION ${FAUST_INSTALL_MEX}) install(FILES ${FAUST_MATLAB_MEX_BIN_DIR}/${mex_target}.m DESTINATION ${FAUST_MATLAB_MEX_INSTALL_DIR})
install(FILES ${FAUST_MATLABMEX_BIN_DIR}/${mex_target}.${MEX_EXT} DESTINATION ${FAUST_INSTALL_MEX}) install(FILES ${FAUST_MATLAB_MEX_BIN_DIR}/${mex_target}.${MEX_EXT} DESTINATION ${FAUST_MATLAB_MEX_INSTALL_DIR})
endforeach() endforeach()
...@@ -117,6 +117,11 @@ if(WIN32) ...@@ -117,6 +117,11 @@ if(WIN32)
COMMENT "Compiling ${mex_src}.cpp for mex usage") COMMENT "Compiling ${mex_src}.cpp for mex usage")
endforeach() endforeach()
endif() endif()
# CONFIGURATION DES CHEMINS
configure_file(${FAUST_MATLAB_SRC_DIR}/setup_FAUST.m.in ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m @ONLY)
install(FILES ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m DESTINATION ${FAUST_MATLAB_INSTALL_DIR})
......
%% Description: setup_FAuST.m
% Run script to set the useful paths in order to use the matlab wrapper of the C++ FAuST toolbox.
%
% For more information on the FAuST Project, please visit the website of
% the project : <http://faust.gforge.inria.fr>
%
%% License:
% Copyright (2016): Bellot Nicolas, Adrien Leman, Luc Le Magoarou, Remi Gribonval
% INRIA Rennes, FRANCE
% http://www.inria.fr/
%
% The FAuST Toolbox is distributed under the terms of the GNU Affero
% General Public License.
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU Affero General Public License as published
% by the Free Software Foundation.
%
% This program is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% See the GNU Affero General Public License for more details.
%
% You should have received a copy of the GNU Affero General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
%
%% Contacts:
% Nicolas Bellot : nicolas.bellot@inria.fr
% Adrien Leman : adrien.leman@inria.fr
% Luc Le Magoarou: luc.le-magoarou@inria.fr
% Remi Gribonval : remi.gribonval@inria.fr
%
%% References:
% [1] Le Magoarou L. and Gribonval R., "Flexible multi-layer sparse
% approximations of matrices and applications", Journal of Selected
% Topics in Signal Processing, 2016.
% <https://hal.archives-ouvertes.fr/hal-01167948v1>
%%
ROOT_DIR=[fileparts(mfilename('fullpath')),filesep];
relpathlist={'',...
'mex',... %% mexfunction access (mexHierarchical_fact, mexPalm4MSA, mexFaust )
'tools',... %% matlab_faust.m
'demo',...
'demo/Brain_source_localization',...
};
fprintf('Welcome to wrapper matlab C++ FAuST_toolbox. FAuST root directory is %s\n',ROOT_DIR);
for k=1:numel(relpathlist)
tmp_pathname=[ROOT_DIR,relpathlist{k}];
fprintf('adding path %s\n',tmp_pathname);
addpath(genpath(tmp_pathname));
end
cd(ROOT_DIR)
clear relpathlist tmp_pathname ROOT_DIR k
fprintf('\n FAuST is successfully installed. \n')
addpath('@FAUST_MATLABMEX_INSTALL@');%% access to the mexfunction
addpath('@FAUST_DEMO_INSTALL@');%% access
addpath('@FAUST_DEMOTOOLS_INSTALL@');%% access to the tools function (sparsify toolbox, figure toolbox ...)
addpath('@FAUST_DEMODATA_INSTALL@');%% access to the data
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment