code: def _prepare_atoms(topology, compute_cycles=False):
      
      atom1 = next(topology.atoms())
      has_whitelists = hasattr(atom1, 'whitelist')
      has_cycles = hasattr(atom1, 'cycles')
      compute_cycles = compute_cycles and not has_cycles
  
      if compute_cycles or not has_whitelists:
          for atom in topology.atoms():
              if compute_cycles:
                  atom.cycles = set()
              if not has_whitelists:
                  atom.whitelist = OrderedSet()
                  atom.blacklist = OrderedSet()
  
      if compute_cycles:
          bond_graph = nx.Graph()
          bond_graph.add_nodes_from(topology.atoms())
          bond_graph.add_edges_from(topology.bonds())
          all_cycles = _find_chordless_cycles(bond_graph, max_cycle_size=8)
          for atom, cycles in zip(bond_graph.nodes, all_cycles):
              for cycle in cycles:
                  atom.cycles.add(tuple(cycle))
docs: Compute cycles and add white-/blacklists to atoms.