code: def adjoint(self):
          
          if self.variant == 'dirac':
              variant = 'point_eval'
          elif self.variant == 'char_fun':
              variant = 'integrate'
          else:
              raise RuntimeError('The variant "{!r}" is not yet supported'
                                 ''.format(self.variant))
  
          return SamplingOperator(self.range, self.sampling_points, variant)
docs: Adjoint of this operator, a `SamplingOperator`.
  
          The ``'char_fun'`` variant of this operator corresponds to the
          ``'integrate'`` sampling operator, and ``'dirac'`` corresponds to
          ``'point_eval'``.
  
          Examples
          --------
          >>> space = odl.uniform_discr([-1, -1], [1, 1], shape=(2, 3))
          >>> # Point (0, 0) occurs twice
          >>> sampling_points = [[0, 1, 1, 0],
          ...                    [0, 1, 2, 0]]
          >>> op = odl.WeightedSumSamplingOperator(space, sampling_points,
          ...                                      variant='dirac')
          >>> y = op.range.element([[1, 2, 3],
          ...                       [4, 5, 6]])
          >>> op.adjoint(y)
          rn(4).element([ 1.,  5.,  6.,  1.])
          >>> x = op.domain.element([1, 2, 3, 4])
          >>> abs(op.adjoint(op(x)).inner(x) - op(x).inner(op(x))) < 1e-10
          True
          >>> op = odl.WeightedSumSamplingOperator(space, sampling_points,
          ...                                      variant='char_fun')
          >>> abs(op.adjoint(op(x)).inner(x) - op(x).inner(op(x))) < 1e-10
          True