#----------------------------------------------------------------------------- # Revised: 2003-03-22 # Copyright: (c) 2003 Donnal C. Walter (http://mindwrapper.org) # License: BSD License (http://www.mindwrapper.org/license) #----------------------------------------------------------------------------- from Mindwrapper import api as mw from formulae import * class Timing(mw.Branch): def Assemble(self): self.Add( node = mw.Number, name = 'hrDosing', # dosing interval in hours scale = 1, digits = 0, limits = (0,72)) self.Add( node = HrInterval, name = 'hrInf', # infusion interval in hours scale = 0.01, digits = 2, value = 0.5) self.Add( node = HrInterval, name = 'hrPostInf', # interval infusion to peak (hr) scale = 0.001, digits = 2, value = 0.5) self.Add( node = HrPreInfusion, # special type name = 'hrPreInf', # trough early before inf (hr) scale = 0.001, digits = 2, value = 0.0) self.Add( node = HrPeakTrough, # special type name = 'hrPkTr', # interval peak to trough (hr) ref = [ self.hrDosing, self.hrInf, self.hrPostInf, self.hrPreInf]) class Whatif(mw.Branch): def Assemble(self, base): self.Add( node = mw.Number, name = 'hrDosing', # dosing interval in hours scale = 1, digits = 0) self.Add( node = mw.Number, name = 'hrInf', # infusion interval in hours value = 1.0, scale = 0.01, digits = 2) self.Add( node = mw.Number, name = 'hrPostInf', # interval infusion to peak (hr) value = 1.0, scale = 0.01, digits = 2) self.Add( node = mw.Number, name = 'hrPreInf', # interval trough to infusion (hr) value = 0.0, scale = 0.01, digits = 2) self.Add( node = mw.Number, name = 'dose', scale = 0.01, digits = 2) self.Add( node = PeakEst, name = 'peak', ref = [ base.kElim, self.dose, base.volDist, self.hrDosing, self.hrInf, self.hrPostInf]) self.Add( node = TroughEst, name = 'trough', ref = [ base.kElim, self.peak, self.hrDosing, self.hrInf, self.hrPreInf, self.hrPostInf]) class Pharmacokinetics(mw.Branch): def Assemble(self): self.Add( node = Timing, name = 'time') self.Add( node = mw.Number, name = 'dose', scale = 0.01, digits = 2) self.Add( node = mw.Number, name = 'peak', scale = 0.01, digits = 2) self.Add( node = mw.Number, name = 'trough', scale = 0.01, digits = 2) self.Add( node = mw.Number, name = 'weight', scale = 0.001, digits = 3) self.Add( node = KElim, name = 'kElim', ref = [ self.peak, self.trough, self.time.hrPkTr]) self.Add( node = VolDist, name = 'volDist', scale = 0.0001, digits = 4, ref = [ self.kElim, self.dose, self.peak, self.time.hrDosing, self.time.hrInf, self.time.hrPostInf]) self.Add( node = mw.Quotient, name = 'volDistPerKg', digits = 3, ref = [ self.volDist, self.weight]) self.Add( node = mw.Product, name = 'clearance', digits = 3, ref = [ self.volDistPerKg, self.kElim]) self.Add( node = Whatif, name = 'whatif', ref = self) # 'base' is self