code: def gettrace(self, burn=0, thin=1, chain=-1, slicing=None):
          
          # warnings.warn('Use Sampler.trace method instead.',
          # DeprecationWarning)
          if not slicing:
              slicing = slice(burn, None, thin)
  
          # If chain is None, get the data from all chains.
          if chain is None:
              self.db.cur.execute('SELECT * FROM [%s]' % self.name)
              trace = self.db.cur.fetchall()
          else:
              # Deal with negative chains (starting from the end)
              if chain < 0:
                  chain = range(self.db.chains)[chain]
              self.db.cur.execute(
                  'SELECT * FROM [%s] WHERE trace=%s' %
                  (self.name, chain))
              trace = self.db.cur.fetchall()
          trace = np.array(trace)[:, 2:]
          if len(self._shape) > 1:
              trace = trace.reshape(-1, *self._shape)
          return squeeze(trace[slicing])
docs: Return the trace (last by default).
  
          Input:
            - burn (int): The number of transient steps to skip.
            - thin (int): Keep one in thin.
            - chain (int): The index of the chain to fetch. If None, return all
              chains. By default, the last chain is returned.
            - slicing: A slice, overriding burn and thin assignement.