class_docstr: A in-memory linearized storage of point coordinates.
  
  :py:class:`TreeNode` objects only store the logL value and id,
  which is the index in the point pile. The point pile stores
  the point coordinates in u and p-space (transformed and untransformed).
class_docstr_tok: ["A","in-memory","linearized","storage","of","point","coordinates",".",":","py",":","class",":","`","TreeNode","`","objects","only","store","the","logL","value","and","id",",","which","is","the","index","in","the","point","pile",".","The","point","pile","stores","the","point","coordinates","in","u","and","p-space","(","transformed","and","untransformed",")","."]
docstr: Save point.
  
  Parameters
  -----------
  newpointu: array
      point (in u-space)
  newpointp: array
      point (in p-space)
  
  Returns
  ---------
  index: int
      index of the new point in the pile
docstr_tok: ["Save","point",".","Parameters","--","--","--","--","--","-","newpointu",":","array","point","(","in","u-space",")","newpointp",":","array","point","(","in","p-space",")","Returns","--","--","--","--","-","index",":","int","index","of","the","new","point","in","the","pile"]
code: def add(self, newpointu, newpointp):
      """Save point.
  
      Parameters
      -----------
      newpointu: array
          point (in u-space)
      newpointp: array
          point (in p-space)
  
      Returns
      ---------
      index: int
          index of the new point in the pile
      """
      if self.nrows >= self.us.shape[0]:
          self.us = np.concatenate(
              (self.us, np.zeros((self.chunksize, self.udim)))
          )
          self.ps = np.concatenate(
              (self.ps, np.zeros((self.chunksize, self.pdim)))
          )
      assert len(newpointu) == self.us.shape[1], (
          newpointu,
          self.us.shape,
      )
      assert len(newpointp) == self.ps.shape[1], (
          newpointp,
          self.ps.shape,
      )
      self.us[self.nrows, :] = newpointu
      self.ps[self.nrows, :] = newpointp
      self.nrows += 1
      return self.nrows - 1
  
imports: import numpy
  from numpy import log, log1p, exp, logaddexp
  import math
  import sys
  from .utils import resample_equal
  from .ordertest import UniformOrderAccumulator
label_desc: Use image node_id 2 for calling the PointPile obj's underlying member method code with example usage: obj.add(newpointu, newpointp) and returns: unknown