code: def _restore_isolated_higherorder(sampleset, poly, isolated):
      
  
      samples = sampleset.record.sample
      variables = sampleset.variables
  
      new_samples = np.empty((len(sampleset), len(isolated)), dtype=samples.dtype)
  
      # we don't let the isolated variables interact with eachother for now because
      # it will slow this down substantially
      isolated_energies = {v: 0 for v in isolated}
      for term, bias in poly.items():
  
          isolated_components = term.intersection(isolated)
  
          if not isolated_components:
              continue
  
          en = bias  # energy contribution of the term
          for v in term:
              if v in isolated_energies:
                  continue
              en *= samples[:, sampleset.variables.index(v)]
  
          for v in isolated_components:
              isolated_energies[v] += en
  
      # now put those energies into new_samples
      for col, v in enumerate(isolated):
          new_samples[:, col] = isolated_energies[v] < 0
  
      if poly.vartype is dimod.SPIN:
          new_samples = 2*new_samples - 1
  
      return np.concatenate((samples, new_samples), axis=1), list(variables) + isolated
docs: Return samples-like by adding isolated variables into sampleset in a
      way that minimizes the energy (relative to the other non-isolated variables).
  
      Isolated should be ordered.