Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
208 changes: 208 additions & 0 deletions humanc/auto1.graphml
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd" xmlns:y="http://www.yworks.com/xml/graphml">
<key for="node" id="d6" yfiles.type="nodegraphics"/>
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
<graph edgedefault="directed" id="1662143445946" projectName="autonomous">
<node id="550865d1-28a3-40a9-9e25-d3b68ad277d6">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="50" width="148" x="245" y="85"/>
<y:Fill color="#ffcc00" opacity="1"/>
<y:BorderStyle color="#000" width="1"/>
<y:NodeLabel>PZ:cardiac_pm.py</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="36b9f1df-7c84-4f07-8fce-c4a6f6462931">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="50" width="193" x="252" y="264"/>
<y:Fill color="#ffcc00" opacity="1"/>
<y:BorderStyle color="#000" width="1"/>
<y:NodeLabel>CZ:dummy_controller.py</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="4b860aae-05c9-4eb5-bc48-f8000ccb42a8">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="50" width="114" x="507" y="160"/>
<y:Fill color="#ffcc00" opacity="1"/>
<y:BorderStyle color="#000" width="1"/>
<y:NodeLabel>XZ:plotym.py</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<edge id="0" source="550865d1-28a3-40a9-9e25-d3b68ad277d6" target="4b860aae-05c9-4eb5-bc48-f8000ccb42a8">
<data key="d10">
<y:GenericEdge configuration="com.yworks.bpmn.Connection">
<y:LineStyle color="#7c4dff" width="1" type="solid"/>
<y:Arrows source="none" target="delta"/>
<y:EdgeLabel>PYM</y:EdgeLabel>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="413" y="133.09160305343514"/>
</y:Path>
</y:GenericEdge>
</data>
</edge>
<edge id="1" source="36b9f1df-7c84-4f07-8fce-c4a6f6462931" target="550865d1-28a3-40a9-9e25-d3b68ad277d6">
<data key="d10">
<y:GenericEdge configuration="com.yworks.bpmn.Connection">
<y:LineStyle color="#f44336" width="1" type="solid"/>
<y:Arrows source="none" target="delta"/>
<y:EdgeLabel>CU</y:EdgeLabel>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="248.0111731843575" y="162"/>
</y:Path>
</y:GenericEdge>
</data>
</edge>
<edge id="2" source="4b860aae-05c9-4eb5-bc48-f8000ccb42a8" target="36b9f1df-7c84-4f07-8fce-c4a6f6462931">
<data key="d10">
<y:GenericEdge configuration="com.yworks.bpmn.Connection">
<y:LineStyle color="#1565c0" width="1" type="solid"/>
<y:Arrows source="none" target="delta"/>
<y:EdgeLabel>XYM</y:EdgeLabel>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="351" y="223.62352941176476"/>
</y:Path>
</y:GenericEdge>
</data>
</edge>
<actionHistory>
<tid>1644943336906</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>DEL_NODE</actionName>
<parameters>WyI1NTA4NjVkMS0yOGEzLTQwYTktOWUyNS1kM2I2OGFkMjc3ZDYiXQ==</parameters>
</inverse>
<equivalent>
<actionName>ADD_NODE</actionName>
<parameters>WyJQWjpjYXJkaWFjX3BtLnB5Iix7IndpZHRoIjoxNDgsImhlaWdodCI6NTAsInNoYXBlIjoicmVjdGFuZ2xlIiwib3BhY2l0eSI6MSwiYmFja2dyb3VuZENvbG9yIjoiI2ZmY2MwMCIsImJvcmRlckNvbG9yIjoiIzAwMCIsImJvcmRlcldpZHRoIjoxfSwib3JkaW4iLHsieCI6MjQ1LCJ5Ijo4NX0se30sIjU1MDg2NWQxLTI4YTMtNDBhOS05ZTI1LWQzYjY4YWQyNzdkNiJd</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943355554</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>DEL_NODE</actionName>
<parameters>WyIzNmI5ZjFkZi03Yzg0LTRmMDctOGZjZS1jNGE2ZjY0NjI5MzEiXQ==</parameters>
</inverse>
<equivalent>
<actionName>ADD_NODE</actionName>
<parameters>WyJDWjpkdW1teV9jb250cm9sbGVyLnB5Iix7IndpZHRoIjoxOTMsImhlaWdodCI6NTAsInNoYXBlIjoicmVjdGFuZ2xlIiwib3BhY2l0eSI6MSwiYmFja2dyb3VuZENvbG9yIjoiI2ZmY2MwMCIsImJvcmRlckNvbG9yIjoiIzAwMCIsImJvcmRlcldpZHRoIjoxfSwib3JkaW4iLHsieCI6MjUyLCJ5IjoyNjR9LHt9LCIzNmI5ZjFkZi03Yzg0LTRmMDctOGZjZS1jNGE2ZjY0NjI5MzEiXQ==</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943358106</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>SET_POS</actionName>
<parameters>WyIzNmI5ZjFkZi03Yzg0LTRmMDctOGZjZS1jNGE2ZjY0NjI5MzEiLHsieCI6MTEwLCJ5IjoxMTB9LHsieCI6MTM0LCJ5IjoyNjZ9XQ==</parameters>
</inverse>
<equivalent>
<actionName>SET_POS</actionName>
<parameters>WyIzNmI5ZjFkZi03Yzg0LTRmMDctOGZjZS1jNGE2ZjY0NjI5MzEiLHsieCI6MTM0LCJ5IjoyNjZ9LHsieCI6MTEwLCJ5IjoxMTB9XQ==</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943359494</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>SET_POS</actionName>
<parameters>WyI1NTA4NjVkMS0yOGEzLTQwYTktOWUyNS1kM2I2OGFkMjc3ZDYiLHsieCI6MTAwLCJ5IjoxMDB9LHsieCI6MjQ1LCJ5Ijo4NX1d</parameters>
</inverse>
<equivalent>
<actionName>SET_POS</actionName>
<parameters>WyI1NTA4NjVkMS0yOGEzLTQwYTktOWUyNS1kM2I2OGFkMjc3ZDYiLHsieCI6MjQ1LCJ5Ijo4NX0seyJ4IjoxMDAsInkiOjEwMH1d</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943362210</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>SET_POS</actionName>
<parameters>WyIzNmI5ZjFkZi03Yzg0LTRmMDctOGZjZS1jNGE2ZjY0NjI5MzEiLHsieCI6MTM0LCJ5IjoyNjZ9LHsieCI6MjUyLCJ5IjoyNjR9XQ==</parameters>
</inverse>
<equivalent>
<actionName>SET_POS</actionName>
<parameters>WyIzNmI5ZjFkZi03Yzg0LTRmMDctOGZjZS1jNGE2ZjY0NjI5MzEiLHsieCI6MjUyLCJ5IjoyNjR9LHsieCI6MTM0LCJ5IjoyNjZ9XQ==</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943375398</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>DEL_NODE</actionName>
<parameters>WyI0Yjg2MGFhZS0wNWM5LTRlYjUtYmM0OC1mODAwMGNjYjQyYTgiXQ==</parameters>
</inverse>
<equivalent>
<actionName>ADD_NODE</actionName>
<parameters>WyJYWjpwbG90eW0iLHsid2lkdGgiOjEwMCwiaGVpZ2h0Ijo1MCwic2hhcGUiOiJyZWN0YW5nbGUiLCJvcGFjaXR5IjoxLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJvcmRpbiIseyJ4Ijo1MDcsInkiOjE2MH0se30sIjRiODYwYWFlLTA1YzktNGViNS1iYzQ4LWY4MDAwY2NiNDJhOCJd</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943378630</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>SET_POS</actionName>
<parameters>WyI0Yjg2MGFhZS0wNWM5LTRlYjUtYmM0OC1mODAwMGNjYjQyYTgiLHsieCI6MTAwLCJ5IjoxMDB9LHsieCI6NTA3LCJ5IjoxNjB9XQ==</parameters>
</inverse>
<equivalent>
<actionName>SET_POS</actionName>
<parameters>WyI0Yjg2MGFhZS0wNWM5LTRlYjUtYmM0OC1mODAwMGNjYjQyYTgiLHsieCI6NTA3LCJ5IjoxNjB9LHsieCI6MTAwLCJ5IjoxMDB9XQ==</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943386853</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>DEL_EDGE</actionName>
<parameters>WyI0NzcwODQwZi04OGEwLTQ3NTItOWMxOS0yZTdmODlmOGZhNzkiXQ==</parameters>
</inverse>
<equivalent>
<actionName>ADD_EDGE</actionName>
<parameters>W3sic291cmNlSUQiOiI1NTA4NjVkMS0yOGEzLTQwYTktOWUyNS1kM2I2OGFkMjc3ZDYiLCJ0YXJnZXRJRCI6IjRiODYwYWFlLTA1YzktNGViNS1iYzQ4LWY4MDAwY2NiNDJhOCIsImxhYmVsIjoiUFlNIiwic3R5bGUiOnsidGhpY2tuZXNzIjoxLCJiYWNrZ3JvdW5kQ29sb3IiOiIjN2M0ZGZmIiwic2hhcGUiOiJzb2xpZCJ9LCJpZCI6IjQ3NzA4NDBmLTg4YTAtNDc1Mi05YzE5LTJlN2Y4OWY4ZmE3OSJ9XQ==</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943394719</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>DEL_EDGE</actionName>
<parameters>WyI3ZjJiMWM0Yy04ZjJmLTQyZjQtYjU1Yy0xY2RlNzdiMWU4NTIiXQ==</parameters>
</inverse>
<equivalent>
<actionName>ADD_EDGE</actionName>
<parameters>W3sic291cmNlSUQiOiIzNmI5ZjFkZi03Yzg0LTRmMDctOGZjZS1jNGE2ZjY0NjI5MzEiLCJ0YXJnZXRJRCI6IjU1MDg2NWQxLTI4YTMtNDBhOS05ZTI1LWQzYjY4YWQyNzdkNiIsImxhYmVsIjoiQ1UiLCJzdHlsZSI6eyJ0aGlja25lc3MiOjEsImJhY2tncm91bmRDb2xvciI6IiNmNDQzMzYiLCJzaGFwZSI6InNvbGlkIn0sImlkIjoiN2YyYjFjNGMtOGYyZi00MmY0LWI1NWMtMWNkZTc3YjFlODUyIn1d</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943403841</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>DEL_EDGE</actionName>
<parameters>WyIyZDdlZjk4ZS04Y2E5LTRhZjMtYWQxOS1hYzM0MTQ2ZmZlYmYiXQ==</parameters>
</inverse>
<equivalent>
<actionName>ADD_EDGE</actionName>
<parameters>W3sic291cmNlSUQiOiI0Yjg2MGFhZS0wNWM5LTRlYjUtYmM0OC1mODAwMGNjYjQyYTgiLCJ0YXJnZXRJRCI6IjM2YjlmMWRmLTdjODQtNGYwNy04ZmNlLWM0YTZmNjQ2MjkzMSIsImxhYmVsIjoiWFlNIiwic3R5bGUiOnsidGhpY2tuZXNzIjoxLCJiYWNrZ3JvdW5kQ29sb3IiOiIjMTU2NWMwIiwic2hhcGUiOiJzb2xpZCJ9LCJpZCI6IjJkN2VmOThlLThjYTktNGFmMy1hZDE5LWFjMzQxNDZmZmViZiJ9XQ==</parameters>
</equivalent>
</actionHistory>
<actionHistory>
<tid>1644943683422</tid>
<authorName>sanmi</authorName>
<inverse>
<actionName>UPDATE_NODE</actionName>
<parameters>WyI0Yjg2MGFhZS0wNWM5LTRlYjUtYmM0OC1mODAwMGNjYjQyYTgiLHsid2lkdGgiOjEwMCwiaGVpZ2h0Ijo1MCwic2hhcGUiOiJyZWN0YW5nbGUiLCJvcGFjaXR5IjoxLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJYWjpwbG90eW0iLHRydWVd</parameters>
</inverse>
<equivalent>
<actionName>UPDATE_NODE</actionName>
<parameters>WyI0Yjg2MGFhZS0wNWM5LTRlYjUtYmM0OC1mODAwMGNjYjQyYTgiLHsid2lkdGgiOjExNCwiaGVpZ2h0Ijo1MCwic2hhcGUiOiJyZWN0YW5nbGUiLCJvcGFjaXR5IjoxLCJiYWNrZ3JvdW5kQ29sb3IiOiIjZmZjYzAwIiwiYm9yZGVyQ29sb3IiOiIjMDAwIiwiYm9yZGVyV2lkdGgiOjF9LCJYWjpwbG90eW0ucHkiLHRydWVd</parameters>
</equivalent>
</actionHistory>
</graph>
</graphml>
30 changes: 30 additions & 0 deletions humanc/bangbang.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import numpy as np
import concore


def bangbang_controller(ym):
amp = 0
if ym[0]>70:
amp = 3
elif ym[0]<65:
amp = 1


ustar = np.array([amp,30])
return ustar


concore.default_maxtime(150)
concore.delay = 0.02
init_simtime_u = "[0.0, 0.0,0.0]"
init_simtime_ym = "[0.0, 70.0,91]"
u = np.array([concore.initval(init_simtime_u)]).T
while(concore.simtime<concore.maxtime):
while concore.unchanged():
ym = concore.read(1,"ym",init_simtime_ym)
ym = np.array(ym)

ustar = bangbang_controller(ym)

print(str(concore.simtime) + " u="+str(ustar) + "ym="+str(ym))
concore.write(1,"u",list(ustar),delta=0)
149 changes: 149 additions & 0 deletions humanc/cardiac_pm.dir/healthy_params.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@

"""
Created on Thu Sep 30 05:21:27 2021

@author: Sanmi
"""
import numpy as np




#cardiosystem

Csa = 0.28
Csp = 2.05
Cep = 1.36
Cmp = 0.31
Csv = 43.11
Cev = 28.4
Cmv = 6.6
Ctv = 33
Cpa = 0.67
Cpp = 5.80
Cpv = 25.37



Vusa = 0
Vusp = 274.4
Vuep = 274.1
Vusv = 986.48
Vuev = 484
Vupa = 0
Vupp = 123
Vupv = 120
Vumv = 93.1
Vump = 62.5
Vutv = 0


Rsa = 0.06
Rsp = 3.307
Rep = 1.725
Rmp = 4.13
Rsv = 0.038
Rev = 0.0197
Rmv = 0.0848
Rtv = 0.0054
Rpa = 0.023
Rpp = 0.0894
Rpv = 0.0056



Rd = 10000


P0 = 3.9

#left heart
Cla = 19.23
Vula = 25
Rla = 0.003
Polv = 1.5
Kelv = 0.014
Vulv = 16.77

KRlv = 0.0004

#right heart
Cra = 31.25
Vura = 25
Rra = 0.0025
Porv = 1.5
Kerv = 0.011
Vurv = 40.8
KRrv = 0.0014


ksys = 0.075
Tsys0 = 0.4
Vt = 5000


Lsa = 0.00022
Lpa = 0.00018

#baroreceptor
fbrmin = 2.52
tauz = 6.37
fbrmax = 47.78
taup = 2.067
Pn = 92
ka = 11.758

Tresp = 4

#cpr receptor
fmaxl = 20
Ptn = 10.8
kl = 11.758
taucp = 2

#lung stretch receptor
taulung = 2
Gal = 12
vlung0 = 0.583

#parasympathetic branch # br, cpr, lr

fmin = np.array([0.3, 0.451, 2.75])
midpt = np.array([44.3, 10.2, 10])
fmax = np.array([21.5, 28.357, 31.57 ])
k = np.array([2.14,1.636, 7.516])


kreceptor = np.array([[1,1,1],[0,1,1]])



#NA, DMV, NActr

foutmin = np.array([4.88, 2.59, 0.61])
foutmidpt = np.array([60, 43.1, 9.8])
foutmax = np.array([15.78,6.66, 11])
foutk = np.array([2.55, 1.24, 1.2])

#T, Emaxlv, Emaxrv effectors
tauv = np.array([1.5,2,2])
Gv = np.array([0.09, 0.205, 0.347])
dv = 0.2

#sympathetic branch
G = np.array([[1, 2, -1.1541],[1, 2.5, 0.33],[1,0,0]]) # br, cpr,lr,

fesinf = 2.1
fes0 = 16.11
fesmin = 2.66
kes = 0.0675

theta0 = np.array([0.58, 1.283, 0.757, 2.49, 0.96, 4.13, 1435.4, 1247, 290])

Gs = np.array([-0.13, -0.13, -0.22, 0.695, 0.653, 2.81, -265.4, -107.5, -25])
taus = np.array([2,2,2,6,6,6,20,20,6])
ds = np.array([2,2,2])


Vu = np.array([Vusa,Vusp,theta0[6], theta0[7],theta0[8], Vutv, Vura, Vupa, Vupp,Vupv, Vula, Vulv, Vurv])
xstart = np.concatenate((np.zeros(15),np.array([-0.25, 1, -0.25, 1]),Vu))
Loading