% PARSE_TRANSFUSION produces the plots necessary to our micro-transfusion protocol. % % Blanchoud Group, UNIFR % Simon Blanchoud % 11/01/2021 function parse_transfusion purity = '/home/blanchou/Documents/Manuscripts/transfusion_MiMB/data/purity_scale.csv'; data = csvread(purity); x = data(:,1); data = data(:,2:end); samples = (data(1,:)~=0); meas = data(:, samples); data = data(:,~samples); meas = sort(meas(:)); t = sum((data(:) - mean(data(:))).^2); [p, e_var, r, p_var, fit_var] = LinearRegression(repmat(x, size(data,2), 1), data(:)); val = 1 - (meas / p); upper = (val > 0.88); lower = (val <= 0.88); [mu, su] = mymean(val(upper)); [ml, sl] = mymean(val(lower)); figure;hold on; plot(1-x, data, '-ok') plot(1-x, [x*(p+1.96*sqrt(p_var)) x*p x*(p-1.96*sqrt(p_var))], 'r') scatter(val(lower), meas(lower), 'ob') scatter(val(upper), meas(upper), 'oc') scatter([mu mu+su ml ml+sl], [0 1 0 1], 'k') title(num2str(1-r^2/t)) xlim([0 1]); ylim([0 4]); ylabel('Absorbance') xlabel('Purity (%)') injection = '/home/blanchou/Documents/Manuscripts/transfusion_MiMB/data/injection_speed.csv'; data = csvread(injection); x = data(:,1); data = data(:,2:end); zooid = data(:,1:5); vessel = data(:,6:end); [m,s] = mymean(data,2); [mz,sz] = mymean(zooid,2); [mv,sv] = mymean(vessel,2); figure; hold on; plot(x, zooid, 'r') plot(x, vessel, 'b') plot(x, mz + [sz zeros(9,1) -sz], 'm') plot(x, mv + [sv zeros(9,1) -sv], 'c') plot(x, m + [s zeros(9,1) -s], 'k') ylim([0 40]) ylabel('Time (min)') xlim([0 40]) xlabel('Injected volume (µL)') collection = '/home/blanchou/Documents/Manuscripts/transfusion_MiMB/data/collection_speed.csv'; pipette_changes = [1 20; 2 1; 2 6; 2 7; 3 10; 3 15; 3 17.45; 3 20; 4 3; 4 13.45]; puncture_change = [1 1.283; 1 6; 2 13.5; 2 28.616; 3 16; 4 14.25; 5 1.333; 5 12]; data = csvread(collection); x = data(:,1); data = data(:,2:end); [m,s] = mymean(data,2); pc = NaN(0,2); for i=1:size(data,2) xp = pipette_changes(pipette_changes(:,1)==i, 2); y = interp1(x, data(:,i), xp); pc = [pc; [xp y]]; end cp = NaN(0,2); for i=1:size(data,2) xp = puncture_change(puncture_change(:,1)==i, 2); y = interp1(x, data(:,i), xp); cp = [cp; [xp y]]; end figure; hold on; plot(x, data, 'k') plot(x,m, 'r') plot(x, m + [s -s], 'b') scatter(pc(:,1), pc(:,2), 'v') scatter(cp(:,1), cp(:,2), 'o') ylim([0 40]) ylabel('Time (min)') xlim([0 40]) xlabel('Collected volume (µL)') keyboard return; end