% This function reads in two files, one with GJ connected data and % then the unconnected reference trace. Then it plots the two voltage % traces in two subplots and locks the axes so when one of the plots % is moved or zoomed the other one follows. % % To generate data, run runTenFScurInjectHomogeneNetworkGJonoff.m % % % When asked for a file, input: % % 'UTDATA/SAVED/TenHomoFSGJonoffCurInject/TenHomoFS-prim-CurInject-GJonoff-id210991775-gapres-2000000compareTraces' % % Obs, you might have to replace the randomId in idXXXXXXXXXX with your number. close all, format compact % Matlab helper scripts are located here path(path,'../matlabScripts') if(~exist('filenameGJ')) % Ask for the connected simulation run filenameGJ = input('Please input GJ data-file to read: '); % Figure out the filename of the reference run GJresStr = regexp(filenameGJ, 'gapres-[0-9]+','match'); filenameRef = strrep(filenameGJ, GJresStr, 'gapres-Inf'); filenameRef = char(strrep(filenameRef, 'prim', 'nonConRef')); % Get random seed randSeedStr = regexp(filenameGJ,'id[0-9]+','match'); filePath = filenameGJ(1:find(filenameGJ == '/', 1, 'last')); % Load connection matrix randSeedStr = randSeedStr{1}([3:end]); filenameConMat = [filePath 'conMat-' randSeedStr '.mat']; randSeed = num2str(randSeedStr); % Clean up GJresStr, used in plot later GJres = regexp(GJresStr, '[0-9]+','match'); GJcond = 1/str2num(GJres{1}{1}); disp(['Loading ' filenameGJ]) dataGJ = load(filenameGJ); disp(['Loading ' filenameRef]) dataRef = load(filenameRef); disp(['Loading ' filenameConMat]) load(filenameConMat) end % Display the network for easy selection of neurons figure showFSnetwork(conMat, randSeed) conMatMod = conMat + diag(diag(ones(size(conMat)))); numCells = size(dataGJ,2)-1; % Ask what traces to show trace = input(['Select neurons to view (1 - ' ... num2str(numCells) '), ' ... 'no input means all traces: ' ]); if(length(trace) == 1) askNeighbour = trace; trace = []; while(length(askNeighbour) > 0) trace = [trace askNeighbour]; disp(['Currently selected neurons ' num2str(trace)]) neurons = zeros(numCells,1); neurons(trace) = 1; % Which neurons are connected to our selected neurons in one step reachMat = conMatMod * neurons; neighbourNeurons = setdiff(find(reachMat'), trace); if(length(neighbourNeurons > 0)) disp(['Available neighbours ' num2str(neighbourNeurons)]) disp('Do you want to select a connected neighbour?') askNeighbour = input('Select neuron (return ends process): '); else askNeighbour = []; end trace = unique(trace); end end if(length(trace) == 0) trace = 1:numCells; end if(length(trace) > 1) subMat = conMatMod(trace,trace); subMatClique = subMat^length(trace); if(min(subMatClique) < 1) disp('WARNING: The selection of neurons are not all in one clique') disp('There are atleast two neuron that there is no GJ path between') end end figure showFSnetworkMark(conMat, randSeed, trace) figure pHand(1) = subplot(2,1,1); plot(dataGJ(:,1), dataGJ(:,trace+1)) xlabel('Time (s)') ylabel('Voltage (V)') title(['Gap junction connected ' num2str(GJcond*1e9) 'nS']) pHand(2) = subplot(2,1,2); p = plot(dataRef(:,1), dataRef(:,trace+1)); xlabel('Time (s)') ylabel('Voltage (V)') title('Nonconnected reference') for i=1:length(p) pLeg{i} = ['Neuron ' num2str(trace(i))]; end legend(p, pLeg, 'Location', 'Best') linkprop(pHand,'View'); linkprop(pHand,'Ylim'); linkprop(pHand,'Xlim'); % linkprop(pHand,'Zlim'); a = axis; saveas(p(1), ['FIGS/TenFS/FS-exampleTrace-' num2str(randSeed) '.fig'], 'fig')