Added Json Schemas

This commit is contained in:
WyanMueller
2025-11-16 19:52:52 +01:00
parent d2e409d10f
commit 0487824e63
16 changed files with 931 additions and 35 deletions
@@ -6,4 +6,15 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<None Update="EnzymData\enzymes.schema.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="EnzymData\Enzyms.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties enzymdata_4enzymes_1schema_1json__JsonSchema="https://json-schema.org/draft-07/schema" /></VisualStudio></ProjectExtensions>
</Project> </Project>
@@ -0,0 +1,63 @@
{
"$schema": "cellRessources.schema.json",
"BasicCell": {
"energy": {
"ATP": 2.5,
"ADP": 0.8,
"AMP": 0.1,
"NAD+": 1.0,
"NADH": 0.3,
"GTP": 0.5,
"GDP": 0.2
},
"Pi": 5.0,
"PPi": 0.1,
"glucose": 5.0,
"G6P": 0.5,
"F6P": 0.3,
"F1,6BP": 0.2,
"GA3P": 0.2,
"1,3BPG": 0.1,
"3PG": 0.4,
"2PG": 0.3,
"PEP": 0.2,
"Pyruvate": 1.0,
"Lactate": 1.5,
"CO2": 10.0,
"AcCoA": 0.2,
"AminoAcids": 5.0,
"NucleicAcids": 1.0,
"Nucleotides": 2.0,
"NTP": 0.5,
"dNTP": 0.1,
"mRNA": 0.5,
"DNA_damage": 0.0,
"SAM": 0.05,
"MET": 0.5,
"SAH": 0.02,
"Homocysteine": 0.01,
"Adenosin": 0.1,
"tRNA": 1.0,
"Aminocylated_tRNA": 0.3,
"H+": 0.00004,
"Na+": 10.0,
"K+": 140.0,
"H2O2": 0.001,
"B12": 0.01,
"THF": 0.1,
"MethylTHF": 0.1,
"CytoSolCA": 0.0001,
"rERCa": 0.3,
"sERCa": 0.6
}
}
@@ -0,0 +1,241 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"properties": {
"energy": {
"type": "object",
"properties": {
"ATP": {
"type": "number",
"minimum": 0,
"description": "Adenosine-triphosphate"
},
"ADP": {
"type": "number",
"minimum": 0,
"description": "Adenosine-diphosphate"
},
"AMP": {
"type": "number",
"minimum": 0,
"description": "Adenosine-monophosphate"
},
"NAD+": {
"type": "number",
"minimum": 0,
"description": "Nicotinamide adenine dinucleotide (oxidized form)"
},
"NADH": {
"type": "number",
"minimum": 0,
"description": "Nicotinamide adenine dinucleotide (reduced form)"
},
"GTP": {
"type": "number",
"minimum": 0,
"description": "Guanosine-triphosphate"
},
"GDP": {
"type": "number",
"minimum": 0,
"description": "Guanosine-diphosphate"
},
"Pi": {
"type": "number",
"minimum": 0,
"description": "Inorganic phosphate"
},
"PPi": {
"type": "number",
"minimum": 0,
"description": "Inorganic pyrophosphate"
}
}
},
"glucose": {
"type": "number",
"minimum": 0,
"description": "Glucose concentration"
},
"G6P": {
"type": "number",
"minimum": 0,
"description": "Glucose-6-phosphate concentration"
},
"F6P": {
"type": "number",
"minimum": 0,
"description": "Fructose-6-phosphate concentration"
},
"F1,6BP": {
"type": "number",
"minimum": 0,
"description": "Fructose-1,6-bisphosphate concentration"
},
"GA3P": {
"type": "number",
"minimum": 0,
"description": "Glyceraldehyde-3-phosphate concentration"
},
"1,3BPG": {
"type": "number",
"minimum": 0,
"description": "1,3-Bisphosphoglycerate concentration"
},
"3PG": {
"type": "number",
"minimum": 0,
"description": "3-Phosphoglycerate concentration"
},
"2PG": {
"type": "number",
"minimum": 0,
"description": "2-Phosphoglycerate concentration"
},
"PEP": {
"type": "number",
"minimum": 0,
"description": "Phosphoenolpyruvate concentration"
},
"Pyruvate": {
"type": "number",
"minimum": 0,
"description": "Pyruvate concentration"
},
"Lactate": {
"type": "number",
"minimum": 0,
"description": "Lactate concentration"
},
"CO2": {
"type": "number",
"minimum": 0,
"description": "Carbon dioxide concentration"
},
"AcCoA": {
"type": "number",
"minimum": 0,
"description": "Acetyl-Coenzyme A concentration"
},
"AminoAcids": {
"type": "number",
"minimum": 0,
"description": "Total amino acids concentration"
},
"NucleicAcids": {
"type": "number",
"minimum": 0,
"description": "Total nucleic acids concentration"
},
"Nucleotides": {
"type": "number",
"minimum": 0,
"description": "Total nucleotides concentration"
},
"NTP": {
"type": "number",
"minimum": 0,
"description": "Total nucleoside triphosphates concentration"
},
"dNTP": {
"type": "number",
"minimum": 0,
"description": "Total deoxynucleoside triphosphates concentration"
},
"mRNA": {
"type": "number",
"minimum": 0,
"description": "Total messenger RNA concentration"
},
"DNA_damage": {
"type": "number",
"minimum": 0,
"description": "Amount of DNA damage"
},
"SAM": {
"type": "number",
"minimum": 0,
"description": "S-Adenosyl methionine concentration"
},
"MET": {
"type": "number",
"minimum": 0,
"description": "Methionine concentration"
},
"SAH": {
"type": "number",
"minimum": 0,
"description": "S-Adenosyl homocysteine concentration"
},
"Homocysteine": {
"type": "number",
"minimum": 0,
"description": "Homocysteine concentration"
},
"Adenosin": {
"type": "number",
"minimum": 0,
"description": "Adenosine concentration"
},
"tRNA": {
"type": "number",
"minimum": 0,
"description": "Total transfer RNA concentration"
},
"Aminocylated_tRNA": {
"type": "number",
"minimum": 0,
"description": "Total aminoacylated tRNA concentration"
},
"H+": {
"type": "number",
"minimum": 0,
"description": "Proton concentration"
},
"Na+": {
"type": "number",
"minimum": 0,
"description": "Sodium ion concentration"
},
"K+": {
"type": "number",
"minimum": 0,
"description": "Potassium ion concentration"
},
"H2O2": {
"type": "number",
"minimum": 0,
"description": "Hydrogen peroxide concentration"
},
"B12": {
"type": "number",
"minimum": 0,
"description": "Vitamin B12 concentration"
},
"THF": {
"type": "number",
"minimum": 0,
"description": "Tetrahydrofolate concentration"
},
"MethylTHF": {
"type": "number",
"minimum": 0,
"description": "5-Methyltetrahydrofolate concentration"
},
"CytoSolCA": {
"type": "number",
"minimum": 0,
"description": "Cytosolic calcium concentration"
},
"rERCa": {
"type": "number",
"minimum": 0,
"description": "Rough endoplasmic reticulum calcium concentration"
},
"sERCa": {
"type": "number",
"minimum": 0,
"description": "Smooth endoplasmic reticulum calcium concentration"
}
}
}
+78
View File
@@ -0,0 +1,78 @@
{
"$schema": "enzymes.schema.json",
"Cytosolic": [
{
"Name": "HexokinaseI",
"Km": {
"Value": 0.05,
"Min": 0.02,
"Max": 0.1
},
"Vmax": {
"Value": 2.5,
"Min": 0.5,
"Max": 2.5
},
"Type": "MichelisMenten",
"Description": "Phosphorylates glucose to form glucose-6-phosphate."
},
{
"Name": "HexokinaseII",
"Km": {
"Value": 0.1,
"Min": 0.05,
"Max": 0.15
},
"Vmax": {
"Value": 5,
"Min": 1,
"Max": 10
},
"Type": "MichelisMenten",
"Description": "Phosphorylates glucose to form glucose-6-phosphate."
},
{
"Name": "HexokinaseIII",
"Km": {
"Value": 0.05,
"Min": 0.01,
"Max": 0.1
},
"Vmax": {
"Value": 1,
"Min": 0.1,
"Max": 2
},
"Type": "MichelisMenten",
"Description": "Phosphorylates glucose to form glucose-6-phosphate."
},
{
"Name": "HexokinaseIV_Gluko",
"Km": {
"Value": 8.5,
"Min": 7,
"Max": 10
},
"Vmax": {
"Value": 5,
"Min": 1,
"Max": 10
},
"Hill": {
"Value": 1.7,
"Min": 1.6,
"Max": 1.9
},
"Type": "Hill",
"Description": "Phosphorylates glucose to form glucose-6-phosphate."
},
{
"Name": "Phosphofructokinase",
"K0_5": 0.1,
"Hill": 2.0,
"Vmax": 80.0,
"Type": "Hill",
"Description": "Catalyzes the phosphorylation of fructose-6-phosphate to fructose-1,6-bisphosphate."
}
]
}
@@ -0,0 +1,136 @@
{
"$schema": "https://json-schema.org/draft-07/schema",
"title": "Enzyme Parameter Schema",
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"type": "string"
},
"Vmax": {
"type": "object",
"properties": {
"Value": {
"type": "number",
"minimum": 0
},
"Min": {
"type": "number",
"minimum": 0
},
"Max": {
"type": "number",
"minimum": 0
}
}
},
"Type": {
"type": "string",
"enum": [ "Hill", "MichelisMenten", "Linear" ]
},
"Substrates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": { "type": "string" },
"Amount": {
"type": "number",
"minimum": 0
},
"Km": {
"type": "object",
"properties": {
"Value": {
"type": "number",
"minimum": 0
},
"Min": {
"type": "number",
"minimum": 0
},
"Max": {
"type": "number",
"minimum": 0
}
}
},
"Hill": {
"type": "object",
"properties": {
"Value": {
"type": "number",
"minimum": 0
},
"Min": {
"type": "number",
"minimum": 0
},
"Max": {
"type": "number",
"minimum": 0
}
}
}
},
"oneOf": [
{ "required": [ "Km" ] },
{ "required": [ "Hill" ] }
]
}
},
"Products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": { "type": "string" },
"Amount": {
"type": "number",
"minimum": 0
}
}
}
},
"ConsumATPtoADP": {
"type": "number",
"minimum": 0
},
"ProduceATPfromADP": {
"type": "number",
"minimum": 0
},
"ConsumATPtoAMP": {
"type": "number",
"minimum": 0
},
"ProduceATPfromAMP": {
"type": "number",
"minimum": 0
},
"ConsumeNADtoNADH": {
"type": "number",
"minimum": 0
},
"ProduceNADfromNADH": {
"type": "number",
"minimum": 0
},
"ConsumeGDPtoGTP": {
"type": "number",
"minimum": 0
},
"ProduceGDPfromGTP": {
"type": "number",
"minimum": 0
},
"Description": { "type": "string" }
},
"required": [ "Vmax", "Type", "Name", "Substrates", "Products" ],
"additionalProperties": false
}
}
}
@@ -19,14 +19,14 @@ namespace BaseCellSimulation.Enzyms.Cytosol
public override void ApplyChanges(CellRessources res, double dt) public override void ApplyChanges(CellRessources res, double dt)
{ {
double used = Math.Min(rate * dt, res.Res.Carbon.FBP); double used = Math.Min(rate * dt, res.Res.Carbon.F1_6BP);
res.Res.Carbon.FBP -= used; res.Res.Carbon.F1_6BP -= used;
res.Res.Carbon.GAP += 2 * used; res.Res.Carbon.GA3P += 2 * used;
} }
public override void ComputeRate(Resources res) public override void ComputeRate(Resources res)
{ {
Michaelis_Menten(res.Carbon.FBP); Michaelis_Menten(res.Carbon.F1_6BP);
} }
} }
} }
+3 -3
View File
@@ -25,8 +25,8 @@ namespace BaseCellSimulation.Enzyms.Cytosol
public override void ApplyChanges(CellRessources res, double dt) public override void ApplyChanges(CellRessources res, double dt)
{ {
double used = Math.Min(rate * dt, Math.Min(res.Res.Carbon.GAP, res.Res.Energy.NAD)); double used = Math.Min(rate * dt, Math.Min(res.Res.Carbon.GA3P, res.Res.Energy.NAD));
res.Res.Carbon.GAP -= used; res.Res.Carbon.GA3P -= used;
res.Res.Carbon.PBG13 += used; res.Res.Carbon.PBG13 += used;
res.TransferNADH(used, false); res.TransferNADH(used, false);
res.Res.Ions.Protons += 1.0 * used; res.Res.Ions.Protons += 1.0 * used;
@@ -34,7 +34,7 @@ namespace BaseCellSimulation.Enzyms.Cytosol
public override void ComputeRate(Resources res) public override void ComputeRate(Resources res)
{ {
rate = Vmax * (res.Carbon.GAP / (Km + res.Carbon.GAP)) * (res.Energy.NAD / (Km_NAD + res.Energy.NAD)); rate = Vmax * (res.Carbon.GA3P / (Km + res.Carbon.GA3P)) * (res.Energy.NAD / (Km_NAD + res.Energy.NAD));
} }
} }
} }
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Cytosol.Hexokinasen
{
public class HK1 : Hexokinasis
{
public HK1() : base()
{
}
}
}
@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Cytosol.Hexokinasen
{
internal class HK2
{
}
}
@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Cytosol.Hexokinasen
{
internal class HK3
{
}
}
@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Cytosol.Hexokinasen
{
internal class HK4_GK
{
}
}
@@ -4,14 +4,16 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace BaseCellSimulation.Enzyms.Cytosol namespace BaseCellSimulation.Enzyms.Cytosol.Hexokinasen
{ {
public class Hexokinasis : InternalEnzym public abstract class Hexokinasis : InternalEnzym
{ {
public Hexokinasis() { public Hexokinasis() {
Km = 0.05; Km = 0.05;
Vmax = 5; Vmax = 5;
Type = EnzymType.MichelisMenten;
KmRange = new(0.01, 0.1); KmRange = new(0.01, 0.1);
VmaxRange = new(0.5, 20); VmaxRange = new(0.5, 20);
} }
@@ -27,7 +27,7 @@ namespace BaseCellSimulation.Enzyms.Cytosol
{ {
double used = Math.Min(rate * dt, Math.Min(res.Res.Energy.ATP, res.Res.Carbon.F6P)); double used = Math.Min(rate * dt, Math.Min(res.Res.Energy.ATP, res.Res.Carbon.F6P));
res.Res.Carbon.F6P -= used; res.Res.Carbon.F6P -= used;
res.Res.Carbon.FBP += used; res.Res.Carbon.F1_6BP += used;
res.ConsumeATP(used); res.ConsumeATP(used);
res.Res.Ions.Protons += used; res.Res.Ions.Protons += used;
} }
+150 -14
View File
@@ -3,37 +3,173 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Text.Json.Serialization;
namespace BaseCellSimulation.Enzyms namespace BaseCellSimulation.Enzyms
{ {
public abstract class Enzym public enum EnzymType
{ {
/// <summary> Hill,
/// mM/S MichelisMenten,
/// </summary> Linear
public double Vmax { get; set; } }
public struct Substrate
{
public string Name { get; set; }
public double Amount { get; set; }
/// <summary> /// <summary>
/// mM /// mM
/// </summary> /// </summary>
public double Km { get; set; } [JsonPropertyName("Km")]
public ValueRange Km { get; set; }
public ValueRange VmaxRange { get; protected set; } [JsonPropertyName("Hill")]
public ValueRange n_Hill { get; set; }
}
public ValueRange KmRange { get; protected set; } public struct Product
{
public string Name { get; set; }
public double Amount { get; set; }
}
public class Enzym
{
[JsonPropertyName("Name")]
public string Name { get; set; }
/// <summary>
/// mM/S
/// </summary>
[JsonPropertyName("Vmax")]
public ValueRange Vmax { get; set; }
[JsonPropertyName("Type")]
public EnzymType Type { get; set; }
[JsonPropertyName("ConsumATPtoADP")]
public double ConsumATPtoADP { get; set; }
[JsonPropertyName("ProduceATPfromADP")]
public double ProduceATPfromADP { get; set; }
[JsonPropertyName("ConsumATPtoAMP")]
public double ConsumATPtoAMP { get; set; }
[JsonPropertyName("ProduceATPfromAMP")]
public double ProduceATPfromAMP { get; set; }
[JsonPropertyName("ConsumeNADtoNADH")]
public double ConsumeNADtoNADH { get; set; }
[JsonPropertyName("ProduceNADfromNADH")]
public double ProduceNADfromNADH { get; set; }
[JsonPropertyName("ConsumeGDPtoGTP")]
public double ConsumeGDPtoGTP { get; set; }
[JsonPropertyName("ProduceGDPfromGTP")]
public double ProduceGDPfromGTP { get; set; }
[JsonPropertyName("Substrates")]
public List<Substrate> Substrates { get; set; } = new List<Substrate>();
[JsonPropertyName("Products")]
public List<Product> Products { get; set; } = new List<Product>();
protected double rate; protected double rate;
protected void Michaelis_Menten(double ressource)
protected double Michaelis_Menten(CellRessources res)
{ {
rate = Michaelis_Menten(ressource, Vmax, Km); double retVar = Vmax.Value;
foreach (Substrate substrate in Substrates)
{
if (!res.Resources.TryGetValue(substrate.Name, out double ResAmount))
return 0.0;
if (ResAmount <= 0.0)
return 0.0;
retVar *= ResAmount / (substrate.Km.Value + ResAmount);
} }
protected double Michaelis_Menten(double consumable,double vmax, double km) return retVar;
{
return (vmax * consumable) / (km + consumable);
} }
public abstract void ApplyChanges(CellRessources res, double dt); protected double HillEquation(CellRessources res)
{
double retVar = Vmax.Value;
foreach (Substrate substrate in Substrates)
{
if (!res.Resources.TryGetValue(substrate.Name, out double ResAmount))
return 0.0;
if (ResAmount <= 0.0)
return 0.0;
retVar *= Math.Pow(ResAmount, substrate.n_Hill.Value) / (Math.Pow(substrate.Km.Value, substrate.n_Hill.Value) + Math.Pow(ResAmount, substrate.n_Hill.Value));
}
return retVar;
}
public void ApplyChanges(CellRessources res, double dt)
{
double delta = rate * dt;
foreach (Substrate substrate in Substrates)
{
if (res.Resources.TryGetValue(substrate.Name, out double oldVal))
{
delta = Math.Min(delta, oldVal / substrate.Amount);
}
}
foreach (Substrate substrate in Substrates)
{
if (res.Resources.TryGetValue(substrate.Name, out double oldVal))
{
res.Resources[substrate.Name] = oldVal - substrate.Amount * delta;
}
}
foreach (Product product in Products)
{
if (res.Resources.ContainsKey(product.Name))
{
res.Resources[product.Name] += product.Amount * delta;
}
else
{
res.Resources[product.Name] = product.Amount * delta;
}
}
if(ConsumATPtoADP > 0.0)
res.ConsumeATP(ConsumATPtoADP * delta, false);
if(ProduceATPfromADP > 0.0)
res.RegenerateATP(ProduceATPfromADP * delta, false);
if(ConsumATPtoAMP > 0.0)
res.ConsumeATP(ConsumATPtoAMP * delta, true);
if(ProduceATPfromAMP > 0.0)
res.RegenerateATP(ProduceATPfromAMP * delta, true);
if(ConsumeNADtoNADH > 0.0)
res.TransferNADH(ConsumeNADtoNADH * delta, true);
if(ProduceNADfromNADH > 0.0)
res.TransferNADH(ProduceNADfromNADH * delta, false);
if(ConsumeGDPtoGTP > 0.0)
res.TransferGTP(ConsumeGDPtoGTP * delta, true);
if(ProduceGDPfromGTP > 0.0)
res.TransferGTP(ProduceGDPfromGTP * delta, false);
}
public void ComputeRate(CellRessources res)
{
switch (Type)
{
case EnzymType.Hill:
rate = HillEquation(res);
break;
case EnzymType.MichelisMenten:
rate = Michaelis_Menten(res);
break;
case EnzymType.Linear:
rate = Vmax.Value * res.Resources[Substrates[0].Name];
break;
}
}
} }
public abstract class InternalEnzym : Enzym public abstract class InternalEnzym : Enzym
+180 -8
View File
@@ -1,4 +1,6 @@
using System; using System;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace BaseCellSimulation namespace BaseCellSimulation
{ {
@@ -9,6 +11,43 @@ namespace BaseCellSimulation
{ {
public Resources Res; public Resources Res;
public EnviromentState Env = new(); public EnviromentState Env = new();
[JsonPropertyName("energy")]
public EnergyPool energyPool;
public Dictionary<string, double> Resources => new Dictionary<string, double>();
public static CellRessources LoadRessources(string jsonPath)
{
string json = File.ReadAllText(jsonPath);
using var doc = JsonDocument.Parse(json);
var root = doc.RootElement;
var result = new CellRessources();
// deserialice energy
if (root.TryGetProperty("energy", out JsonElement energyElement))
{
result.energyPool = JsonSerializer.Deserialize<EnergyPool>(energyElement.GetRawText());
}
foreach(var property in root.EnumerateObject())
{
if (property.NameEquals("energy"))
continue; // already handled
if (property.Value.ValueKind == JsonValueKind.Number)
{
result.Resources[property.Name] = property.Value.GetDouble();
}
}
return result;
}
public static void SaveRessources(CellRessources ressources, string jsonPath)
{
var options = new JsonSerializerOptions { WriteIndented = true };
string json = JsonSerializer.Serialize(ressources, options);
File.WriteAllText(jsonPath, json);
}
// pH in mM-basiertem Hilfsformat (vereinfachte Umrechnung): // pH in mM-basiertem Hilfsformat (vereinfachte Umrechnung):
public double pH_in => 3.0 - Math.Log10(Res.Ions.Protons + 1e-12); public double pH_in => 3.0 - Math.Log10(Res.Ions.Protons + 1e-12);
@@ -117,6 +156,22 @@ namespace BaseCellSimulation
} }
} }
public void TransferGTP(double amount, bool toGDP)
{
if (toGDP)
{
if (Res.Energy.GTP < amount) amount = Res.Energy.GTP;
Res.Energy.GTP -= amount;
Res.Energy.GDP += amount;
}
else
{
if (Res.Energy.GDP < amount) amount = Res.Energy.GDP;
Res.Energy.GDP -= amount;
Res.Energy.GTP += amount;
}
}
// --- Initialisierung mit plausiblen Startwerten --- // --- Initialisierung mit plausiblen Startwerten ---
/// <summary> /// <summary>
/// Erzeugt eine CellRessources-Instanz mit vernünftigen Startwerten (grobe physiologische Annahmen). /// Erzeugt eine CellRessources-Instanz mit vernünftigen Startwerten (grobe physiologische Annahmen).
@@ -143,8 +198,8 @@ namespace BaseCellSimulation
cr.Res.Carbon.Glucose = 1.0; // mM intrazellulär (abhängig von Aufnahme) cr.Res.Carbon.Glucose = 1.0; // mM intrazellulär (abhängig von Aufnahme)
cr.Res.Carbon.G6P = 0.05; cr.Res.Carbon.G6P = 0.05;
cr.Res.Carbon.F6P = 0.02; cr.Res.Carbon.F6P = 0.02;
cr.Res.Carbon.FBP = 0.005; cr.Res.Carbon.F1_6BP = 0.005;
cr.Res.Carbon.GAP = 0.01; cr.Res.Carbon.GA3P = 0.01;
cr.Res.Carbon.PBG13 = 0.005; cr.Res.Carbon.PBG13 = 0.005;
cr.Res.Carbon.PG3 = 0.02; cr.Res.Carbon.PG3 = 0.02;
cr.Res.Carbon.PG2 = 0.01; cr.Res.Carbon.PG2 = 0.01;
@@ -229,34 +284,114 @@ namespace BaseCellSimulation
/// <summary>Energiemengen: ATP/ADP/AMP + NAD/NADH + GTP/GDP</summary> /// <summary>Energiemengen: ATP/ADP/AMP + NAD/NADH + GTP/GDP</summary>
public struct EnergyPool public struct EnergyPool
{ {
/// <summary>
/// Adenosine-triphosphate
/// </summary>
public double ATP; public double ATP;
/// <summary>
/// Adenosine diphosphate
/// </summary>
public double ADP; public double ADP;
/// <summary>
/// Adenosine monophosphat
/// </summary>
public double AMP; public double AMP;
/// <summary>
/// Nicotinamide adenine dinucleotide
/// </summary>
public double NAD; public double NAD;
/// <summary>
/// Nicotinamide adenine dinucleotide
/// </summary>
public double NADH; public double NADH;
/// <summary>
/// Nicotinamide adenine dinucleotide phosphate
/// </summary>
public double NADPH;
/// <summary>
/// Guanosintriphosphat
/// </summary>
public double GTP; public double GTP;
public double GDP { get; internal set; }
/// <summary>
/// Guanosindiphosphat
/// </summary>
public double GDP;
/// <summary>
/// inorganic phosphate
/// </summary>
public double Pi;
/// <summary>
/// Pyrophosphat
/// </summary>
public double PPi;
} }
/// <summary>Inorganische Phosphate</summary> /// <summary>Inorganische Phosphate</summary>
public struct Phosphate public struct Phosphate
{ {
public double Pi; // anorganisches Phosphat /// <summary>
public double PPi; // Pyrophosphat /// inorganic phosphate
/// </summary>
public double Pi;
/// <summary>
/// Pyrophosphat
/// </summary>
public double PPi;
} }
/// <summary>Kohlenstoff- / Glykolyse-Intermediaten</summary> /// <summary>Kohlenstoff- / Glykolyse-Intermediaten</summary>
public struct CarbonPool public struct CarbonPool
{ {
public double Glucose; public double Glucose;
/// <summary>
/// Glucose-6-phosphate
/// </summary>
public double G6P; public double G6P;
/// <summary>
/// Fructose-6-phosphate
/// </summary>
public double F6P; public double F6P;
public double FBP;
public double GAP; /// <summary>
/// Fructose 1,6-bisphosphate
/// </summary>
public double F1_6BP;
/// <summary>
/// Glycerinaldehyd-3-phosphat
/// </summary>
public double GA3P;
/// <summary>
/// 1,3-Bisphosphoglycerat
/// </summary>
public double PBG13; public double PBG13;
/// <summary>
/// 3-Phosphoglycerat
/// </summary>
public double PG3; public double PG3;
/// <summary>
/// 2-Phosphoglycerat
/// </summary>
public double PG2; public double PG2;
/// <summary>
/// Phosphoenolpyruvat
/// </summary>
public double PEP; public double PEP;
public double Pyruvate; public double Pyruvate;
public double Lactate; public double Lactate;
public double CO2; public double CO2;
@@ -271,14 +406,35 @@ namespace BaseCellSimulation
public double Waste; public double Waste;
public double NucleicAcids; public double NucleicAcids;
public double Nucleotides; public double Nucleotides;
/// <summary>
/// Nukleosidtriphosphate
/// </summary>
public double NTP; public double NTP;
/// <summary>
/// Desoxyribonukleotidtriphosphate
/// </summary>
public double dNTP; public double dNTP;
public double mRNA; public double mRNA;
public double DNA_damage; public double DNA_damage;
public double AcetylCoA; public double AcetylCoA;
/// <summary>
/// S-Adenosylmethionin
/// </summary>
public double SAM; public double SAM;
/// <summary>
/// Methionine
/// </summary>
public double MET; public double MET;
/// <summary>
/// S-Adenosylhomocystein
/// </summary>
public double SAH; public double SAH;
public double Homocystein; public double Homocystein;
public double Adenosin; public double Adenosin;
internal double tRNA; internal double tRNA;
@@ -289,9 +445,22 @@ namespace BaseCellSimulation
public struct IonPool public struct IonPool
{ {
public double Protons; // H+ (vereinfachte Einheit mM) public double Protons; // H+ (vereinfachte Einheit mM)
public double ROS; // reactive oxygen species
/// <summary>
/// reactive oxygen species
/// </summary>
public double ROS;
/// <summary>
/// NAtrium-Ionen
/// </summary>
public double Na; public double Na;
/// <summary>
/// Kalium-Ionen
/// </summary>
public double K; public double K;
public double H2O2; public double H2O2;
} }
@@ -302,6 +471,9 @@ namespace BaseCellSimulation
public struct Folates public struct Folates
{ {
/// <summary>
/// Tetrahydrofolsäure
/// </summary>
public double THF { get; internal set; } public double THF { get; internal set; }
public double MethylTHF { get; internal set; } public double MethylTHF { get; internal set; }
} }
+9 -4
View File
@@ -3,18 +3,23 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Text.Json.Serialization;
namespace BaseCellSimulation namespace BaseCellSimulation
{ {
public struct ValueRange public struct ValueRange
{ {
public double Start; [JsonPropertyName("Value")]
public double End; public double Value;
[JsonPropertyName("Min")]
public double Min;
[JsonPropertyName("Max")]
public double Max;
public ValueRange(double start, double end) public ValueRange(double start, double end)
{ {
Start = start; Min = start;
End = end; Max = end;
} }
} }
} }