segmentation.ipynb 11 KB

import sys
import os
import SimpleITK
import numpy
import matplotlib.pyplot
import subprocess
import json
import config
import getData
import segmentation
import importlib
importlib.reload(segmentation)
importlib.reload(getData)
importlib.reload(config)

sys.path.append(os.path.join(os.path.expanduser('~'),'software','src','|ixSuite','wrapper'))
import nixWrapper
nixWrapper.loadLibrary('labkeyInterface')
import labkeyInterface
import labkeyFileBrowser
import labkeyDatabaseBrowser

#manipulate segmentations
#rewrite this
#nim=getPatientNIM(pId)

loadLibrary
remoteSourcesURL https://git0.fmf.uni-lj.si/studen/nixSuite/raw/master/remoteResources/resources.json
{'labkeyInterface': {'url': 'https://git0.fmf.uni-lj.si/studen/labkeyInterface/archive/master.zip', 'branch': 'master', 'modules': []}, 'irAEMM': {'url': 'https://git0.fmf.uni-lj.si/studen/iraemm/archive/master.zip', 'branch': 'master', 'modules': ['iraemmBrowser']}, 'SlicerLabkeyExtension': {'url': 'https://git0.fmf.uni-lj.si/studen/SlicerLabkeyExtension/archive/SlicerExtensionIndex.zip', 'branch': 'SlicerExtensionIndex', 'modules': ['labkeyBrowser']}, 'limfomiPET': {'url': 'https://git0.fmf.uni-lj.si/studen/limfomiPET/archive/master.zip', 'branch': 'master', 'modules': ['imageBrowser', 'segmentationBrowser']}, 'parseConfig': {'url': 'https://git0.fmf.uni-lj.si/studen/parseConfig/archive/master.zip', 'branch': 'master', 'modules': []}, 'orthancInterface': {'url': 'https://git0.fmf.uni-lj.si/studen/orthancInterface/archive/master.zip', 'branch': 'master', 'modules': []}}
{'url': 'https://git0.fmf.uni-lj.si/studen/labkeyInterface/archive/master.zip', 'branch': 'master', 'modules': []}
File  /home/studen/temp/labkeyInterface.zip: True
#

fsetup='../template/cardiacSPECT.json'
with open(fsetup,'r') as f:
    setup=json.load(f)

db,fb=getData.connectDB(setup['network'])    
    
loadLibrary
remoteSourcesURL https://git0.fmf.uni-lj.si/studen/nixSuite/raw/master/remoteResources/resources.json
{'labkeyInterface': {'url': 'https://git0.fmf.uni-lj.si/studen/labkeyInterface/archive/master.zip', 'branch': 'master', 'modules': []}, 'irAEMM': {'url': 'https://git0.fmf.uni-lj.si/studen/iraemm/archive/master.zip', 'branch': 'master', 'modules': ['iraemmBrowser']}, 'SlicerLabkeyExtension': {'url': 'https://git0.fmf.uni-lj.si/studen/SlicerLabkeyExtension/archive/SlicerExtensionIndex.zip', 'branch': 'SlicerExtensionIndex', 'modules': ['labkeyBrowser']}, 'limfomiPET': {'url': 'https://git0.fmf.uni-lj.si/studen/limfomiPET/archive/master.zip', 'branch': 'master', 'modules': ['imageBrowser', 'segmentationBrowser']}, 'parseConfig': {'url': 'https://git0.fmf.uni-lj.si/studen/parseConfig/archive/master.zip', 'branch': 'master', 'modules': []}, 'orthancInterface': {'url': 'https://git0.fmf.uni-lj.si/studen/orthancInterface/archive/master.zip', 'branch': 'master', 'modules': []}}
{'url': 'https://git0.fmf.uni-lj.si/studen/labkeyInterface/archive/master.zip', 'branch': 'master', 'modules': []}
File  /home/studen/temp/labkeyInterface.zip: True
User: andrej studen CSRF: e682a2d778135e99c8f86ab87bcc8e47
def guessSegmentation(db,setup,pId='MM',visitName='MIR',sx=32,sy=31,sz=31):

   idFilter={'variable':'PatientId','value':pId,'oper':'eq'}
   visitFilter={'variable':'visitName','value':visitName,'oper':'eq'}  
   rows=getData.getPatients(db,setup,[idFilter,visitFilter])
   r=rows[0] 
   pixels=segmentation.guessPixelPosition4(sx,sy,sz) 
   segmentation.updateSegmentation(db,setup,r,pixels)

#guessSegmentation(db,setup,sz=32,sx=33)
def doPlotSegmentation(db,fb,setup,pId='MM',visitName='MIR',vmax=1000):
   idFilter={'variable':'PatientId','value':pId,'oper':'eq'}
   visitFilter={'variable':'visitName','value':visitName,'oper':'eq'}  
   rows=getData.getPatients(db,setup,[idFilter,visitFilter])
   r=rows[0] 
   segmentation.plotSegmentation(db,fb,r,setup,vmax)

def getRow(db,setup,pId='MM',visitName='MIR'):
   idFilter={'variable':'PatientId','value':pId,'oper':'eq'}
   visitFilter={'variable':'visitName','value':visitName,'oper':'eq'}  
   rows=getData.getPatients(db,setup,[idFilter,visitFilter])
   return rows[0] 
    

pId='MM'
visitName='OBR'
#guessSegmentation(db,setup,pId,visitName,sx=32,sy=31,sz=33)
#doPlotSegmentation(db,fb,setup,pId,visitName,vmax=500)
r=getRow(db,setup,pId,visitName)
print(r)
x=segmentation.loadSegmentation(db,fb,r,setup)
print(x.shape[0])
{'date': '2022/12/06 00:00:00', 'lsid': 'urn:lsid:ijs.si:Study.Data-113:5006.MM.2.0000', 'visitName': 'OBR', '_labkeyurl_nmMasterOrthancId': 'https://orthanc.fmf.uni-lj.si/series/49464cfb-e53fb7b5-f8d4f7fc-c762f334-f1dc3863/archive', '_labkeyurl_PatientId': '/labkey/dinamic_spect/Patients/study-participant.view?participantId=MM', 'PatientId': 'MM', 'ctOrthancId': 'a226533f-2ec5d437-1c74d352-17bd6dca-dc719b60', 'nmCorrDataOrthancId': '7d5a1513-67b10c30-c0decf1c-2305db38-8c0e3128', '_labkeyurl_nmCorrDataOrthancId': 'https://orthanc.fmf.uni-lj.si/series/7d5a1513-67b10c30-c0decf1c-2305db38-8c0e3128/archive', '_labkeyurl_ctOrthancId': 'https://orthanc.fmf.uni-lj.si/series/a226533f-2ec5d437-1c74d352-17bd6dca-dc719b60/archive', 'nmMasterOrthancId': '49464cfb-e53fb7b5-f8d4f7fc-c762f334-f1dc3863', 'SequenceNum': 2.0}
5
#rarely used. Mostly, segmentation points are edited in LabKey
rows=getData.getPatients(db,setup)
for r in rows:
    print('******{}******'.format(config.getCode(r,setup)))
    segmentation.writeSegmentation(db,r,setup)
******10KF_MIR******
******10KF_OBR******
******MM_MIR******
******MM_MIR1******
******MM_OBR******
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[80], line 5
      3 for r in rows:
      4     print('******{}******'.format(config.getCode(r,setup)))
----> 5     segmentation.writeSegmentation(db,r,setup)

File ~/software/src/dynamicSPECT/pythonScripts/segmentation.py:152, in writeSegmentation(db, r, setup)
    149     v[region,0]=float(qr['z'])
    150 #for i in range(len(rows)):
    151 #    print(v[i,:])
--> 152 numpy.savetxt(os.path.join(locDir,fileName),v)

File <__array_function__ internals>:5, in savetxt(*args, **kwargs)

File /usr/lib/python3/dist-packages/numpy/lib/npyio.py:1368, in savetxt(fname, X, fmt, delimiter, newline, header, footer, comments, encoding)
   1365     fname = os_fspath(fname)
   1366 if _is_string_like(fname):
   1367     # datasource doesn't support creating a new file ...
-> 1368     open(fname, 'wt').close()
   1369     fh = np.lib._datasource.open(fname, 'wt', encoding=encoding)
   1370     own_fh = True

FileNotFoundError: [Errno 2] No such file or directory: '/home/studen/temp/dynamicSPECT/MM_OBR/MM_OBR_Segmentation.txt'