class_docstr: Calculate sine Coulomb matrix for crystals.
  
  A variant of Coulomb matrix for periodic crystals.
  
  The sine Coulomb matrix is identical to the Coulomb matrix, except
  that the inverse distance function is replaced by the inverse of
  sin**2 of the vector between sites which are periodic in the
  dimensions of the crystal lattice.
  
  Features are flattened into a vector of matrix eigenvalues by default
  for ML-readiness. To ensure that all feature vectors are equal
  length, the maximum number of atoms (eigenvalues) in the input
  dataset must be specified.
  
  This featurizer requires the optional dependencies pymatgen and
  matminer. It may be useful when crystal structures with 3D coordinates
  are available.
  
  See [1]_ for more details.
  
  References
  ----------
  .. [1] Faber et al. "Crystal Structure Representations for Machine
      Learning Models of Formation Energies", Inter. J. Quantum Chem.
      115, 16, 2015. https://arxiv.org/abs/1503.07406
  
  Examples
  --------
  >>> import deepchem as dc
  >>> import pymatgen as mg
  >>> lattice = mg.core.Lattice.cubic(4.2)
  >>> structure = mg.core.Structure(lattice, ["Cs", "Cl"], [[0, 0, 0], [0.5, 0.5, 0.5]])
  >>> featurizer = dc.feat.SineCoulombMatrix(max_atoms=2)
  >>> features = featurizer.featurize([structure])
  >>> type(features[0])
  <class 'numpy.ndarray'>
  >>> features[0].shape # (max_atoms,)
  (2,)
  
  
  Note
  ----
  This class requires matminer and Pymatgen to be installed.
docstr: Parameters
  ----------
  max_atoms: int (default 100)
      Maximum number of atoms for any crystal in the dataset. Used to
      pad the Coulomb matrix.
  flatten: bool (default True)
      Return flattened vector of matrix eigenvalues.
docstr_tok: ["Parameters","--","--","--","--","--","max_atoms",":","int","(","default","100",")","Maximum","number","of","atoms","for","any","crystal","in","the","dataset",".","Used","to","pad","the","Coulomb","matrix",".","flatten",":","bool","(","default","True",")","Return","flattened","vector","of","matrix","eigenvalues","."]
code: def __init__(self, max_atoms: int = 100, flatten: bool = True):
      """
      Parameters
      ----------
      max_atoms: int (default 100)
          Maximum number of atoms for any crystal in the dataset. Used to
          pad the Coulomb matrix.
      flatten: bool (default True)
          Return flattened vector of matrix eigenvalues.
      """
      self.max_atoms = max_atoms
      self.flatten = flatten
      self.scm: Any = None
  
file_path: deepchem/deepchem/feat/material_featurizers/sine_coulomb_matrix.py
imports: import numpy
  from deepchem.utils.typing import PymatgenStructure
  from deepchem.feat import MaterialStructureFeaturizer
  from deepchem.utils.data_utils import pad_array
  from typing import Any
label_desc: Use image node_id 1 to create a new SineCoulombMatrix object from inherited base classes: MaterialStructureFeaturizer with example: obj = SineCoulombMatrix(max_atoms, flatten)