packmol_step package#
Submodules#
packmol_step.installer module#
Installer for the PACKMOL plug-in.
This handles any further installation needed after installing the Python package packmol-step.
- class packmol_step.installer.Installer(logger=<Logger packmol_step.installer (WARNING)>)[source]#
- Bases: - InstallerBase- Handle further installation needed after installing packmol-step. - The Python package packmol-step should already be installed, using pip, conda, or similar. This plug-in-specific installer then checks for the PACKMOL executable, installing it if needed, and registers its location in seamm.ini. - There are a number of ways to determine which are the correct PACKMOL executables to use. The aim of this installer is to help the user locate the executables. There are a number of possibilities - The correct executables are already available. - If they are already registered in seamm.ini there is nothing else to do. 
- They may be in the current path, in which case they need to be added to seamm.ini. 
- If a module system is in use, a module may need to be loaded to give access to PACKMOL. 
- They cannot be found automatically, so the user needs to locate the executables for the installer. 
 
- PACKMOL is not installed on the machine. In this case they can be installed in a Conda environment. There is one choice - They can be installed in a separate environment, seamm-packmol by default. 
 
 
packmol_step.packmol module#
A step for building fluids with Packmol in a SEAMM flowchart
- class packmol_step.packmol.Packmol(flowchart=None, extension=None)[source]#
- Bases: - Node- description_text(P=None)[source]#
- Return a short description of this step. - Return a nicely formatted string describing what this step will do. - Keyword Arguments:
- P – a dictionary of parameter values, which may be variables or final values. If None, then the parameters values will be used as is. 
 
 - property git_revision#
- The git version of this module. 
 - property version#
- The semantic version of this module. 
 
- packmol_step.packmol.bounding_sphere(points)[source]#
- A fast, approximate method for finding the sphere containing a set of points. - See https://www.researchgate.net/publication/242453691_An_Efficient_Bounding_Sphere - This method is approximate. While the sphere is guaranteed to contain all the points it is a few percent larger than necessary on average. 
packmol_step.packmol_parameters module#
Control parameters for Packmol, currently for packing fluids
- class packmol_step.packmol_parameters.PackmolParameters(defaults={}, data=None)[source]#
- Bases: - Parameters- The control parameters for Packmol packing fluids - amounts = ('rounding this number of atoms', 'rounding this number of molecules', 'using the density', 'using the Ideal Gas Law')#
 - amounts_for_density = ('rounding this number of atoms', 'rounding this number of molecules')#
 - amounts_for_layer = ('using the density', 'using the Ideal Gas Law')#
 - parameters = {'a': {'default': 20, 'default_units': 'Å', 'description': 'a:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The length of the first side of the box.', 'kind': 'float'}, 'a_ratio': {'default': 1, 'default_units': '', 'description': 'a ratio:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The ratio for the first side of the box.', 'kind': 'float'}, 'approximate number of atoms': {'default': 2000, 'default_units': '', 'description': 'Approximate number of atoms:', 'enumeration': (), 'format_string': 'd', 'help_text': 'The approximate number of atoms packed into the cell. This will be rounded to give whole molecules', 'kind': 'integer'}, 'approximate number of molecules': {'default': 100, 'default_units': '', 'description': 'Approximate number of molecules:', 'enumeration': (), 'format_string': 'd', 'help_text': 'The approximate number of molecules to pack in the cell.', 'kind': 'integer'}, 'assign forcefield': {'default': 'If not assigned', 'default_units': '', 'description': 'Assign forcefield:', 'enumeration': ('If not assigned', 'Always', 'No'), 'format_string': 's', 'help_text': 'Whether to assign the forcefield to the molecules.', 'kind': 'enum'}, 'b': {'default': 20, 'default_units': 'Å', 'description': 'b:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The length of the second side of the box.', 'kind': 'float'}, 'b_ratio': {'default': 1, 'default_units': '', 'description': 'b ratio:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The ratio for the second side of the box.', 'kind': 'float'}, 'c': {'default': 20, 'default_units': 'Å', 'description': 'c:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The length of the third side of the box.', 'kind': 'float'}, 'c_ratio': {'default': 1, 'default_units': '', 'description': 'c ratio:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The ratio for the third side of the box.', 'kind': 'float'}, 'density': {'default': 0.7, 'default_units': 'g/ml', 'description': 'Density:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The target density of the cell.', 'kind': 'float'}, 'diameter': {'default': 20.0, 'default_units': 'Å', 'description': 'The diameter:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The diameter of the sphere or cylinder.', 'kind': 'float'}, 'dimensions': {'default': 'calculated from the density', 'default_units': '', 'description': 'The dimensions will be', 'enumeration': ('given explicitly', 'calculated from the volume', 'calculated from the solute dimensions', 'calculated from the density', 'calculated using the Ideal Gas Law'), 'format_string': 's', 'help_text': 'How to get the dimensions of the region', 'kind': 'enumeration'}, 'edge length': {'default': 20, 'default_units': 'Å', 'description': 'Length of the cube edge:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The length of the cube edge.', 'kind': 'float'}, 'fluid amount': {'default': 'rounding this number of atoms', 'default_units': '', 'description': 'Get number of fluid molecules by', 'enumeration': ('rounding this number of atoms', 'rounding this number of molecules'), 'format_string': 's', 'help_text': 'How to get the number of fluid molecules', 'kind': 'enumeration'}, 'gap': {'default': 2.0, 'default_units': 'Å', 'description': 'Gap around cell:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'Since Packmol does not support periodic systems we will build a box with this gap around the atoms, then make it periodic. The gap ensures that molecules at the boundary do not hit images', 'kind': 'float'}, 'molecules': {'default': [], 'default_units': None, 'description': 'The molecules', 'enumeration': (), 'format_string': '', 'help_text': 'An internal place to put the molecule definitions.', 'kind': 'list'}, 'periodic': {'default': 'No', 'default_units': '', 'description': 'Create periodic system:', 'enumeration': ('Yes', 'No'), 'format_string': 's', 'help_text': 'Whether to create a periodic system or not.', 'kind': 'boolean'}, 'pressure': {'default': 1.0, 'default_units': 'atm', 'description': 'P:', 'enumeration': (), 'format_string': '.2f', 'help_text': 'The pressure using an ideal gas model (PV=nRT).', 'kind': 'float'}, 'shape': {'default': 'spherical', 'default_units': '', 'description': 'Shape of the region:', 'enumeration': ('cubic', 'rectangular', 'spherical'), 'format_string': 's', 'help_text': 'The shape of the desired region.', 'kind': 'enumeration'}, 'solvent thickness': {'default': 10.0, 'default_units': 'Å', 'description': 'Solvent thickness:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The thickness of the layer of solvent around the solute', 'kind': 'float'}, 'temperature': {'default': 298.15, 'default_units': 'K', 'description': 'T:', 'enumeration': (), 'format_string': '.2f', 'help_text': 'The temperature using an ideal gas model (PV=nRT).', 'kind': 'float'}, 'volume': {'default': 8.0, 'default_units': 'nm^3', 'description': 'The volume of the cell:', 'enumeration': (), 'format_string': '.1f', 'help_text': 'The volume of the target cell.', 'kind': 'float'}}#
 - periodic_shapes = ('cubic', 'rectangular')#
 - shapes = ('cubic', 'rectangular', 'spherical')#
 
packmol_step.packmol_step module#
Helper class needed for the stevedore integration. Needs to provide a description() method that returns a dict containing a description of this node, and a factory() method for creating the graphical and non-graphical nodes.
packmol_step.tk_packmol module#
The graphical part of a Packmol step
- class packmol_step.tk_packmol.TkPackmol(tk_flowchart=None, node=None, canvas=None, x=None, y=None, w=200, h=50)[source]#
- Bases: - TkNode- Graphical interface for using Packmol for fluid boxes - handle_dialog(result)[source]#
- Handle closing the dialog. - Parameters:
- result (str) – The button that was pressed to close the dialog, or None if the x dialog close button was pressed. 
 
 - remove_molecule(row)[source]#
- Remove a molecule entry from the table. - Parameters:
- row (int) – The row in the table to remove. Note the first molecule is at row 1. 
 
 
Module contents#
packmol_step A step for building fluid boxes using Packmol
 
    