class_docstr: Manages placeholders associated with batch of graphs and their topology
docstr: Converts the current batch of Coulomb Matrix into tensorflow feed_dict.
  
  Assigns the atom number and distance info to the
  placeholders tensors
  
  params
  ------
  batch : np.ndarray
    Array of Coulomb Matrix
  
  returns
  -------
  feed_dict : dict
    Can be merged with other feed_dicts for input into tensorflow
docstr_tok: ["Converts","the","current","batch","of","Coulomb","Matrix","into","tensorflow","feed_dict",".","Assigns","the","atom","number","and","distance","info","to","the","placeholders","tensors","params","--","--","--","batch",":","np.ndarray","Array","of","Coulomb","Matrix","returns","--","--","--","-","feed_dict",":","dict","Can","be","merged","with","other","feed_dicts","for","input","into","tensorflow"]
code: def batch_to_feed_dict(self, batch):
      """Converts the current batch of Coulomb Matrix into tensorflow feed_dict.
  
      Assigns the atom number and distance info to the
      placeholders tensors
  
      params
      ------
      batch : np.ndarray
        Array of Coulomb Matrix
  
      returns
      -------
      feed_dict : dict
        Can be merged with other feed_dicts for input into tensorflow
      """
      # Extract atom numbers
      num_atoms = list(map(sum, batch.astype(bool)[:, :, 0]))
      atom_number = [
          np.round(
              np.power(
                  2 * np.diag(batch[i, : num_atoms[i], : num_atoms[i]]),
                  1 / 2.4,
              )
          ).astype(int)
          for i in range(len(num_atoms))
      ]
  
      distance = []
      atom_membership = []
      distance_membership_i = []
      distance_membership_j = []
      start = 0
      for im, molecule in enumerate(atom_number):
          distance_matrix = (
              np.outer(molecule, molecule)
              / batch[im, : num_atoms[im], : num_atoms[im]]
          )
          np.fill_diagonal(distance_matrix, -100)
          distance.append(np.expand_dims(distance_matrix.flatten(), 1))
          atom_membership.append([im] * num_atoms[im])
          membership = np.array(
              [np.arange(num_atoms[im])] * num_atoms[im]
          )
          membership_i = membership.flatten(order="F")
          membership_j = membership.flatten()
          distance_membership_i.append(membership_i + start)
          distance_membership_j.append(membership_j + start)
          start = start + num_atoms[im]
      atom_number = np.concatenate(atom_number)
      distance = np.concatenate(distance, 0)
      distance = np.exp(
          -np.square(distance - self.steps) / (2 * self.step_size**2)
      )
      distance_membership_i = np.concatenate(distance_membership_i)
      distance_membership_j = np.concatenate(distance_membership_j)
      atom_membership = np.concatenate(atom_membership)
      # Generate dicts
      dict_DTNN = {
          self.atom_number_placeholder: atom_number,
          self.distance_placeholder: distance,
          self.atom_membership_placeholder: atom_membership,
          self.distance_membership_i_placeholder: distance_membership_i,
          self.distance_membership_j_placeholder: distance_membership_j,
      }
      return dict_DTNN
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import unicode_literals
  import warnings
  import numpy
  import tensorflow
  from deepchem.nn.copy import Input
  from deepchem.feat.mol_graphs import ConvMol
label_desc: Use image node_id 4 for calling the DTNNGraphTopology obj's underlying member method code with example usage: obj.batch_to_feed_dict(batch) and returns: dict_DTNN