Source code for pkpd.pkpd_units

# **************************************************************************
# *
# * Authors:     Carlos Oscar Sorzano (info@kinestat.com)
# *
# * Kinestat Pharma
# *
# * This program is free software; you can redistribute it and/or modify
# * it under the terms of the GNU General Public License as published by
# * the Free Software Foundation; either version 2 of the License, or
# * (at your option) any later version.
# *
# * This program is distributed in the hope that it will be useful,
# * but WITHOUT ANY WARRANTY; without even the implied warranty of
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# * GNU General Public License for more details.
# *
# * You should have received a copy of the GNU General Public License
# * along with this program; if not, write to the Free Software
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# * 02111-1307  USA
# *
# *  All comments concerning this program package may be sent to the
# *  e-mail address 'info@kinestat.com'
# *
# **************************************************************************


[docs]class PKPDUnit: UNIT_TIME_H = 1 UNIT_TIME_MIN = 2 UNIT_TIME_SEC = 3 UNIT_INVTIME_H = 4 UNIT_INVTIME_MIN = 5 UNIT_INVTIME_SEC = 6 UNIT_CONC_g_L= 10 UNIT_CONC_mg_L= 11 UNIT_CONC_ug_L= 12 UNIT_CONC_ng_L= 13 UNIT_CONC_g_mL= 14 UNIT_CONC_g_uL= 15 UNIT_CONC_ug_mL= 16 UNIT_CONC_mmol_L= 17 UNIT_CONC_umol_L= 18 UNIT_CONC_nmol_L= 19 UNIT_CONC_mmol_mL= 20 UNIT_CONC_umol_mL= 21 UNIT_CONC_nmol_mL= 22 UNIT_VOLUME_L=30 UNIT_VOLUME_mL=31 UNIT_VOLUME_uL=32 UNIT_VOLUME_nL=33 UNIT_WEIGHT_kg= 100 UNIT_WEIGHT_g= 101 UNIT_WEIGHT_mg= 102 UNIT_WEIGHT_ug= 103 UNIT_WEIGHT_ng= 104 UNIT_WEIGHT_mmol= 105 UNIT_WEIGHT_umol= 106 UNIT_WEIGHT_nmol= 107 UNIT_TIMECONC_H_g_L = 200 UNIT_TIMECONC_H_mg_L = 201 UNIT_TIMECONC_H_ug_L = 202 UNIT_TIMECONC_H_ng_L = 203 UNIT_TIMECONC_H_g_mL = 204 UNIT_TIMECONC_H_g_uL = 205 UNIT_TIMECONC_H_ug_mL = 206 UNIT_TIMECONC_H_mmol_L = 207 UNIT_TIMECONC_H_umol_L = 208 UNIT_TIMECONC_H_nmol_L = 209 UNIT_TIMECONC_MIN_g_L = 220 UNIT_TIMECONC_MIN_mg_L = 221 UNIT_TIMECONC_MIN_ug_L = 222 UNIT_TIMECONC_MIN_ng_L = 223 UNIT_TIMECONC_MIN_g_mL = 224 UNIT_TIMECONC_MIN_g_uL = 225 UNIT_TIMECONC_MIN_ug_mL = 226 UNIT_TIMECONC_MIN_mmol_L = 227 UNIT_TIMECONC_MIN_umol_L = 228 UNIT_TIMECONC_MIN_nmol_L = 229 UNIT_TIME2CONC_H2_g_L = 250 UNIT_TIME2CONC_H2_mg_L = 251 UNIT_TIME2CONC_H2_ug_L = 252 UNIT_TIME2CONC_H2_ng_L = 253 UNIT_TIME2CONC_H2_g_mL = 254 UNIT_TIME2CONC_H2_g_uL = 255 UNIT_TIME2CONC_H2_ug_mL = 256 UNIT_TIME2CONC_H2_mmol_L = 257 UNIT_TIME2CONC_H2_umol_L = 258 UNIT_TIME2CONC_H2_nmol_L = 259 UNIT_TIME2CONC_MIN2_g_L = 270 UNIT_TIME2CONC_MIN2_mg_L = 271 UNIT_TIME2CONC_MIN2_ug_L = 272 UNIT_TIME2CONC_MIN2_ng_L = 273 UNIT_TIME2CONC_MIN2_g_mL = 274 UNIT_TIME2CONC_MIN2_g_uL = 275 UNIT_TIME2CONC_MIN2_ug_mL = 276 UNIT_TIME2CONC_MIN2_mmol_L = 277 UNIT_TIME2CONC_MIN2_umol_L = 278 UNIT_TIME2CONC_MIN2_nmol_L = 279 UNIT_VOLUMEINVTIME_L_H = 300 UNIT_VOLUMEINVTIME_mL_H = 301 UNIT_VOLUMEINVTIME_uL_H = 302 UNIT_VOLUMEINVTIME_nL_H = 303 UNIT_VOLUMEINVTIME_L_MIN = 304 UNIT_VOLUMEINVTIME_mL_MIN = 305 UNIT_VOLUMEINVTIME_uL_MIN = 306 UNIT_VOLUMEINVTIME_nL_MIN = 307 UNIT_VOLUMEINVTIME_L_SEC = 308 UNIT_VOLUMEINVTIME_mL_SEC = 309 UNIT_VOLUMEINVTIME_uL_SEC = 310 UNIT_VOLUMEINVTIME_nL_SEC = 311 UNIT_VOLUMEINVWEIGHT_L_kg = 312 UNIT_VOLUMEINVWEIGHT_L_g = 313 UNIT_WEIGHTINVTIME_kg_H = 350 UNIT_WEIGHTINVTIME_g_H = 351 UNIT_WEIGHTINVTIME_mg_H = 352 UNIT_WEIGHTINVTIME_ug_H = 353 UNIT_WEIGHTINVTIME_ng_H = 354 UNIT_WEIGHTINVTIME_kg_MIN = 355 UNIT_WEIGHTINVTIME_g_MIN = 356 UNIT_WEIGHTINVTIME_mg_MIN = 357 UNIT_WEIGHTINVTIME_ug_MIN = 358 UNIT_WEIGHTINVTIME_ng_MIN = 359 UNIT_WEIGHTINVTIME_kg_SEC = 360 UNIT_WEIGHTINVTIME_g_SEC = 361 UNIT_WEIGHTINVTIME_mg_SEC = 362 UNIT_WEIGHTINVTIME_ug_SEC = 363 UNIT_WEIGHTINVTIME_ng_SEC = 364 UNIT_WEIGHTINVTIME_mmol_H = 365 UNIT_WEIGHTINVTIME_umol_H = 366 UNIT_WEIGHTINVTIME_nmol_H = 367 UNIT_WEIGHTINVTIME_mmol_MIN = 368 UNIT_WEIGHTINVTIME_umol_MIN = 369 UNIT_WEIGHTINVTIME_nmol_MIN = 370 UNIT_WEIGHTINVTIME_mmol_SEC = 371 UNIT_WEIGHTINVTIME_umol_SEC = 372 UNIT_WEIGHTINVTIME_nmol_SEC = 373 UNIT_INVTIME2_MIN2 = 400 UNIT_PERCENTAGE = 410 UNIT_NONE = 99999 unitDictionary = { UNIT_TIME_H: "h", UNIT_TIME_MIN: "min", UNIT_TIME_SEC: "s", UNIT_INVTIME_H: "1/h", UNIT_INVTIME_MIN: "1/min", UNIT_INVTIME_SEC: "1/s", UNIT_CONC_g_L: "g/L", UNIT_CONC_mg_L: "mg/L", UNIT_CONC_ug_L: "ug/L", UNIT_CONC_ng_L: "ng/L", UNIT_CONC_g_mL: "g/mL", UNIT_CONC_g_uL: "g/uL", UNIT_CONC_ug_mL: "ug/mL", UNIT_CONC_mmol_L: "mmol/L", UNIT_CONC_umol_L: "umol/L", UNIT_CONC_nmol_L: "nmol/L", UNIT_CONC_mmol_mL: "mmol/mL", UNIT_CONC_umol_mL: "umol/mL", UNIT_CONC_nmol_mL: "nmol/mL", UNIT_VOLUME_L: "L", UNIT_VOLUME_mL: "mL", UNIT_VOLUME_uL: "uL", UNIT_VOLUME_nL: "nL", UNIT_WEIGHT_kg: "kg", UNIT_WEIGHT_g: "g", UNIT_WEIGHT_mg: "mg", UNIT_WEIGHT_ug: "ug", UNIT_WEIGHT_ng: "ng", UNIT_WEIGHT_mmol: "mmol", UNIT_WEIGHT_umol: "umol", UNIT_WEIGHT_nmol: "nmol", UNIT_NONE: "none", UNIT_TIMECONC_H_g_L: "g*h/L", UNIT_TIMECONC_H_mg_L: "mg*h/L", UNIT_TIMECONC_H_ug_L: "ug*h/L", UNIT_TIMECONC_H_ng_L: "ng*h/L", UNIT_TIMECONC_H_g_mL: "g*h/mL", UNIT_TIMECONC_H_g_uL: "g*h/uL", UNIT_TIMECONC_H_ug_mL: "ug*h/mL", UNIT_TIMECONC_H_mmol_L: "mmol*h/L", UNIT_TIMECONC_H_umol_L: "umol*h/L", UNIT_TIMECONC_H_nmol_L: "nmol*h/L", UNIT_TIMECONC_MIN_g_L: "g*min/L", UNIT_TIMECONC_MIN_mg_L: "mg*min/L", UNIT_TIMECONC_MIN_ug_L: "ug*min/L", UNIT_TIMECONC_MIN_ng_L: "ng*min/L", UNIT_TIMECONC_MIN_g_mL: "g*min/mL", UNIT_TIMECONC_MIN_g_uL: "g*min/uL", UNIT_TIMECONC_MIN_ug_mL: "ug*min/mL", UNIT_TIMECONC_MIN_mmol_L: "mmol*min/L", UNIT_TIMECONC_MIN_umol_L: "umol*min/L", UNIT_TIMECONC_MIN_nmol_L: "nmol*min/L", UNIT_TIME2CONC_H2_g_L: "g*h^2/L", UNIT_TIME2CONC_H2_mg_L: "mg*h^2/L", UNIT_TIME2CONC_H2_ug_L: "ug*h^2/L", UNIT_TIME2CONC_H2_ng_L: "ng*h^2/L", UNIT_TIME2CONC_H2_g_mL: "g*h^2/mL", UNIT_TIME2CONC_H2_g_uL: "g*h^2/uL", UNIT_TIME2CONC_H2_ug_mL: "ug*h^2/mL", UNIT_TIME2CONC_H2_mmol_L: "mmol*h^2/L", UNIT_TIME2CONC_H2_umol_L: "umol*h^2/L", UNIT_TIME2CONC_H2_nmol_L: "nmol*h^2/L", UNIT_TIME2CONC_MIN2_g_L: "g*min^2/L", UNIT_TIME2CONC_MIN2_mg_L: "mg*min^2/L", UNIT_TIME2CONC_MIN2_ug_L: "ug*min^2/L", UNIT_TIME2CONC_MIN2_ng_L: "ng*min^2/L", UNIT_TIME2CONC_MIN2_g_mL: "g*min^2/mL", UNIT_TIME2CONC_MIN2_g_uL: "g*min^2/uL", UNIT_TIME2CONC_MIN2_ug_mL: "ug*min^2/mL", UNIT_TIME2CONC_MIN2_mmol_L: "mmol*min^2/L", UNIT_TIME2CONC_MIN2_umol_L: "umol*min^2/L", UNIT_TIME2CONC_MIN2_nmol_L: "nmol*min^2/L", UNIT_VOLUMEINVTIME_L_H: "L/h", UNIT_VOLUMEINVTIME_mL_H: "mL/h", UNIT_VOLUMEINVTIME_uL_H: "uL/h", UNIT_VOLUMEINVTIME_nL_H: "nL/h", UNIT_VOLUMEINVTIME_L_MIN: "L/min", UNIT_VOLUMEINVTIME_mL_MIN: "mL/min", UNIT_VOLUMEINVTIME_uL_MIN: "uL/min", UNIT_VOLUMEINVTIME_nL_MIN: "nL/min", UNIT_VOLUMEINVTIME_L_SEC: "L/s", UNIT_VOLUMEINVTIME_mL_SEC: "mL/s", UNIT_VOLUMEINVTIME_uL_SEC: "uL/s", UNIT_VOLUMEINVTIME_nL_SEC: "nL/s", UNIT_VOLUMEINVWEIGHT_L_kg: "L/kg", UNIT_VOLUMEINVWEIGHT_L_g: "L/g", UNIT_WEIGHTINVTIME_kg_H: "kg/h", UNIT_WEIGHTINVTIME_g_H: "g/h", UNIT_WEIGHTINVTIME_mg_H: "mg/h", UNIT_WEIGHTINVTIME_ug_H: "ug/h", UNIT_WEIGHTINVTIME_ng_H: "ng/h", UNIT_WEIGHTINVTIME_kg_MIN: "kg/min", UNIT_WEIGHTINVTIME_g_MIN: "g/min", UNIT_WEIGHTINVTIME_mg_MIN: "mg/min", UNIT_WEIGHTINVTIME_ug_MIN: "ug/min", UNIT_WEIGHTINVTIME_ng_MIN: "ng/min", UNIT_WEIGHTINVTIME_kg_SEC: "kg/s", UNIT_WEIGHTINVTIME_g_SEC: "g/s", UNIT_WEIGHTINVTIME_mg_SEC: "mg/s", UNIT_WEIGHTINVTIME_ug_SEC: "ug/s", UNIT_WEIGHTINVTIME_ng_SEC: "ng/s", UNIT_WEIGHTINVTIME_mmol_H: "mmol/h", UNIT_WEIGHTINVTIME_umol_H: "umol/h", UNIT_WEIGHTINVTIME_nmol_H: "nmol/h", UNIT_WEIGHTINVTIME_mmol_MIN: "mmol/min", UNIT_WEIGHTINVTIME_umol_MIN: "umol/min", UNIT_WEIGHTINVTIME_nmol_MIN: "nmol/min", UNIT_WEIGHTINVTIME_mmol_SEC: "mmol/s", UNIT_WEIGHTINVTIME_umol_SEC: "umol/s", UNIT_WEIGHTINVTIME_nmol_SEC: "nmol/s", UNIT_INVTIME2_MIN2: "1/min^2" } def __init__(self,unitString=""): self.unit = self._fromString(unitString)
[docs] def isTime(self): return self.unit>=1 and self.unit<=9
[docs] def isConcentration(self): return self.unit>=10 and self.unit<=99
[docs] def isWeight(self): return self.unit>=100 and self.unit<=109
[docs] def isWeightInvTime(self): return self.unit>=350 and self.unit<=375
def _fromString(self, unitString): return self.stringToCode(unitString) def _toString(self): return self.codeToString(self.unit)
[docs] @classmethod def codeToString(cls, unitCode): """ Return the unit string from a given code. If code is not recognized, return the empty string. """ return cls.unitDictionary.get(unitCode, "")
[docs] @classmethod def stringToCode(cls, unitString): """ Return the numeric code from a given string. If wrong string value, returns None. """ if unitString == "": return None for _unitKey, _unitString in cls.unitDictionary.items(): if _unitString == unitString: return _unitKey if unitString == "ug/mL": return PKPDUnit.UNIT_CONC_mg_L elif unitString == "mg/mL": return PKPDUnit.UNIT_CONC_g_L elif unitString == "NA" or unitString == "None": return PKPDUnit.UNIT_NONE return None
[docs]def convertUnits(x, unitsIn, unitsOut): if unitsIn==unitsOut or unitsIn==PKPDUnit.UNIT_NONE: return x if unitsIn == PKPDUnit.UNIT_WEIGHT_g: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return 1e3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return 1e6*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return 1e9*x else: raise Exception("Unknown unit conversion from %s to %s"%(PKPDUnit.unitDictionary[unitsIn],PKPDUnit.unitDictionary[unitsOut])) elif unitsIn == PKPDUnit.UNIT_WEIGHT_mg: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return 1e3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return 1e6*x else: raise Exception("Unknown unit conversion from %s to %s"%(PKPDUnit.unitDictionary[unitsIn],PKPDUnit.unitDictionary[unitsOut])) elif unitsIn == PKPDUnit.UNIT_WEIGHT_ug: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return 1e3*x else: raise Exception("Unknown unit conversion from %s to %s"%(PKPDUnit.unitDictionary[unitsIn],PKPDUnit.unitDictionary[unitsOut])) elif unitsIn == PKPDUnit.UNIT_WEIGHT_ng: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return 1e-9*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return x else: raise Exception("Unknown unit conversion from %s to %s"%(PKPDUnit.unitDictionary[unitsIn],PKPDUnit.unitDictionary[unitsOut])) elif unitsIn == PKPDUnit.UNIT_WEIGHT_mmol: if unitsOut == PKPDUnit.UNIT_WEIGHT_mmol: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_umol: return 1e3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_nmol: return 1e6*x else: raise Exception("Unknown unit conversion from %s to %s"%(PKPDUnit.unitDictionary[unitsIn],PKPDUnit.unitDictionary[unitsOut])) elif unitsIn == PKPDUnit.UNIT_WEIGHT_umol: if unitsOut == PKPDUnit.UNIT_WEIGHT_mmol: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_umol: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_nmol: return 1e3*x else: raise Exception("Unknown unit conversion from %s to %s"%(PKPDUnit.unitDictionary[unitsIn],PKPDUnit.unitDictionary[unitsOut])) elif unitsIn == PKPDUnit.UNIT_WEIGHT_nmol: if unitsOut == PKPDUnit.UNIT_WEIGHT_mmol: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_umol: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_nmol: return x else: raise Exception("Unknown unit conversion from %s to %s"%(PKPDUnit.unitDictionary[unitsIn],PKPDUnit.unitDictionary[unitsOut])) elif unitsIn == PKPDUnit.UNIT_CONC_g_L: if unitsOut == PKPDUnit.UNIT_CONC_mg_L or unitsOut==PKPDUnit.UNIT_CONC_ug_mL: return 1e3*x elif unitsOut == PKPDUnit.UNIT_CONC_ug_L: return 1e6*x elif unitsOut == PKPDUnit.UNIT_CONC_ng_L: return 1e9*x elif unitsOut == PKPDUnit.UNIT_CONC_g_mL: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_CONC_g_uL: return 1e-6*x elif unitsIn == PKPDUnit.UNIT_CONC_mg_L or unitsIn==PKPDUnit.UNIT_CONC_ug_mL: if unitsOut == PKPDUnit.UNIT_CONC_g_L: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_CONC_mg_L or unitsOut==PKPDUnit.UNIT_CONC_ug_mL: return 1 elif unitsOut == PKPDUnit.UNIT_CONC_ug_L: return 1e3*x elif unitsOut == PKPDUnit.UNIT_CONC_ng_L: return 1e6*x elif unitsOut == PKPDUnit.UNIT_CONC_g_mL: return x elif unitsOut == PKPDUnit.UNIT_CONC_g_uL: return 1e-3*x elif unitsIn == PKPDUnit.UNIT_CONC_ug_L: if unitsOut == PKPDUnit.UNIT_CONC_g_L: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_CONC_mg_L or unitsOut==PKPDUnit.UNIT_CONC_ug_mL: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_CONC_ng_L: return 1e3*x elif unitsOut == PKPDUnit.UNIT_CONC_g_mL: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_CONC_g_uL: return x elif unitsIn == PKPDUnit.UNIT_CONC_ng_L: if unitsOut == PKPDUnit.UNIT_CONC_g_L: return 1e-9*x elif unitsOut == PKPDUnit.UNIT_CONC_mg_L or unitsOut==PKPDUnit.UNIT_CONC_ug_mL: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_CONC_ug_L: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_CONC_g_mL: return x elif unitsOut == PKPDUnit.UNIT_CONC_g_uL: return 1e3*x elif unitsIn == PKPDUnit.UNIT_CONC_g_mL: if unitsOut == PKPDUnit.UNIT_CONC_g_L: return 1e3*x elif unitsOut == PKPDUnit.UNIT_CONC_mg_L or unitsOut==PKPDUnit.UNIT_CONC_ug_mL: return x elif unitsOut == PKPDUnit.UNIT_CONC_ug_L: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_CONC_ng_L: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_CONC_g_uL: return 1e-3*x elif unitsIn == PKPDUnit.UNIT_CONC_g_uL: if unitsOut == PKPDUnit.UNIT_CONC_g_L: return 1e6*x elif unitsOut == PKPDUnit.UNIT_CONC_mg_L or unitsOut==PKPDUnit.UNIT_CONC_ug_mL: return 1e3*x elif unitsOut == PKPDUnit.UNIT_CONC_ug_L: return x elif unitsOut == PKPDUnit.UNIT_CONC_ng_L: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_CONC_g_mL: return 1e3*x elif unitsIn == PKPDUnit.UNIT_TIME_H: if unitsOut == PKPDUnit.UNIT_TIME_MIN: return 60*x elif unitsOut == PKPDUnit.UNIT_TIME_SEC: return 3600*x elif unitsIn == PKPDUnit.UNIT_TIME_MIN: if unitsOut == PKPDUnit.UNIT_TIME_H: return x/60 elif unitsOut == PKPDUnit.UNIT_TIME_SEC: return 60*x elif unitsIn == PKPDUnit.UNIT_TIME_SEC: if unitsOut == PKPDUnit.UNIT_TIME_H: return x/3600 elif unitsOut == PKPDUnit.UNIT_TIME_MIN: return x/60 elif unitsIn == PKPDUnit.UNIT_TIMECONC_MIN_mg_L: if unitsOut == PKPDUnit.UNIT_TIMECONC_H_mg_L: return x/60 elif unitsIn == PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return 1e3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return 1e6*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return 1e9*x elif unitsIn == PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return 1e3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return 1e6*x elif unitsIn == PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return 1e3*x elif unitsIn == PKPDUnit.UNIT_WEIGHTINVTIME_ng_MIN: if unitsOut == PKPDUnit.UNIT_WEIGHT_g: return 1e-9*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_mg: return 1e-6*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ug: return 1e-3*x elif unitsOut == PKPDUnit.UNIT_WEIGHT_ng: return x elif unitsIn == PKPDUnit.UNIT_WEIGHTINVTIME_umol_MIN: if unitsOut == PKPDUnit.UNIT_WEIGHT_umol: return x return None
[docs]def changeRateTo(targetUnit, amount,unit): if targetUnit==PKPDUnit.UNIT_TIME_MIN: if unit==PKPDUnit.UNIT_WEIGHTINVTIME_g_H: return (amount/60,PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_g_SEC: return (amount*60,PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_mg_H: return (amount/60,PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_mg_SEC: return (amount*60,PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_ug_H: return (amount/60,PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_ug_SEC: return (amount*60,PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_ng_H: return (amount/60,PKPDUnit.UNIT_WEIGHTINVTIME_ng_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_ng_SEC: return (amount*60,PKPDUnit.UNIT_WEIGHTINVTIME_ng_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_umol_H: return (amount/60,PKPDUnit.UNIT_WEIGHTINVTIME_umol_MIN) elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_umol_SEC: return (amount*60,PKPDUnit.UNIT_WEIGHTINVTIME_umol_MIN) else: return (amount,unit) elif targetUnit==PKPDUnit.UNIT_TIME_H: if unit == PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN: return (amount * 60, PKPDUnit.UNIT_WEIGHTINVTIME_g_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_g_SEC: return (amount * 3600, PKPDUnit.UNIT_WEIGHTINVTIME_g_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN: return (amount * 60, PKPDUnit.UNIT_WEIGHTINVTIME_mg_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_mg_SEC: return (amount * 3600, PKPDUnit.UNIT_WEIGHTINVTIME_mg_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN: return (amount * 60, PKPDUnit.UNIT_WEIGHTINVTIME_ug_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_ug_SEC: return (amount * 3600, PKPDUnit.UNIT_WEIGHTINVTIME_ug_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_ng_MIN: return (amount * 60, PKPDUnit.UNIT_WEIGHTINVTIME_ng_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_ng_SEC: return (amount * 3600, PKPDUnit.UNIT_WEIGHTINVTIME_ng_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_umol_MIN: return (amount * 60, PKPDUnit.UNIT_WEIGHTINVTIME_umol_H) elif unit == PKPDUnit.UNIT_WEIGHTINVTIME_umol_SEC: return (amount * 3600, PKPDUnit.UNIT_WEIGHTINVTIME_umol_H) else: return (amount, unit)
[docs]def changeRateToWeight(unit): if unit==PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN: return PKPDUnit.UNIT_WEIGHT_g elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN: return PKPDUnit.UNIT_WEIGHT_mg elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN: return PKPDUnit.UNIT_WEIGHT_ug elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_ng_MIN: return PKPDUnit.UNIT_WEIGHT_ng elif unit==PKPDUnit.UNIT_WEIGHTINVTIME_umol_MIN: return PKPDUnit.UNIT_WEIGHT_umol else: return unit
[docs]def multiplyUnits(unitX,unitY): if unitX==PKPDUnit.UNIT_TIME_H: if unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_TIMECONC_H_g_L elif unitY==PKPDUnit.UNIT_CONC_mg_L: return PKPDUnit.UNIT_TIMECONC_H_mg_L elif unitY==PKPDUnit.UNIT_CONC_ug_L: return PKPDUnit.UNIT_TIMECONC_H_ug_L elif unitY==PKPDUnit.UNIT_CONC_ng_L: return PKPDUnit.UNIT_TIMECONC_H_ng_L elif unitY==PKPDUnit.UNIT_CONC_g_mL: return PKPDUnit.UNIT_TIMECONC_H_g_mL elif unitY==PKPDUnit.UNIT_CONC_g_uL: return PKPDUnit.UNIT_TIMECONC_H_g_uL elif unitY==PKPDUnit.UNIT_CONC_ug_mL: return PKPDUnit.UNIT_TIMECONC_H_ug_mL elif unitY==PKPDUnit.UNIT_CONC_mmol_L: return PKPDUnit.UNIT_TIMECONC_H_mmol_L elif unitY==PKPDUnit.UNIT_CONC_umol_L: return PKPDUnit.UNIT_TIMECONC_H_umol_L elif unitY==PKPDUnit.UNIT_CONC_nmol_L: return PKPDUnit.UNIT_TIMECONC_H_nmol_L elif unitY==PKPDUnit.UNIT_TIMECONC_H_g_L: return PKPDUnit.UNIT_TIME2CONC_H2_g_L elif unitY==PKPDUnit.UNIT_TIMECONC_H_mg_L: return PKPDUnit.UNIT_TIME2CONC_H2_mg_L elif unitY==PKPDUnit.UNIT_TIMECONC_H_ug_L: return PKPDUnit.UNIT_TIME2CONC_H2_ug_L elif unitY==PKPDUnit.UNIT_TIMECONC_H_ng_L: return PKPDUnit.UNIT_TIME2CONC_H2_ng_L elif unitY==PKPDUnit.UNIT_TIMECONC_H_g_mL: return PKPDUnit.UNIT_TIME2CONC_H2_g_mL elif unitY==PKPDUnit.UNIT_TIMECONC_H_g_uL: return PKPDUnit.UNIT_TIME2CONC_H2_g_uL elif unitY==PKPDUnit.UNIT_TIMECONC_H_ug_mL: return PKPDUnit.UNIT_TIME2CONC_H2_ug_mL elif unitY==PKPDUnit.UNIT_TIMECONC_H_mmol_L: return PKPDUnit.UNIT_TIME2CONC_H2_mmol_L elif unitY==PKPDUnit.UNIT_TIMECONC_H_umol_L: return PKPDUnit.UNIT_TIME2CONC_H2_umol_L elif unitY==PKPDUnit.UNIT_TIMECONC_H_nmol_L: return PKPDUnit.UNIT_TIME2CONC_H2_nmol_L else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_TIME_MIN: if unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_TIMECONC_MIN_g_L elif unitY==PKPDUnit.UNIT_CONC_mg_L: return PKPDUnit.UNIT_TIMECONC_MIN_mg_L elif unitY==PKPDUnit.UNIT_CONC_ug_L: return PKPDUnit.UNIT_TIMECONC_MIN_ug_L elif unitY==PKPDUnit.UNIT_CONC_ng_L: return PKPDUnit.UNIT_TIMECONC_MIN_ng_L elif unitY==PKPDUnit.UNIT_CONC_g_mL: return PKPDUnit.UNIT_TIMECONC_MIN_g_mL elif unitY==PKPDUnit.UNIT_CONC_g_uL: return PKPDUnit.UNIT_TIMECONC_MIN_g_uL elif unitY==PKPDUnit.UNIT_CONC_ug_mL: return PKPDUnit.UNIT_TIMECONC_MIN_ug_mL elif unitY==PKPDUnit.UNIT_CONC_mmol_L: return PKPDUnit.UNIT_TIMECONC_MIN_mmol_L elif unitY==PKPDUnit.UNIT_CONC_umol_L: return PKPDUnit.UNIT_TIMECONC_MIN_umol_L elif unitY==PKPDUnit.UNIT_CONC_nmol_L: return PKPDUnit.UNIT_TIMECONC_MIN_nmol_L elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_g_L: return PKPDUnit.UNIT_TIME2CONC_MIN2_g_L elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_mg_L: return PKPDUnit.UNIT_TIME2CONC_MIN2_mg_L elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_ug_L: return PKPDUnit.UNIT_TIME2CONC_MIN2_ug_L elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_ng_L: return PKPDUnit.UNIT_TIME2CONC_MIN2_ng_L elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_g_mL: return PKPDUnit.UNIT_TIME2CONC_MIN2_g_mL elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_g_uL: return PKPDUnit.UNIT_TIME2CONC_MIN2_g_uL elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_ug_mL: return PKPDUnit.UNIT_TIME2CONC_MIN2_ug_mL elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_mmol_L: return PKPDUnit.UNIT_TIME2CONC_MIN2_mmol_L elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_umol_L: return PKPDUnit.UNIT_TIME2CONC_MIN2_umol_L elif unitY==PKPDUnit.UNIT_TIMECONC_MIN_nmol_L: return PKPDUnit.UNIT_TIME2CONC_MIN2_nmol_L else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_VOLUMEINVTIME_mL_MIN: if unitY==PKPDUnit.UNIT_CONC_g_mL: return PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN elif unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN elif unitY==PKPDUnit.UNIT_CONC_ug_mL: return PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN elif unitX==PKPDUnit.UNIT_VOLUMEINVTIME_L_MIN: if unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN elif unitY==PKPDUnit.UNIT_CONC_mg_L: return PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN elif unitY==PKPDUnit.UNIT_CONC_ug_L: return PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN elif unitY==PKPDUnit.UNIT_CONC_umol_L: return PKPDUnit.UNIT_WEIGHTINVTIME_umol_MIN elif unitX==PKPDUnit.UNIT_INVTIME_MIN: if unitY==PKPDUnit.UNIT_INVTIME_MIN: return PKPDUnit.UNIT_INVTIME2_MIN2 else: return PKPDUnit.UNIT_NONE
[docs]def divideUnits(unitX,unitY): if unitX==PKPDUnit.UNIT_WEIGHT_g: if unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_VOLUME_L elif unitY==PKPDUnit.UNIT_CONC_mg_L: return PKPDUnit.UNIT_NONE elif unitY==PKPDUnit.UNIT_CONC_ug_L: return PKPDUnit.UNIT_NONE elif unitY==PKPDUnit.UNIT_CONC_ng_L: return PKPDUnit.UNIT_NONE elif unitY==PKPDUnit.UNIT_CONC_g_mL: return PKPDUnit.UNIT_VOLUME_mL elif unitY==PKPDUnit.UNIT_CONC_g_uL: return PKPDUnit.UNIT_VOLUME_uL elif unitY == PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_WEIGHTINVTIME_g_MIN else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_WEIGHT_mg: if unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_VOLUME_mL elif unitY==PKPDUnit.UNIT_CONC_mg_L: return PKPDUnit.UNIT_VOLUME_L elif unitY==PKPDUnit.UNIT_CONC_ug_L: return PKPDUnit.UNIT_NONE elif unitY==PKPDUnit.UNIT_CONC_ng_L: return PKPDUnit.UNIT_NONE elif unitY == PKPDUnit.UNIT_VOLUME_L: return PKPDUnit.UNIT_CONC_mg_L elif unitY==PKPDUnit.UNIT_CONC_g_mL: return PKPDUnit.UNIT_VOLUME_uL elif unitY==PKPDUnit.UNIT_CONC_g_uL: return PKPDUnit.UNIT_VOLUME_nL elif unitY==PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_WEIGHTINVTIME_mg_MIN else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_WEIGHT_ug: if unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_VOLUME_uL elif unitY==PKPDUnit.UNIT_CONC_mg_L: return PKPDUnit.UNIT_VOLUME_mL elif unitY==PKPDUnit.UNIT_CONC_ug_L: return PKPDUnit.UNIT_VOLUME_L elif unitY==PKPDUnit.UNIT_CONC_ng_L: return PKPDUnit.UNIT_NONE elif unitY == PKPDUnit.UNIT_VOLUME_L: return PKPDUnit.UNIT_CONC_ug_L elif unitY==PKPDUnit.UNIT_CONC_g_mL: return PKPDUnit.UNIT_VOLUME_nL elif unitY==PKPDUnit.UNIT_CONC_g_uL: return PKPDUnit.UNIT_NONE elif unitY==PKPDUnit.UNIT_CONC_ug_mL: return PKPDUnit.UNIT_VOLUME_mL elif unitY == PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_WEIGHTINVTIME_ug_MIN else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_WEIGHT_ng: if unitY==PKPDUnit.UNIT_CONC_g_L: return PKPDUnit.UNIT_VOLUME_nL elif unitY==PKPDUnit.UNIT_CONC_mg_L: return PKPDUnit.UNIT_VOLUME_uL elif unitY==PKPDUnit.UNIT_CONC_ug_L: return PKPDUnit.UNIT_VOLUME_mL elif unitY==PKPDUnit.UNIT_CONC_ng_L: return PKPDUnit.UNIT_VOLUME_L elif unitY == PKPDUnit.UNIT_VOLUME_L: return PKPDUnit.UNIT_CONC_ng_L elif unitY==PKPDUnit.UNIT_CONC_g_mL: return PKPDUnit.UNIT_NONE elif unitY==PKPDUnit.UNIT_CONC_g_uL: return PKPDUnit.UNIT_NONE elif unitY == PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_WEIGHTINVTIME_ng_MIN else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_WEIGHT_mmol: if unitY==PKPDUnit.UNIT_CONC_mmol_L: return PKPDUnit.UNIT_VOLUME_L else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_WEIGHT_umol: if unitY==PKPDUnit.UNIT_CONC_umol_L: return PKPDUnit.UNIT_VOLUME_L else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_WEIGHT_nmol: if unitY==PKPDUnit.UNIT_CONC_nmol_L: return PKPDUnit.UNIT_VOLUME_L else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_VOLUME_L: if unitY==PKPDUnit.UNIT_TIME_H: return PKPDUnit.UNIT_VOLUMEINVTIME_L_H elif unitY==PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_VOLUMEINVTIME_L_MIN elif unitY==PKPDUnit.UNIT_TIME_SEC: return PKPDUnit.UNIT_VOLUMEINVTIME_L_SEC else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_VOLUME_mL: if unitY==PKPDUnit.UNIT_TIME_H: return PKPDUnit.UNIT_VOLUMEINVTIME_mL_H elif unitY==PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_VOLUMEINVTIME_mL_MIN elif unitY==PKPDUnit.UNIT_TIME_SEC: return PKPDUnit.UNIT_VOLUMEINVTIME_mL_SEC else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_VOLUME_uL: if unitY==PKPDUnit.UNIT_TIME_H: return PKPDUnit.UNIT_VOLUMEINVTIME_uL_H elif unitY==PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_VOLUMEINVTIME_uL_MIN elif unitY==PKPDUnit.UNIT_TIME_SEC: return PKPDUnit.UNIT_VOLUMEINVTIME_uL_SEC else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_VOLUME_nL: if unitY==PKPDUnit.UNIT_TIME_H: return PKPDUnit.UNIT_VOLUMEINVTIME_nL_H elif unitY==PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_VOLUMEINVTIME_nL_MIN elif unitY==PKPDUnit.UNIT_TIME_SEC: return PKPDUnit.UNIT_VOLUMEINVTIME_nL_SEC else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_VOLUMEINVTIME_L_MIN: if unitY==PKPDUnit.UNIT_VOLUME_L: return PKPDUnit.UNIT_INVTIME_MIN else: return PKPDUnit.UNIT_NONE elif unitX==PKPDUnit.UNIT_VOLUMEINVTIME_L_H: if unitY==PKPDUnit.UNIT_VOLUME_L: return PKPDUnit.UNIT_INVTIME_H else: return PKPDUnit.UNIT_NONE else: return PKPDUnit.UNIT_NONE
[docs]def inverseUnits(unit): if unit == PKPDUnit.UNIT_TIME_H: return PKPDUnit.UNIT_INVTIME_H elif unit == PKPDUnit.UNIT_TIME_MIN: return PKPDUnit.UNIT_INVTIME_MIN elif unit == PKPDUnit.UNIT_TIME_SEC: return PKPDUnit.UNIT_INVTIME_SEC else: return PKPDUnit.UNIT_NONE
[docs]def createUnit(unitNameOrCode): unit = PKPDUnit() if type(unitNameOrCode)==int: unit.unit = unitNameOrCode else: unit.unit = unit._fromString(unitNameOrCode) return unit
# FIXME: Replace the use of this function by PKPDUnit.codeToString
[docs]def strUnit(unitCode): return PKPDUnit.codeToString(unitCode)
# FIXME: Replace the use of this function by PKPDUnit.stringToCode
[docs]def unitFromString(unitString): return PKPDUnit.stringToCode(unitString)