123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import os
- import json
- import re
- import subprocess
- import nibabel
- import shutil
- import sys
- shome=os.path.expanduser('~nixUser')
- sys.path.insert(1,shome+'/software/src/labkeyInterface')
- import labkeyInterface
- import labkeyDatabaseBrowser
- sys.path.insert(1,shome+'/software/src/orthancInterface')
- import orthancInterface
- import orthancFileBrowser
- sys.path.insert(1,shome+'/software/src/IPNUMM/dicomUtils')
- import loadDicom
- fhome=os.path.expanduser('~')
- fconfig=os.path.join(fhome,'.labkey','network.json')
- net=labkeyInterface.labkeyInterface()
- net.init(fconfig)
- db=labkeyDatabaseBrowser.labkeyDB(net)
- onet=orthancInterface.orthancInterface()
- onet.init(fconfig)
- ofb=orthancFileBrowser.orthancFileBrowser(onet)
- hi=0
- project='iPNUMMretro/Study'
- #project='Orthanc/Database'
- tempBase=os.path.join(fhome,'temp')
- #all images from database
- ds=db.selectRows(project,'study','Imaging',[])
- imageSelector=["CT","PETWB"];
- niftiBase='/data/nifti'
- labkeyBase='/data1/labkey'
- projectNIfTIBase=os.path.join(labkeyBase,'/files/',project,'/@files/nifti')
- i=0
- for row in ds["rows"]:
- for im in imageSelector:
- seriesId=row[im];
- print("{}: {}".format(im,seriesId))
- fname=os.path.join(tempBase,seriesId+".zip");
- ofb.getZip('series',seriesId,fname)
- unzipDir=os.path.join(tempBase,seriesId)
- try:
- os.mkdir(unzipDir)
- except FileExistsError:
- shutil.rmtree(unzipDir)
- try:
- outTxt=subprocess.check_output(["unzip","-d",unzipDir,"-xj",fname])
- except subprocess.CalledProcessError:
- print("unzip failed for {}".format(fname))
- continue
- slices=loadDicom.load(unzipDir)
- img=loadDicom.convertToNIfTI(slices)
- outNIfTI=os.path.join(niftiBase,seriesId+'.nii.gz')
- nibabel.save(img,outNIfTI)
- shutil.rmtree(unzipDir)
- os.remove(fname)
- labkeyNIfTI=os.path.join(projectNIfTIBase,seriesId+'.nii.gz')
- try:
- os.symlink(labkeyNIfTI,outNIfTI)
- except FileExistsError:
- pass
-
- if i==0:
- break
- i=i+1
- print("Done")
|