InitalCommit

This commit is contained in:
WyanMueller
2025-11-16 10:30:26 +01:00
parent 8b0b73bba8
commit d2e409d10f
73 changed files with 3209 additions and 0 deletions
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Nucleus
{
public class DNA_Polymerase_Delta : InternalEnzym
{
private const double EnergyCostATP = 0.5;
public DNA_Polymerase_Delta()
{
Km = 0.05;
Vmax = 1.2;
}
public override void ApplyChanges(CellRessources res, double dt)
{
double dDna = Math.Min(rate * dt, res.Res.Protein.dNTP);
dDna = res.Res.Energy.ATP >= dDna * EnergyCostATP ? dDna : res.Res.Energy.ATP / EnergyCostATP;
res.Res.Protein.dNTP -= dDna;
res.Res.Nucleus.ReplicationProgress += dDna;
res.ConsumeATP(dDna * EnergyCostATP);
}
public override void ComputeRate(Resources res)
{
Michaelis_Menten(res.Protein.dNTP);
}
}
}
@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Nucleus
{
public class DNMT1 : InternalEnzym
{
public DNMT1()
{
Km = 0.01;
Vmax = 0.25;
}
public override void ApplyChanges(CellRessources res, double dt)
{
// Berechne tatsächlich übertragene Methylmenge
double dMethyl = Math.Min(rate * dt, res.Res.Protein.SAM);
// Chromatinzugänglichkeit moduliert Effektivität
double accessibilityFactor = Math.Clamp(res.Res.Nucleus.ChromatinAccessibility / 0.005, 0.1, 1.0);
dMethyl *= accessibilityFactor;
// SAM → SAH Umwandlung
res.Res.Protein.SAM -= dMethyl;
res.Res.Protein.SAH += dMethyl; // 1:1 Bildung
// Methylierung der DNA (vereinfachte Darstellung)
res.Res.Nucleus.ChromatinAccessibility -= dMethyl * 0.005;
if (res.Res.Nucleus.ChromatinAccessibility < 0)
res.Res.Nucleus.ChromatinAccessibility = 0;
}
public override void ComputeRate(Resources res)
{
double activityFactor = Math.Min(1.0, res.Nucleus.ReplicationProgress / 10.0);
Michaelis_Menten(res.Protein.SAM * activityFactor);
rate *= activityFactor;
}
}
}
@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Nucleus
{
public class HistoneAcetyltransferase : InternalEnzym
{
public HistoneAcetyltransferase()
{
Km = 0.01;
Vmax = 0.3;
}
public override void ApplyChanges(CellRessources res, double dt)
{
double dA = Math.Min(rate * dt, res.Res.Protein.AcetylCoA);
res.Res.Protein.AcetylCoA -= dA;
res.Res.Nucleus.ChromatinAccessibility = Math.Min(1.0, res.Res.Nucleus.ChromatinAccessibility + dA * 0.1);
}
public override void ComputeRate(Resources res)
{
Michaelis_Menten(res.Protein.AcetylCoA);
}
}
}
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Nucleus
{
public class HistoneDeacetylase : InternalEnzym
{
public HistoneDeacetylase()
{
Km = 0.02;
Vmax = 0.25;
}
public override void ApplyChanges(CellRessources res, double dt)
{
double dD = Math.Min(rate * dt, Math.Min(res.Res.Nucleus.ChromatinAccessibility / 0.1, res.Res.Energy.NAD));
res.Res.Energy.NAD -= dD;
res.Res.Energy.NADH += dD * 0.5;
res.Res.Nucleus.ChromatinAccessibility = Math.Max(0.0, res.Res.Nucleus.ChromatinAccessibility - dD * 0.1);
}
public override void ComputeRate(Resources res)
{
Michaelis_Menten(res.Energy.NAD);
}
}
}
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Nucleus
{
public class PARP1 : InternalEnzym
{
private const double EnergyCostATP = 0.3;
public PARP1()
{
Km = 0.02;
Vmax = 0.4;
}
public override void ApplyChanges(CellRessources res, double dt)
{
double dRepair = Math.Min(rate * dt, res.Res.Protein.DNA_damage);
dRepair = res.Res.Energy.NAD >= dRepair * EnergyCostATP ? dRepair : res.Res.Energy.NAD / EnergyCostATP;
res.Res.Energy.NAD -= dRepair * EnergyCostATP;
res.Res.Energy.NADH += dRepair * 0.2;
res.Res.Protein.DNA_damage -= dRepair * 0.8;
}
public override void ComputeRate(Resources res)
{
Michaelis_Menten(res.Protein.DNA_damage);
}
}
}
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Nucleus
{
public class RNA_Polymerase_II : InternalEnzym
{
private const double EnergyCostATP = 0.3;
public RNA_Polymerase_II()
{
Km = 0.02;
Vmax = 0.8;
}
public override void ApplyChanges(CellRessources res, double dt)
{
double dM = Math.Min(rate * dt, res.Res.Protein.NTP);
dM = res.Res.Energy.ATP >= dM * EnergyCostATP ? dM : res.Res.Energy.ATP / EnergyCostATP;
res.Res.Protein.NTP -= dM;
res.Res.Protein.mRNA += dM;
res.ConsumeATP(dM * EnergyCostATP);
}
public override void ComputeRate(Resources res)
{
Michaelis_Menten(res.Protein.NTP);
rate *= res.Nucleus.ChromatinAccessibility;
}
}
}
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Nucleus
{
public class Topoisomerase_II : InternalEnzym
{
private const double EnergyCostATP = 0.2;
public Topoisomerase_II()
{
Km = 0.03;
Vmax = 0.5;
}
public override void ApplyChanges(CellRessources res, double dt)
{
double repair = Math.Min(rate * dt, res.Res.Protein.DNA_damage);
repair = res.Res.Energy.ATP >= repair * EnergyCostATP ? repair : res.Res.Energy.ATP / EnergyCostATP;
res.Res.Protein.DNA_damage -= repair;
res.ConsumeATP(repair * EnergyCostATP);
}
public override void ComputeRate(Resources res)
{
Michaelis_Menten(res.Protein.DNA_damage);
}
}
}