From a2ec05c1fbd2b21ede655287af11e545e9140902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Schleier=20Anna=20R=C3=A9ka?= <schleier.anna.reka@hallgato.ppke.hu> Date: Tue, 3 Dec 2024 14:34:18 +0000 Subject: [PATCH] Upload New File --- lotkavolterra_antibiotics.m | 138 ++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 lotkavolterra_antibiotics.m diff --git a/lotkavolterra_antibiotics.m b/lotkavolterra_antibiotics.m new file mode 100644 index 0000000..7f1583d --- /dev/null +++ b/lotkavolterra_antibiotics.m @@ -0,0 +1,138 @@ +r = [0.8, 0.4, 0.5, 0.3, 0.2, 0.25]'; % Pseudomonas, Staphylococcus, Burkholderia, Stenotrophomonas, Prevotella, Streptococcus +K = [120, 80, 70, 60, 50, 40]'; +A = [ 1, -0.2, -0.4, +0.2, -0.1, -0.2; % Pseudomonas interakciói + -0.1, 1, 0.0, 0.0, 0.0, 0.0; % Staphylococcus interakciói + -0.5, 0.0, 1, -0.1, 0.0, 0.0; % Burkholderia interakciói + +0.2, 0.0, -0.2, 1, +0.1, 0.0; % Stenotrophomonas interakciói + -0.1, 0.0, 0.0, +0.1, 1, +0.1; % Prevotella interakciói + -0.2, 0.0, 0.0, 0.0, +0.1, 1 ]; % Streptococcus interakciói +x0 = [50, 30, 20, 25, 15, 10]'; % Kezdeti populációméretek + +antibiotics = {'Ampicillin', 'Tobramycin'}; + +% Differenciálegyenlet megoldása antibiotikum hatással +[t, X] = ode45(@(t, x) lotka_volterra_with_antibiotics(t, x, r, K, A, antibiotics), [0 100], x0); + +figure; +hold on; +colors = lines(6); +for i = 1:6 + plot(t, X(:, i), 'LineWidth', 2, 'Color', colors(i, :)); +end +legend('Pseudomonas', 'Staphylococcus', 'Burkholderia', ... + 'Stenotrophomonas', 'Prevotella', 'Streptococcus', 'Location', 'best'); +xlabel('Idő', 'FontSize', 12); +ylabel('Populáció mérete', 'FontSize', 12); +title(['Lotka-Volterra modell antibiotikum hatással: ' antibiotics], 'FontSize', 14); +grid on; + +% Egyensúlyi állapotok +time_points = [20, 100]; +equilibrium_states = zeros(length(time_points), size(X, 2)); + +for i = 1:length(time_points) + [~, idx] = min(abs(t - time_points(i))); + equilibrium_states(i, :) = X(idx, :); +end + +% Adatok normálása egyensúlyi állapotok ábrázolásához +normalized_states = 100 * equilibrium_states ./ sum(equilibrium_states, 2); + +figure; +bar_handle = bar(time_points, normalized_states, 'stacked'); +colors = lines(6); % 6 species +for i = 1:size(X, 2) + set(bar_handle(i), 'FaceColor', colors(i, :)); +end +xlabel('Vizsgált időpillanatok', 'FontSize', 12); +ylabel('Populáció mérete normálva (%)', 'FontSize', 12); +title(['Egyensúlyi állapotok antibiotikum hatással: ' antibiotics], 'FontSize', 14); +legend({'Pseudomonas', 'Staphylococcus', 'Burkholderia', ... + 'Stenotrophomonas', 'Prevotella', 'Streptococcus'}, ... + 'Location', 'best'); +grid on; + +% Lotka-Volterra függvény antibiotikum hatással +function dxdt = lotka_volterra_with_antibiotics(t, x, r, K, A, antibiotics) + r_mod = r; + K_mod = K; + + extinction_threshold = 10; % Kihalási küszöb + adjustment_rate = 0.08; % Eltartóképesség csökkentésének sebessége (lassan csökken) + + for i = 1:length(x) + if x(i) < extinction_threshold + % Fokozatos csökkentés nullához exponenciálisan, ha populáció < küszöb + K_mod(i) = K_mod(i) * exp(-adjustment_rate * t); + r_mod(i) = r_mod(i) * exp(-adjustment_rate * t); + if K_mod(i) < 0.15 + r_mod(i) = 0; + end + end + end + + if t > 30 && t < 70 % Az antibiotikum 30 és 70 időegység között aktív + % Antibiotikum hatásának időfüggése (Gauss-görbe) + antibiotic_effect = exp(-(t - 50)^2 / (2 * 10^2)); + sensitivity_vector = [1, 0.8, 0.9, 0.7, 0.5, 0.4]; + + % Növekedési ráták csökkentése az időfüggő antibiotikum hatással + r_mod = r_mod .* (1 - antibiotic_effect * sensitivity_vector'); + resistance_factor = 1 + 0.01 * t; % Rezisztencia fokozatos növekedése + r_mod = r_mod .* (1 ./ resistance_factor); + + % Az antibiotikumok antagonisztikus hatásának figyelembevétele + interaction_modifier = ones(size(r_mod)); % Kezdetben nincs hatás + + for i = 1:length(antibiotics) + switch antibiotics{i} + case 'Ampicillin' + % Staphylococcus érzékenysége (részleges védelem penicillinázokkal) + r_mod(2) = r_mod(2) * 0.3; % Növekedési ráta csökkentése + K_mod(2) = K_mod(2) * 0.2; % Eltartóképesség jelentős csökkentése + + % Streptococcus érzékenysége (kevésbé védekező képes) + r_mod(6) = r_mod(6) * 0.2; % Növekedési ráta csökkentése + K_mod(6) = K_mod(6) * 0.03; % Eltartóképesség erősebb csökkentése + + case 'Tobramycin' + % Pseudomonas érzékenysége (aminoglikozid antibiotikum) + r_mod(1) = r_mod(1) * 0.1; % Növekedési ráta csökkentése + K_mod(1) = K_mod(1) * 0.05; % Eltartóképesség csökkentése + + case 'Ceftazidime' + % Pseudomonas érzékenysége (széles spektrumú cefalosporin) + r_mod(1) = r_mod(1) * 0.2; % Növekedési ráta csökkentése + K_mod(1) = K_mod(1) * 0.01; % Jelentős eltartóképesség csökkentése + + % Prevotella részleges érzékenysége + r_mod(5) = r_mod(5) * 0.6; % Növekedési ráta csökkentése + + case 'Azithromycin' + % Staphylococcus érzékenysége (makrolid antibiotikum) + r_mod(2) = r_mod(2) * 0.3; % Növekedési ráta csökkentése + K_mod(2) = K_mod(2) * 0.5; % Mérsékelt eltartóképesség csökkentése + + % Streptococcus érzékenysége + r_mod(6) = r_mod(6) * 0.2; % Növekedési ráta csökkentése + K_mod(6) = K_mod(6) * 0.8; % Enyhébb eltartóképesség csökkentése + + case 'Tetracycline' + % Tetracycline (bakteriosztatikus) hatása + r_mod(3) = r_mod(3) * 0.5; % Burkholderia növekedési ráta csökkentése + K_mod(3) = K_mod(3) * 0.5; % Burkholderia eltartóképesség csökkentése + + interaction_modifier(2) = interaction_modifier(2) * (1 - 0.8); % Csökkenti Penicillin hatékonyságát + case 'Penicillin' + % Penicillin (baktericid) hatása + r_mod(2) = r_mod(2) * 0.7; % Staphylococcus növekedési ráta csökkentése + K_mod(2) = K_mod(2) * 0.8; % Staphylococcus eltartóképesség csökkentése + + interaction_modifier(3) = interaction_modifier(3) * (1 - 0.8); % Csökkenti Tetracycline hatékonyságát + end + end + r_mod = r_mod .* interaction_modifier; + end + % Lotka-Volterra dinamikák számítása + dxdt = r_mod .* x .* (1 - ((A * x) ./ K_mod)); +end -- GitLab