def bond_atoms(atom_list):
    """
    Attempt to merge allowed atoms given allowed rules and combinations.
    This will be based off an R group of a given fragment.
    Loss function to define a good molecule - More bonds, more interactions, less atoms.
    Simply as ratios:
    bonds-fulfilled / atom
    interactions / atom
    Need to keep the ratio as low
    Just train on single molecules, then try merging two, then more and more.
    :param atom_list: the list of allowed atoms, x,y,z and atom desc (atomic number and hybridization state)
    :return:
    """
    pass
