def EvaluateFeatures(self, printTiming=False, checkStopProcessFunction=None):
        if not self.keys:
            if not printTiming:
                return self.textureFeaturesGLRL
            else:
                return self.textureFeaturesGLRL, self.textureFeaturesGLRLTiming
        
        if not printTiming:
            self.CalculateCoefficients()
        else:
            import time
            t1 = time.time()
            self.CalculateCoefficients()
            print("- Time to calculate coefficients in GLRL: {0} seconds".format(time.time() - t1))

        if not printTiming:
            # Evaluate dictionary elements corresponding to user selected keys
            for key in self.keys:
                self.textureFeaturesGLRL[key] = eval(self.textureFeaturesGLRL[key])
                if checkStopProcessFunction is not None:
                    checkStopProcessFunction()
            return self.textureFeaturesGLRL
        else:
            # Evaluate dictionary elements corresponding to user selected keys
            for key in self.keys:
                t1 = time.time()
                self.textureFeaturesGLRL[key] = eval(self.textureFeaturesGLRL[key])
                self.textureFeaturesGLRLTiming[key] = time.time() - t1
                if checkStopProcessFunction is not None:
                    checkStopProcessFunction()
            return self.textureFeaturesGLRL, self.textureFeaturesGLRLTiming
dataset/ETHPy150Open acil-bwh/SlicerCIP/Scripted/CIP_LesionModel/FeatureExtractionLib/TextureGLRL.py/TextureGLRL.EvaluateFeatures/original