Bläddra i källkod

Adding humanHG_withHairPC to alleviate burden of computing large values with high accuracy, adding a dump compartment that doesn't get computed, removing hairPC references from non hairPC calculation

Andrej 2 år sedan
förälder
incheckning
c8cb3953b6

+ 0 - 1
models/humanHG.json

@@ -67,6 +67,5 @@
        "liver":"liverPC",
        "gut":"gutPC",
        "brain->venous":"brainPC",
-       "hair->venous":"hairPC",
        "redBloodCells->plasma":"rbcPC"}
 }

+ 0 - 6
models/humanHG_parameters1.json

@@ -6,8 +6,6 @@
         "brainPC":{"value":3,"dist":"lognormal","cv":0.3},
         "fatPC":{"value":0.15,"dist":"lognormal","cv":0.3},
         "gutPC":{"value":1,"dist":"lognormal","cv":0.7},
-        "hairPC":{"derived":"hairPC"},
-        "hairPCBlood":{"value":248.7,"dist":"lognormal","cv":0.7},
         "kidneyPC":{"value":4.0,"dist":"lognormal","cv":0.3},
         "liverPC":{"value":5.0,"dist":"lognormal","cv":0.3},
         "rbcPC":{"value":12.0,"dist":"lognormal","cv":0.3},
@@ -176,10 +174,6 @@
            "type":"product",
            "a":"intestineVolumeFraction",
            "b":"bodyWeight"},
-       "hairPC":{
-          "type":"ratio",
-          "a":"hairPCBlood",
-          "b":"slowlyPerfusedPC"},
        "kB":{
           "type":"product",
           "a":"kBScaled",

+ 4 - 3
models/humanHG_withHairPC.json

@@ -49,8 +49,9 @@
          "redBloodCells->plasma":"kRBC",
          "kidney->urine":"kU",
          "slowlyPerfused->hair":"kH",
-         "hair->venous":"kH",
+         "hair->dump":"kH",
          "brainBlood->brain":"kBR",
+         "brain->venous":"kBR",
          "liver->intestine":"kB",
          "liver->inorganicMercury":"kI",
          "intestine->gut":"kR",
@@ -66,7 +67,7 @@
        "brainBlood":"brainBloodPC",
        "liver":"liverPC",
        "gut":"gutPC",
-       "brainBlood->brain":"brainPC",
-       "hair->venous":"hairPC",
+       "brain->venous":"brainPC",
+       "hair->dump":"hairPC",
        "redBloodCells->plasma":"rbcPC"}
 }

+ 223 - 0
models/humanHG_withHairPC_parameters.json

@@ -0,0 +1,223 @@
+{"parameters":{
+        "bodyWeight":{"value":67.77,"units":"kg","dist":"lognormal","cv":0.26},
+        "bwPower0p75":{"derived":"bwPower0p75"},
+        "commentPC":"X",
+        "brainBloodPC":{"value":1,"dist":"lognormal","cv":0.3},
+        "brainPC":{"value":3,"dist":"lognormal","cv":0.3},
+        "fatPC":{"value":0.15,"dist":"lognormal","cv":0.3},
+        "gutPC":{"value":1,"dist":"lognormal","cv":0.7},
+        "hairPC":{"derived":"hairPC"},
+        "hairPCBlood":{"value":248.7,"dist":"lognormal","cv":0.7},
+        "kidneyPC":{"value":4.0,"dist":"lognormal","cv":0.3},
+        "liverPC":{"value":5.0,"dist":"lognormal","cv":0.3},
+        "rbcPC":{"value":12.0,"dist":"lognormal","cv":0.3},
+        "richlyPerfusedPC":{"value":1.0,"dist":"lognormal","cv":0.3},
+        "slowlyPerfusedPC":{"value":2.0,"dist":"lognormal","cv":0.3},
+        "commentCardiacOutput":"X",
+        "cardiacOutput":{"derived":"cardiacOutput"},
+        "cardiacOutputScaled":{"value":0.333,"unit":"l/min","dist":"normal","cv":0.22},
+        "commentFlows":"X",
+        "plasmaFlow":{"derived":"plasmaFlow"},
+        "kidneyFlow":{"derived":"kidneyFlow"},
+        "richlyPerfusedFlow":{"derived":"richlyPerfusedFlow"},
+        "fatFlow":{"derived":"fatFlow"},
+        "slowlyPerfusedFlow":{"derived":"slowlyPerfusedFlow"},
+        "brainBloodFlow":{"derived":"brainBloodFlow"},
+        "liverInFlow":{"derived":"liverInFlow"},
+        "liverOutFlow":{"derived":"liverOutFlow"},
+        "gutFlow":{"derived":"gutFlow"},
+        "commentFlowFraction":"X",
+        "plasmaFlowFraction":{"value":1},
+        "kidneyFlowFraction":{"value":0.175,"dist":"normal","cv":0.3},
+        "richlyPerfusedFlowFraction":{"value":0.183,"dist":"normal","cv":0.3},
+        "fatFlowFraction":{"value":0.052,"dist":"normal","cv":0.3},
+        "slowlyPerfusedFlowFraction":{"value":0.249,"dist":"normal","cv":0.3},
+        "brainBloodFlowFraction":{"value":0.114,"dist":"normal","cv":0.3},
+        "liverInFlowFraction":{"value":0.046,"dist":"normal","cv":0.32},
+        "commentLiverOutFlow":"sum of liver in and gut",
+        "liverOutFlowFraction":{"value":0.227,"dist":"normal","cv":0.3},
+        "gutFlowFraction":{"value":0.181,"dist":"normal","cv":0.33},
+        "commentVolumes":"X",
+        "plasmaVolume":{"derived":"plasmaVolume"},
+        "redBloodCellsVolume":{"derived":"redBloodCellsVolume"},
+        "kidneyVolume":{"derived":"kidneyVolume"},
+        "richlyPerfusedVolume":{"derived":"richlyPerfusedVolume"},
+        "fatVolume":{"derived":"fatVolume"},
+        "hairVolume":{"value":1e-3},
+        "slowlyPerfusedVolume":{"derived":"slowlyPerfusedVolume"},
+        "brainBloodVolume":{"derived":"brainBloodVolume"},
+        "brainVolume":{"derived":"brainVolume"},
+        "liverVolume":{"derived":"liverVolume"},
+        "gutVolume":{"derived":"gutVolume"},
+        "intestineVolume":{"derived":"intestineVolume"},
+        "commentFractions":"X",
+        "plasmaVolumeFraction":{"value":0.024,"dist":"normal","cv":0.14},
+        "redBloodCellsVolumeFraction":{"value":0.024,"dist":"normal","cv":0.25},
+        "kidneyVolumeFraction":{"value":0.004,"dist":"normal","cv":0.3},
+        "richlyPerfusedVolumeFraction":{"value":0.1,"dist":"normal","cv":0.3},
+        "fatVolumeFraction":{"value":0.273,"dist":"normal","cv":0.24},
+        "hairVolumeFraction":{"value":0.002,"dist":"normal","cv":0.5},
+        "slowlyPerfusedVolumeFraction":{"value":0.35,"dist":"normal","cv":0.16},
+        "brainBloodVolumeFraction":{"value":0.007,"dist":"normal","cv":0.3},
+        "brainVolumeFraction":{"value":0.02,"dist":"normal","cv":0.3},
+        "liverVolumeFraction":{"value":0.026,"dist":"normal","cv":0.25},
+        "gutVolumeFraction":{"value":0.017,"dist":"normal","cv":0.15},
+        "intestineVolumeFraction":{"value":0.14,"dist":"normal","cv":0.3},
+        "commentDiff":"X",
+        "kB":{"derived":"kB"},
+        "kBR":{"derived":"kBR"},
+        "kD":{"derived":"kD"},
+        "kF":{"derived":"kF"},
+        "kH":{"derived":"kH"},
+        "kI":{"derived":"kI"},
+        "kIF":{"derived":"kIF"},
+        "kRBC":{"derived":"kRBC"},
+        "kR":{"derived":"kR"},
+        "kU":{"derived":"kU"},
+        "commentDiffScaled":"X",
+        "kBScaled":{"value":1.67e-6,"unit":"l/min","dist":"lognormal","cv":0.3},
+        "kBRScaled":{"value":1.67e-4,"unit":"l/min","dist":"lognormal","cv":0.3},
+        "kDScaled":{"value":1.67e-6,"unit":"l/min","dist":"lognormal","cv":0.3},
+        "kFScaled":{"value":3.33e-6,"unit":"l/min","dist":"lognormal","cv":0.36},
+        "kHScaled":{"value":1.17e-7,"unit":"l/min","dist":"lognormal","cv":0.25},
+        "kIScaled":{"value":1.67e-5,"unit":"l/min","dist":"lognormal","cv":0.3},
+        "kIFScaled":{"value":0,"unit":"l/min","noDist":"lognormal","cv":0.3},
+        "kRBCScaled":{"value":2.5e-2,"unit":"l/min","dist":"lognormal","cv":0.3},
+        "kRScaled":{"value":8.33e-5,"unit":"l/min","dist":"lognormal","cv":0.3},
+        "kUScaled":{"value":0,"unit":"l/min"},
+        "zero":{"value":0},
+        "threeQuarters":{"value":0.75}},
+    "derivedParameters":{
+       "bwPower0p75":{
+          "type":"power",
+          "a":"bodyWeight",
+          "n":"threeQuarters"},
+       "cardiacOutput":{
+          "type":"product",
+          "a":"cardiacOutputScaled",
+          "b":"bwPower0p75"},
+        "plasmaFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"plasmaFlowFraction"},
+        "kidneyFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"kidneyFlowFraction"},
+        "richlyPerfusedFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"richlyPerfusedFlowFraction"},
+        "fatFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"fatFlowFraction"},
+        "slowlyPerfusedFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"slowlyPerfusedFlowFraction"},
+        "brainBloodFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"brainBloodFlowFraction"},
+        "liverInFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"liverInFlowFraction"},
+        "liverOutFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"liverOutFlowFraction"},
+        "gutFlow":{
+           "type":"product",
+           "a":"cardiacOutput",
+           "b":"gutFlowFraction"},
+        "plasmaVolume":{
+           "type":"product",
+           "a":"plasmaVolumeFraction",
+           "b":"bodyWeight"},
+        "redBloodCellsVolume":{
+           "type":"product",
+           "a":"redBloodCellsVolumeFraction",
+           "b":"bodyWeight"},
+        "kidneyVolume":{
+           "type":"product",
+           "a":"kidneyVolumeFraction",
+           "b":"bodyWeight"},
+        "richlyPerfusedVolume":{
+           "type":"product",
+           "a":"richlyPerfusedVolumeFraction",
+           "b":"bodyWeight"},
+        "fatVolume":{
+           "type":"product",
+           "a":"fatVolumeFraction",
+           "b":"bodyWeight"},
+        "slowlyPerfusedVolume":{
+           "type":"product",
+           "a":"slowlyPerfusedVolumeFraction",
+           "b":"bodyWeight"},
+        "brainBloodVolume":{
+           "type":"product",
+           "a":"brainBloodVolumeFraction",
+           "b":"bodyWeight"},
+        "brainVolume":{
+           "type":"product",
+           "a":"brainVolumeFraction",
+           "b":"bodyWeight"},
+        "liverVolume":{
+           "type":"product",
+           "a":"liverVolumeFraction",
+           "b":"bodyWeight"},
+        "gutVolume":{
+           "type":"product",
+           "a":"gutVolumeFraction",
+           "b":"bodyWeight"},
+        "intestineVolume":{
+           "type":"product",
+           "a":"intestineVolumeFraction",
+           "b":"bodyWeight"},
+       "hairPC":{
+          "type":"ratio",
+          "a":"hairPCBlood",
+          "b":"slowlyPerfusedPC"},
+       "kB":{
+          "type":"product",
+          "a":"kBScaled",
+          "b":"bwPower0p75"},
+       "kBR":{
+          "type":"product",
+          "a":"kBRScaled",
+          "b":"bwPower0p75"},
+       "kD":{
+          "type":"product",
+          "a":"kDScaled",
+          "b":"bwPower0p75"},
+       "kF":{
+          "type":"product",
+          "a":"kFScaled",
+          "b":"bwPower0p75"},
+       "kH":{
+          "type":"product",
+          "a":"kHScaled",
+          "b":"bwPower0p75"},
+       "kI":{
+          "type":"product",
+          "a":"kIScaled",
+          "b":"bwPower0p75"},
+       "kIF":{
+          "type":"product",
+          "a":"kIFScaled",
+          "b":"bwPower0p75"},
+       "kRBC":{
+          "type":"product",
+          "a":"kRBCScaled",
+          "b":"bwPower0p75"},
+       "kR":{
+          "type":"product",
+          "a":"kRScaled",
+          "b":"bwPower0p75"},
+       "kU":{
+          "type":"product",
+          "a":"kUScaled",
+          "b":"bwPower0p75"}}
+}

+ 11 - 5
pythonScripts/cModel.py

@@ -32,18 +32,24 @@ class model:
       
 
       #establish a flow from source compartment to the target
-
-      #get volume names
-      srcVName=self.getVolumePar(src,useVolume)
-      targetVName=self.getVolumePar(target,useVolume)
       
       #the source equation (where we subtract the current)
       #in fact, this is the diagonal element
+      #get volume names
+      srcVName=self.getVolumePar(src,useVolume)
+      #generate coupling object (w/derivatives)    
       pSrc=self.couplingObject(-1,qName,pcName,srcVName)
       #this includes derivatives and value!
       self.addValueObject(src,src,pSrc)
-      
+     
+      #special target which is not part of calculation
+      if target=='dump':
+         return
+
       #the target equation (where we add the current)
+      #get volume names
+      targetVName=self.getVolumePar(target,useVolume)
+      #generate coupling object
       pTarget=self.couplingObject(1,qName,pcName,targetVName)
       #equation is for target compartment, but binding for source
       self.addValueObject(target,src,pTarget)

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 76 - 8
pythonScripts/compartmentModel.ipynb


Vissa filer visades inte eftersom för många filer har ändrats