code: def _parse_atoms_block(sdf, n_atoms):
      # The first three fields, 10 characters long each, describe the atom's
      # position in the X, Y, and Z dimensions.
      # After that there is a space, and three characters for an atomic symbol.
      # After the symbol, there are two characters for the mass difference from
      # the monoisotope.
      # Next you have three characters for the charge.
      # There are ten more fields with three characters each, but these are all
      # rarely used.
  
      start = HEADER_SIZE + 1  # Add 1 for counts line
      stop = start + n_atoms
      values = sdf[start:stop]
  
      atoms = []
      for i, v in enumerate(values):
          coords = np.array(
              [float(v[pos : pos + 10]) for pos in range(0, 30, 10)]
          )
          atomic_num = _get_atomic_num(v[31:34].strip())
          iso = int(v[34:36])
          charge = int(v[36:39])
          info = np.array(
              [int(v[pos : pos + 3]) for pos in range(39, len(v), 3)]
          )
          atoms.append(
              {
                  "index": i,
                  "coords": coords,
                  "atomic_num": atomic_num,
                  "iso": iso,
                  "charge": charge,
                  "info": info,
              }
          )
      return atoms
  
imports: import ast
  import sys
  import joblib
  import networkx
  import numpy
  import pandas
  import scipy.sparse
  from spektral.data.graph import Graph
label_desc: Use image node_id 16 for calling a global function with example usage: _parse_atoms_block(sdf, n_atoms) and returns: atoms