Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active September 23, 2024 15:25
Show Gist options
  • Save kenwebb/1d0923799df30043a46fb9e198630ac5 to your computer and use it in GitHub Desktop.
Save kenwebb/1d0923799df30043a46fb9e198630ac5 to your computer and use it in GitHub Desktop.
Homeostasis - Glucose Control
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Mon Sep 23 2024 11:24:48 GMT-0400 (Eastern Daylight Time)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Homeostasis - Glucose Control
Description:
Url: http://www.primordion.com/Xholon/gwt/
InternalName: 1d0923799df30043a46fb9e198630ac5
Keywords:
My Notes
--------
19 Sept 2024
I model the system(s) described in ref[1] and ref[2].
#### TODO do a second workbook - signals, messages (22 Sept)
- do a second workbook where insulin and glucagon are signals in Xholon sync/async messages
Homeostasis - Glucose Control 2
- see Wiener Cybernetics book (p. 8) where he discusses messages
"the much more fundamental notion of the message,
whether this should be transmitted by electrical, mechanical, or nervous means.
The message is a discrete or continuous sequence of measurable events distributed in time
precisely what is called a time series by the statisticians."
### Question 1
#### How exactly does glucose attching to a GLUT receptor, cause insulin and glucagon to be secreted into the blood ?
Does the glucose need to be brought into the cell? YES
Or does it just attach to a GLUT receptor and then activate a G protein? NO
- figure out exactly what the pancreas GLUT does. Is it a transporter or just a recognizer?
- GLUT means "glucose transporter"
- wikipedia "Beta cell" "Insulin secretion"
In beta cells, insulin release is stimulated primarily by glucose present in the blood.
As circulating glucose levels rise such as after ingesting a meal, insulin is secreted in a dose-dependent fashion.
This system of release is commonly referred to as glucose-stimulated insulin secretion (GSIS).
There are four key pieces to the triggering pathway of GSIS:
GLUT2 dependent glucose uptake,
glucose metabolism,
KATP channel closure, and
the opening of voltage gated calcium channels causing insulin granule fusion and exocytosis
Voltage-gated calcium channels and ATP-sensitive potassium ion channels are embedded in the plasma membrane of beta cells.
These ATP-sensitive potassium ion channels are normally open and the calcium ion channels are normally closed.[4] Potassium ions diffuse out of the cell,
down their concentration gradient, making the inside of the cell more negative with respect to the outside (as potassium ions carry a positive charge).
At rest, this creates a potential difference across the cell surface membrane of -70mV.
When the glucose concentration outside the cell is high, glucose molecules move into the cell by facilitated diffusion, down its concentration gradient through the GLUT2 transporter.
Since beta cells use glucokinase to catalyze the first step of glycolysis, metabolism only occurs around physiological blood glucose levels and above.
Metabolism of the glucose produces ATP, which increases the ATP to ADP ratio.
The ATP-sensitive potassium ion channels close when this ratio rises.
This means that potassium ions can no longer diffuse out of the cell.
As a result, the potential difference across the membrane becomes more positive (as potassium ions accumulate inside the cell).
This change in potential difference opens the voltage-gated calcium channels, which allows calcium ions from outside the cell to diffuse in down their concentration gradient.
When the calcium ions enter the cell, they cause vesicles containing insulin to move to, and fuse with, the cell surface membrane, releasing insulin by exocytosis into the hepatic portal vein.
In addition to the triggering pathway, the amplifying pathway can cause increased insulin secretion without a further increase in intracellular calcium levels.
The amplifying pathway is modulated by byproducts of glucose metabolism along with various intracellular signaling pathways.
- GLUT2 does move glucose from the blood into the Beta cell; also GLUT1 and GLUT3 ?
### References
(1) youtube, "Homeostasis" by Ninja Nerd
(2) Anatomy and Physiology 2e, J. Gordon Betts et al., openstax, 2022, Rice University
open textbook
p. 693-700
17.9 The Endocrine Pancreas
17.10 Organs with Secondary Endocrine Functions
(3) https://en.wikipedia.org/wiki/Pancreas
() https://en.wikipedia.org/wiki/Beta_cell
() https://en.wikipedia.org/wiki/Glucose_transporter
Glucose transporters are a wide group of membrane proteins that facilitate the transport of glucose across the plasma membrane, a process known as facilitated diffusion.
Because glucose is a vital source of energy for all life, these transporters are present in all phyla.
The GLUT or SLC2A family are a protein family that is found in most mammalian cells. 14 GLUTS are encoded by the human genome.
GLUT is a type of uniporter transporter protein.
() https://en.wikipedia.org/wiki/Facilitated_diffusion
() https://en.wikipedia.org/wiki/Uniporter
Uniporters, also known as solute carriers or facilitated transporters, are a type of membrane transport protein that
passively transports solutes (small molecules, ions, or other substances) across a cell membrane.
It uses facilitated diffusion for the movement of solutes down their concentration gradient
from an area of high concentration to an area of low concentration.
Unlike active transport, it does not require energy in the form of ATP to function.
Uniporters are specialized to carry one specific ion or molecule and can be categorized as either channels or carriers.
Facilitated diffusion may occur through three mechanisms: uniport, symport, or antiport.
The difference between each mechanism depends on the direction of transport,
in which uniport is the only transport not coupled to the transport of another solute
() https://en.wikipedia.org/wiki/GLUT1
() https://en.wikipedia.org/wiki/GLUT2
() https://en.wikipedia.org/wiki/Blood
Blood is a body fluid in the circulatory system of humans and other vertebrates that delivers necessary substances such as nutrients and oxygen to the cells,
and transports metabolic waste products away from those same cells.
Blood is composed of blood cells suspended in blood plasma.
Plasma, which constitutes 55% of blood fluid, is mostly water (92% by volume), and contains proteins, glucose, mineral ions, and hormones.
The blood cells are mainly red blood cells (erythrocytes), white blood cells (leukocytes), and (in mammals) platelets (thrombocytes).
The most abundant cells are red blood cells.
These contain hemoglobin, which facilitates oxygen transport by reversibly binding to it, increasing its solubility.
Blood is circulated around the body through blood vessels by the pumping action of the heart.
In animals with lungs, arterial blood carries oxygen from inhaled air to the tissues of the body, and venous blood carries carbon dioxide,
a waste product of metabolism produced by cells, from the tissues to the lungs to be exhaled.
Blood is bright red when its hemoglobin is oxygenated and dark red when it is deoxygenated.
() https://www.howstuffworks.com/
) https://health.howstuffworks.com/
) https://science.howstuffworks.com/
21 Sept 2024 - these sites have some in-depth descriptions of insulin, diabetes, etc.
() https://health.howstuffworks.com/diseases-conditions/diabetes/diabetes.htm
How Diabetes Works, By: Craig Freudenrich, Ph.D.
- in-depth article, contains detailed color diagrams
- this is the only really in-depth article I found; good summary
() https://science.howstuffworks.com/life/cellular-microscopic/fat-cell.htm
How Fat Cells Work, By: Craig Freudenrich, Ph.D.
- a series of short articles
()
]]></Notes>
<_-.XholonClass>
<GlucoseControlSystem/>
<!-- Physical Biology parts -->
<Organ>
<Pancreas/>
<Liver/>
<Kidney/>
<Intestines superClass="Script"/>
<BloodStream/>
</Organ>
<PancreaticIslet/>
<BloodVessel/>
<Plasma/>
<Cell>
<BloodCell/>
<AlphaCell superClass="Script"/> <!-- secrete glucagon -->
<BetaCell superClass="Script"/> <!-- secrete insulin; Beta cells are the only site of insulin synthesis in mammals. -->
<DeltaCell superClass="Script"/> <!-- secrete somatostatin -->
<PPCell/>
<MuscleCell superClass="Script"/> <!-- I assume these take Glucose in Insulin is available ??? -->
<FatCell/> <!-- Adipose -->
</Cell>
<CellMembrane/> <!-- cell membrane includes the bilayer and the receptors -->
<CellBilayer/>
<!-- receptors -->
<GlucoseTransporter superClass="Script"> <!-- there are several types of GLUT receptors -->
<Glut/> <!-- A generic GlucoseTransporter I can use for now, while I figure out which specific GLUTi to use in different cases in my model -->
<GLUT1>
<!-- GLUT1 facilitates the transport of glucose across the plasma membranes of mammalian cells. -->
</GLUT1>
<GLUT2>
<!-- Glucose transporter 2 (GLUT2)
a transmembrane carrier protein that enables protein facilitated glucose movement across cell membranes.
It is the principal transporter for transfer of glucose between liver and blood.
Unlike GLUT4, it does not rely on insulin for facilitated diffusion. -->
</GLUT2>
<GLUT3>
<!-- GLUT3 facilitates the transport of glucose across the plasma membranes of mammalian cells.
GLUT3 is most known for its specific expression in neurons and has originally been designated as the neuronal GLUT.
GLUT3 has been studied in other cell types with specific glucose requirements, including sperm, preimplantation embryos,
circulating white blood cells and carcinoma cell lines. -->
</GLUT3>
<GLUT4>
<!-- GLUT4 is the insulin-regulated glucose transporter found primarily in adipose tissues and striated muscle (skeletal and cardiac). -->
</GLUT4>
</GlucoseTransporter>
<!-- Molecules -->
<Glucose/> <!-- a simple sugar; main source of energy for cells -->
<Pyruvate/> <!-- a passive object that keeps count of how many Pyruvate molecules are currently present -->
<Atp/>
<AminoAcid/>
<!-- chains -->
<Glycogen/> <!-- chains of glucose -->
<Hormone>
<Insulin/>
<Glucagon/>
<Somatostatin/> <!-- inhibit the release of both glucagon and insulin -->
</Hormone>
<Glycerol/>
<FattyAcid/>
<Glycagen/>
<!-- Homeostasis parts, roles played by the physical parts -->
<Stimulus/>
<Receptor/> <!-- sensor -->
<ControlCenter/>
<Signal>
<EfferentSignal/>
</Signal>
<Effector/>
<SetPoint/> <!-- ex: blood needs to maintain a constant glucose level; a range; 90 mg per 100 ml of blood -->
<Homeostasis/> <!-- not sure if I can use this directly -->
<!-- metabolic and other pathways -->
<Pathway superClass="Script">
<Glycolysis/>
<Gluconeogenesis/>
</Pathway>
<Food>
<!-- we eat food; our intestines break it down into Glucose, etc. -->
<Rabbit/>
</Food>
<!-- NO <Food superClass="Attribute_int"/>-->
<BrChannelGlucoseR superClass="Script"/> <!-- receiver -->
</_-.XholonClass>
<xholonClassDetails>
<Pyruvate xhType="XhtypePurePassiveObject"/>
<Atp xhType="XhtypePurePassiveObject"/>
<!--<Food xhType="XhtypePurePassiveObject"/>-->
<AlphaCell><DefaultContent><![CDATA[
var me, beh = {
postConfigure: function() {
me = this.cnode;
me.println(`${me.name()}`);
},
act: function() {
me.println(me.name());
me.append("<Glucagon/>");
},
processReceivedMessage: function(msg) {
me.println(`${me.name()} received msg |${msg.signal} ${msg.data}| from ${msg.sender.name()}`);
}
}
//# sourceURL=AlphaCell.js
]]></DefaultContent></AlphaCell>
<BetaCell><DefaultContent><![CDATA[
var me, plasma, beh = {
postConfigure: function() {
me = this.cnode;
me.println(`${me.name()}`);
// NO me.append('<CellMembrane><CellBilayer/><GlucoseTransporter multiplicity="5"/></CellMembrane>');
plasma = me.xpath("ancestor::GlucoseControlSystem/BloodVessel/Plasma");
},
act: function() {
me.println(me.name());
//me.append("<Insulin/>");
const insulin = me.xpath("Insulin");
if (insulin) {
plasma.append(insulin.remove());
}
},
processReceivedMessage: function(msg) {
me.println(`${me.name()} received msg |${msg.signal} ${msg.data}| from ${msg.sender.name()}`);
}
}
//# sourceURL=BetaCell.js
]]></DefaultContent></BetaCell>
<DeltaCell><DefaultContent><![CDATA[
var me, beh = {
postConfigure: function() {
me = this.cnode;
me.println(`${me.name()}`);
},
act: function() {
me.println(me.name());
me.append("<Somatostatin/>");
},
processReceivedMessage: function(msg) {
me.println(`${me.name()} received msg |${msg.signal} ${msg.data}| from ${msg.sender.name()}`);
}
}
//# sourceURL=DeltaCell.js
]]></DefaultContent></DeltaCell>
<!-- This is a generic GlucoseTransporter, that does its thing based on which type of PancreaticIslet cell it's in: Alpha, Beta, or Delta -->
<Glut><DefaultContent><![CDATA[
var me, mycell, celltype, plasma, beh = {
postConfigure: function() {
me = this.cnode;
// this.plant.xpath("ancestor::IslandSystem/PlantBehaviors").append(this.cnode.remove());
mycell = me.xpath("ancestor::CellMembrane/..");
celltype = mycell.xhc().name();
plasma = mycell.xpath("ancestor::GlucoseControlSystem/BloodVessel/Plasma");
me.println(`I am ${me.name()} inside a ${celltype} with access to ${plasma.name()}`);
},
act: function() {
me.println(me.name());
this.transport();
},
processReceivedMessage: function(msg) {
me.println(`${me.name()} received msg |${msg.signal} ${msg.data}| from ${msg.sender.name()}`);
},
transport: function() {
switch(celltype) {
case "AlphaCell": break;
case "BetaCell": this.transportBeta(); break;
case "DeltaCell": break;
default: break;
}
},
transportBeta: function() {
if (plasma) {
me.println("I am a Beta Cell transporting glucose from a BloodVessel/Plasma");
const glucose = plasma.xpath("Glucose"); // Glucose is partly acting as a signal here
if (glucose) {
mycell.append(glucose.remove()); // the glucose remains as a potential source of energy
mycell.append("<Insulin/>");
//glucose.remove(); // move glucose to the Glycolysis Cycle to produce ATP BetaCell should do this
// move insulin to the plasma BetaCell should do this
}
else {
plasma = plasma.next();
}
}
}
}
//# sourceURL=Glut.js
]]></DefaultContent></Glut>
<!-- Glycolysis is a common metabolic pathway that converts Glucose into Pyruvate -->
<Glycolysis><DefaultContent><![CDATA[
var me, mycell, pyruvate, atp, beh = {
postConfigure: function() {
me = this.cnode;
me.println(`${me.name()}`);
mycell = me.parent().parent();
pyruvate = me.xpath("../Pyruvate");
atp = me.xpath("../Atp");
},
act: function() {
me.println(me.name());
me.println(`pyruvate ${pyruvate.name()} ${pyruvate.val()}`);
const glucose = mycell.xpath("Glucose");
if (glucose) {
pyruvate.inc(1);
atp.inc(1);
glucose.remove();
}
}
}
//# sourceURL=Glycolysis.js
]]></DefaultContent></Glycolysis>
<MuscleCell><DefaultContent><![CDATA[
var me, beh = {
postConfigure: function() {
me = this.cnode;
me.println(`${me.name()}`);
},
act: function() {
me.println(me.name());
// TODO take up Glucose from the Blood if Insulin is available in the Blood ???
}
}
//# sourceURL=MuscleCell.js
]]></DefaultContent></MuscleCell>
<Intestines><DefaultContent><![CDATA[
var me, food, plasma, beh = {
postConfigure: function() {
me = this.cnode;
me.println(`${me.name()}`);
food = me.xpath("../Food");
plasma = me.xpath("../BloodVessel/Plasma");
},
act: function() {
me.println(me.name());
const foodval = food.amount; // food.val() does NOT work
if (foodval > 0) {
const newval = foodval - 1;
food.amount = foodval - 1;
plasma.append("<Glucose/>");
}
}
}
//# sourceURL=Intestines.js
]]></DefaultContent></Intestines>
<GlucoseTransporter><Color>green</Color></GlucoseTransporter>
<Avatar><Color>red</Color></Avatar>
</xholonClassDetails>
<GlucoseControlSystem>
<!-- NO <Food><Attribute_int>1000</Attribute_int></Food>--> <!-- 1000 units of food energy -->
<Food amount="200"/>
<!-- maybe this will work? <Attribute_int roleName="val">15</Attribute_int> -->
<Pancreas>
<PancreaticIslet>
<AlphaCell><CellMembrane><CellBilayer/><Glut/></CellMembrane></AlphaCell>
<BetaCell>
<CellMembrane>
<CellBilayer/>
<Glut multiplicity="5"/>
</CellMembrane>
<Cytoplasm>
<Glycolysis/>
<Pyruvate/>
<Atp/>
</Cytoplasm>
</BetaCell>
<DeltaCell/>
<PPCell/>
</PancreaticIslet>
</Pancreas>
<Liver/>
<Intestines/> <!-- something in the Intestines could turn food into glucose -->
<!-- BloodStream ??? -->
<BloodVessel>
<BloodCell multiplicity="10"/>
<Plasma multiplicity="7"><Glucose multiplicity="10"/></Plasma>
</BloodVessel>
<MuscleCell/>
<!-- link to the Xholon "Digestive System" workbook -->
<DigestiveSystem>
<Annotation>https://primordion.com/Xholon/gwt/Xholon.html?app=7d71e5fb775e139ded0b6a8e3b58f01c&amp;src=gist&amp;gui=clsc</Annotation>
</DigestiveSystem>
<!-- example of how to provide a link to another Xholon workbook -->
<Rabbit>
<Annotation>https://www.primordion.com/Xholon/gwt/Xholon.html?app=04bef197a0cc61a5a31d&amp;src=gist&amp;gui=none&amp;hide=xhtabs,xhfooter</Annotation>
</Rabbit>
<!-- receiver - test from "Digestive System" workbook in a different tab in the same browser, using Broadcast Channel -->
<BrChannelGlucoseR roleName="Receiver"><![CDATA[
var me, bc, plasma, beh = {
postConfigure: function() {
me = this.cnode;
me.println(me.name());
console.log(me.name());
plasma = me.xpath("../BloodVessel/Plasma[2]");
bc = new BroadcastChannel('glucose_channel');
bc.onmessage = (event) => {
console.log(event);
const edata = event.data; // should be {Glucose: n} where n is the number of Glucose molecules
me.println(edata);
const json = JSON.parse(edata);
plasma.append(`<Glucose/>`);
};
},
act: function() {
me.println(me.name());
}
}
//# sourceURL=BrChannelGlucoseR.js
]]></BrChannelGlucoseR>
</GlucoseControlSystem>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Block</title>
<rect id="GlucoseControlSystem/Pancreas" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<g>
<title>Height</title>
<rect id="GlucoseControlSystem/Pancreas/PancreaticIslet" fill="#6AB06A" height="50" width="10" x="80" y="0"/>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment