code: def bqm_index_labels(f):
      
  
      @wraps(f)
      def _index_label(sampler, bqm, **kwargs):
          if not hasattr(bqm, 'linear'):
              raise TypeError('expected input to be a BinaryQuadraticModel')
          linear = bqm.linear
  
          # if already index-labelled, just continue
          if all(v in linear for v in range(len(bqm))):
              return f(sampler, bqm, **kwargs)
  
          try:
              inverse_mapping = dict(enumerate(sorted(linear)))
          except TypeError:
              # in python3 unlike types cannot be sorted
              inverse_mapping = dict(enumerate(linear))
          mapping = {v: i for i, v in iteritems(inverse_mapping)}
  
          response = f(sampler, bqm.relabel_variables(mapping, inplace=False), **kwargs)
  
          # unapply the relabeling
          return response.relabel_variables(inverse_mapping, inplace=True)
  
      return _index_label
docs: Decorator to convert a bqm to index-labels and relabel the sample set
      output.
  
      Designed to be applied to :meth:`.Sampler.sample`. Expects the wrapped
      function or method to accept a :obj:`.BinaryQuadraticModel` as the second
      input and to return a :obj:`.SampleSet`.