code: def sampleLocationFromFeature(self, feature):
      
      if feature == "surface":
        return self.sampleLocationFromFeature('face') # Temporary workaround for surfaces
      elif feature=="face":
        indx = self.rng.choice(range(self.faces.count))
        rndFace = self.faces[indx]
        return self._sampleLocationOnFace(rndFace)
  
      elif feature == "edge":
        indx = self.rng.choice(range(self.faces.count))
        rndFace = self.faces[indx]
        rndVertices = self.rng.sample(self.vertices[rndFace],2)
        return self._sampleLocationOnEdge(rndVertices)
  
      elif feature == "vertex":
        rndVertexIndx = self.rng.choice(range(self.vertices.count))
        return np.array(self.vertices[rndVertexIndx].tolist())
  
      elif feature == "surface":
        return self.sampleLocationFromFeature("face")      # Temporary workaround for surfaces
      elif feature == "random":
        return self.sampleLocation()
      else:
        raise NameError("No such feature in {}: {}".format(self, feature))
docs: Samples a location from the provided specific feature.
  
      TODO surface feature is not handled correctly.
      forwarded to sample from face instead.