physics module

Full Documentation for hippynn.graphs.nodes.physics module. Click here for a summary page.

Nodes for physics transformations

class AtomToMolSummer(name, parents, module='auto', **kwargs)[source]

Bases: ExpandParents, AutoNoKw, SingleNode

auto_module_class

alias of MolSummer

expansion0(features, **kwargs)[source]

Used for creation from parents with signature (Node)

expansion1(features, pdxer, **kwargs)[source]

Used for creation from parents with signature (Node, AtomIndexer)

index_state: IdxType | None = 'Systems'
input_names = ('features', 'system_index', 'n_systems')
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
class BondToMolSummmer(name, parents, module='auto', **kwargs)[source]

Bases: ExpandParents, AutoNoKw, SingleNode

auto_module_class

alias of MolPairSummer

expansion0(features, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Node)

expansion1(features, pdxer, pair_idxer, **kwargs)[source]

Used for creation from parents with signature (Node, AtomIndexer, PairIndexer)

expansion2(features, system_index, n_systems, **kwargs)[source]

Used for creation from parents with signature (Node, Node, Node, Node, Node)

index_state: IdxType | None = 'Systems'
input_names = ('pairfeatures', 'system_index', 'n_systems', 'pair_first')
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
class ChargeMomentNode(name, parents, module='auto', **kwargs)[source]

Bases: ExpandParents, AutoNoKw, SingleNode

expansion0(charges, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Node)

expansion1(charges, positions, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Charges, PositionsNode)

expansion2(charges, positions, pdxer, **kwargs)[source]

Used for creation from parents with signature (Charges, PositionsNode, AtomIndexer)

input_names = ('charges', 'positions', 'system_index', 'n_systems')
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
class ChargePairSetup(name, parents, *args, **kwargs)[source]

Bases: ExpandParents

expansion0(charges, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Charges)

expansion1(charges, species, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Charges, SpeciesNode)

expansion2(charges, pos_or_pair, species, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Charges, Node, SpeciesNode)

expansion3(charges, positions, pidxer, *, cutoff_distance, **kwargs)[source]

Used for creation from parents with signature (Charges, PositionsNode, PaddingIndexer)

expansion4(charges, pairfinder, pidxer, *, cutoff_distance, **kwargs)[source]

Used for creation from parents with signature (Charges, PairIndexer, AtomIndexer)

parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
class CombineEnergyNode(*args, module='auto', **kwargs)[source]

Bases: AutoNoKw, Energies, ExpandParents, MultiNode

Combines Local atom energies from different Energy Nodes.

Note

This node has parent expansion, following these procedures.

  1. If matching (Node, Energies), then apply expansion0

  2. If matching (Energies, Node), then apply expansion0

  3. If matching (Node, Node), then apply expansion1

  4. If matching (Node, Node, PaddingIndexer), then apply expansion2

  5. Asserts that the number of parents is 4

  6. Transforms the parents to have index states (<IdxType.Atoms>, <IdxType.Atoms>, None, None)

auto_module_class

alias of CombineEnergy

expansion0(energy_1, energy_2, **kwargs)[source]

Used for creation from parents with signature (Energies, Node)

expansion1(energy_1, energy_2, **kwargs)[source]

Used for creation from parents with signature (Node, Node)

expansion2(energy_1, energy_2, pdindexer, **kwargs)[source]

Used for creation from parents with signature (Node, Node, PaddingIndexer)

input_names = ('input_atom_energy_1', 'input_atom_energy_2', 'system_index', 'n_systems')
main_output_name = 'mol_energy'
output_index_states = (<IdxType.Systems>, <IdxType.Atoms>)
output_names = ('mol_energy', 'atom_energies')
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
class CoulombEnergyNode(*args, module='auto', module_kwargs=None, **kwargs)[source]

Bases: AutoKw, ChargePairSetup, Energies, MultiNode, _DeprecatedNamesMixin

Besides the normal ‘name’ and ‘parents’ arguments, this node requires an energy_conversion parameter. This corresponds to coulomb’s constant k in the equation E = kqq/r.

Note

This node has parent expansion, following these procedures.

  1. If matching (Charges), then apply expansion0

  2. If matching (Charges, PairIndexer), then apply expansion1

  3. If matching (Charges, PositionsNode), then apply expansion1

  4. If matching (Charges, SpeciesNode), then apply expansion1

  5. If matching (Charges, Node, SpeciesNode), then apply expansion2

  6. If matching (Charges, PositionsNode, PaddingIndexer), then apply expansion3

  7. If matching (Charges, PairIndexer, AtomIndexer), then apply expansion4

  8. Asserts that the number of parents is 6

  9. Gets main_output of nodes: casts MultiNodes to their main output

  10. Transforms the parents to have index states (<IdxType.Atoms>, None, None, None, None, None)

auto_module_class

alias of CoulombEnergy

auto_module_kwargs: Tuple[str] | Dict[str, str] | None = 'energy_conversion_factor'
input_names = ('charges', 'pair_dist', 'pair_first', 'pair_second', 'system_index', 'n_systems')
main_output_name = 'system_energies'
output_index_states = (<IdxType.Systems>, <IdxType.Atoms>, <IdxType.Atoms>)
output_names = ('system_energies', 'atom_energies', 'atom_voltages')
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
class DipoleNode(name, parents, module='auto', **kwargs)[source]

Bases: ChargeMomentNode

Compute the dipole of point charges.

Note

This node has parent expansion, following these procedures.

  1. If matching (Node), then apply expansion0

  2. If matching (Charges, PositionsNode), then apply expansion1

  3. If matching (Charges, PositionsNode, AtomIndexer), then apply expansion2

  4. Asserts that the number of parents is 4

  5. Gets main_output of nodes: casts MultiNodes to their main output

  6. Transforms the parents to have index states (<IdxType.Atoms>, <IdxType.Atoms>, None, None)

auto_module_class

alias of Dipole

children: Tuple[Node]
index_state: IdxType | None = 'Systems'
name: str
origin_node: Node | None
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
parents: Tuple[Node]
torch_module: torch.nn.Module
class GradientNode(name, parents, sign, **kwargs)[source]

Bases: AutoKw, SingleNode

Compute the gradient of a quantity.

auto_module_class

alias of Gradient

auto_module_kwargs: Tuple[str] | Dict[str, str] | None = ('sign',)
input_names = ('energy', 'coordinates')
class MultiGradientNode(name: str, molecular_energies_parent: Node, generalized_coordinates_parents: tuple[Node], signs: tuple[int], **kwargs)[source]

Bases: AutoKw, MultiNode

Compute the gradient of a quantity.

auto_module_class

alias of MultiGradient

auto_module_kwargs: Tuple[str] | Dict[str, str] | None = ('signs',)
class PerAtom(name, parents, module='auto', **kwargs)[source]

Bases: ExpandParents, AutoNoKw, SingleNode

auto_module_class

alias of PerAtom

expansion0(features, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Node)

expansion1(features, species, **kwargs)[source]

Used for creation from parents with signature (Node, Node)

index_state: IdxType | None = 'Systems'
input_names = ('features', 'species')
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
class QuadrupoleNode(name, parents, module='auto', **kwargs)[source]

Bases: ChargeMomentNode

Compute the traceless quadrupole of point charges.

Note

This node has parent expansion, following these procedures.

  1. If matching (Node), then apply expansion0

  2. If matching (Charges, PositionsNode), then apply expansion1

  3. If matching (Charges, PositionsNode, AtomIndexer), then apply expansion2

  4. Asserts that the number of parents is 4

  5. Gets main_output of nodes: casts MultiNodes to their main output

  6. Transforms the parents to have index states (<IdxType.Atoms>, <IdxType.Atoms>, None, None)

auto_module_class

alias of Quadrupole

children: Tuple[Node]
index_state: IdxType | None = 'QuadMol'
name: str
origin_node: Node | None
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
parents: Tuple[Node]
torch_module: torch.nn.Module
class ScreenedCoulombEnergyNode(name, parents, energy_conversion_factor, cutoff_distance, screening=None, module='auto', **kwargs)[source]

Bases: AutoKw, ChargePairSetup, Energies, MultiNode, _DeprecatedNamesMixin

Besides the normal ‘name’ and ‘parents’ arguments, this node requires an energy_conversion parameter. This corresponds to coulomb’s constant k in the equation E = kqq/r.

Note

This node has parent expansion, following these procedures.

  1. If matching (Charges), then apply expansion0

  2. If matching (Charges, PairIndexer), then apply expansion1

  3. If matching (Charges, PositionsNode), then apply expansion1

  4. If matching (Charges, SpeciesNode), then apply expansion1

  5. If matching (Charges, Node, SpeciesNode), then apply expansion2

  6. If matching (Charges, PositionsNode, PaddingIndexer), then apply expansion3

  7. If matching (Charges, PairIndexer, AtomIndexer), then apply expansion4

  8. Asserts that the number of parents is 6

  9. Gets main_output of nodes: casts MultiNodes to their main output

  10. Transforms the parents to have index states (<IdxType.Atoms>, None, None, None, None, None)

auto_module_class

alias of ScreenedCoulombEnergy

auto_module_kwargs: Tuple[str] | Dict[str, str] | None = {'energy_conversion_factor': 'energy_conversion_factor', 'radius': 'cutoff_distance', 'screening': 'screening'}
input_names = ('charges', 'pair_dist', 'pair_first', 'pair_second', 'system_index', 'n_systems')
main_output_name = 'system_energies'
output_index_states = (<IdxType.Systems>, <IdxType.Atoms>, <IdxType.Atoms>)
output_names = ('system_energies', 'atom_energies', 'atom_voltages')
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
parent_expansion_kwargs: Tuple[str] | Dict[str, str] | None = ('cutoff_distance',)
class StrainInducer(name, parents, module='auto', **kwargs)[source]

Bases: AutoNoKw, MultiNode

auto_module_class

alias of CellScaleInducer

input_names = ('coordinates', 'cell')
output_index_states = NotImplemented
output_names = ('strained_coordinates', 'strained_cell', 'strain')
class StressForceNode(name, parents, module='auto', **kwargs)[source]

Bases: AutoNoKw, MultiNode

auto_module_class

alias of StressForce

input_names = ('energy', 'strain', 'coordinates', 'cell')
output_names = ('forces', 'stress')
class VecMag(name, parents, module='auto', _helper=None, **kwargs)[source]

Bases: ExpandParents, AutoNoKw, SingleNode

auto_module_class

alias of VecMag

expansion2(vector, helper, *, purpose, **kwargs)[source]

Used for creation from parents with signature (Node, Node)

index_state: IdxType | None = 'Unlabeled'
input_names = ('vector',)
parent_expander: ParentExpander = <hippynn.graphs.nodes.base.definition_helpers.ParentExpander object>
setup_stressforce_nodes(energy_node, return_transformed_inputs=False, positions_node='auto', cell_node='auto', strain_node='auto')[source]

_summary_

Parameters:
  • energy_node – the energy to differenitate

  • return_transformed_inputs – If true, return the strained positions, strained cell, and strain

  • position_node – defaults to “auto”

  • cell_node – defaults to “auto”

  • strain_node – defaults to “auto”

Using “auto” will cause a failure if the corresponding node cannot be found or is ambiguous.

Returns:

(forces, stress) or (forces, stress, strained_positions, strained_cell, strain) depending on return_transformed_inputs flag.