docs: def sample_softmax(self, temperature=1.):
          """
          Sample leaves with probabilities progress*volume and a softmax exploration (with a temperature parameter).
          
          Parameters
          ----------
          temperature : float 
          
          """
          if self.leafnode:
              return self.sample_bounds()
          else:
              if self.sampling_mode['multiscale']:
                  nodes = self.get_nodes()
              else:
                  nodes = self.get_leaves()
                  
              if  self.sampling_mode['volume']:
                  progresses = np.array(map(lambda node:node.progress*node.volume, nodes)) #by volume
              else:
                  progresses = np.array(map(lambda node:node.progress, nodes)) #by volume
                  
              progress_max = max(progresses)
              probas = np.exp(progresses / (progress_max*temperature))
              probas = probas / np.sum(probas)
              
              if np.isnan(np.sum(probas)): # if progress_max = 0 or nan value in dataset, eps-greedy sample
                  return self.sample_epsilon_greedy()
              else:
                  node = nodes[np.where(np.random.multinomial(1, probas) == 1)[0][0]]
                  return node.sample_bounds()