polona.ipynb 3.8 KB

sys.path.append(os.path.join(os.path.expanduser('~'),'software','src','nixSuite','wrapper'))
import nixWrapper
nixWrapper.loadLibrary('labkeyInterface')
import labkeyInterface
net=labkeyInterface.labkeyInterface()
fconfig=os.path.join(os.path.expanduser('~'),'.labkey','network.json')
net.init(fconfig)
net.getCSRF()
/home/studen/software/install/Slicer/lib/Python/lib/python3.6/site-packages/urllib3/connection.py:395: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)
  SubjectAltNameWarning,
User: andrej studen CSRF: d070f9c0c9d1624c76a72190dfeb82fd
'd070f9c0c9d1624c76a72190dfeb82fd'
import labkeyFileBrowser
sys.path.append(os.getcwd())
import downloadPatient
fb=labkeyFileBrowser.labkeyFileBrowser(net)
project='dinamic_spect/Patients'
locDir=os.path.join(os.path.expanduser('~'),'temp','dynamicSPECT')
import labkeyDatabaseBrowser
db=labkeyDatabaseBrowser.labkeyDB(net)
ds=db.selectRows(project,'study','Imaging',[])
patients=[row['aliasID'] for row in ds['rows']]
for p in patients:
    pass
    #patientId='7TMMIR'
    #files=downloadPatient.readPatient(fb,locDir,project,p)
/home/studen/software/install/Slicer/lib/Python/lib/python3.6/site-packages/urllib3/connection.py:395: SubjectAltNameWarning: Certificate for merlin.fmf.uni-lj.si has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)
  SubjectAltNameWarning,
print(patients)
['10KFMIR', '10KFOBR', '11ZMMIR', '11ZMOBR', '2SBMIR', '2SMobr', '3ZFMIR', '3ZFOBR', '5MIMIR', '5MIOBR', '7TMMIR', '7TMOBR', '8JSMIR', '8JSOBR']
import ScreenCapture
cap = ScreenCapture.ScreenCaptureLogic()
ds=db.selectRows(project,'study','Imaging',[])
patients=[row['aliasID'] for row in ds['rows']]
patients1=[patients[8]]
#patients1=patients
for p in patients1:
    [slicer.mrmlScene.RemoveNode(v) for v in slicer.util.getNodesByClass('vtkMRMLVolumeNode')]
    [slicer.mrmlScene.RemoveNode(v) for v in slicer.util.getNodesByClass('vtkMRMLSegmentationNode')]
    
    fCT=os.path.join(locDir,p,p+'CT.nrrd')
    nodeCT=slicer.util.loadNodeFromFile(fCT,'VolumeFile')
    fV19=os.path.join(locDir,p,p+'Volume19.nrrd')
    nodeV19=slicer.util.loadNodeFromFile(fV19,'VolumeFile')
    nodeV19.GetScalarVolumeDisplayNode().SetAndObserveColorNodeID('vtkMRMLColorTableNodeFileInferno.txt')
    fSegm=os.path.join(locDir,p,p+'_Segm.nrrd')
    nodeSegm=slicer.util.loadNodeFromFile(fSegm,'SegmentationFile')
    slicer.util.setSliceViewerLayers(background=nodeCT,foreground=nodeV19,label=nodeSegm,foregroundOpacity=0.5)
    
    r=[row for row in ds['rows'] if row['aliasID']==p][0]
    fz=r['baseZ']
    dir=[0,0,0]
    origin=nodeV19.GetOrigin()
    sp=nodeV19.GetSpacing()
    nodeV19.GetJToRASDirection(dir)
    off=[fz*sp[2]*x for x in dir]
    pz=[x+y for (x,y) in zip(origin,off)]
    
    view=slicer.app.layoutManager().sliceWidget('Red')
    view.sliceController().setSegmentationOpacity(0.1)
    view.sliceLogic().SetSliceOffset(pz[2])
    viewCap = cap.viewFromNode(slicer.mrmlScene.GetNodeByID('vtkMRMLSliceNodeRed'))
    viewFileName=p+'_sliceView.png'
    viewFile=os.path.join(locDir,p,viewFileName)
    cap.captureImageFromView(viewCap,viewFile)
    fb.writeFileToFile(viewFile,fb.buildPathURL(project,[p])+'/'+viewFileName)
    print('Uploading {}'.format(viewFileName))
    r['sliceView']=viewFileName
    db.modifyRows('update',project,'study','Imaging',[r])
    
User: andrej studen CSRF: e3eac520b926622281349e3fd84a911a
Uploading 5MIMIR_sliceView.png
User: andrej studen CSRF: 2f9c2b33df616b5e542a94e05b9b4723
[slicer.mrmlScene.RemoveNode(v) for v in slicer.util.getNodesByClass('vtkMRMLVolumeNode')]
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
dir=[0,0,0]
origin=slicer.util.getFirstNodeByName('10KFMIRVolume19*').GetOrigin()
sp=slicer.util.getFirstNodeByName('10KFMIRVolume19*').GetSpacing()
slicer.util.getFirstNodeByName('10KFMIRVolume19*').GetJToRASDirection(dir)
off=[32.5*sp[1]*x for x in dir]
pz=[x+y for (x,y) in zip(origin,off)]
print(pz)
[-11.6860873538232, 475.06586290468414, 1525.948169558067]
[0.09892055255379667, -0.06777229572872773, -0.9927847904828667]
node.GetScalarVolumeDisplayNode().GetColorNodeID()
'vtkMRMLColorTableNodeFileInferno.txt'
slicer.app.layoutManager().sliceWidget('Red').sliceLogic().SetSliceOffset(1500)