Source code for vermouth.processors.processor
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2018 University of Groningen
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Provides an abstract base class for processors.
"""
[docs]
class Processor:
"""
An abstract base class for processors. Subclasses must implement a
`run_molecule` method.
"""
[docs]
def run_system(self, system):
"""
Process `system`.
Parameters
----------
system: vermouth.system.System
The system to process. Is modified in-place.
"""
mols = []
for molecule in system.molecules:
mols.append(self.run_molecule(molecule))
system.molecules = mols
[docs]
def run_molecule(self, molecule):
"""
Process a single molecule. Must be implemented by subclasses.
Parameters
----------
molecule: vermouth.molecule.Molecule
The molecule to process.
Returns
-------
vermouth.molecule.Molecule
Either the provided molecule, or a brand new one.
"""
raise NotImplementedError