vibesketch.inputs.neb¶
Reaction-path inputs from a sketched reaction: NEB-TS for ORCA, CI-NEB for vibe-qc (#29).
Draw a reaction, then write the inputs for a nudged elastic band between its reactants and its products. Three things must hold, and each is checked:
The atoms are paired.
vibesketch.chem.mappingpairs every reactant atom with a product atom by the fewest bonds formed and broken. The pairing is shown before anything is written (reaction_mapping()), and the user can correct it by pinning atoms (m1:3=m3:5: reactant species m1’s atom 3 becomes product species m3’s atom 5). An ambiguous pairing is refused, never guessed.The ends match.
vibesketch.chem.endpointsbuilds the reactant and product complexes with their atoms in one order, the product turned onto the reactant so the band does not rotate.The writer can say it. The ORCA writer reuses the keyword model of
vibesketch.inputs.orcaand addsNEB-TS(climbing-image NEB, then a transition-state optimisation from the climbing image),NEB-CIorNEBwith a%nebblock; the product geometry goes in its own XYZ file. vibe-qc’srun_nebhas the climbing image but no transition-state refinement, so its writer writesneb-ciandneband refusesneb-tswith that reason. Both optimise the two ends first, as the built complexes are no minima.
Reagents drawn at the arrow are not part of the path. A species takes part
once per side; 2 A -> B is refused as unbalanced, since the drawing’s
species list does not say how many molecules react.
Module Attributes
The programs this module writes reaction-path inputs for. |
Functions
|
The mapping report as lines a person reviews: pairs, bond changes, refusals. |
|
The reaction-path input files for |
|
|
|
The atom mapping of |
|
Map |
Classes
|
What to compute along the path: the level of theory and the band. |
|
A mapped reaction and, when the mapping is clear, its two ends. |
- vibesketch.inputs.neb.NEB_PROGRAMS = ('orca', 'vibeqc')¶
The programs this module writes reaction-path inputs for.
- class vibesketch.inputs.neb.NebSpec(*, kind='neb-ts', method, basis=None, aux_basis=None, approximation=None, dispersion=None, solvent=None, resources=None, images=8, preopt_ends=True)[source]¶
Bases:
BaseModelWhat to compute along the path: the level of theory and the band.
kindisneb-ts(climbing-image NEB, then a transition-state optimisation; ORCA),neb-ci(climbing-image NEB) orneb(a plain band).imagescounts the images between the two ends.- Parameters:
- model_config = {'extra': 'forbid'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- kind: Literal['neb-ts', 'neb-ci', 'neb']¶
- solvent: model.Solvent | None¶
- resources: model.Resources | None¶
- class vibesketch.inputs.neb.ReactionPath(reaction, mapping, endpoints, charge, multiplicity, refusals=(), canvas=<factory>)[source]¶
Bases:
objectA mapped reaction and, when the mapping is clear, its two ends.
- Parameters:
- vibesketch.inputs.neb.mapping_text(report)[source]¶
The mapping report as lines a person reviews: pairs, bond changes, refusals.
- vibesketch.inputs.neb.neb_inputs(document, reaction, program, spec, pins=())[source]¶
The reaction-path input files for
reaction, and the mapping they rest on.Raises
WriterRefusalwith every reason when the reaction cannot be mapped clearly or the program cannot expressspec, for a program without a reaction-path writer, andUnknownReferencefor a reaction or species the document lacks.
- vibesketch.inputs.neb.parse_pin(text)[source]¶
m1:3=m3:5as (reactant species, atom, product species, atom), atoms 1-based.
- vibesketch.inputs.neb.reaction_mapping(document, reaction, pins=())[source]¶
The atom mapping of
reactionas the user reviews it, with any refusal.
- vibesketch.inputs.neb.reaction_path(document, reaction, pins=())[source]¶
Map
reactionofdocumentand build its two ends.Raises
UnknownReferencefor a reaction or pinned species the document lacks andValueErrorfor a malformed pin; everything else that stops the path is inReactionPath.refusals.- Parameters:
- Return type: