InitalCommit
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// Noch gemacht werden
|
||||
namespace BaseCellSimulation.Enzyms.Mytochondrion
|
||||
{
|
||||
public class ANTTransporter : InternalEnzym
|
||||
{
|
||||
public ANTTransporter()
|
||||
{
|
||||
Vmax = 0.3;
|
||||
Km = 0.02; // mM ADP
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double adpAvailable = res.Res.Energy.ADP;
|
||||
double atpAvailable = res.Res.Energy.ATP;
|
||||
double transportable = Math.Min(adpAvailable, rate * dt);
|
||||
transportable = Math.Min(transportable, atpAvailable); // Sicherstellen, dass genug ATP zum Tausch vorhanden ist
|
||||
if (transportable <= 0) return;
|
||||
res.Res.Energy.ADP -= transportable;
|
||||
res.Res.Energy.ATP += transportable;
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
double adp = res.Energy.ADP;
|
||||
Michaelis_Menten(adp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Mytochondrion
|
||||
{
|
||||
public class ATPSynthase : InternalEnzym
|
||||
{
|
||||
public ATPSynthase()
|
||||
{
|
||||
Vmax = 0.4;
|
||||
Km = 0.05; // ADP
|
||||
}
|
||||
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
|
||||
double used = Math.Min(res.Res.Energy.ADP, rate * dt);
|
||||
res.RegenerateATP(used);
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
double gradient = Math.Clamp(res.Energy.NADH / (res.Energy.NAD + 1e-9), 0.0, 5.0);
|
||||
rate = Vmax * (gradient / (Km + gradient));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Mytochondrion
|
||||
{
|
||||
public class OxPhosEnzyme : InternalEnzym
|
||||
{
|
||||
public double PO_Ratio { get; set; } = 2.5;
|
||||
|
||||
public OxPhosEnzyme()
|
||||
{
|
||||
Vmax = 0.8;
|
||||
Km = 0.01;
|
||||
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double usedNADH = Math.Min(rate * dt, res.Res.Energy.NADH);
|
||||
if (usedNADH <= 0) return;
|
||||
|
||||
res.TransferNADH(usedNADH, true);
|
||||
|
||||
double o2Consumed = 0.5 * usedNADH;
|
||||
res.Res.Oxygen = Math.Max(0.0, res.Res.Oxygen - o2Consumed);
|
||||
|
||||
double atpMade = PO_Ratio * usedNADH;
|
||||
res.RegenerateATP(atpMade);
|
||||
|
||||
// ROS-Produktion
|
||||
double rosFactor = Math.Min(1.0, res.Res.Oxygen / 2.0);
|
||||
res.Res.Ions.H2O2 += usedNADH * 0.001 * rosFactor;
|
||||
res.Res.Protein.Waste += usedNADH * 0.001 * rosFactor;
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
double nadh = res.Energy.NADH;
|
||||
Michaelis_Menten(nadh);
|
||||
|
||||
// Begrenzung durch O2
|
||||
double o2Limit = Math.Min(1.0, res.Oxygen / 0.05);
|
||||
rate *= o2Limit;
|
||||
|
||||
// ATP/ROS Feedback
|
||||
double atpFactor = Math.Clamp(res.Energy.ATP / 0.5, 0.0, 1.0);
|
||||
double wasteFactor = 1.0 / (1.0 + res.Protein.Waste / 10.0);
|
||||
rate *= atpFactor * wasteFactor;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Mytochondrion
|
||||
{
|
||||
public class PyruvateDehydrogenase : InternalEnzym
|
||||
{
|
||||
public PyruvateDehydrogenase()
|
||||
{
|
||||
Vmax = 1.0; // mM/s
|
||||
Km = 0.05; // mM Pyruvat
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
Michaelis_Menten(res.Carbon.Pyruvate);
|
||||
|
||||
// Aktivierung durch Ca²⁺
|
||||
double ca = res.Ca.CytosolicCa;
|
||||
double caBoost = 1.0 + 0.8 * (ca / (0.0005 + ca)); // bis ~1.8x Boost
|
||||
rate *= caBoost;
|
||||
|
||||
// Hemmung durch hohes NADH/NAD+ Verhältnis oder ATP
|
||||
double redox = res.Energy.NAD / (res.Energy.NAD + res.Energy.NADH + 1e-9);
|
||||
double energy = res.Energy.ATP / (res.Energy.ATP + res.Energy.ADP + 1e-9);
|
||||
rate *= redox * (1.0 - 0.5 * energy); // Hohe Energie hemmt
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double used = Math.Min(res.Res.Carbon.Pyruvate, rate * dt);
|
||||
|
||||
res.Res.Carbon.Pyruvate -= used;
|
||||
res.Res.Carbon.AcetylCoA += used;
|
||||
res.TransferNADH(used, false);
|
||||
res.Res.Carbon.CO2 += used;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Mytochondrion
|
||||
{
|
||||
public class TCAEnzyme : InternalEnzym
|
||||
{
|
||||
public TCAEnzyme()
|
||||
{
|
||||
Vmax = 0.1; // mM/s
|
||||
Km = 0.02; // mM Acetyl-CoA
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
Michaelis_Menten(res.Carbon.AcetylCoA);
|
||||
// Abhängig vom Redoxstatus
|
||||
double redox = res.Energy.NAD / (res.Energy.NAD + res.Energy.NADH + 1e-9);
|
||||
rate *= redox;
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double used = Math.Min(res.Res.Carbon.AcetylCoA, rate * dt);
|
||||
res.Res.Carbon.AcetylCoA -= used;
|
||||
res.TransferNADH(2 * used, false);
|
||||
//res.FADH2 += used;
|
||||
res.Res.Energy.GTP += used; // optional
|
||||
res.Res.Carbon.CO2 += 2 * used;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user