123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import os
- import json
- def cmdMatlab():
- pwd=os.path.dirname(os.path.abspath(__file__))
- pwdUp=os.path.dirname(pwd)
- mDir=os.path.join(pwdUp,'matlab')
- with open(os.path.join(os.path.expanduser('~'),'.labkey','setup.json'),'r') as f:
- siteSetup=json.load(f)
- mExec=siteSetup['paths']['matlab']
- cmds=[mExec]
- cmds.append('-sd')
- cmds.append(mDir)
- #cmds.append('-batch')
- return cmds
-
- def getPatientId(row,xconfig):
- return row[getPatientField(xconfig)]
- def getPatientField(xconfig):
- return xconfig['ParticipantField']
- def getVisitField(xconfig):
- return 'visitName'
- def getVisitId(row,xconfig):
- return row[getVisitField(xconfig)]
- def getIdFilter(row,xconfig):
- return {'variable':getPatientField(xconfig),\
- 'value':getPatientId(row,xconfig),
- 'oper':'eq'}
- def getVisitFilter(row,xconfig):
- return {'variable':getVisitField(xconfig),\
- 'value':getVisitId(row,xconfig),
- 'oper':'eq'}
- def getCode(row,xconfig):
- return '{}_{}'.format(getPatientId(row,xconfig),getVisitId(row,xconfig))
- def getTargetSeqNum(row,xconfig):
- if getVisitId(row,xconfig)=='OBR':
- return 2
- return 1
- def getPathList(row,xconfig):
- return [xconfig['baseDir'],getPatientId(row,xconfig),getVisitId(row,xconfig)]
- def getOutputDir(row,xconfig):
- return '/'.join(getPathList(row,xconfig))
- def getTempDir(xconfig):
- tempDir=xconfig['tempDir']
- pathList=tempDir.split('/')
- pathList.insert(0,os.path.expanduser('~'))
- return os.path.join(*pathList)
-
- def getLocalDir(row,xconfig):
- return os.path.join(getTempDir(xconfig),getCode(row,xconfig))
- def getNodeName(row,xconfig,mode,i=0):
- if mode=='CT':
- return getCode(row,xconfig)+'_CT'
- if mode=='NM':
- return '{}_Volume{}'.format(getCode(row,xconfig),i)
- return getCode(row,xconfig)+'_Dummy'
- def decode(code,xconfig):
- #invert code and return object equivalent to row with relevant
- #fields set that can be used in
- #getPatientId, getVisitId,getIdFilter,getVisitFilter
- #as an equivalent replacement for r
- values=code.split('_')
- fid=values[0]
- vid=values[1]
- return {getPatientField(xconfig):fid,getVisitField(xconfig):vid}
- def printRowCenterNames(r,setup):
- names=[]
- nr=setup['nr']
- nclass=setup['nclass']
- code=getCode(r,setup)
- #tempDir=config.getTempDir(setup)
- for nc in nclass:
- for j in range(nr):
- for i in range(nc):
- fCode='{}_{}_{}_center{}'.format(code,nc,j+1,i+1)
- names.append('{}_center.txt'.format(fCode))
- names.append('{}_centerWeight.nrrd'.format(fCode))
- return names
-
- def getFitParFinalName(code,nc,j,aType):
- fCode='{}_{}_{}'.format(code,nc,j+1)
- if aType!='global':
- fCode='{}_{}'.format(fCode,aType)
-
- return '{}_fitParFinal.txt'.format(fCode)
-
- def printFitParFinalRowNames(r,setup,aType):
- names=[]
- nr=setup['nr']
- nclass=setup['nclass']
- code=getCode(r,setup)
- #tempDir=config.getTempDir(setup)
- for nc in nclass:
- for j in range(nr):
- names.append(getFitParFinalName(code,nc,j,aType))
- #names.append('{}_centerWeight.nrrd'.format(fCode))
- return names
-
|