class_docstr: Step sampler on a sampling path.
docstr: Reflect at *reflpoint* going in direction *v*. Return new direction.
docstr_tok: ["Reflect","at","*","reflpoint","*","going","in","direction","*","v","*",".","Return","new","direction","."]
code: def reflect(self, reflpoint, v, region, plot=False):
      """Reflect at *reflpoint* going in direction *v*. Return new direction."""
      normal = self.path.gradient(reflpoint, plot=plot)
      if normal is None:
          return -v
      return v - 2 * (normal * v).sum() * normal
  
imports: import numpy
  import matplotlib.pyplot
  from ultranest.samplingpath import SamplingPath, ContourSamplingPath, extrapolate_ahead
  from ultranest.stepsampler import StepSampler
  from ultranest.stepsampler import generate_region_oriented_direction, generate_region_random_direction, generate_random_direction
  from ultranest.flatnuts import ClockedStepSampler, ClockedBisectSampler, ClockedNUTSSampler
  from ultranest.flatnuts import SingleJumper, DirectJumper, IntervalJumper
label_desc: Use image node_id 13 for calling the SamplingPathStepSampler obj's underlying member method code with example usage: obj.reflect(reflpoint, v, region, plot) and returns: unknown, unknown