code: def atoms(lines):
      
      # Convert sdf style charge to actual charge
      conv_charge_table = {0: 0, 1: 3, 2: 2, 3: 1, 4: 0, 5: -1, 6: -2, 7: -3}
      results = {}
      for i, line in enumerate(lines):
          symbol = line[31:34].rstrip()
          try:
              atom = Atom(symbol)
          except KeyError:
              raise ValueError(symbol)
          xpos = float(line[0:10])
          ypos = float(line[10:20])
          zpos = float(line[20:30])
          atom.coords = (xpos, ypos, zpos)
          atom.mass_diff = int(line[34:37])
          old_sdf_charge = int(line[37:40])
          atom.charge = conv_charge_table[old_sdf_charge]
          if old_sdf_charge == 4:
              atom.radical = 1
          # atom.stereo_flag = int(line[40:43])  # Not used
          # valence = int(line[46:49])
          # if valence:
          #     atom.valence = valence
          results[i + 1] = {"atom": atom}
      return results
docs: Parse atom block into atom objects
  
      Returns:
          dict: networkx nodes