|
@@ -135,26 +135,52 @@ def updateSegmentation(db,setup,r,pixels):
|
|
|
print('Done')
|
|
|
|
|
|
def getSegmentationFileName(r,setup):
|
|
|
- fileName='{}_Segmentation.txt'.format(config.getCode(r,setup))
|
|
|
- return fileName
|
|
|
+ if setup['segmentationMode']=='TXT':
|
|
|
+ return '{}_Segmentation.txt'.format(config.getCode(r,setup))
|
|
|
+ if setup['segmentationMode']=='NRRD':
|
|
|
+ copyFields=['PatientId','visitName']
|
|
|
+ qFilter=[{'variable':x,'value':r[x],'oper':'eq'} for x in copyFields]
|
|
|
+ qFilter.append({'variable':'User','value':setup['targetUser'],'oper':'eq'})
|
|
|
+ rows=getData.getSegmentation(db,setup,qFilter)
|
|
|
+ r=rows[0]
|
|
|
+ return r['latestFile']
|
|
|
+
|
|
|
|
|
|
def writeSegmentation(db,fb,r,setup):
|
|
|
- fileName=getSegmentationFileName(r,setup)
|
|
|
- idFilter={'variable':'PatientId','value':config.getPatientId(r,setup),'oper':'eq'}
|
|
|
- visitFilter={'variable':'visitName','value':config.getVisitId(r,setup),'oper':'eq'}
|
|
|
- rows=getData.getSegmentation(db,setup,[idFilter,visitFilter])
|
|
|
- v=numpy.zeros((len(rows),3))
|
|
|
- for qr in rows:
|
|
|
- region=int(qr['regionId'])
|
|
|
- v[region,2]=float(qr['x'])
|
|
|
- v[region,1]=float(qr['y'])
|
|
|
- v[region,0]=float(qr['z'])
|
|
|
+
|
|
|
+ if setup['segmentationMode']=='NRRD':
|
|
|
+ print('Failed to load segmentation')
|
|
|
+ return
|
|
|
+
|
|
|
+ fileName=getSegmentationFileName(r,setup)
|
|
|
+ idFilter={'variable':'PatientId','value':config.getPatientId(r,setup),'oper':'eq'}
|
|
|
+ visitFilter={'variable':'visitName','value':config.getVisitId(r,setup),'oper':'eq'}
|
|
|
+ rows=getData.getSegmentation(db,setup,[idFilter,visitFilter])
|
|
|
+ v=numpy.zeros((len(rows),3))
|
|
|
+ for qr in rows:
|
|
|
+ region=int(qr['regionId'])
|
|
|
+ v[region,2]=float(qr['x'])
|
|
|
+ v[region,1]=float(qr['y'])
|
|
|
+ v[region,0]=float(qr['z'])
|
|
|
#for i in range(len(rows)):
|
|
|
# print(v[i,:])
|
|
|
- numpy.savetxt(getData.getLocalPath(r,setup,fileName),v)
|
|
|
- getData.copyToServer(fb,r,setup,[fileName])
|
|
|
+ numpy.savetxt(getData.getLocalPath(r,setup,fileName),v)
|
|
|
+ getData.copyToServer(fb,r,setup,[fileName])
|
|
|
|
|
|
def getNC(r,xsetup):
|
|
|
+ if xsetup['segmentationMode']=='TXT':
|
|
|
+ getNCTxt(r,xsetup)
|
|
|
+ if xsetup['segmentationMode']=='NRRD':
|
|
|
+ return 500
|
|
|
+
|
|
|
+def loadSegmentation(db,fb,r,xsetup):
|
|
|
+ if xsetup['segmentationMode']=='TXT':
|
|
|
+ return loadSegmentationTxt(db,fb,r,xsetup)
|
|
|
+ if xsetup['segmentationMode']=='NRRD':
|
|
|
+ return loadSegmentationNrrd(db,fb,r,xsetup)
|
|
|
+
|
|
|
+
|
|
|
+def getNCTxt(r,xsetup):
|
|
|
sName=getSegmentationFileName(r,xsetup)
|
|
|
fName=getData.getLocalPath(r,xsetup,sName)
|
|
|
x=numpy.loadtxt(fName)
|
|
@@ -165,14 +191,18 @@ def loadSegmentation(db,fb,r,setup):
|
|
|
sName=getSegmentationFileName(r,setup)
|
|
|
fName=getData.getLocalPath(r,setup,sName)
|
|
|
if not os.path.isfile(fName):
|
|
|
- fURL=getData.getURL(fb,r,setup,fName)
|
|
|
+ qName=sName
|
|
|
+ if setup['segmentationMode']=='NRRD':
|
|
|
+ qName='/'.join(['Segmentations',sName])
|
|
|
+ fURL=getData.getURL(fb,r,setup,qName)
|
|
|
if fb.entryExists(fURL):
|
|
|
- copyFromServer(fb,r,setup,sName)
|
|
|
+ getData.copyFromServer(fb,r,setup,[qName])
|
|
|
else:
|
|
|
#this creates local and global file
|
|
|
writeSegmentation(db,fb,r,setup)
|
|
|
- return numpy.loadtxt(fName)
|
|
|
|
|
|
+ if setup['segmentationMode']=='TXT':
|
|
|
+ return numpy.loadtxt(fName)
|
|
|
|
|
|
|
|
|
def plotSegmentation(db,fb,r,setup,vmax=1000):
|