-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefigs_vir2preg_vir2lact_sensitivity.m
131 lines (108 loc) · 3.52 KB
/
makefigs_vir2preg_vir2lact_sensitivity.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
% This file is used to postprocess output from
% compute_preg2fem_lact2fem_all.m
% Makes Figure 3.4 from manuscript
clear all
fname = './results_virgin2preglact_sensitivity/16-May-2023_vir2preg_vir2lact_all_notes-PTHupdate2.mat';
dat = load(fname);
[preg_xlabs, preg_data] = getdata(dat,'vir2preg');
[lact_xlabs, lact_data] = getdata(dat,'vir2lact');
% sanity check: check that xlabels are the same
flag = 0;
if size(preg_xlabs) ~= size(lact_xlabs)
flag = 1;
end
for ii = 1:size(preg_xlabs,2)
if ~strcmp(preg_xlabs, lact_xlabs)
flag = 1;
end
end
if flag
error('xlabels do not match')
end
xlabels = preg_xlabs;
Nan_preg = find_all_Nan(preg_data);
Nan_lact = find_all_Nan(lact_data);
allNan = intersect(Nan_preg, Nan_lact);
[rm_xlabs, rm_pregdat] = removeAllNan(allNan, xlabels, preg_data);
[temp, rm_lactdat] = removeAllNan(allNan, xlabels, lact_data);
if size(rm_xlabs) ~= size(temp)
error('rm_xlabs do not match')
end
% change gamma_fetusORmilk
rmxlabs_preg = rm_xlabs;
for ii = 1:length(rmxlabs_preg)
if strcmp(rmxlabs_preg{ii}, '\Gamma_{x}')
rmxlabs_preg{ii} = '\Gamma_{Fetus}';
end
end
rmxlabs_lact = rm_xlabs;
for ii = 1:length(rmxlabs_lact)
if strcmp(rmxlabs_lact{ii}, '\Gamma_{x}')
rmxlabs_lact{ii} = '\Gamma_{Milk}';
end
end
%% make figures
temp = [rm_pregdat, rm_lactdat];
clim = [min(temp,[],'all'), max(temp,[],'all')];
cmissing = 'w';
labmissing = '<1.0%';
fsize = 18;
ylabels = {'[PTH]_p', '[Ca^{2+}]_p', '[1,25(OH)_2D_3]_p'};
cmap = turbo;
figure(1)
clf
subplot(2,1,1)
h = heatmap(rmxlabs_preg, ylabels, rm_pregdat,...
'colormap', cmap,...
'MissingDataColor', cmissing, 'MissingDataLabel', labmissing,...
'ColorLimits', clim, 'colorbarvisible', 'on');
ylabel('Virgin to pregnant')
%Ax = gca;
%Ax.XDisplayLabels = nan(size(Ax.XDisplayData));
h.FontSize = fsize;
subplot(2,1,2)
h = heatmap(rmxlabs_lact, ylabels, rm_lactdat,...
'colormap', cmap,...
'MissingDataColor', cmissing, 'MissingDataLabel', labmissing,...
'ColorLimits', clim, 'colorbarvisible', 'off');
ylabel('Virgin to lactating')
xlabel('Parameters')
h.FontSize = fsize;
%sgtitle('Impact of individual maternal adaptations on virgin model', 'fontsize', 24)
%---------------------------
% Functions used
%---------------------------
function [xlabels, round_data] = getdata(dat, pregORlact)
if strcmp(pregORlact, 'vir2preg')
frac_sens = dat.fem2preg_frac;
elseif strcmp(pregORlact, 'vir2lact')
frac_sens = dat.fem2lact_frac;
end
labels = cell(size(dat.param_names));
for ii = 1:size(dat.param_names,2)
labels{ii} = convert_param_name(dat.param_names{ii});
end
xlabels = labels;
round_data = round(frac_sens', 2, 'significant');
[r,c] = find(abs(round_data) <= 1.0);% r - row values, c - column value
for ii = 1:length(r)
round_data(r(ii),c(ii)) = NaN;
end
end
function AllNan_vals = find_all_Nan(round_data)
% finds which indices are all Nan values
PTH_Nan = find(isnan(round_data(1,:)));
Ca_Nan = find(isnan(round_data(2,:)));
temp = intersect(PTH_Nan, Ca_Nan);
D3_Nan = find(isnan(round_data(3,:)));
AllNan_vals = intersect(temp, D3_Nan);
end
function [rmNan_xlabels, rmNan_round_data] = removeAllNan(AllNan_vals, xlabels, round_data)
% removes columns listed in indices from AllNan_vals
rmNan_round_data = round_data;
rmNan_xlabels = xlabels;
rmNan_round_data(:,AllNan_vals) = [];
for ii = length(AllNan_vals):-1:1
rmNan_xlabels(AllNan_vals(ii)) = [];
end
end