Processors are relatively simple. They form the fundamental steps of the martinize2 pipeline. Processors are called via their run_system() method. The default implementation of this method iterates over the molecules in the system, and runs the run_molecule() method on them. This means that implementations of Processors must implement either a run_system method, or a run_molecule method. If the processor can be run on independent molecules the run_molecule method is preferred; run_system should be used only for cases where the problem at hand cannot be separated in tasks-per-molecule.

In their run_molecule method Processor implementations are free to either modify molecules or create new ones. Either way, they must return a Molecule. The run_system will be called with a System, which will be modified in place.