[9f010e]: / Analysis / jPCA_ForDistribution / Some key lines in matlab format.asv

Download this file

151 lines (91 with data), 4.9 kB






% loading libraries
addpath 'fromMarksLibraries' -END
addpath 'CircStat2010d' -END

% loading data
load exampleData

% Notes on format of data:
% You must organize your data the way that the example structure 'Data' is organized
% Data should be a structure that is at least one element long.  For the example, 'Data' is 108
% elements long, one for each condition (reach type) that the monkey performed.  If you have only
% one condition (e.g., when we analyze a 30 second period of walking) then you will just have one
% element.
% Data.A should be a matrix, with time running vertically and neurons running horizontally.
%       This is the same format as when using matlabs 'princomp'.
% Data.times should be some set of times that you understand.  You will ask for the analysis / plots to
% apply to subsets of these times.


% these will be used for everything below
jPCA_params.softenNorm = 5;  % how each neuron's rate is normized, see below
jPCA_params.suppressBWrosettes = true;  % these 
are useful sanity plots, but lets ignore them for now
jPCA_params.suppressHistograms = true;  % these are useful sanity plots, but lets ignore them for now


%% EX1: FIRST PLANE
% plotting the first jPCA plane for 200 ms of data, using 6 PCs (the default)
times = -50:10:150;  % 50 ms before 'neural movement onset' until 150 ms after
jPCA_params.numPCs = 6;  % default anyway, but best to be specific
[Projection, Summary] = jPCA_2(Data, times, jPCA_params);

phaseSpace(Projection, Summary);  % makes the plot

printFigs(gcf, '.', '-dpdf', 'Basic jPCA plot');  % prints in the current directory as a PDF


%% EX2: GREATER RANGE OF TIME
times = -50:10:300;  % 50 ms before 'neural movement onset' until 300 ms after
jPCA_params.numPCs = 6;  % sticking with 6 for now, but will move up to 10 below
[Projection, Summary] = jPCA_2(Data, times, jPCA_params);
phaseSpace(Projection, Summary);  % makes the plot


%% EX3:  also do in higher D
times = -50:10:300;
jPCA_params.numPCs = 12;  % search for the jPCA plane within the top 12 PCs, not just the top 6
[Projection, Summary] = jPCA_2(Data, times, jPCA_params);
phaseSpace(Projection, Summary);  % makes the plot


%% EX4: THREE PLANES

times = -50:10:300;  % first we will just run the analysis as we did above
jPCA_params.numPCs = 12;
[Projection, Summary] = jPCA(Data, times, jPCA_params);
 
% now we will plot all three planes
plotParams.planes2plot = [1 2 3];
phaseSpace(Projection, Summary, plotParams);  % makes all three plots



%% EX5: SIMPLE MOVIE FOR VIEWING

times = -50:10:300;  % This is just what we did for examples 3 & 4 above
jPCA_params.numPCs = 12;
[Projection, Summary] = jPCA(Data, times, jPCA_params);

phaseMovie(Projection, Summary);

% for a greater range of times
movParams.times = -50:10:550;  % a range of times that is broader than that used to find the jPCA projection
phaseMovie(Projection, Summary, movParams);


%% EX6: SAVING MOVIES

% Probably best with an undocked figure.
% You will have to play with '.pixelsToGet'
% You may get a warning if you use to many pixels.

movParams.times = -50:10:550;
movParams.pixelsToGet = [25 35 280 280]; % These WILL vary depending on your monitor and layout.
MV = phaseMovie(Projection, Summary, movParams);

figure; movie(MV);  % shows the movie in a matlab figure window

movie2avi(MV, 'jPCA movie', 'FPS', 12, 'compression', 'none'); % 'MV' now contains the movie




%% EX7: MOVIE OF THE CHANGE IN BASIS FROM PCA TO jPCA

% going back to the original 6D analysis over a short period of time.
times = -50:10:150;  % 50 ms before 'neural movement onset' until 150 ms after
jPCA_params.numPCs = 6;  % default anyway, but best to be specific
[Projection, Summary] = jPCA(Data, times, jPCA_params);

phaseSpace(Projection, Summary);  % Static plot as a sanity check

rotationMovie(Projection, Summary, -50:10:150, 70, 70);  % 70 steps to full rotation.  Show all 70.




% List of examples:

% 3) Plotting a movie.
% 5) Plotting with no mean subtraction.

% errors to avoid:

% After running the examples below, type 'help functionName' for all the relevant functions: jPCA,
% phaseSpace & phaseMovie.  All these functions allow many useful parameters to be passed if you so wish. 





%% EX8: MEAN SUBTRACTION

% turning off mean subtraction
times = -50:10:150;  % 200 ms of time, as in supp fig. 7
jPCA_params.meanSubtract = false;  % no mean subtraction
jPCA_params.numPCs = 10;  % as in supp fig. 7
[Projection, Summary] = jPCA(Data, times, jPCA_params);

plotParams.plotPlanEllipse = false;
plotParams.planes2plot = [1 2 3];
phaseSpace(Projection, Summary, plotParams);  


% turning mean subtraction back on
times = -50:10:150;
jPCA_params.meanSubtract = true;  % the default
jPCA_params.numPCs = 6;  % as in fig 3f
[Projection, Summary] = jPCA(Data, times, jPCA_params);
plotParams.crossCondMean = true;
plotParams.planes2plot = 1;
phaseSpace(Projection, Summary, plotParams);