def test_CLIStatusEventTestCancel(self): self.delayDisplay( 'Testing status events when cancelling the execution of a CLI') tempFile = qt.QTemporaryFile("CLIEventTest-outputFile-XXXXXX") self.assertTrue(tempFile.open()) logic = CLIEventTestLogic() parameters = {} parameters["InputValue1"] = 1 parameters["InputValue2"] = 2 parameters["OperationType"] = 'Addition' parameters["OutputFile"] = tempFile.fileName() cliModule = slicer.modules.cli4test cli = slicer.cli.createNode(cliModule) self.assertEqual(cli.GetStatus(), cli.Idle) logic.runCLI(cliModule, cli, parameters, False) cli.Cancel() while not logic.ExecutionFinished: self.delayDisplay('Waiting for module to complete...') expectedEvents = [ cli.Scheduled, cli.Cancelling, cli.Cancelled, ] self.assertEqual(logic.StatusEvents, expectedEvents) self.delayDisplay('Testing cancelled execution Passed')
def _testCLIStatusEventOnErrorTest(self, wait_for_completion): self.delayDisplay('Testing status events for a bad execution of a CLI') tempFile = qt.QTemporaryFile("CLIEventTest-outputFile-XXXXXX") self.assertTrue(tempFile.open()) logic = CLIEventTestLogic() parameters = {} parameters["InputValue1"] = 1 parameters["InputValue2"] = 2 parameters["OperationType"] = 'Fail' parameters["OutputFile"] = tempFile.fileName() cliModule = slicer.modules.cli4test cli = slicer.cli.createNode(cliModule) self.assertEqual(cli.GetStatus(), cli.Idle) logic.runCLI(cliModule, cli, parameters, wait_for_completion) while not logic.ExecutionFinished: self.delayDisplay('Waiting for module to complete...') cli = slicer.vtkMRMLCommandLineModuleNode() expectedEvents = [] if not wait_for_completion: expectedEvents.append(cli.Scheduled) expectedEvents.append(cli.CompletedWithErrors) self.assertEqual(logic.StatusEvents, expectedEvents) self.delayDisplay('Testing bad execution Passed')
def test_TwoCLIsInARowTest(self): self.delayDisplay('Running two CLIs in a row Test') tempFile = qt.QTemporaryFile("TwoCLIsInARowTest-outputFile-XXXXXX") self.assertTrue(tempFile.open()) logic = TwoCLIsInARowTestLogic() logic.parameters = {} logic.parameters["InputValue1"] = 1 logic.parameters["InputValue2"] = 2 logic.parameters["OperationType"] = 'Addition' logic.parameters["OutputFile"] = tempFile.fileName() logic.runTest() while not logic.success: self.delayDisplay('Waiting for module 2 to complete...') self.assertTrue(logic.success) self.delayDisplay('Two CLIs in a row test passed !')
def test_TwoCLIsInParallelTest(self): self.delayDisplay('Running two CLIs in a row Test') tempFile = qt.QTemporaryFile("TwoCLIsInParallelTest-outputFile-XXXXXX") self.assertTrue(tempFile.open()) logic = TwoCLIsInParallelTestLogic() logic.parameters = {} logic.parameters["InputValue1"] = 1 logic.parameters["InputValue2"] = 2 logic.parameters["OperationType"] = 'Addition' logic.parameters["OutputFile"] = tempFile.fileName() logic.runModule1() self.delayDisplay('... Waiting to start module 2 ...') logic.runModule2() self.assertTrue(logic.success) self.delayDisplay('Two CLIs in parallel test passed !')
def run(self,inputVolume,atlasVolume, convexHullVolume, numIterations, boneThreshold, outVolume): """ Run the actual algorithm """ print('In Run method') """ Generate Atlas convex Hull """ #convexHullVolume = "~/TestConvexHull.vtk" #cliparameters = { #"leftAtlasFileName" : leftAtlasVolume.GetID(), #"rightAtlasFileName" : rightAtlasVolume.GetID(), #"downsampleFactor" : 4, #"outputFileName" : outModel.GetID(), #"~/TestConvexHull.vtk", *** should be a vtk file #} #GenerateAtlasConvexHull = slicer.modules.generateatlasconvexhull #slicer.cli.run(GenerateAtlasConvexHull,None, cliparameters, wait_for_completion=True) #C:\ChestImagingPlatformPrivate\Build\bin\Debug>RegisterLungAtlas -i 200 -m D:/Po # stdoc/Data/LungAtlases/atlasConvexHull.vtk -c D:/Postdoc/Data/10360K/10360Kinsp # .nhdr -o d:/Postdoc/Data/10360K/AtlasTo10360Kinsp.tfm #""" #Call RegisterLungAtlas cli, tfm intermediate file ? #""" #Define temporary .tfm file f = qt.QTemporaryFile( slicer.app.temporaryPath+ "/RegisterLungAtlas-XXXXXX.tfm") #slicer.app.temporaryPath f.open() # Create the file # Get model node by ID modelNode = slicer.mrmlScene.GetNodeByID(convexHullVolume.GetID()) polyData = modelNode.GetPolyData() cliparameters = {} cliparameters['convexHullMeshFileName'] = convexHullVolume.GetID() #modelNode.GetID() #""/Users/rolaharmouche/Documents/Data/LungAtlases/atlasConvexHull.vtk" # cliparameters['numberOfIterations'] = numIterations.value cliparameters['boneThreshold'] = boneThreshold.value cliparameters['outputTransformFileName'] = f.fileName()#"/Users/rolaharmouche/Documents/Data/tempdata/Test6.tfm" #outputTransform, slicer.app.temporarypath cliparameters['ctFileName'] = inputVolume.GetID() #cliparameters['ctFileName'] = "/Users/rolaharmouche/Documents/Data/COPDGene/14988Y/14988Y_INSP_STD_UAB_COPD/14988Y_INSP_STD_UAB_COPD_downsampled.nrrd" #destructor delete stuff RegisterLungAtlas = slicer.modules.registerlungatlas cliNode = slicer.cli.run(RegisterLungAtlas,None, cliparameters, wait_for_completion=True) #""" #Call ResampleLabelMap cli, save the output volume directly #""" ##ResampleLabelMap.exe -d D:/Postdoc/Data/10360K/10360Kinsp.nhdr -r D:/Postdoc/Data/10360K/10360KleftAtlas.nrrd -t ##D:/Postdoc/Data/10360K/AtlasTo10360Kinsp.tfm -l D:/Postdoc/Data/LungAtlases/leftLungAtlas.nhdr # cliparameters = {} cliparameters['labelMapFileName'] = atlasVolume.GetID() # "/Users/rolaharmouche/Documents/Data/LungAtlases/leftLungAtlas.nhdr" cliparameters['transformFileName'] = f.fileName()#"/Users/rolaharmouche/Documents/Data/tempdata/Test6.tfm" cliparameters['resampledFileName'] = outVolume.GetID() #"~/Test.nrrd" # cliparameters['destinationFileName'] = inputVolume.GetID() #"/Users/rolaharmouche/Documents/Data/COPDGene/14988Y/14988Y_INSP_STD_UAB_COPD/14988Y_INSP_STD_UAB_COPD_downsampled.nrrd" cliparameters['isInvertTransformation'] =True ResampleLabelMap = slicer.modules.resamplelabelmap cliNode = slicer.cli.run(ResampleLabelMap,None, cliparameters, wait_for_completion=True), #use qt assistant return True