InitalCommit
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Lysosome
|
||||
{
|
||||
public class Cathepsin : InternalEnzym
|
||||
{
|
||||
public Cathepsin()
|
||||
{
|
||||
Vmax = 0.2; // mM/s, empirisch
|
||||
Km = 0.1; // mM
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
Michaelis_Menten(res.Protein.Waste);
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double degraded = rate * dt;
|
||||
degraded = Math.Min(degraded, res.Res.Protein.Waste);
|
||||
|
||||
res.Res.Protein.Waste -= degraded;
|
||||
res.Res.Protein.AminoAcids += degraded * 0.5; // 50% verwertbar
|
||||
res.Res.Energy.ATP += degraded * 0.05; // kleine ATP-Rückgewinnung
|
||||
res.Res.Energy.NADH += degraded * 0.01; // minimale Redoxreaktion
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Lysosome
|
||||
{
|
||||
public class GenericLysosomalEnzyme : InternalEnzym
|
||||
{
|
||||
public GenericLysosomalEnzyme()
|
||||
{
|
||||
Vmax = 0.2;
|
||||
Km = 0.1;
|
||||
}
|
||||
|
||||
double redoxRatio = 0.0;
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
// --- Grundrate basierend auf Protein-Waste ---
|
||||
rate = Michaelis_Menten(res.Protein.Waste, Vmax, Km);
|
||||
|
||||
// --- Energieabhängigkeit ---
|
||||
double energyCharge = (res.Energy.ATP + 0.5 * res.Energy.ADP) /
|
||||
(res.Energy.ATP + res.Energy.ADP + res.Energy.AMP + 1e-9);
|
||||
rate *= Math.Clamp(energyCharge, 0.0, 1.0);
|
||||
|
||||
// --- Redoxabhängigkeit ---
|
||||
redoxRatio = res.Energy.NAD / (res.Energy.NAD + res.Energy.NADH + 1e-9);
|
||||
rate *= Math.Clamp(redoxRatio, 0.0, 1.0);
|
||||
|
||||
// --- pH-Abhängigkeit ---
|
||||
double acidFactor = 1.0 - 0.5 * Math.Clamp(res.Ions.Protons / 1.0, 0.0, 1.0);
|
||||
rate *= acidFactor;
|
||||
|
||||
// --- Stressfaktor bei hohen ROS ---
|
||||
double stressPenalty = res.Ions.ROS > 1.0 ? 0.5 : 1.0;
|
||||
rate *= stressPenalty;
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources Resources, double dt)
|
||||
{
|
||||
var res = Resources.Res;
|
||||
var ca = Resources.Res.Ca;
|
||||
|
||||
ComputeRate(res);
|
||||
|
||||
double degraded = Math.Min(res.Protein.Waste, rate * dt);
|
||||
if (degraded <= 0.0)
|
||||
return;
|
||||
|
||||
// --- Protein-Abbau ---
|
||||
res.Protein.Waste -= degraded;
|
||||
|
||||
// --- Energieverbrauch & minimale Rückgewinnung ---
|
||||
double atpUsed = degraded * 0.15;
|
||||
double atpRecovered = degraded * 0.03 * ((res.Energy.ATP + 0.5 * res.Energy.ADP) /
|
||||
(res.Energy.ATP + res.Energy.ADP + res.Energy.AMP + 1e-9));
|
||||
Resources.ConsumeATP(atpUsed);
|
||||
res.Energy.ATP += atpRecovered;
|
||||
|
||||
// --- NAD+ → NADH Redoxreaktion ---
|
||||
double nadUsed = degraded * 0.08;
|
||||
double actualNadUsed = Math.Min(nadUsed, res.Energy.NAD);
|
||||
res.Energy.NAD -= actualNadUsed;
|
||||
res.Energy.NADH += actualNadUsed;
|
||||
|
||||
// --- Aminosäuren-Recycling ---
|
||||
double recyclingEfficiency = 0.4 + 0.3 * ((res.Energy.ATP + 0.5 * res.Energy.ADP) /
|
||||
(res.Energy.ATP + res.Energy.ADP + res.Energy.AMP + 1e-9));
|
||||
res.Protein.AminoAcids += degraded * recyclingEfficiency;
|
||||
|
||||
// --- Sekundäre Effekte: ROS, Heat, Protonen ---
|
||||
res.Ions.ROS += degraded * (1.0 - redoxRatio) * 0.01;
|
||||
res.Heat += degraded * 0.05;
|
||||
res.Ions.Protons += degraded * 0.005;
|
||||
|
||||
// --- Kalziumleckage als Stresssignal ---
|
||||
ca.CytosolicCa += degraded * 0.00002;
|
||||
|
||||
// --- Lysosomenaktivität für Feedback ---
|
||||
ca.LysosomeActivity = Math.Clamp(rate / Vmax, 0.0, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Lysosome
|
||||
{
|
||||
public class LysosomalLipase : InternalEnzym
|
||||
{
|
||||
public LysosomalLipase()
|
||||
{
|
||||
Vmax = 0.1;
|
||||
Km = 0.05;
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
Michaelis_Menten(res.Lipids); // falls Lipide modelliert werden
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double degraded = rate * dt;
|
||||
degraded = Math.Min(degraded, res.Res.Lipids);
|
||||
|
||||
res.Res.Lipids -= degraded;
|
||||
res.Res.Energy.ATP += degraded * 0.02; // minimaler ATP Gewinn
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Lysosome
|
||||
{
|
||||
public class LysosomalNuclease : InternalEnzym
|
||||
{
|
||||
public LysosomalNuclease()
|
||||
{
|
||||
Vmax = 0.15;
|
||||
Km = 0.05;
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
Michaelis_Menten(res.Protein.NucleicAcids); // falls RNA/DNA modelliert
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double degraded = rate * dt;
|
||||
degraded = Math.Min(degraded, res.Res.Protein.NucleicAcids);
|
||||
|
||||
res.Res.Protein.NucleicAcids -= degraded;
|
||||
res.Res.Protein.Nucleotides += degraded; // freiwerdende Nucleotide
|
||||
res.Res.Energy.ATP += degraded * 0.01;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BaseCellSimulation.Enzyms.Lysosome
|
||||
{
|
||||
public class LysosomalPhosphatase : InternalEnzym
|
||||
{
|
||||
public LysosomalPhosphatase()
|
||||
{
|
||||
Vmax = 0.1;
|
||||
Km = 0.05;
|
||||
}
|
||||
|
||||
public override void ComputeRate(Resources res)
|
||||
{
|
||||
Michaelis_Menten(res.PhosphorylatedSubstrates);
|
||||
}
|
||||
|
||||
public override void ApplyChanges(CellRessources res, double dt)
|
||||
{
|
||||
double degraded = rate * dt;
|
||||
degraded = Math.Min(degraded, res.Res.PhosphorylatedSubstrates);
|
||||
|
||||
res.Res.PhosphorylatedSubstrates -= degraded;
|
||||
res.Res.Phosphate.Pi += degraded;
|
||||
res.Res.Phosphate.PPi += degraded * 0.1; // falls Pyrophosphat entsteht
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user