InitalCommit
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user