# Load the configuration to be reacted.
configuration = nlread('PEO_Crosslink.hdf5')[-1]

# Specify the reactions of ethylene glycol using both possible atom arrangements.
reaction_a = CrosslinkReaction(
    add_bonds=[('REACT_C_A', 'REACT_O_B')],
    remove_atoms=['REACT_O_A', 'REACT_H_A', 'REACT_H_B'],
    bond_cutoff=5*Angstrom
)
reaction_b = CrosslinkReaction(
    add_bonds=[('REACT_O_A', 'REACT_C_B')],
    remove_atoms=['REACT_O_B', 'REACT_H_A', 'REACT_H_B'],
    bond_cutoff=5*Angstrom
)

# Explicitly define the reactive atom groups in the configuration.
reactive_atom_groups = [{'REACT_C_A': 0, 'REACT_O_A': 2, 'REACT_H_A': 8},
                        {'REACT_C_A': 1, 'REACT_O_A': 5, 'REACT_H_A': 9},
                        {'REACT_C_A': 10, 'REACT_O_A': 12, 'REACT_H_A': 18},
                        {'REACT_C_A': 11, 'REACT_O_A': 15, 'REACT_H_A': 19},
                        {'REACT_C_A': 20, 'REACT_O_A': 22, 'REACT_H_A': 28},
                        {'REACT_C_A': 21, 'REACT_O_A': 25, 'REACT_H_A': 29},
                        {'REACT_C_A': 30, 'REACT_O_A': 32, 'REACT_H_A': 38},
                        {'REACT_C_A': 31, 'REACT_O_A': 35, 'REACT_H_A': 39},
                        {'REACT_C_A': 40, 'REACT_O_A': 42, 'REACT_H_A': 48},
                        {'REACT_C_A': 41, 'REACT_O_A': 45, 'REACT_H_A': 49},
                        {'REACT_C_A': 50, 'REACT_O_A': 52, 'REACT_H_A': 58},
                        {'REACT_C_A': 51, 'REACT_O_A': 55, 'REACT_H_A': 59},
                        {'REACT_C_A': 60, 'REACT_O_A': 62, 'REACT_H_A': 68},
                        {'REACT_C_A': 61, 'REACT_O_A': 65, 'REACT_H_A': 69},
                        {'REACT_C_A': 70, 'REACT_O_A': 72, 'REACT_H_A': 78},
                        {'REACT_C_A': 71, 'REACT_O_A': 75, 'REACT_H_A': 79},
                        {'REACT_C_A': 80, 'REACT_O_A': 82, 'REACT_H_A': 88},
                        {'REACT_C_A': 81, 'REACT_O_A': 85, 'REACT_H_A': 89},
                        {'REACT_C_A': 90, 'REACT_O_A': 92, 'REACT_H_A': 98},
                        {'REACT_C_A': 91, 'REACT_O_A': 95, 'REACT_H_A': 99},
                        {'REACT_C_B': 0, 'REACT_O_B': 2, 'REACT_H_B': 8},
                        {'REACT_C_B': 1, 'REACT_O_B': 5, 'REACT_H_B': 9},
                        {'REACT_C_B': 10, 'REACT_O_B': 12, 'REACT_H_B': 18},
                        {'REACT_C_B': 11, 'REACT_O_B': 15, 'REACT_H_B': 19},
                        {'REACT_C_B': 20, 'REACT_O_B': 22, 'REACT_H_B': 28},
                        {'REACT_C_B': 21, 'REACT_O_B': 25, 'REACT_H_B': 29},
                        {'REACT_C_B': 30, 'REACT_O_B': 32, 'REACT_H_B': 38},
                        {'REACT_C_B': 31, 'REACT_O_B': 35, 'REACT_H_B': 39},
                        {'REACT_C_B': 40, 'REACT_O_B': 42, 'REACT_H_B': 48},
                        {'REACT_C_B': 41, 'REACT_O_B': 45, 'REACT_H_B': 49},
                        {'REACT_C_B': 50, 'REACT_O_B': 52, 'REACT_H_B': 58},
                        {'REACT_C_B': 51, 'REACT_O_B': 55, 'REACT_H_B': 59},
                        {'REACT_C_B': 60, 'REACT_O_B': 62, 'REACT_H_B': 68},
                        {'REACT_C_B': 61, 'REACT_O_B': 65, 'REACT_H_B': 69},
                        {'REACT_C_B': 70, 'REACT_O_B': 72, 'REACT_H_B': 78},
                        {'REACT_C_B': 71, 'REACT_O_B': 75, 'REACT_H_B': 79},
                        {'REACT_C_B': 80, 'REACT_O_B': 82, 'REACT_H_B': 88},
                        {'REACT_C_B': 81, 'REACT_O_B': 85, 'REACT_H_B': 89},
                        {'REACT_C_B': 90, 'REACT_O_B': 92, 'REACT_H_B': 98}]

# Define the CrosslinkConnector, using the defined reactions and reactive atom groups.
crosslink_connector = CrosslinkConnector(
    configuration,
    reactions=[reaction_a, reaction_b],
    reactive_atom_groups=reactive_atom_groups,
    max_number_of_reactions=5
)
