documentation/monster/note_about_merging_operations.md
## History
The code was originally written to make a conformer by merging as opposed to by mapping each combination.
The automerging route was therefore built on top of it.
The `_VictorAutomergeMixin` contains the automerging code,
most notably the classmethod `combine`.
This uses `simply_merge_hits` from the main class, written first.
Then to address the problem of rings merging oddly, the ring collapse functionality was added
and can be found in `_collapse_ring`.
Then the ring rejoining algorithm was tweaked to bond by default by proximity and not memory.
Now the rings are bonded by memory if original, by proximity if novel.
Then to address odd bonding, the class `Rectifier` was added.
This is a class called by Fragmenstein and not inherited.
However, the ring collapse code deals with odd ring sizes.
## Mapping
Also, mapping is done by the class `GPM` in `positional_mapping.py`.
This is used by both SMILES no-merging mode and the automerging mode.