class_docstr: Lattice is an object that describe the periodicity of the lattice.
  Note that this object does not know about atoms.
  For the integrated object between the lattice and atoms, please see Sol
  
  Examples
  --------
  >>> import torch
  >>> from deepchem.utils.dft_utils import Lattice
  >>> a = torch.tensor([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
  >>> lattice = Lattice(a)
  >>> lattice.lattice_vectors()
  tensor([[1., 0., 0.],
          [0., 1., 0.],
          [0., 0., 1.]])
  >>> lattice.recip_vectors()
  tensor([[6.2832, 0.0000, 0.0000],
          [0.0000, 6.2832, 0.0000],
          [0.0000, 0.0000, 6.2832]])
  >>> lattice.volume() # volume of the unit cell
  tensor(1.)
  >>> lattice.get_lattice_ls(1.0) # get the neighboring lattice vectors
  tensor([[ 0.,  0., -1.],
          [ 0., -1.,  0.],
          [-1.,  0.,  0.],
          [ 0.,  0.,  0.],
          [ 1.,  0.,  0.],
          [ 0.,  1.,  0.],
          [ 0.,  0.,  1.]])
  >>> lattice.get_gvgrids(6.0) # get the neighboring G-vectors
  (tensor([[ 0.0000,  0.0000, -6.2832],
          [ 0.0000, -6.2832,  0.0000],
          [-6.2832,  0.0000,  0.0000],
          [ 0.0000,  0.0000,  0.0000],
          [ 6.2832,  0.0000,  0.0000],
          [ 0.0000,  6.2832,  0.0000],
          [ 0.0000,  0.0000,  6.2832]]), tensor([1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000]))
  >>> lattice.estimate_ewald_eta(1e-5) # estimate the ewald's sum eta
  1.8
class_docstr_tok: ["Lattice","is","an","object","that","describe","the","periodicity","of","the","lattice",".","Note","that","this","object","does","not","know","about","atoms",".","For","the","integrated","object","between","the","lattice","and","atoms",",","please","see","Sol","Examples","--","--","--","--",">",">",">","import","torch",">",">",">","from","deepchem.utils.dft_utils","import","Lattice",">",">",">","a","=","torch.tensor","(","[","[","1.",",","0.",",","0",".","]",",","[","0.",",","1.",",","0",".","]",",","[","0.",",","0.",",","1",".","]","]",")",">",">",">","lattice","=","Lattice","(","a",")",">",">",">","lattice.lattice_vectors","(",")","tensor","(","[","[","1.",",","0.",",","0",".","]",",","[","0.",",","1.",",","0",".","]",",","[","0.",",","0.",",","1",".","]","]",")",">",">",">","lattice.recip_vectors","(",")","tensor","(","[","[","6.2832",",","0.0000",",","0.0000","]",",","[","0.0000",",","6.2832",",","0.0000","]",",","[","0.0000",",","0.0000",",","6.2832","]","]",")",">",">",">","lattice.volume","(",")","#","volume","of","the","unit","cell","tensor","(","1",".",")",">",">",">","lattice.get_lattice_ls","(","1.0",")","#","get","the","neighboring","lattice","vectors","tensor","(","[","[","0.",",","0.",",","-1",".","]",",","[","0.",",","-1.",",","0",".","]",",","[","-1.",",","0.",",","0",".","]",",","[","0.",",","0.",",","0",".","]",",","[","1.",",","0.",",","0",".","]",",","[","0.",",","1.",",","0",".","]",",","[","0.",",","0.",",","1",".","]","]",")",">",">",">","lattice.get_gvgrids","(","6.0",")","#","get","the","neighboring","G-vectors","(","tensor","(","[","[","0.0000",",","0.0000",",","-6.2832","]",",","[","0.0000",",","-6.2832",",","0.0000","]",",","[","-6.2832",",","0.0000",",","0.0000","]",",","[","0.0000",",","0.0000",",","0.0000","]",",","[","6.2832",",","0.0000",",","0.0000","]",",","[","0.0000",",","6.2832",",","0.0000","]",",","[","0.0000",",","0.0000",",","6.2832","]","]",")",",","tensor","(","[","1.0000",",","1.0000",",","1.0000",",","1.0000",",","1.0000",",","1.0000",",","1.0000","]",")",")",">",">",">","lattice.estimate_ewald_eta","(","1e-5",")","#","estimate","the","ewald","'s","sum","eta","1.8"]
docstr: estimate the ewald's sum eta for nuclei interaction energy the
  precision is assumed to be relative precision this formula is obtained
  by estimating the sum as an integral.
  
  Parameters
  ----------
  precision: float
      The precision of the ewald's sum.
  
  Returns
  -------
  eta: float
      The estimated eta.
docstr_tok: ["estimate","the","ewald","'s","sum","eta","for","nuclei","interaction","energy","the","precision","is","assumed","to","be","relative","precision","this","formula","is","obtained","by","estimating","the","sum","as","an","integral",".","Parameters","--","--","--","--","--","precision",":","float","The","precision","of","the","ewald","'s","sum",".","Returns","--","--","--","-","eta",":","float","The","estimated","eta","."]
code: def estimate_ewald_eta(self, precision: float) -> float:
      """estimate the ewald's sum eta for nuclei interaction energy the
      precision is assumed to be relative precision this formula is obtained
      by estimating the sum as an integral.
  
      Parameters
      ----------
      precision: float
          The precision of the ewald's sum.
  
      Returns
      -------
      eta: float
          The estimated eta.
  
      """
      vol = float(self.volume().detach())
      eta0 = np.sqrt(np.pi) / vol ** (1.0 / 3)
      eta = eta0 * erfcinv(0.5 * precision) / erfcinv(precision)
      return round(eta * 10) / 10
  
file_path: deepchem/deepchem/utils/dft_utils/hamilton/intor/lattice.py
imports: from typing import Tuple
  import torch
  import numpy
  from scipy.special import erfcinv
label_desc: Use image node_id 8 for calling the Lattice obj's underlying member method code with example usage: obj.estimate_ewald_eta(precision) and returns: unknown