Commit ec7dbded authored by Aaron Bray's avatar Aaron Bray
Browse files

Update GI methodology and plots

Small tweek to glucose generation in tissue
Update namespaces in validation tool
Fix bug in Convex Hull plotter
Fix bug in Multisource plotter
Remove the old 12hr baseline
parent 9c3ea520
......@@ -143,24 +143,20 @@ FireFighter=ActionEventPlotter Header=RightAlveoli-ForestFireParticulate-MassDep
FireFighter=ActionEventPlotter Header=RightAnatomicDeadSpace-ForestFireParticulate-MassDeposited(ug) VerificationDir=energyenvironment Title=DeadSpaceMassDeposited(ug) Y1Label=MassDeposited(ug) OutputOverride=./docs/html/plots/Environment RemoveLegends NoActions NoEvents
##### GI Methodology Report #####
12hrFast=ActionEventPlotter Header=BloodVolume(L) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_BV.jpg
12hrFast=ActionEventPlotter Header=Calcium-BloodConcentration(mg/L) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_BloodCalcium.jpg
12hrFast=ActionEventPlotter Header=Glucose-BloodConcentration(mg/dL) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_BloodGlucose.jpg
12hrFast=ActionEventPlotter Header=SmallIntestineChyme-Calcium-Mass(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_IntestineCalcium.jpg
12hrFast=ActionEventPlotter Header=SmallIntestineChyme-Glucose-Mass(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_IntestineGlucose.jpg
12hrFast=ActionEventPlotter Header=SmallIntestineChyme-Sodium-Mass(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_IntestineSodium.jpg
12hrFast=ActionEventPlotter Header=SmallIntestineChyme-Tristearin-Mass(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_IntestineTristearin.jpg
12hrFast=ActionEventPlotter Header=SmallIntestineChyme-Urea-Mass(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_IntestineUrea.jpg
12hrFast=ActionEventPlotter Header=SmallIntestineChyme-Volume(mL) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_IntestineVolume.jpg
12hrFast=ActionEventPlotter Header=Sodium-BloodConcentration(g/dL) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_BloodSodium.jpg
12hrFast=ActionEventPlotter Header=StomachContents-Calcium(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_StomachCalcium.jpg
12hrFast=ActionEventPlotter Header=StomachContents-Carbohydrate(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_StomachCarbs.jpg
12hrFast=ActionEventPlotter Header=StomachContents-Fat(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_StomachFat.jpg
12hrFast=ActionEventPlotter Header=StomachContents-Protein(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_StomachProtein.jpg
12hrFast=ActionEventPlotter Header=StomachContents-Sodium(g) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_StomachSodium.jpg
12hrFast=ActionEventPlotter Header=StomachContents-Water(mL) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_StomachWater.jpg
12hrFast=ActionEventPlotter Header=Tristearin-BloodConcentration(mg/dL) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_BloodTristearin.jpg
12hrFast=ActionEventPlotter Header=Urea-BloodConcentration(mg/dL) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=12hr_BloodUrea.jpg
Nutrition=ActionEventPlotter Header=BloodVolume(L) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_BV.jpg
Nutrition=ActionEventPlotter Header=Calcium-BloodConcentration(mg/L) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_BloodCalcium.jpg
Nutrition=ActionEventPlotter Header=Glucose-BloodConcentration(mg/dL) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_BloodGlucose.jpg
Nutrition=ActionEventPlotter Header=Insulin-BloodConcentration(ug/L) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_BloodInsulin.jpg
Nutrition=ActionEventPlotter Header=SmallIntestineChyme-Volume(mL) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_IntestineVolume.jpg
Nutrition=ActionEventPlotter Header=Sodium-BloodConcentration(g/dL) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_BloodSodium.jpg
Nutrition=ActionEventPlotter Header=Tristearin-BloodConcentration(mg/dL) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_BloodTristearin.jpg
Nutrition=ActionEventPlotter Header=Urea-BloodConcentration(mg/dL) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_BloodUrea.jpg
Nutrition=ActionEventPlotter Header=StomachContents-Calcium(g) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_StomachCalcium.jpg
Nutrition=ActionEventPlotter Header=StomachContents-Carbohydrate(g) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_StomachCarbs.jpg
Nutrition=ActionEventPlotter Header=StomachContents-Fat(g) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_StomachFat.jpg
Nutrition=ActionEventPlotter Header=StomachContents-Protein(g) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_StomachProtein.jpg
Nutrition=ActionEventPlotter Header=StomachContents-Sodium(g) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_StomachSodium.jpg
Nutrition=ActionEventPlotter Header=StomachContents-Water(mL) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/GI OutputFilename=4hr_StomachWater.jpg
##### Nervous Methodology Report #####
BaroreceptorMethodology=MultiPlotter X1=normMAP Y1=SympatheticResponse,ParasympatheticResponse VerificationDir=patient Title=Response_Fractions X1Label=MeanArterialPressure(Normalized) Y1Label=Response(Fraction) OutputOverride=./docs/html/plots/Nervous X1LowerBound=0.0 X1UpperBound=2.5 NoGrid ImageDimensions=800,600 DataPathValidationOverride=Waveforms/
......@@ -196,7 +192,7 @@ HighAltitudeEnvironmentChange=ActionEventPlotter NoGrid NoActions Title=None Hea
HighAltitudeEnvironmentChange=ActionEventPlotter NoGrid NoActions Title=None Header=RenalBloodFlow(L/min) VerificationDir=energyenvironment RemoveLegends FontSize=17 OutputOverride=./docs/html/plots/Renal/ ImageDimensions=800,400 OutputFilename=AltitudeRBF.jpg
HighAltitudeEnvironmentChange=ActionEventPlotter NoGrid NoActions Title=None Header=RightAfferentArterioleResistance(mmHg_min/mL) VerificationDir=energyenvironment FontSize=17 RemoveLegends OutputOverride=./docs/html/plots/Renal/ ImageDimensions=800,400 OutputFilename=AltitudeArterioleResistance.jpg
HighAltitudeEnvironmentChange=ActionEventPlotter LegendOnly ActionsOnly Header=RightAfferentArterioleResistance(mmHg_min/mL) Title=HighAltitudeEnvironmentChangeLegend VerificationDir=energyenvironment OutputOverride=./docs/html/plots/Renal/ NoEvents ImageDimensions=480,300
12hrFast=ActionEventPlotter Header=Bladder-Volume(mL) VerificationDir=miscellaneous RemoveLegends OutputOverride=./docs/html/plots/Renal OutputFilename=12hr_Urination.jpg
Nutrition=ActionEventPlotter Header=Bladder-Volume(mL) VerificationDir=nutrition RemoveLegends OutputOverride=./docs/html/plots/Renal OutputFilename=4hr_Urination.jpg
RenalTGFFeedbackOutput=MultiPlotter Y1=GlomerularFiltrationRate(L/min) FontSize=34 X1=MeanArterialPressure(mmHg) Title=None ValidationData=Renal/MAP_vs_GFR.csv DataPathVerificationOverride=unit_tests/pulse/ X2=MeanArterialPressure(mmHg) OutputOverride=./docs/html/plots/Renal/ Y2=GlomerularFiltrationRate(L/min) X1LowerBound=60 X1UpperBound=200 Y1LowerBound=.09 Y2LowerBound=.09 Y1UpperBound=.16 Y2UpperBound=.16 OutputOverride=./docs/html/plots/Renal/ NoGrid RemoveLegends DataFileOverride=RenalTGFFeedbackOutput.csv OutputFilename=MAP_vs_GFR.jpg
RenalTGFFeedbackOutput=MultiPlotter Y1=RenalBloodFlow(L/min) X1=MeanArterialPressure(mmHg) Title=None FontSize=34 ValidationData=Renal/MAP_vs_RBF.csv DataPathVerificationOverride=unit_tests/pulse/ X2=MeanArterialPressure(mmHg) Y2=RenalBloodFlow(L/min) X1LowerBound=60 X1UpperBound=200 Y1LowerBound=1 Y2LowerBound=1 Y1UpperBound=1.7 Y2UpperBound=1.7 OutputOverride=./docs/html/plots/Renal/ NoGrid RemoveLegends OutputOverride=./docs/html/plots/Renal/ DataFileOverride=RenalTGFFeedbackOutput.csv OutputFilename=MAP_vs_RBF.jpg
RenalTGFandUPRFeedbackOutput=MultiPlotter Y1=UrineProductionRate(mL/min) X1=MeanArterialPressure(mmHg) Title=None FontSize=34 ValidationData=Renal/MAP_vs_UPR.csv DataPathVerificationOverride=unit_tests/pulse/ NoGrid X2=MeanArterialPressure(mmHg) Y2=UrineProductionRate(mL/min) X1LowerBound=60 X1UpperBound=200 Y1LowerBound=0 Y2LowerBound=0 Y1UpperBound=8 Y2UpperBound=8 OutputOverride=./docs/html/plots/Renal/ RemoveLegends OutputOverride=./docs/html/plots/Renal/ DataFileOverride=RenalTGFandUPRFeedbackOutput.csv OutputFilename=MAP_vs_UPR.jpg
......
9ace186d57ae9ad50cc69ce4df8fa861f8ec289e8ffba719d6b698c75762c7639ae0c08afbba5a3ec745522974d2758d728cf71c969c8819b66378a2d7278b76
\ No newline at end of file
......@@ -8,11 +8,10 @@ Overview
Abstract
--------
The %Gastrointestinal System models the ingestion of macronutrients and their subsequent digestion and transportation into the %Cardiovascular system.
The %Gastrointestinal System models the ingestion of water and macronutrients and their subsequent digestion and transportation into the %Cardiovascular system.
Digestion rates for each macronutrient can be specified along with the amount, and if no rates are supplied, a default configurable rate will be used.
The macronutrients are then digested by converting the macronutrient into a specific substance from the stomach and
incrementing the amount of that substance into the small intestine's chyme.
The substances in the chyme are then absorbed into the vascular system via the small intestine's walls each timestep.
The macronutrients are then digested by converting the macronutrient into a specific substance from the stomach and incrementing the amount of that substance into the small intestine's vasculature each timestep.
Water is digested from the stomach into a gut/chyme compartment and aborbed into the small intestine vasculature at a standard rate.
@anchor GI-introduction
Introduction
......@@ -51,42 +50,37 @@ Data Flow
### Reset
The stomach is initialized with configurable amounts of each macronutrient, sodium, calcium, and water.
The gut chyme is then initialized with substance amounts by calculating 5 hours' worth of digestion of the stomach nutrients,
while not removing mass from the stomach.
The stomach contents may be overriden via the Pulse configuration object or via the meal consumption condition
### Preprocess
#### Gastric Secretion
A static gastric secretion flow rate of 2.46 mL/min is used to manually move water volume from the gut tissue back into the stomach.
#### Digestion
The amount of macronutrient to decrement from the stomach is based on the nutrient's digestion rate and the engine timestep.
The decremented amount is then multiplied by a configurable absorption amount to calculate the mass of the nutrient absorbed into the body.
This calculated mass is then used to increment a specific substance on the gut chyme compartment.
This calculated mass is then used to increment a specific substance into the small intestine vascular compartment.
Nutrient data is converted to substance data in the following manner :
- Carbohydrates - A transfer mass is directly calculated from the stomach carbohydrate digestion rate and engine timestep.
That mass is then decremented from the stomach carbohydrate mass.
The mass is also multiplied by a configurable carbohydrate absorption factor,
and the amount of glucose in the gut chyme is incremented by that product.
- Fats - A transfer mass is directly calculated from the stomach fat digestion rate and engine timestep.
That mass is then decremented from the stomach fat mass.
The mass is also multiplied by a configurable fat absorption factor,
and the amount of tristearin in the gut chyme is incremented by that product.
- Protein - A transfer mass is directly calculated from the stomach protein digestion rate and engine timestep.
That mass is then decremented from the stomach protein mass.
The mass is also multiplied by a configurable ProteinToUrea factor,
and the amount of urea in the gut chyme is incremented by that product.
- Calcium - A transfer mass is directly calculated from the configurable stomach calcium digestion rate and engine timestep.
That mass is then decremented from the stomach calcium mass.
The mass is also multiplied by a configurable calcium absorption factor,
and the amount of calcium in the gut chyme is incremented by that product.
- Carbohydrates - A transfer mass is directly calculated from the stomach carbohydrate digestion rate and engine timestep.
That mass is then decremented from the stomach carbohydrate mass.
The mass is also multiplied by a configurable carbohydrate absorption factor,
and the amount of glucose in the small intestine vasculatur is incremented by that product.
- Fats - A transfer mass is directly calculated from the stomach fat digestion rate and engine timestep.
That mass is then decremented from the stomach fat mass.
The mass is also multiplied by a configurable fat absorption factor,
and the amount of tristearin in the small intestine vasculatur is incremented by that product.
- Protein - A transfer mass is directly calculated from the stomach protein digestion rate and engine timestep.
That mass is then decremented from the stomach protein mass.
The mass is also multiplied by a configurable ProteinToUrea factor,
and the amount of urea in the small intestine vasculatur is incremented by that product.
- Calcium - A transfer mass is directly calculated from the configurable stomach calcium digestion rate and engine timestep.
That mass is then decremented from the stomach calcium mass.
The mass is also multiplied by a configurable calcium absorption factor,
and the amount of calcium in the small intestine vasculatur is incremented by that product.
- Sodium - A transfer mass is calculated as a function of the concentration of sodium in the stomach and the water digestion rate.
This mass is decremented from the stomach sodium mass and the sodium mass is incremented by this transferred mass in the gut chyme compartment.
- Water - A transfer volume is directly calculated from the configurable water digestion rate and engine timestep.
This volume is decremented from the stomach water volume and the volume is incremented by this transferred volume in the gut chyme compartment.
This mass is decremented from the stomach sodium mass.
The resulting sodium mass is incremented in the small intestine vasculatur compartment.
- Water - A transfer volume is directly calculated from the configurable water digestion rate and engine timestep.
This volume is decremented from the stomach water volume and the volume is incremented by this transferred volume in the gut chyme compartment.
#### Absorption
......@@ -96,15 +90,14 @@ A static absorption flow rate of 3.3 mL/min is used to manually move water volum
#### ConsumeMeal
The ConsumeMeal condition provides a nutrition object along with an elapsed time since those nutrients were in the stomach.
The GI System will then zero out the contents of the stomach and gut chyme and add the nutrient data provided in the condition to the stomach.
The digestion algorithm is executed for the provided elapsed time, removing nutrient mass from the stomach and adding it to substance quantities in the gut chyme.
Next, the absorption algorithm will be executed for the provided elapsed time, removing substance mass from the gut chyme and distributing that mass throughout the blood and tissues.
The ConsumeMeal condition is still under development and will provide a nutrition object along with an elapsed time since those nutrients were in the stomach.
The GI System will then calculate the digested amounts based on the provided time and update the cardiovascular and tissue system accordingly.
### Actions
#### ConsumeNutrients
Each nutrient is optional in the ConsumeNutrients action. If a nutrient mass is provided with no accompanying digestion rate, the engine will default to the rate specified in the engine configuration.
Each nutrient is optional in the ConsumeNutrients action.
If a nutrient mass is provided with no accompanying digestion rate, the engine will default to the rate specified in the engine configuration.
If a digestion rate is provided for a macronutrient, it will be combined with the current stomach digestion rate for that macronutrient by volume weighting the two rates together.
### Process
......@@ -130,7 +123,11 @@ Figure 2. The %GI circuit is made up of nodes and paths with elements and is con
</center><br>
There is a steady secretion of fluid, enzymes, and other substances into the various compartments of the digestive tract.
The constant secretion of fluid into the digestive tract allows for macronutrients to be slowly digested and eventually absorbed through the intestinal wall @cite hall2011guyton. In the engine, these macronutrients are placed into the CV system through the an absorption rate that mirrors that of the human GI tract. The calculated flow rate transports substance from the small instestine C1 node to the CV system's small intestine 1 node @ref GI-circuit. Similar transport connects the tissue and the small inestine and determines wanter balance and secretion rate.
The constant secretion of fluid into the digestive tract allows for macronutrients to be slowly digested and eventually absorbed through the intestinal wall @cite hall2011guyton.
In the engine, these macronutrients are placed into the CV system through the an absorption rate that mirrors that of the human GI tract.
A digested amount is calculated individually for each substance, and that calculated mass is decremented from the stomach, multiplied by its associated absorption factor and the result is added to the CV system's small intestine 1 node @ref GI-circuit.
Water, on the other hand, is digested from the stomach to the small instestine C1 node. A flow source then transports the water volume to the CV system as part of our circuit calculation.
The digestion rate of macronutrients is heavily dependent on the nature of the source food, as the digestive tract needs to free substances from the rest of the food's molecular structure before it can be absorbed @cite wolever1991glycemic.
Fats spend several hours being emulsified by the small intestine and are then quickly absorbed once exposed to pancreatic enzymes @cite hall2011guyton.
Due to the current lack of a hepatic model, the %Gastrointestinal System breaks protein into urea, simulating the deamination of amino acids in the liver @cite hall2011guyton @cite bean1984regulation @cite haussinger1991hepatocyte.
......@@ -138,8 +135,8 @@ Many of the small ions like sodium are quickly absorbed with active transport in
An exception to this is calcium, which is carefully regulated by parathyroid hormone to ensure that the body's requirements are met @cite hall2011guyton.
Water is absorbed via the osmotic gradient that either naturally exists between the gut chyme and the blood or that is created by the active transport of substances across the intestinal wall @cite hall2011guyton.
<center>
| Macronutrient | Resultant Substance | Digestion Rate (R) | Absorption Fraction (A<sub>frac</sub>) | Gut Substance Mass(M<sub>g</sub>) Stomach Nutrient Mass (M<sub>s</sub>)|
|:---: |:---: |:---: |:---: |:---: |
| Macronutrient | Resultant Substance | Digestion Rate (R) | Absorption Fraction (A<sub>frac</sub>) | Gut Substance Mass(M<sub>g</sub>) Stomach Nutrient Mass (M<sub>s</sub>)|
|:---: |:---: |:---: |:---: |:---: |
| Carbohydrate | Glucose | 0.5 - 0.625 g/min @cite hall2011guyton @cite wolever1991glycemic | 0.800 @cite hall2011guyton | M<sub>g</sub> = R*&Delta;T*A<sub>frac</sub> |
| Fat | Tristearin | 0.055 g/min @cite hall2011guyton | 0.248 @cite hall2011guyton | M<sub>g</sub> = R*&Delta;T*A<sub>frac</sub> |
| Protein | Urea | 0.071 - 0.157 g/min @cite dangin2001digestion | 0.405 @cite hall2011guyton | M<sub>g</sub> = R*&Delta;T*A<sub>frac</sub> |
......@@ -150,7 +147,7 @@ Water is absorbed via the osmotic gradient that either naturally exists between
*Table 1. How macronutrients are converted into substances.*
</center>
Once substance mass is in the gut, the substances are transported into the cardiovascular circuit with a constant flow source of 3.3mL/s.
Water is transported into the cardiovascular circuit at a maximum flow rate of 3.3mL/s.
@anchor GI-dependencies
Dependencies
......@@ -161,8 +158,9 @@ The %Gastrointestinal System is not dependent on any other system, but other sys
Assumptions and Limitations
---------------------------
Currently there is no modeling of defecation or the lower portion of the digestive tract. This means that all food that is ingested will eventually be absorbed.
The current digestion methodology is rudimentary and assumes all digestive rates are constant and move with the water flow after leaving the stomach. Active transport is used across cell walls with no diffusion currently implemented. Contraction of the small intestines to allow for transport and defecation is also not modeled.
The current digestion methodology is rudimentary and makes very general assumptions for the macronutrient types and assumes all digestive rates are constant when digesting from the stomach to the vasculature.
Currently there is no modeling of feces in the lower portion of the digestive tract. The calculated unabsorbed substance masses are simpley removed from the system.
Active transport is used across cell walls with no diffusion currently implemented. Contraction of the small intestines to allow for transport and defecation is also not modeled.
@anchor GI-results
Results and Conclusions
......@@ -170,26 +168,25 @@ Results and Conclusions
Validation - Resting Physiologic State
--------------------------------------
The %Gastrointestinal System was validated qualitatively by observing the relative changes in the substance and nutrient masses between the stomach contents
and the gut contents. The transport to the CV system was then shown by demonstrating an increase in substance concentration in the blood.
The %Gastrointestinal System was validated qualitatively by observing the relative changes in the substance and nutrient masses between the stomach contents,
the gut volumes and small intestine volume and substance masses. The transport to the CV system was then shown by demonstrating an increase in substance concentration in the blood.
Concentrations are not solely a function of GI; other systems are potentially using substances in the blood.
<center>
*Table 2. Macronutrient mass in the stomach, gut, and blood as a function of time.*
| Macronutrient/Substance | Stomach Mass(g) vs. Time(s) | Gut Mass(g) vs. Time(s) | Blood Concentration (ug/mL) vs. Time (s) |
|:---: |:---: |:---: |:---: |
| Carbohydrate/Glucose | <img src="./plots/GI/12hr_StomachCarbs.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_IntestineGlucose.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_BloodGlucose.jpg" height="100" width="200"> |
| Fat/Tristearin | <img src="./plots/GI/12hr_StomachFat.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_IntestineTristearin.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_BloodTristearin.jpg" height="100" width="200"> |
| Protein/Urea | <img src="./plots/GI/12hr_StomachProtein.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_IntestineUrea.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_BloodUrea.jpg" height="100" width="200"> |
| Calcium | <img src="./plots/GI/12hr_StomachCalcium.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_IntestineCalcium.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_BloodCalcium.jpg" height="100" width="200"> |
| Sodium | <img src="./plots/GI/12hr_StomachSodium.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_IntestineSodium.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_BloodSodium.jpg" height="100" width="200"> |
| Water | <img src="./plots/GI/12hr_StomachWater.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_IntestineVolume.jpg" height="100" width="200"> | <img src="./plots/GI/12hr_BV.jpg" height="100" width="200"> |
*Table 2. Macronutrient mass in the stomach, and blood as a function of time.*
| Macronutrient/Substance | Stomach Mass(g) / Volume(mL) vs. Time(s) | Blood Concentration (ug/mL) / Volume (mL) vs. Time (s) |
|:---: |:---: |:---: |
| Carbohydrate/Glucose | <img src="./plots/GI/4hr_StomachCarbs.jpg" height="200" width="400"> | <img src="./plots/GI/4hr_BloodGlucose.jpg" height="200" width="400"> |
| Fat/Tristearin | <img src="./plots/GI/4hr_StomachFat.jpg" height="200" width="400"> | <img src="./plots/GI/4hr_BloodTristearin.jpg" height="200" width="400"> |
| Protein/Urea | <img src="./plots/GI/4hr_StomachProtein.jpg" height="200" width="400"> | <img src="./plots/GI/4hr_BloodUrea.jpg" height="200" width="400"> |
| Calcium | <img src="./plots/GI/4hr_StomachCalcium.jpg" height="200" width="400"> | <img src="./plots/GI/4hr_BloodCalcium.jpg" height="200" width="400"> |
| Sodium | <img src="./plots/GI/4hr_StomachSodium.jpg" height="200" width="400"> | <img src="./plots/GI/4hr_BloodSodium.jpg" height="200" width="400"> |
| Water | <img src="./plots/GI/4hr_StomachWater.jpg" height="200" width="400"> | <img src="./plots/GI/4hr_BV.jpg" height="200" width="400"> |
</center>
As seen in Table 2, the macronutrient masses in the stomach are depleted based on different digestion rates and eventually reach zero.
The center column of plots shows the associated mass of substances in the gut chyme increase as the nutrients are removed from the stomach.
Concentrations are provided in the far right column demonstrating the effect of the increasing mass on the blood concentrations.
Concentrations are provided on the right column demonstrating the effect of the increasing mass on the blood concentrations.
These overall trends meet the expectations of the model performance.
@anchor GI-conclusions
......@@ -212,11 +209,11 @@ Recommended Improvements
------------------------
- More %Substances: By expanding the list of %substances used in the engine, the %Gastrointestinal model will inherently gain fidelity as mechanisms
are constructed to properly handle new inputs.
are constructed to properly handle new inputs.
- Defecation: The %Gastrointestinal system should eventually be able to handle undigestible material and the fluid loss due to defecation. This
will also allow for a variety of disease states to be implemented.
will also allow for a variety of disease states to be implemented.
- Vomiting: This can be added either as a symptom or an intervention to aid someone who has ingested a harmful substance.
@anchor GI-appendices
......
......@@ -907,9 +907,9 @@ void Tissue::CalculateMetabolicConsumptionAndProduction(double time_s)
// If blood glucose is low, glucose will be pulled from the liver tissue into the vascular region. This is the equivalent of a glucagon response.
// 0.02 is a time tuning factor.
double massReleased_mg = 0;
if (bloodGlucose_mg_Per_dL < 80.0)
if (bloodGlucose_mg_Per_dL < 85.0)
{
massReleased_mg = 0.02*(80.0 - bloodGlucose_mg_Per_dL)*vascular->GetVolume(VolumeUnit::dL)*time_s;
massReleased_mg = 0.1*(85.0 - bloodGlucose_mg_Per_dL)*vascular->GetVolume(VolumeUnit::dL)*time_s;
//double massReleased_mg = 1.68 * time_s;
DistributeMassbyVolumeWeighted(*vascular, *m_Glucose, massReleased_mg, MassUnit::mg);
vascular->GetSubstanceQuantity(*m_Glucose)->Balance(BalanceLiquidBy::Mass);
......
......@@ -1341,9 +1341,9 @@ public abstract class ValidationTool
try
{
if(TABLE_TYPE.equals("System"))
c = Class.forName("pulse.cdm.bind.Physiology$"+sheetName+"SystemData");
c = Class.forName("com.kitware.pulse.cdm.bind.Physiology$"+sheetName+"SystemData");
else if(TABLE_TYPE.equalsIgnoreCase("Patient"))
c = Class.forName("pulse.cdm.bind.Patient.PatientData");
c = Class.forName("com.kitware.pulse.cdm.bind.Patient.PatientData");
else
throw new RuntimeException("Unknown table type "+TABLE_TYPE);
}
......
......@@ -162,9 +162,9 @@ public class ConvexHullPlotter implements Plotter
dataSeriesLeft = plotTool.createXYSeries("",splitVals.get(4),splitVals.get(5));
dataSeriesRight = plotTool.createXYSeries("",splitVals.get(6),splitVals.get(7));
dataSeriesBottom.setKey("REMOVE");
dataSeriesLeft.setKey("REMOVE");
dataSeriesRight.setKey("REMOVE");
dataSeriesBottom.setKey("REMOVE_Y1B"+i);
dataSeriesLeft.setKey("REMOVE_Y1L"+i);
dataSeriesRight.setKey("REMOVE_Y1R"+i);
dataSet1.addSeries(dataSeriesTop);
dataSet1.addSeries(dataSeriesBottom);
......@@ -192,9 +192,9 @@ public class ConvexHullPlotter implements Plotter
dataSeriesLeft = plotTool.createXYSeries("",splitVals.get(4),splitVals.get(5));
dataSeriesRight = plotTool.createXYSeries("",splitVals.get(6),splitVals.get(7));
dataSeriesBottom.setKey("REMOVE");
dataSeriesLeft.setKey("REMOVE");
dataSeriesRight.setKey("REMOVE");
dataSeriesBottom.setKey("REMOVE_Y2B"+i);
dataSeriesLeft.setKey("REMOVE_Y2L"+i);
dataSeriesRight.setKey("REMOVE_Y2R"+i);
dataSet2.addSeries(dataSeriesTop);
dataSet2.addSeries(dataSeriesBottom);
......@@ -449,7 +449,7 @@ public class ConvexHullPlotter implements Plotter
renderer1.setDefaultShapesVisible(false);//setBaseShapesVisible(false);
renderer1.setSeriesFillPaint(i, Color.red);
renderer1.setSeriesPaint(i, Color.red);
if(dataSet1.getSeries(i).getKey() != null && dataSet1.getSeries(i).getKey().toString().equalsIgnoreCase("REMOVE"))
if(dataSet1.getSeries(i).getKey() != null && dataSet1.getSeries(i).getKey().toString().startsWith("REMOVE"))
renderer1.setSeriesVisibleInLegend(i, false);
}
}
......@@ -466,7 +466,7 @@ public class ConvexHullPlotter implements Plotter
renderer1.setDefaultShapesVisible(false);//setBaseShapesVisible(false);
renderer1.setSeriesFillPaint(i, Color.red);
renderer1.setSeriesPaint(i, Color.red);
if(dataSet1.getSeries(i).getKey() != null && dataSet1.getSeries(i).getKey().toString().equalsIgnoreCase("REMOVE"))
if(dataSet1.getSeries(i).getKey() != null && dataSet1.getSeries(i).getKey().toString().startsWith("REMOVE"))
renderer1.setSeriesVisibleInLegend(i, false);
}
for(int i = 0; i < dataSet2.getSeriesCount(); i++)
......@@ -475,7 +475,7 @@ public class ConvexHullPlotter implements Plotter
renderer2.setBaseShapesVisible(false);
renderer2.setSeriesFillPaint(i, Color.blue);
renderer2.setSeriesPaint(i, Color.blue);
if(dataSet2.getSeries(i).getKey() != null && dataSet2.getSeries(i).getKey().toString().equalsIgnoreCase("REMOVE"))
if(dataSet2.getSeries(i).getKey() != null && dataSet2.getSeries(i).getKey().toString().startsWith("REMOVE"))
renderer2.setSeriesVisibleInLegend(i, false);
}
plot.getRangeAxis(0).setLabelPaint(Color.red);
......
......@@ -15,6 +15,7 @@ import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
......@@ -174,7 +175,7 @@ public class MultiSourcePlotter implements Plotter
Float[] strokes = {2.f,2.f,3.f,4.f,5.f,8.f};
Color[] variedColors = {Color.red, Color.blue, Color.green, Color.orange, Color.magenta, Color.cyan, Color.gray, new Color(255,165,0), new Color(42,183,136), new Color(87,158,186)};
XYPlot plot = (XYPlot) chart.getPlot();
StandardXYItemRenderer renderer = (StandardXYItemRenderer) plot.getRenderer();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
//For Scientific notation
//NumberFormat formatter = new DecimalFormat("0.######E0");
......@@ -214,7 +215,7 @@ public class MultiSourcePlotter implements Plotter
{
BasicStroke wideLine = new BasicStroke( strokes[i] );
renderer.setSeriesStroke(i, wideLine);
renderer.setBaseShapesVisible(false);
renderer.setDefaultShapesVisible(false);
if(cIndex > 9) cIndex = 0;
renderer.setSeriesFillPaint(i, variedColors[cIndex]);
renderer.setSeriesPaint(i, variedColors[cIndex]);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment