%% Human Liver Regeneration % Author: Timothy O. Josephson % Date: 04/19/2018 % % Description: Reproduction of parameters and equations from: % Verma et al., "Model-based virtual patient analysis of % human liver regeneration predicts critical perioperative factors % controlling the dynamic mode of response to resection". % Also compares the simulation to Cook et al., "Systems Analysis of % Non-Parenchymal Cell Modulation of Liver Repair across Multiple % Regeneration Modes", BMC Systems Biology, 2015. % % citation: Babita K. Verma, Pushpavanam Subramaniam, Rajanikanth Vadigepalli et al., % "Model-based virtual patient analysis of human liver regeneration predicts % critical perioperative factors controlling the dynamic mode of response to resection". %% Setup close all; clear; clc; % Remnant liver fraction Q0 = 0.4; % Time range from t=0:t=800 days, converted to hours tStart = 0; tEnd = 910*24; %% Verma et al. model % Parameters k(1) = 5.8206; % M k(2) = 1.4528; % k_IL6 k(3) = 0.6878; % kappa_IL6 k(4) = 20000; % V_JAK k(5) = 9999.9999; % k^JAK_M k(6) = 0.1695; % kappa_JAK k(7) = 1.9108; % [proSTAT3] k(8) = 749.9994; % V_ST3 k(9) = 0.1715; % k^ST3_M k(10) = 0.0828; % kappa_ST3 k(11) = 24000; % V_SOCS3 k(12) = 0.0006; % k^SOCS3_M k(13) = 0.3173; % kappa_SOCS3 k(14) = 0.0153; % K^SOCS3_l k(15) = 249.9992; % V_IE k(16) = 17.9736; % k^IE_M k(17) = 4.9595; % kappa_IE k(18) = 6.9843; % k_deg k(19) = 32.9924; % kappa_ECM k(20) = 0.1014; % k_GF k(21) = 0.2016; % kappa_GF k(22) = 0.0589; % k_up k(23) = 0.0072; % k_QP k(24) = 0.0045; % k_PR k(25) = 0.0520; % k_RQ k(26) = 0.0232; % k_prol k(27) = 0.0912; % k_req k(28) = 7.9493; % theta_req k(29) = 2.9285; % beta_req k(30) = 0.0982; % k_ap k(31) = 0.0321; % theta_ap k(32) = 0.0045; % beta_ap k(33) = 0.0007; % k_G % Steady State Parameters k(34) = -k(2)*k(1) + k(4)/(1+k(5)) + k(3); % k1 - TNF production k(35) = -k(4)/(1+k(5)) + k(6); % k2 - JAK production k(36) = -k(8)*k(7)^2/(k(7)^2+k(9)*(1+1/k(14))) + ... k(15)/(1+k(16)) + k(11)/(1+k(12)) + k(10); % k3 - STAT3 production k(37) = -k(11)/(1+k(12)) + k(13); % k4 - SOCS production k(38) = -k(15)/(1+k(16)) + k(17); % k5 - IE gene production k(39) = k(18) + k(19); % k6 - ECM production k(40) = -k(20)*k(1) + k(22) + k(21); % k7 - GF production % Initial Conditions x0(1) = Q0; % Q x0(2) = 0; % P x0(3) = 0; % R x0(4) = 1; % IL6 x0(5) = 1; % JAK x0(6) = 1; % STAT3 x0(7) = 1; % SOCS3 x0(8) = 1; % IE x0(9) = 1; % GF x0(10) = 1; % ECM x0(11) = 1; % G L = {'Q', 'P', 'R', 'IL6', 'JAK', 'STAT3', 'SOCS3', 'IE', 'GF', 'ECM', 'G'}; % Solve System [t,x] = ode15s(@(t,x)LiverRegenODE_reproduced(t, x, k, x0), [tStart, tEnd], x0); % Set any negative values to 0 if any(x(:,1) < 0) x(x(:,1) < 0,1) = 0; end if any(x(:,2) < 0) x(x(:,2) < 0,2) = 0; end if any(x(:,3) < 0) x(x(:,3) < 0,3) = 0; end t = t/24; % Convert t from hours to days N = x(:,1) + x(:,11) .* (x(:,2) + x(:,3)); % Calculate N = Q + G(P+R) %% Evaluation of model by Cook et al. for comparison [tC,cell,conc,G] = HepatRegenGrowth(Q0); tC = tC/24; % Convert t from hours to days Nc = cell(:,1)+G.*(cell(:,2)+cell(:,3)); % Calculate N = Q + G(P+R) %% Plot results from both models figure hold on plot(t, N, 'linewidth', 2) % Optimized result plot(tC, Nc, '--', 'linewidth',2) % Result from Cook et al axis([0, 800, 0, 1.1]) xlabel('Time post-resection (days)') ylabel('Fraction of Liver') legend('Optimized', 'Cook', 'location', 'best') %% Phase Plane Analysis c = [0 0.4470 0.7410 0.8500 0.3250 0.0980 0.9290 0.6940 0.1250 0.4940 0.1840 0.5560 0.4660 0.6740 0.1880 0.3010 0.7450 0.9330 0.6350 0.0780 0.1840]; % Color scheme for plots Q0 = 0.9; % Initial fraction for j = 1:3 % loop 3 times for different M values if j == 1 k(1) = 4; % M ymax = 0.12; % axis limit for plot elseif j == 2 k(1) = 12; % M ymax = 0.18; % axis limit for plot elseif j == 3 k(1) = 22; % M ymax = 0.09; % axis limit for plot end % Recalculate steady state parameters k(34) = -k(2)*k(1) + k(4)/(1+k(5)) + k(3); % k1 - TNF production k(35) = -k(4)/(1+k(5)) + k(6); % k2 - JAK production k(36) = -k(8)*k(7)^2/(k(7)^2+k(9)*(1+1/k(14))) + ... k(15)/(1+k(16)) + k(11)/(1+k(12)) + k(10); % k3 - STAT3 production k(37) = -k(11)/(1+k(12)) + k(13); % k4 - SOCS production k(38) = -k(15)/(1+k(16)) + k(17); % k5 - IE gene production k(39) = k(18) + k(19); % k6 - ECM production k(40) = -k(20)*k(1) + k(22) + k(21); % k7 - GF production figure hold on ci = 1; % Index for color scheme % Loop for different initial liver fractions, starting at 0.9 and % reducing by 0.1 each loop for i = 1:9 % Adjust color index if ci < 7 ci = ci+1; else ci = 1; end x0(1) = Q0 - (i-1)*0.1; % adjust remnant liver fraction % Solve system [t,x] = ode15s(@(t,x)LiverRegenODE_reproduced(t, x, k, x0), [tStart, tEnd], x0); % Set any negative values to 0 if any(x(:,1) < 0) x(x(:,1) < 0,1) = 0; end if any(x(:,2) < 0) x(x(:,2) < 0,2) = 0; end if any(x(:,3) < 0) x(x(:,3) < 0,3) = 0; end % Plot phase plane R vs Q plot(x(:,1), x(:,3), 'linewidth', 2, 'Color', c(ci,:)) scatter(x(1,1), x(1,3), 50, c(ci,:), 'o', 'filled') if i == 9 % Plot threshold of failure if k(1) == 4 x0(1) = 0.13; elseif k(1) == 12 x0(1) = 0.435; elseif k(1) == 22 x0(1) = .95; end % Solve system [t,x] = ode15s(@(t,x)LiverRegenODE_reproduced(t, x, k, x0), [tStart, tEnd], x0); % Set any negative values to 0 if any(x(:,1) < 0) x(x(:,1) < 0,1) = 0; end if any(x(:,2) < 0) x(x(:,2) < 0,2) = 0; end if any(x(:,3) < 0) x(x(:,3) < 0,3) = 0; end % Plot on phase plane plot(x(:,1), x(:,3), '--r', 'linewidth', 2) scatter(x(1,1), x(1,3), 50, c(ci,:), 'r', 'filled') end end xlabel('Fraction of remnant liver mass (Q)') ylabel('Fraction of remnany liver mass (R)') annotation('textbox', [.75 .6 .3 .3], 'String', sprintf('M = %.0f', k(1)), 'FitBoxToText', 'on', 'EdgeColor', 'none') xlim([-0.025 1]) ylim([-0.0025 ymax]) end %% Verma et al. model ODEs function dxdt = LiverRegenODE_reproduced(t, x, k, x0) % ODEs based on "Model-based virtual patient analysis of % human liver regeneration predicts critical perioperative factors % controlling the dynamic mode of response to resection" - Verma et al ep = 0.01; N = x(1)+x(11)*(x(2)+x(3)); Sap = 0.5 * (1 + tanh((k(31) - (N + ep)/k(1))/k(32))); Sreq = 0.5 * (1 + tanh((k(28) - x(9))/k(29))); % x1 = Q: Quiescent hepatocytes r1 = k(23) * (x(8) - x0(8)) * x(1); r2 = k(25) * x(10) * x(3); r3 = k(27) * Sreq * x(2); ra1 = k(30) * Sap * x(1); dxdt(1) = -r1 + r2 + r3 - ra1; % x2 = P: Primed hepatocytes % r1 r4 = k(24) * (x(9) - x0(9)) * x(2); % r3 ra2 = k(30) * Sap * x(2); dxdt(2) = r1 - r4 - r3 - ra2; % x3 = R: Replicating hepatocytes % r4 % r2 r5 = k(26) * x(3); ra3 = k(30) * Sap * x(3); dxdt(3) = r4 - r2 + r5 - ra3; % x4 = IL6 r6 = k(2) * (k(1)/(N + ep)); r7 = k(4) * x(4)/(x(4) + k(5)); r8 = k(3) * x(4); dxdt(4) = r6 - r7 - r8 + k(34); % x5 = JAK % r7 r9 = k(6) * x(5); dxdt(5) = r7 - r9 + k(35); % x6 = STAT3 r10 = (k(8) * x(5) * k(7)^2)/(k(7)^2+k(9)*(1+x(7)/k(14))); % Guessing k(7)(= [STAT3]) is [proSTAT3] r11 = k(15) * x(6) / (x(6) + k(16)); r12 = k(11) * x(6) / (x(6) + k(12)); r13 = k(10) * x(6); dxdt(6) = r10 - r11 - r12 - r13 + k(36); % x7 = SOCS3 % r12 r14 = k(13) * x(7); dxdt(7) = r12 - r14 + k(37); % x8 = IE % r11 r15 = k(17) * x(8); dxdt(8) = r11 - r15 + k(38); % x9 = GF r16 = k(20) * k(1) / (N+ep); r17 = k(22) * x(9) * x(10); r18 = k(21) * x(9); dxdt(9) = r16 - r17 - r18 + k(40); % x10 = ECM r19 = k(18) * x(4) * x(10); r20 = k(19) * x(10); dxdt(10) = -r19 - r20 + k(39); % x11 = G: Relative Cell Mass r32 = k(33) * (k(1)/(N+ep)); r33 = k(33) * k(1); dxdt(11) = r32 - r33; dxdt = dxdt'; end % End of LiverRegenODE_reproduced %% Cook et al. model set to Humans, No disease, lower metabolic demand function [t,cell,conc,G] = HepatRegenGrowth(initialFraction) % Author: Daniel Cook % Date: 10/08/2015 % Copyright: Creative Commons Share Alike % To run, use: [t,cell,conc,G] = HepatRegenGrowth(0.3); % Modified from "A Model of Liver Regeneration" (2009) by Furchtgott et al. % Citation: Cook, D.; Ogunnaike, B.A.; Vadigepalli, R. % Systems Analysis of Non-Parenchymal Cell Modulation of Liver Repair % across Multiple Regeneration Modes, BMC Systems Biology, 2015 % Set species: 1=rats, 2=mice, 3=humans setSpecies = 3; % Set disease (for use only with rats) % 1= no disease % 2= non-alcoholic steatohepatitis (NASH) % 3= alcoholic steatohepatitis (ASH) % 4= cirrhosis % 5= toxin-induced diabetes setDisease = 1; % Set alternate hypotheses (for use only with humans) % Hypothesis 5 is the default human parameter set % 1= altered stress response % 2= altered ECM remodeling and storage of GFs % 3= altered transition times % 4= longer cell cycle, higher apoptosis rate, et al. % 5= lower metabolic demand setHypotheses = 5; % Plot results: 1=yes, 2=no shouldPlot = 0; % Define model parameters k = zeros(41,1); % Table 1: Molecular parameters k(1) = initialFraction; % Fraction of liver mass remaining (N) k(2) = 16.8; % Metabolic load (M) k(3) = 1.5; % TNF production k(4) = 0.9; % TNF mRNA degrad k(5) = 2e4; % JAK activation rate (V_JAK) k(6) = 1e4; % Km JAK k(7) = 0.4; % JAK degrad k(8) = 2; % Conc. of monomeric STAT3 k(9) = 7.5e2; % STAT3 activation rate k(10) = 0.4; % Km STAT3 k(11) = 0.1; % STAT3 degrad k(12) = 2.4e4; % SOCS activation rate k(13) = 7e-4; % Km SOCS3 k(14) = 0.4; % SOCS3 degrad. k(15) = 1.5e-2; % SOCS3 inhibition constant k(16) = 2.5e2; % IE response gene expression rate k(17) = 18; % Km for IE genes k(18) = 5; % IE gene degrad k(19) = 7; % ECM degrad by MMPs k(20) = 33; % ECM degrad % Table 2: Cellular parameters k(21) = 0.113; % GF production k(22) = 0.23; % GF degrad k(23) = 6e-2; % k_up - GF uptake/production rate by ECM k(24) = 7e-3; % k_Q k(25) = 4.4e-3; % k_P k(26) = 5.4e-2; % k_R k(27) = 2e-2; % k_prol - specifies length of mitotic cycle k(28) = 0.1; % k_req - requiescence rate k(29) = 8; % theta_req (for sigma_req) k(30) = 3; % beta_req (for sigma_req) k(31) = 1e-1; %1e-2; % k_ap - apoptosis rate k(32) = 9e-3; % theta_ap k(33) = 4.5e-3; % beta_ap % Growth rate and metabolic load for rats if setSpecies == 1 k(2) = 20.8217; % Metabolic demand k(41) = 3.4742e-4; % Growth rate end % Growth rate and metabolic load for mice if setSpecies == 2 k(2) = 23.0294; % Metabolic demand k(41) = 9.6607e-4; % Growth rate k(32) = k(32)*21.3671/k(2); % Scaled apoptosis rate end % Growth rate and metabolic load for humans if setSpecies == 3 k(2) = 5.8507; % For fitting data from Pomfret k(41) = 6.5675e-4; % For fitting data from Pomfret k(32) = k(32)*20.8217/k(2); % Scale the apoptosis response end % Set parameters for fructose-induced steatosis (NASH) if setDisease == 2 k(2) = 23.1645; k(41) = 0.0025; k(3) = 0.3095; k(4) = 2.3633; k(19) = 1.7312; k(20) = 9.5395; k(21) = 0.0793; k(22) = 0.1679; k(23) = 0.0075; end % Set parameters for Alcohol-induced steatosis (ASH) if setDisease == 3 k(2) = 14.4017; k(41) = .0014; k(3) = 0.79; k(4) = 0.2073; k(19) = 10.5646; k(20) = 77.7923; k(21) = 0.0002; k(22) = 0.1196; k(23) = 0.0071; end % Parameters for cirrhosis-impaired regeneration (rat) if setDisease == 4 k(2) = 18.0454; k(41) = 4.358e-06; k(3) = 2.1565; k(4) = 1.043; k(19) = 0; k(20) = 83.5649; k(21) = 0.069; k(22) = 0.2456; k(23) = 0.0027; end % Set parameters for Diabetes-impaired regeneration if setDisease == 5 k(2) = 16.4539; k(41) = 8.92e-4; k(3) = 1.5892; k(4) = 0.3699; k(19) = 6.4571; k(20) = 1.8271e-6; k(21) = 1.7519e-7; k(22) = 0.5044; k(23) = 0.1218; end % Hypothesis testing (humans) % Hyp1: humans have a higher stress response than rats if setHypotheses == 1 k(2) = 20.8217; % Metabolic demand k(41) = 3.4742e-4; % Growth rate k(32) = 9e-3; % theta_ap k(3) = 0.1435; % TNF production k(4) = 0.4942; % TNF mRNA degrad k(5) = 1.3637e3; % JAK activation rate (V_JAK) k(6) = 7.5654e3; % Km JAK k(7) = 0.0398; % JAK degrad k(8) = 2.031; % Conc. of monomeric STAT3 k(9) = 1.1091e3; % STAT3 activation rate k(10) = 0.5178; % Km STAT3 k(11) = 0.035; % STAT3 degrad k(12) = 6.3042e3; % SOCS activation rate k(13) = 6.8196e-4; % Km SOCS3 k(14) = 0.1682; % SOCS3 degrad. k(15) = 0.0569; % SOCS3 inhibition constant k(16) = 18.6019; % IE response gene expression rate k(17) = 88.1259; % Km for IE genes k(18) = 1.1482; % IE gene degrad end % Hyp2: humans store a greater quantitiy of GFs in ECM & Potentially % altered ECM synthesis if setHypotheses == 2 k(2) = 20.8217; % Metabolic demand k(41) = 3.4742e-4; % Growth rate k(32) = 9e-3; % theta_ap k(19) = 4.9548; % ECM degrad by MMPs k(20) = 56.2986; % ECM degrad k(21) = 3.288e-7; % GF production k(22) = 2.1389e-7; % GF degrad k(23) = 0.1008; % k_up - GF uptake/production rate by ECM end % Hyp3: humans have a higher transition time if setHypotheses == 3 k(2) = 20.8217; % Metabolic demand k(41) = 3.4742e-4; % Growth rate k(32) = 9e-3; % theta_ap k(24) = 1.4e-3; % k_Q k(25) = 1.5e-3; % k_P k(26) = 70.9e-3; % k_R end % Hyp4: longer cell cycle, higher apoptosis rate, et al. if setHypotheses == 4 k(2) = 20.8217; % Metabolic demand k(41) = 3.4742e-4; % Growth rate k(32) = 9e-3; % theta_ap k(28) = 0.00417; %k_req k(27) = 0.00833; %k_prol k(31) = 0.00417; %k_apop k(24) = 1.1e-3; %k_q k(25) = 2.6e-3; %k_p k(26) = 135e-3; %k_r end % Table 3: Steady-State parameters k(34) = -k(3)*k(2) + k(5)/(1+k(6)) + k(4); %-22.3; % TNF production k(35) = -k(5)/(1+k(6)) + k(7); %-1.6; % JAK production k(36) = -k(9)*k(8)^2/(k(8)^2+k(10)*(1+1/k(15))) + ... k(16)/(1+k(17)) + k(12)/(1+k(13)) + k(11); %2.39e4; % STAT3 production k(37) = -k(12)/(1+k(13)) + k(14); %2.4e4; % SOCS production k(38) = -k(16)/(1+k(17)) + k(18); %-8.16; % IE gene production k(39) = k(19) + k(20); %40; % ECM production k(40) = -k(21)*k(2) + k(23) + k(22); %-1.6; % GF production % Set initial hepatocyte states, cell = (Q,P,R) % and concentrations, conc = [IE,GF,ECM,TNF,JAK,STAT3,SOCS3] cell = [k(1),0,0]; conc = ones(1,7); G = 1; x0 = [cell,conc,G]'; tStart = 0; if setSpecies == 3 tEnd = 800*24; % for humans else tEnd = 300; % for rats/mice end % Call ODE solver [t,x] = ode15s(@(t,x)odefun(t,x,k,x0), [tStart:.1:tEnd], x0); % Organize results cell = x(:,1:3); % Remove negative values not used in calculations cell(cell(:,2) < 0,2) = 0; cell(cell(:,3) < 0,3) = 0; % End of removing negative values conc = x(:,4:10); G = x(:,11); % Plot results here if shouldPlot == 1 Stylez = 'k-'; % How to plot results Stylez2 = '-'; if setSpecies == 3 xAxisText = 'Time post-PHx (days)'; t = t/24; else xAxisText = 'Time post-PHx (hrs)'; end figure(1); hold on; plot(t,cell(:,2),Stylez2,t,cell(:,3),Stylez2,t,cell(:,1)+cell(:,2)+cell(:,3),Stylez,'linewidth',3) set(gca,'FontSize',12) xlabel(xAxisText,'FontSize',14);ylabel('Fraction of Liver','FontSize',14); ylim([0 1.10000001]) title('Regeneration Profile','FontSize',18); legend('Primed','Replicating','Total','Location','Best'); figure(2) plot(t,(conc),'linewidth',3) set(gca,'FontSize',12) xlabel(xAxisText,'FontSize',14);ylabel('Fold Change','FontSize',14); title('Molecular Levels','FontSize',18); legend('IE','GF','ECM','TNF','JAK','STAT3','SOCS3','location','best') figure(3);hold on; plot(t,cell(:,1)+G.*(cell(:,2)+cell(:,3)),Stylez,'linewidth',3) set(gca,'FontSize',12) xlabel(xAxisText,'FontSize',14);ylabel('Fraction of Liver','FontSize',14); ylim([0 1.10000001]) title('Regeneration Profile','FontSize',18); brdu = cell(:,3)./(sum(cell')'); brduMax = find(brdu >= max(brdu),1); disp('Maximum Brdu Incorporation is at') disp(t(brduMax)) figure(4);hold on; plot(t,brdu,Stylez,'linewidth',3) set(gca,'FontSize',12) xlabel(xAxisText,'FontSize',14);ylabel('Fraction of Cells Replicating','FontSize',14); title('Replicating Hepatocytes','FontSize',18); end %Ends plotting if statement end %End of HepatRegenGrowth %% Cook et al. model ODEs function dxdt = odefun(t,x,k,x0) % Set variable names G = x(11); Q=max(0,x(1)); P=max(0,x(2)); R=max(0,x(3)); N=Q+G*(P+R); IE=x(4); GF=max(1,x(5)); ECM=x(6); TNF=x(7); JAK=x(8); STAT=x(9); SOCS=x(10); IE0=x0(4); GF0=x0(5); ECM0=x0(6); TNF0=x0(7); JAK0=x0(8); STAT0=x0(9); SOCS0=x0(10); % Calculate sigmas sr = 0.5*(1+tanh((k(29)-GF)/k(30))); % sigma_req sa = 0.5*(1+tanh((k(32)-((N)/k(2)))/k(33))); % sigma_ap % Calculate reaction rates r1 = k(24)*(IE-IE0)*Q; % Priming of Quiescent cells r2 = k(26)*ECM*R; % Replicating cell returning to Quiescence r3 = k(28)*sr*P; % Requiescence of Primed cells r4 = k(25)*(GF-GF0)*P; % Primed cells begining Replication r5 = k(27)*R; % Doubling of Replicating cells ra1 = k(31)*sa*Q; % Apoptosis of Quiescent cells ra2 = k(31)*sa*P; % Apoptosis of Primed cells ra3 = k(31)*sa*R; % Apoptosis of Replicating cells r6 = k(3)*k(2)/(N); % TNF production by stimulus r7 = k(5)*TNF/(TNF+k(6)); % TNF production of JAK r8 = k(4)*TNF; % TNF degradation r9 = k(7)*JAK; % JAK degredation r10 = k(9)*JAK*k(8)^2/(k(8)^2+k(10)*(1+SOCS/k(15))); % STAT3 production by JAK r11 = k(16)*STAT/(STAT+k(17)); % IE production by STAT3 r12 = k(12)*STAT/(STAT+k(13)); % SOCS3 production by STAT3 r13 = k(11)*STAT; % STAT3 degredation r14 = k(14)*SOCS; % SOCS3 degredation r15 = k(18)*IE; % IE degredation r16 = k(19)*TNF*ECM; % ECM degredation by TNF activated MMPs r17 = k(20)*ECM; % ECM degredation r18 = k(21)*k(2)/N; % GF production by stimulus r19 = k(23)*GF*ECM; % GF uptake/production by ECM r20 = k(22)*GF; % GF degredation % Set differential equations dxdt(1) = -r1 + r2 + r3 - ra1; % Q Phase dxdt(2) = r1 - r4 - r3 - ra2; % P Phase dxdt(3) = r4 - r2 + r5 - ra3; % R Phase dxdt(4) = r11 - r15 + k(38); % IE genes dxdt(5) = r18 - r19 - r20 + k(40); % GF dxdt(6) = -r16 - r17 + k(39); % ECM dxdt(7) = r6 - r7 - r8 + k(34); % TNF dxdt(8) = r7 - r9 + k(35); % JAK dxdt(9) = r10 - r11 - r12 - r13 + k(36); % STAT3 dxdt(10) = r12 - r14 + k(37); % SOCS3 dxdt(11) = (k(2)/(N))*k(41) - k(2)*k(41); % Cell Mass (M) dxdt = dxdt'; end % End of odefun