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; } } }