def runAnalysisSphere(self, radius, labelmapWholeVolumeArray):
        keyName = "{0}__r{1}".format(self.inputVolumeSelector.currentNode().GetName(), radius)
        t1 = time.time()
        labelmapArray = self.logic.getSphereLabelMapArray(radius)
        getSphereTime = time.time() - t1
        if self.logic.printTiming:
            print("Time elapsed to get a sphere labelmap of radius {0}: {1} seconds".format(radius, getSphereTime))
        slicer.app.processEvents()
        if labelmapArray.max() == 0:
            # Nothing to analyze
            results = {}
            for key in self.selectedFeatureKeys:
                results[key] = 0
            self.analysisResults[keyName] = results
        else:
            logic = FeatureExtractionLogic(self.logic.currentVolume, self.logic.currentVolumeArray,
                                           labelmapArray, self.selectedMainFeaturesKeys, self.selectedFeatureKeys,
                                           "__r{0}".format(radius), labelmapWholeVolumeArray)
            t1 = time.time()
            self.analysisResults[keyName] = collections.OrderedDict()
            self.analysisResultsTiming[keyName] = collections.OrderedDict()
            logic.run(self.analysisResults[keyName], self.logic.printTiming, self.analysisResultsTiming[keyName])
            t2 = time.time()

            print("********* Results for the sphere of radius {0}:".format(radius))
            print(self.analysisResults[keyName])
            if self.logic.printTiming:
                print("*** Elapsed time for the sphere radius {0} analysis (TOTAL={1} seconds:".format(radius, t2 - t1))
                print (self.analysisResultsTiming[keyName])
Run the selected features for an sphere of radius r (excluding the nodule itself)
dataset/ETHPy150Open acil-bwh/SlicerCIP/Scripted/CIP_LesionModel/CIP_LesionModel.py/CIP_LesionModelWidget.runAnalysisSphere