Difference between revisions of "User talk:Haehn"
From NAMIC Wiki
| Line 42: | Line 42: | ||
${TYPE}=$const(RCA) | ${TYPE}=$const(RCA) | ||
${INPUT}=$const(/Volumes/DATA2/dhaehn/cutted/Image${FILE}_${TYPE}.nrrd) | ${INPUT}=$const(/Volumes/DATA2/dhaehn/cutted/Image${FILE}_${TYPE}.nrrd) | ||
| − | ${VESSELNESS_NAME}=$const( | + | ${VESSELNESS_NAME}=$const(${FILE}-${TYPE}-out-${SIGMA_MIN}-${SIGMA_MAX}-N${SIGMA_STEPS}-${ALPHA}-${BETA}-${GAMMA}) |
| − | ${INPUT_VESSELNESS}=$const(/Volumes/DATA2/dhaehn/gwe-results/${VESSELNESS_NAME}*.nrrd) | + | ${INPUT_VESSELNESS}=$const(/Volumes/DATA2/dhaehn/gwe-results/${FILE}-${TYPE}/${VESSELNESS_NAME}*.nrrd) |
${VESSEL}=$const(0) | ${VESSEL}=$const(0) | ||
${SEED_X}=$const(1) | ${SEED_X}=$const(1) | ||
| Line 54: | Line 54: | ||
${CL_END_Y}=$const(1) | ${CL_END_Y}=$const(1) | ||
${CL_END_Z}=$const(1) | ${CL_END_Z}=$const(1) | ||
| − | ${LOW_THRESHOLD}=$const(0. | + | ${LOW_THRESHOLD}=$const(0.6) |
${HIGH_THRESHOLD}=$const(1.0) | ${HIGH_THRESHOLD}=$const(1.0) | ||
${PROPAGATION}=$const(0) | ${PROPAGATION}=$const(0) | ||
| Line 60: | Line 60: | ||
${ADVECTION}=$const(100) | ${ADVECTION}=$const(100) | ||
${ITERATIONS}=$const(10) | ${ITERATIONS}=$const(10) | ||
| − | ${OUTPUT_A}=$const(/Volumes/DATA2/dhaehn/gwe-results-centerlines/) | + | ${OUTPUT_A}=$const(/Volumes/DATA2/dhaehn/gwe-results-centerlines/${FILE}-${TYPE}/) |
| − | ${OUTPUT_B}=$const(-${VESSEL}-FM-${LOW_THRESHOLD}-${HIGH_THRESHOLD}--) | + | ${OUTPUT_B}=$const(-V${VESSEL}-FM-${LOW_THRESHOLD}-${HIGH_THRESHOLD}--) |
${OUTPUT_C}=$const(-GAC-${PROPAGATION}-${CURVATURE}-${ADVECTION}-N${ITERATIONS}--) | ${OUTPUT_C}=$const(-GAC-${PROPAGATION}-${CURVATURE}-${ADVECTION}-N${ITERATIONS}--) | ||
| − | if [ -e ${OUTPUT_A}*${OUTPUT_B}*.dat ]; then echo '${OUTPUT_A}*${OUTPUT_B}*.dat exists!'; else | + | if [ -e ${OUTPUT_A}${VESSELNESS_NAME}*${OUTPUT_B}*${OUTPUT_C}*.dat ]; then echo '${OUTPUT_A}${VESSELNESS_NAME}*${OUTPUT_B}*${OUTPUT_C}*.dat exists!'; else |
${SLICER_HOME}/bin/Slicer3-real --no_splash --evalpython "import sys; from Slicer import slicer; | ${SLICER_HOME}/bin/Slicer3-real --no_splash --evalpython "import sys; from Slicer import slicer; | ||
| Line 87: | Line 87: | ||
centerlines = VMTKCenterlinesLogic(hidden2gui); | centerlines = VMTKCenterlinesLogic(hidden2gui); | ||
| − | volNode=slicer.VolumesGUI.GetLogic().AddArchetypeVolume('${INPUT}',' | + | volNode=slicer.VolumesGUI.GetLogic().AddArchetypeVolume('${INPUT}','Original',0); |
import glob; | import glob; | ||
| Line 141: | Line 141: | ||
delta_cl=cl_e-cl_s; | delta_cl=cl_e-cl_s; | ||
| − | outputFile='${OUTPUT_A}'+str(vesselnessFile[0]).replace('.nrrd','')+'${OUTPUT_B}'+str(delta_fm).replace(':','-')+'${OUTPUT_C}'+str(delta_gac).replace(':','-')+'-MC--'+str(delta_mc).replace(':','-')+'-CL--'+str(delta_cl).replace(':','-')+'.dat'; Slicer.tk.eval('exit 0');"; fi | + | outputFile='${OUTPUT_A}'+str(vesselnessFile[0]).replace('.nrrd','')+'${OUTPUT_B}'+str(delta_fm).replace(':','-')+'${OUTPUT_C}'+str(delta_gac).replace(':','-')+'-MC--'+str(delta_mc).replace(':','-')+'-CL--'+str(delta_cl).replace(':','-')+'.dat'; centerlines.Export(centerline,outputFile,0,0,1); Slicer.tk.eval('exit 0');"; fi |
</pre> | </pre> | ||
Revision as of 13:14, 23 January 2010
Home < User talk:Haehnmy notes..
- this code works locally:
"import sys; from Slicer import slicer; volNode=slicer.VolumesGUI.GetLogic().AddArchetypeVolume('/home/haehn/data/Image00_LCA.nrrd','Liver',0); matrix = slicer.vtkMatrix4x4(); volNode.GetIJKToRASMatrix(matrix);
outputNode=slicer.MRMLScene.CreateNodeByClass('vtkMRMLScalarVolumeNode'); volumeNode=slicer.MRMLScene.AddNode(outputNode); volumeNode.SetAndObserveImageData(volNode.GetImageData()); volumeNode.SetIJKToRASMatrix(matrix); volumeNode.SetModifiedSinceRead(1); slicer.VolumesGUI.GetLogic().SaveArchetypeVolume('/home/haehn/data/test.nrrd',volumeNode);"
- remote Frangi:
${SIGMA_MIN}=$const(1.0)
${SIGMA_MAX}=$const(5.0)
${SIGMA_STEPS}=$const(10)
${ALPHA}=$range(0.1,0.5,0.1)
${BETA}=$range(500.0,1500.0,500.0)
${GAMMA}=$range(300.0,1000.0,100.0)
${FILE}=$const(00)
${TYPE}=$const(RCA)
${INPUT}=$const(/Volumes/DATA2/dhaehn/cutted/Image${FILE}_${TYPE}.nrrd)
${OUTPUT}=$const(/Volumes/DATA2/dhaehn/gwe-results/${FILE}-${TYPE}/${FILE}-${TYPE}-out-${SIGMA_MIN}-${SIGMA_MAX}-N${SIGMA_STEPS}-${ALPHA}-${BETA}-${GAMMA})
if [ -e ${OUTPUT}*.nrrd ]; then echo '${OUTPUT}*.nrrd exists!'; else ${SLICER_HOME}/bin/Slicer3-real --no_splash --evalpython "import sys; from Slicer import slicer; sys.path.append(str(slicer.Application.GetExtensionsInstallPath())+'/'+str(slicer.Application.GetSvnRevision())+'/VMTKVesselEnhancement/VMTKVesselEnhancement'); from SlicerVMTKVesselEnhancementGUI import *; hiddengui = VMTKVesselEnhancement(); from SlicerVMTKVesselEnhancementLogic import *; vesselness=SlicerVMTKVesselEnhancementLogic(hiddengui); volNode=slicer.VolumesGUI.GetLogic().AddArchetypeVolume('${INPUT}','Vessels',0); matrix = slicer.vtkMatrix4x4(); volNode.GetIJKToRASMatrix(matrix); from datetime import *; s=datetime.now(); outVolumeData = vesselness.ApplyFrangiVesselness(volNode.GetImageData(),${SIGMA_MIN},${SIGMA_MAX},${SIGMA_STEPS},${ALPHA},${BETA},${GAMMA}); e=datetime.now(); delta=e-s; outputNode=slicer.MRMLScene.CreateNodeByClass('vtkMRMLScalarVolumeNode'); volumeNode=slicer.MRMLScene.AddNode(outputNode); volumeNode.SetAndObserveImageData(outVolumeData); volumeNode.SetIJKToRASMatrix(matrix); volumeNode.SetModifiedSinceRead(1); slicer.VolumesGUI.GetLogic().SaveArchetypeVolume('${OUTPUT}--'+str(delta).replace(':','-')+'.nrrd',volumeNode);Slicer.tk.eval('exit 0');"; fi;
- remote levelset plus centerlines and export:
${SIGMA_MIN}=$const(1.0)
${SIGMA_MAX}=$const(5.0)
${SIGMA_STEPS}=$const(10)
${ALPHA}=$range(0.1,0.5,0.1)
${BETA}=$range(500.0,1500.0,500.0)
${GAMMA}=$range(300.0,1000.0,100.0)
${FILE}=$const(00)
${TYPE}=$const(RCA)
${INPUT}=$const(/Volumes/DATA2/dhaehn/cutted/Image${FILE}_${TYPE}.nrrd)
${VESSELNESS_NAME}=$const(${FILE}-${TYPE}-out-${SIGMA_MIN}-${SIGMA_MAX}-N${SIGMA_STEPS}-${ALPHA}-${BETA}-${GAMMA})
${INPUT_VESSELNESS}=$const(/Volumes/DATA2/dhaehn/gwe-results/${FILE}-${TYPE}/${VESSELNESS_NAME}*.nrrd)
${VESSEL}=$const(0)
${SEED_X}=$const(1)
${SEED_Y}=$const(1)
${SEED_Z}=$const(1)
${CL_START_X}=$const(1)
${CL_START_Y}=$const(1)
${CL_START_Z}=$const(1)
${CL_END_X}=$const(1)
${CL_END_Y}=$const(1)
${CL_END_Z}=$const(1)
${LOW_THRESHOLD}=$const(0.6)
${HIGH_THRESHOLD}=$const(1.0)
${PROPAGATION}=$const(0)
${CURVATURE}=$const(70)
${ADVECTION}=$const(100)
${ITERATIONS}=$const(10)
${OUTPUT_A}=$const(/Volumes/DATA2/dhaehn/gwe-results-centerlines/${FILE}-${TYPE}/)
${OUTPUT_B}=$const(-V${VESSEL}-FM-${LOW_THRESHOLD}-${HIGH_THRESHOLD}--)
${OUTPUT_C}=$const(-GAC-${PROPAGATION}-${CURVATURE}-${ADVECTION}-N${ITERATIONS}--)
if [ -e ${OUTPUT_A}${VESSELNESS_NAME}*${OUTPUT_B}*${OUTPUT_C}*.dat ]; then echo '${OUTPUT_A}${VESSELNESS_NAME}*${OUTPUT_B}*${OUTPUT_C}*.dat exists!'; else
${SLICER_HOME}/bin/Slicer3-real --no_splash --evalpython "import sys; from Slicer import slicer;
sys.path.append(str(slicer.Application.GetExtensionsInstallPath())+'/'+str(slicer.Application.GetSvnRevision())+'/VMTKEasyLevelSetSegmentation/VMTKEasyLevelSetSegmentation');
sys.path.append(str(slicer.Application.GetExtensionsInstallPath())+'/'+str(slicer.Application.GetSvnRevision())+'/VMTKCenterlines/VMTKCenterlines');
from VMTKEasyLevelSetSegmentationGUI import *;
hiddengui = VMTKEasyLevelSetSegmentationGUI();
from VMTKEasyLevelSetSegmentationLogic import *;
levelset = VMTKEasyLevelSetSegmentationLogic(hiddengui);
from VMTKCenterlinesGUI import *;
hidden2gui = VMTKCenterlinesGUI();
from VMTKCenterlinesLogic import *;
centerlines = VMTKCenterlinesLogic(hidden2gui);
volNode=slicer.VolumesGUI.GetLogic().AddArchetypeVolume('${INPUT}','Original',0);
import glob;
vesselnessFile=glob.glob('${INPUT_VESSELNESS}');
vesselnessNode=slicer.VolumesGUI.GetLogic().AddArchetypeVolume(vesselnessFile[0],'Vessels',0);
matrix = slicer.vtkMatrix4x4(); volNode.GetIJKToRASMatrix(matrix);
rasMatrix = slicer.vtkMatrix4x4(); volNode.GetRASToIJKMatrix(rasMatrix);
image = volNode.GetImageData();
vesselImage = vesselnessNode.GetImageData();
seedList = slicer.vtkIdList();
targetList = slicer.vtkIdList();
seedPt = [${SEED_X},${SEED_Y},${SEED_Z},1];
ijkSeedPt = rasMatrix.MultiplyPoint(*seedPt);
seedList.InsertNextId(vesselImage.ComputePointId(int(ijkSeedPt[0]),int(ijkSeedPt[1]),int(ijkSeedPt[2])));
from datetime import *;
fm_s = datetime.now();
fm = levelset.ExecuteFM(vesselImage,${LOW_THRESHOLD},${HIGH_THRESHOLD},seedList,targetList);
fm_e = datetime.now();
delta_fm=fm_e-fm_s;
gac_s=datetime.now();
gac = levelset.ExecuteGAC(image,fm,${ITERATIONS},${PROPAGATION},${CURVATURE},${ADVECTION},'geodesic');
gac_e=datetime.now();
delta_gac=gac_e-gac_s;
mc_s=datetime.now();
mc = levelset.MarchingCubes(gac,matrix,0.0);
mc_e=datetime.now();
delta_mc=mc_e-mc_s;
clSeeds = slicer.vtkIdList();
clTargets = slicer.vtkIdList();
clSeedPt = [${CL_START_X},${CL_START_Y},${CL_START_Z},1];
clTargetPt = [${CL_END_X},${CL_END_Y},${CL_END_Z},1];
pointLocator=slicer.vtkPointLocator();
pointLocator.SetDataSet(mc);
pointLocator.BuildLocator();
id=pointLocator.FindClosestPoint(int(clSeedPt[0]),int(clSeedPt[1]),int(clSeedPt[2]));
clSeeds.InsertNextId(id);
id=pointLocator.FindClosestPoint(int(clTargetPt[0]),int(clTargetPt[1]),int(clTargetPt[2]));
clTargets.InsertNextId(id);
cl_s=datetime.now();
prepared = centerlines.prepareModel(mc);
centerline = centerlines.computeCenterlines(prepared,clSeeds,clTargets);
cl_e=datetime.now();
delta_cl=cl_e-cl_s;
outputFile='${OUTPUT_A}'+str(vesselnessFile[0]).replace('.nrrd','')+'${OUTPUT_B}'+str(delta_fm).replace(':','-')+'${OUTPUT_C}'+str(delta_gac).replace(':','-')+'-MC--'+str(delta_mc).replace(':','-')+'-CL--'+str(delta_cl).replace(':','-')+'.dat'; centerlines.Export(centerline,outputFile,0,0,1); Slicer.tk.eval('exit 0');"; fi