123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import numpy
- import os
- import json
- import time
- import cModel
- import importlib
- import runSolver
- import numpy.linalg
- #Zalaufaj metodo solve_matrics namest IVP, method seperately. Preverjas razlicne metode resevanja enega modela, pol ko bos pa naredi kopijo novega modela glede na članek kotinin
- importlib.reload(cModel)
- importlib.reload(runSolver)
- def getModel(solution, modelName):
- Q = solution[modelName]
- model = cModel.model()
- setupFile = Q['setup']
- modelFile = Q['model']
- parameterFile = Q['parameters']
- print('modelFile: {} {}'.format(modelFile, os.path.isfile(modelFile)))
- print('parameterFile: {} {}'.format(parameterFile, os.path.isfile(parameterFile)))
- model.parse(modelFile, parameterFile)
- return model
- def getSum(data,modelName):
-
- model=getModel(data,modelName)
- Q=data[modelName]['solution']
- lut=Q['lut']
- total=Q['sol'][-1,lut['total']]
- #print(total)
- fQ={}
- for x in lut:
- if x=='total':
- continue
- j=lut[x]
- try:
- v=model.get(model.mod['volumes'][x])['value']
- fQ[x]=Q['sol'][-1,j]*v/total
- except KeyError:
- #print('{} {}'.format(x,x in model.mod['scaled']))
- fQ[x]=Q['sol'][-1,j]
- print(sum(list(fQ.values())))
- print(sorted(fQ.items(), key=lambda item:item[1]))
- def mergeSolutions(seq):
- out={}
- #each element in sequence should have this components
- for v in ['t','sol','se','qt','sOut']:
- out[v]=numpy.concatenate([x[v] for x in seq])
- #copy last for settings
- for v in ['lut','lutSE','setup','model','parameters','qt','sOut']:
- out[v]=seq[-1][v]
- return out
- def updateSetup(job):
- setupFileSrc = job['setupFile']
- setupFile = os.path.join(job['jobDir'], 'setupInput.json')
- with open(setupFileSrc, 'r') as f:
- setup = json.load(f)
- try:
- setup.update(job['setupUpdates'])
- except KeyError:
- pass
- with open(setupFile, 'w+') as f:
- f.write(json.dumps(setup))
- return setupFile
- fh = os.path.expanduser('~')
- # Create job configurations
- job_configs = {
- 'cDiazepam': {
- 'jobDir': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'cDiazepam_Matrix'),
- 'modelFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam.json'),
- 'parameterFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam_parameters2.json'),
- 'setupFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'setup', 'setupMinute.json'),
- 'setupUpdates': {'mode': 'solveMatrix', 'method': 'separately'}, #Mode:IVP mode:LSOD
- 'srcDir': 'NONE',
- 'doCalculate': True
- },
- 'cDiazepam1': {
- 'jobDir': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'cDiazepam1_Matrix'),
- 'modelFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam.json'),
- 'parameterFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam_parameters2.json'),
- 'setupFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'setup', 'setupHours.json'),
- 'setupUpdates': {'mode': 'solveMatrix', 'method': 'separately'}, #Mode:IVP mode:LSOD
- 'srcDir': 'NONE',
- 'doCalculate': True
- },
- 'cDiazepamF': {
- 'jobDir': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'cDiazepamF_Matrix'),
- 'modelFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam.json'),
- 'parameterFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam_parameters1.json'),
- 'setupFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'setup', 'setupMinute.json'),
- 'setupUpdates': {'mode': 'solveMatrix', 'method': 'separately'},
- 'srcDir': 'NONE',
- 'doCalculate': True
- },
- 'cDiazepamB': {
- 'jobDir': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'cDiazepamB_Matrix'),
- 'modelFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam.json'),
- 'parameterFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'models', 'cDiazepam_parameters1.json'),
- 'setupFile': os.path.join(fh, 'Documents', 'Sola', 'IJS', 'PBPK_public', 'setup', 'setupHours.json'),
- 'setupUpdates': {'mode': 'solveMatrix', 'method': 'separately'},
- 'srcDir': 'NONE',
- 'doCalculate': True
- }
- }
- # Execute jobs
- for job_name, job in job_configs.items():
- if not job['doCalculate']:
- continue
- if not os.path.isdir(job['jobDir']):
- os.mkdir(job['jobDir'])
-
- # Adjust local setup file with ad-hoc modifications
- setupFile = updateSetup(job)
- # t0,y0,S1,lut,lutSE=runSolver.getStartPoint(setupFile) #Pridobivanje začetnih točk
- runSolver.main([setupFile, job['modelFile'], job['parameterFile']], job['jobDir'], job['srcDir'])
- #(t0,y0,S1,lut,lutSE=runSolver.getStartPoint(setup) ) #Pridobivanje začetnih točk
- #Zalaufaj metodo solve_matrics namest IVP, method seperately. Preverjas razlicne metode resevanja enega modela, pol ko bos pa naredi kopijo novega modela glede na članek kotinin
|