STORMM Source Documentation
|
An object for tracking the states and The object itself stores a series of permutor maps, detailing the atoms that move as a consequence of rotating about some bond or inverting a chiral center. One such map is kept for each unique topology, and the atom indices of a particular system are then obtained by adding the atom offset from the PhaseSpaceSynthesis, Condensate, or AtomGraphSynthesis. More...
#include <synthesis_permutor.h>
Public Member Functions | |
int | getSystemCount () const |
Get the total number of systems tracked in the synthesis. | |
int | getPermutorSetCount () const |
Get the number of unique permutor sets (the number of unique topologies served by the object). | |
int | getRotatableBondSampleCount () const |
Get the default number of rotatable bond angle samples. | |
int | getCisTransBondSampleCount () const |
Get the default number of cis-trans isomeric bond angle samples. | |
int | getVariableElementCount (int system_index) const |
Get the total number of variable elements in one of the systems: rotatable bonds, cis-trans bonds, and chiral centers (even centers that cannot invert are counted). | |
int | getSystemRotatableBondCount (int system_index) const |
Get the number of rotatable groups in one of the systems of the attached synthesis. | |
int | getSystemCisTransBondCount (int system_index) const |
Get the number of cis-trans isomeric groups in one of the systems of the attached synthesis. | |
int | getSystemChiralCenterCount (int system_index) const |
Get the number of chiral centers in one of the systems of the attached synthesis. | |
const IsomerPlan & | getRotatableGroup (int system_index, int group_index) const |
Get one of the rotatable groups. | |
const IsomerPlan & | getCisTransGroup (int system_index, int group_index) const |
Get one of the cis-trans isomeric groups. | |
const IsomerPlan & | getInvertibleGroup (int system_index, int group_index) const |
Get one of the invertible chiral centers. | |
const PhaseSpaceSynthesis * | getSynthesisPointer () const |
Get the a pointer to the coordinate synthesis for the collection of permutor maps. | |
const SyPermutorKit< double > | dpData (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
Get the double-precision read-only abstract for the object. | |
const SyPermutorKit< float > | spData (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
Get the single-precision read-only abstract for the object. | |
void | defineRotatableBondSettings (int map_index, const std::vector< std::vector< double > > &settings) |
Load specific settings into the available states of rotatable bonds for a particular system. If the vectors differ from the originally stated rotatable bond sample counts, the specific system will be updated. | |
void | defineCisTransBondSettings (int system_index, const std::vector< std::vector< double > > &settings) |
Load specific settings into the available states of cis-trans bonds for a particular system. If the vectors are not of length 2 (the assumption for the number of choices in a cis-trans rotatable bond), the number of states will be updated to accommodate the provided choices. | |
void | defineChiralCenterSettings (int system_index, const std::vector< std::vector< int > > &settings) |
Load specific settings into the available states of an invertible chiral center for a particular system. | |
void | setVariableRanges (const std::vector< double > &general_rot_settings_in, const std::vector< double > &general_ctx_settings_in, bool sample_cis_trans_states=false, bool sample_chiral_states=false) |
Set the ranges of variables (rotatable bonds, cis-trans bonds, chiral centers) for each permutor map. | |
void | impartControlData (const ConformerControls &confcon) |
Transfer control data from a &conformer namelist to the object. This will include vectors of torsion angle settings as well as information on how to adjust the settings based on a set of supplied structures. | |
SynthesisPermutor () | |
The constructor accepts an array of pointers to existing chemical features objects, in which case a pointer to the original object for each system will be retained. The constructor also accepts an array of topologies, in which case the chemical features object will be temporarily created for the purpose of extracting critical arrays of atoms used in manipulations while the pointer to the chemical features object itself will go on to read null. | |
SynthesisPermutor (const AtomGraphSynthesis *poly_ag, StopWatch *timer=nullptr) | |
SynthesisPermutor (const AtomGraphSynthesis &poly_ag, StopWatch *timer=nullptr) | |
SynthesisPermutor (const AtomGraphSynthesis *poly_ag, const ConformerControls &confcon, StopWatch *timer=nullptr) | |
SynthesisPermutor (const AtomGraphSynthesis &poly_ag, const ConformerControls &confcon, StopWatch *timer=nullptr) | |
SynthesisPermutor (const PhaseSpaceSynthesis *poly_ps, StopWatch *timer=nullptr) | |
SynthesisPermutor (const PhaseSpaceSynthesis &poly_ps, StopWatch *timer=nullptr) | |
SynthesisPermutor (const PhaseSpaceSynthesis *poly_ps, const ConformerControls &confcon, StopWatch *timer=nullptr) | |
SynthesisPermutor (const PhaseSpaceSynthesis &poly_ps, const ConformerControls &confcon, StopWatch *timer=nullptr) | |
SynthesisPermutor (const std::vector< ChemicalFeatures * > &chemfe_in, bool retain_pointers=true, StopWatch *timer=nullptr) | |
SynthesisPermutor (const std::vector< ChemicalFeatures > &chemfe_in, bool retain_pointers=true, StopWatch *timer=nullptr) | |
SynthesisPermutor (const std::vector< ChemicalFeatures * > &chemfe_in, const PhaseSpaceSynthesis *poly_ps, const ConformerControls &confcon, const bool retain_pointers=true, StopWatch *timer=nullptr) | |
SynthesisPermutor (const std::vector< ChemicalFeatures * > &chemfe_in, const PhaseSpaceSynthesis &poly_ps, const ConformerControls &confcon, const bool retain_pointers=true, StopWatch *timer=nullptr) | |
SynthesisPermutor (const std::vector< ChemicalFeatures > &chemfe_in, const PhaseSpaceSynthesis &poly_ps, const ConformerControls &confcon, const bool retain_pointers=true, StopWatch *timer=nullptr) | |
SynthesisPermutor (const SynthesisPermutor &original) | |
The presence of POINTER-kind Hybrid objects and multiple ARRAY-kind members means that the copy and move constructors as well as assignment operators must be written out explicitly. | |
SynthesisPermutor (SynthesisPermutor &&original) | |
SynthesisPermutor & | operator= (const SynthesisPermutor &other) |
SynthesisPermutor & | operator= (SynthesisPermutor &&other) |
int | getPermutorMapIndex (const AtomGraph *query_ag) const |
Match a topology to the permutor map index, or a system in a synthesis to its permutor map index. | |
int | getPermutorMapIndex (const AtomGraph &query_ag) const |
int | getPermutorMapIndex (const PhaseSpaceSynthesis *poly_ps, int system_index) const |
int | getPermutorMapIndex (const PhaseSpaceSynthesis &poly_ps, int system_index) const |
int | getRotatableBondCount (const int permutor_map_index) const |
Get the number of relevant rotatable bonds. | |
int | getRotatableBondCount () const |
int | getCisTransBondCount (const int permutor_map_index) const |
Get the number of relevant cis-trans isomeric bonds. | |
int | getCisTransBondCount () const |
int | getChiralCenterCount (const int permutor_map_index) const |
Get the number of relevant chiral centers. | |
int | getChiralCenterCount () const |
const std::vector< int > & | getElementSampleCounts (int system_index) const |
Get the numbers of options for each mutable element in a specific system. | |
const std::vector< int > & | getElementSampleCounts (const AtomGraph *query_ag) const |
const std::vector< int > & | getElementSampleCounts (const AtomGraph &query_ag) const |
int | getElementSampleCount (ConformationEdit element_kind, int index) const |
Get the number of settings to be sampled in one element, of a particular kind, from the concatenated list spanning all systems. | |
int | getElementSampleCount (CoupledEdit ce) const |
const TickCounter< double > & | getStateTracker (int system_index) const |
Get a const reference to the state tracker for the molecule. Also useable to get a copy of the state tracker which is then mutable. | |
const TickCounter< double > & | getStateTracker (const AtomGraph *ag) const |
const TickCounter< double > & | getStateTracker (const AtomGraph &ag) const |
llint | getReplicaCount (int query_index, SamplingIntensity effort) const |
Get the number of replicas needed to fulfill a given level of sampling in one of the permutor maps. | |
llint | getReplicaCount (const AtomGraph *query_ag, SamplingIntensity effort) const |
llint | getReplicaCount (const AtomGraph &query_ag, SamplingIntensity effort) const |
std::vector< llint > | getReplicaCount (SamplingIntensity effort) const |
const ChemicalFeatures * | getChemicalFeaturesPointer (int map_index) const |
Get the pointer to the chemical features object for one of the permutor maps, which can in turn reveal the original topology governing the map. This function will apply a check to ensure that the ChemicalFeatures pointers are valid. | |
const std::vector< ChemicalFeatures * > | getChemicalFeaturesPointer () const |
void | applySynthesis (const PhaseSpaceSynthesis *poly_ps_in, VariableTorsionAdjustment adj=VariableTorsionAdjustment::DO_NOT_CHANGE) |
Apply a synthesis to the permutor maps, which will be used as the starting point for defining new conformations of each molecule. If cis-trans or chirality sampling are shut off, the synthesis will be used to define the settings available for sampling. | |
void | applySynthesis (const PhaseSpaceSynthesis &poly_ps_in, VariableTorsionAdjustment adj=VariableTorsionAdjustment::DO_NOT_CHANGE) |
void | permuteSystem (PhaseSpaceSynthesis *psynth, int system_index, int map_index, const CoupledEdit ce, int setting_index, PrecisionModel prec=PrecisionModel::SINGLE) const |
Manipulate one of the systems inside a synthesis, based on the internal permutor maps. The type of manipulation will be interpreted so that the appropriate group of atoms can be set to the internal coordinates selected from the array of settings. See randomizeSystem() below for a discussion on the limited advantages of batching these operations to work on a single, real-valued coordinate set and then converting all of the coordinates back to the split fixed-precision format. | |
void | permuteSystem (int system_index, const CoupledEdit ce, int setting_index, PrecisionModel prec=PrecisionModel::SINGLE) |
void | randomizeSystem (PhaseSpaceSynthesis *psynth, int system_index, int map_index, Xoshiro256ppGenerator *xrs, PrecisionModel prec=PrecisionModel::SINGLE, const CoupledEdit mask_a={ ConformationEdit::BOND_ROTATION, -1 }, const CoupledEdit mask_b={ ConformationEdit::BOND_ROTATION, -1 }, const CoupledEdit mask_c={ ConformationEdit::BOND_ROTATION, -1 }) const |
Randomize the system's degrees of freedom. Up to three degrees of freedom can be masked against any changes. This function inherently converts the (possibly split) fixed-precision coordinate arrays of the synthesis to real numbers for manipulation, then converts the real numbers back. However, due to the limited extent to which this happens, it is not of much performance advantage to perform the full conversion of all coordinates to real values, batch the manipulations, and then convert the results back (primarily because of the reverse conversion). Such an optimization would also require additional code, and not be replicable on the GPU. | |
void | randomizeSystem (int system_index, Xoshiro256ppGenerator *xrs, PrecisionModel prec=PrecisionModel::SINGLE, const CoupledEdit mask_a={ ConformationEdit::BOND_ROTATION, -1 }, const CoupledEdit mask_b={ ConformationEdit::BOND_ROTATION, -1 }, const CoupledEdit mask_c={ ConformationEdit::BOND_ROTATION, -1 }) |
PhaseSpaceSynthesis | buildSynthesis (SamplingIntensity effort, Xoshiro256ppGenerator *xrs, std::vector< int > *correspondence, int system_limit, int globalpos_scale_bits=default_globalpos_scale_bits, int localpos_scale_bits=default_localpos_scale_bits, int velocity_scale_bits=default_velocity_scale_bits, int force_scale_bits=default_force_scale_bits, PrecisionModel prec=PrecisionModel::SINGLE, ClashReport *clrep=nullptr, int iteration_limit=default_conf_max_seeding_attempts, int max_clashes=default_conf_clash_pairs) const |
Produce a new synthesis containing permutations of each structure in the current synthesis linked to the object. | |
PhaseSpaceSynthesis | buildSynthesis (SamplingIntensity effort, Xoshiro256ppGenerator *xrs, std::vector< int > *correspondence, PrecisionModel prec, int system_limit, ClashReport *clrep=nullptr, int iteration_limit=default_conf_max_seeding_attempts, int max_clashes=default_conf_clash_pairs) const |
PhaseSpaceSynthesis | buildSynthesis (SamplingIntensity effort, Xoshiro256ppGenerator *xrs, int system_limit, int globalpos_scale_bits=default_globalpos_scale_bits, int localpos_scale_bits=default_localpos_scale_bits, int velocity_scale_bits=default_velocity_scale_bits, int force_scale_bits=default_force_scale_bits, PrecisionModel prec=PrecisionModel::SINGLE, ClashReport *clrep=nullptr, int iteration_limit=default_conf_max_seeding_attempts, int max_clashes=default_conf_clash_pairs) const |
PhaseSpaceSynthesis | buildSynthesis (SamplingIntensity effort, Xoshiro256ppGenerator *xrs, PrecisionModel prec, int system_limit, ClashReport *clrep=nullptr, int iteration_limit=default_conf_max_seeding_attempts, int max_clashes=default_conf_clash_pairs) const |
An object for tracking the states and The object itself stores a series of permutor maps, detailing the atoms that move as a consequence of rotating about some bond or inverting a chiral center. One such map is kept for each unique topology, and the atom indices of a particular system are then obtained by adding the atom offset from the PhaseSpaceSynthesis, Condensate, or AtomGraphSynthesis.
stormm::synthesis::SynthesisPermutor::SynthesisPermutor | ( | ) |
The constructor accepts an array of pointers to existing chemical features objects, in which case a pointer to the original object for each system will be retained. The constructor also accepts an array of topologies, in which case the chemical features object will be temporarily created for the purpose of extracting critical arrays of atoms used in manipulations while the pointer to the chemical features object itself will go on to read null.
poly_ag | Topology synthesis (sufficient for generating the object, but will calculate and discard chemical features for all individual topologies) |
poly_ps | Coordinate synthesis (also sufficient for generating the object, but will again imply creating and discarding chemical features) |
chemfe_in | A series of pointers to chemical features objects for each system |
retain_pointers | Indicate whether a pointer to the provided chemical features object should be retained. This has a default value of true to make it transparent to future development, with any SynthesisPermutor created based on a topology passing a value of false. |
timer | Wall time tracking object, passed down to ChemicalFeatures computations |
stormm::synthesis::SynthesisPermutor::SynthesisPermutor | ( | const SynthesisPermutor & | original | ) |
The presence of POINTER-kind Hybrid objects and multiple ARRAY-kind members means that the copy and move constructors as well as assignment operators must be written out explicitly.
original | The object to copy or move |
other | Another object sitting on the right hand side of the assignment operator |
void stormm::synthesis::SynthesisPermutor::applySynthesis | ( | const PhaseSpaceSynthesis * | poly_ps_in, |
VariableTorsionAdjustment | adj = VariableTorsionAdjustment::DO_NOT_CHANGE ) |
Apply a synthesis to the permutor maps, which will be used as the starting point for defining new conformations of each molecule. If cis-trans or chirality sampling are shut off, the synthesis will be used to define the settings available for sampling.
Overloaded:
poly_ps_in | The input synthesis of coordinates |
adj | The manner in which to adjust settings for the permutation of molecular geometric variables (e.g. rotatable bonds, chiral centers) in response to the initial state of the synthesis |
PhaseSpaceSynthesis stormm::synthesis::SynthesisPermutor::buildSynthesis | ( | SamplingIntensity | effort, |
Xoshiro256ppGenerator * | xrs, | ||
std::vector< int > * | correspondence, | ||
int | system_limit, | ||
int | globalpos_scale_bits = default_globalpos_scale_bits, | ||
int | localpos_scale_bits = default_localpos_scale_bits, | ||
int | velocity_scale_bits = default_velocity_scale_bits, | ||
int | force_scale_bits = default_force_scale_bits, | ||
PrecisionModel | prec = PrecisionModel::SINGLE, | ||
ClashReport * | clrep = nullptr, | ||
int | iteration_limit = default_conf_max_seeding_attempts, | ||
int | max_clashes = default_conf_clash_pairs ) const |
Produce a new synthesis containing permutations of each structure in the current synthesis linked to the object.
Overloaded:
effort | The degree of sampling to be carried out on the structures of the current synthesis. |
xrs | Random number generator to use in randomizing degrees of freedom not explicitly sampled |
system_limit | The maximum number of systems that the resulting synthesis can contain. If this limit would be exceeded, structures in the current synthesis will have their respective permutation efforts dialed down until the result falls within the system limits. |
globalpos_scale_bits | Global position coordinate bits after the decimal |
localpos_scale_bits | Local position coordinate bits after the decimal |
velocity_scale_bits | Velocity coordinate bits after the decimal |
force_scale_bits | Force component bits after the decimal |
prec | Precision model in whcih to do calculations for structural manipulations |
clrep | Object to collect reports on clashes in each structure as it is produced. A nullptr value will skip clash detection. If clashes are detected during EXHAUSTIVE permutation evaluations, the clashing structures will not be included in the output. In other contexts, if clash-free structures cannot be found within the allowed iterations, the structures will be removed from the output. |
iteration_limit | The maximum number of iterations for randomizing variable groups before the sturcture is declared a loss |
max_clashes | The maximum number of clashes between atoms before a structure is declared to clash |
void stormm::synthesis::SynthesisPermutor::defineChiralCenterSettings | ( | int | system_index, |
const std::vector< std::vector< int > > & | settings ) |
Load specific settings into the available states of an invertible chiral center for a particular system.
system_index | Index of the system of interest |
settings | A vector of vectors containing the acceptable settings as 0 or 1 |
void stormm::synthesis::SynthesisPermutor::defineCisTransBondSettings | ( | int | system_index, |
const std::vector< std::vector< double > > & | settings ) |
Load specific settings into the available states of cis-trans bonds for a particular system. If the vectors are not of length 2 (the assumption for the number of choices in a cis-trans rotatable bond), the number of states will be updated to accommodate the provided choices.
system_index | Index of the system of interest |
settings | A vector of vectors containing the acceptable settings as real numbers, in units of radians |
void stormm::synthesis::SynthesisPermutor::defineRotatableBondSettings | ( | int | map_index, |
const std::vector< std::vector< double > > & | settings ) |
Load specific settings into the available states of rotatable bonds for a particular system. If the vectors differ from the originally stated rotatable bond sample counts, the specific system will be updated.
system_index | Index of the system of interest |
settings | A vector of vectors containing the acceptable settings as real numbers, in units of radians |
const SyPermutorKit< double > stormm::synthesis::SynthesisPermutor::dpData | ( | HybridTargetLevel | tier = HybridTargetLevel::HOST | ) | const |
Get the double-precision read-only abstract for the object.
tier | Get data pointers relevant to the CPU, or to the GPU. |
const ChemicalFeatures * stormm::synthesis::SynthesisPermutor::getChemicalFeaturesPointer | ( | int | map_index | ) | const |
Get the pointer to the chemical features object for one of the permutor maps, which can in turn reveal the original topology governing the map. This function will apply a check to ensure that the ChemicalFeatures pointers are valid.
Overloaded:
map_index | Index of the map of interest (this will also be checked for validity) |
int stormm::synthesis::SynthesisPermutor::getChiralCenterCount | ( | const int | permutor_map_index | ) | const |
Get the number of relevant chiral centers.
Overloaded:
permutor_map_index | Index of the map / topology of interest |
int stormm::synthesis::SynthesisPermutor::getCisTransBondCount | ( | const int | permutor_map_index | ) | const |
Get the number of relevant cis-trans isomeric bonds.
Overloaded:
permutor_map_index | Index of the map / topology of interest |
const IsomerPlan & stormm::synthesis::SynthesisPermutor::getCisTransGroup | ( | int | system_index, |
int | group_index ) const |
Get one of the cis-trans isomeric groups.
system_index | Index of the system of interest within the attached synthesis |
group_index | The cis-trans isomeric group of interest |
int stormm::synthesis::SynthesisPermutor::getElementSampleCount | ( | ConformationEdit | element_kind, |
int | index ) const |
Get the number of settings to be sampled in one element, of a particular kind, from the concatenated list spanning all systems.
Overloaded:
element_kind The type of element, e.g. a rotatable bond
index Index of the variable element from within the concatenated list
const std::vector< int > & stormm::synthesis::SynthesisPermutor::getElementSampleCounts | ( | int | system_index | ) | const |
Get the numbers of options for each mutable element in a specific system.
Overloaded:
system_index | Index of the system of interest |
query_ag | Topology of interest (must match one of the topology pointers guiding a map, or the function will return an error) |
const IsomerPlan & stormm::synthesis::SynthesisPermutor::getInvertibleGroup | ( | int | system_index, |
int | group_index ) const |
Get one of the invertible chiral centers.
system_index | Index of the system of interest within the attached synthesis |
group_index | The chiral center of interest |
int stormm::synthesis::SynthesisPermutor::getPermutorMapIndex | ( | const AtomGraph * | query_ag | ) | const |
Match a topology to the permutor map index, or a system in a synthesis to its permutor map index.
Overloaded:
query_ag | The topology to search for |
poly_ps | Coordinate synthesis containing many systems with topology pointers |
system_index | Index of system within the coordinate synthesis |
llint stormm::synthesis::SynthesisPermutor::getReplicaCount | ( | int | query_index, |
SamplingIntensity | effort ) const |
Get the number of replicas needed to fulfill a given level of sampling in one of the permutor maps.
Overloaded:
query_index | Index of the system of interest within the attached synthesis |
query_ag | Pointer to the topology of interest |
effort | The requested level of sampling effort |
int stormm::synthesis::SynthesisPermutor::getRotatableBondCount | ( | const int | permutor_map_index | ) | const |
Get the number of relevant rotatable bonds.
Overloaded:
permutor_map_index | Index of the map / topology of interest |
const IsomerPlan & stormm::synthesis::SynthesisPermutor::getRotatableGroup | ( | int | system_index, |
int | group_index ) const |
Get one of the rotatable groups.
system_index | Index of the system of interest |
group_index | The rotatable group of interest |
const TickCounter< double > & stormm::synthesis::SynthesisPermutor::getStateTracker | ( | int | system_index | ) | const |
Get a const reference to the state tracker for the molecule. Also useable to get a copy of the state tracker which is then mutable.
Overloaded:
system_index | Index of the system of interest |
ag | System topology |
int stormm::synthesis::SynthesisPermutor::getSystemChiralCenterCount | ( | int | system_index | ) | const |
Get the number of chiral centers in one of the systems of the attached synthesis.
system_index | Index of the system of interest |
int stormm::synthesis::SynthesisPermutor::getSystemCisTransBondCount | ( | int | system_index | ) | const |
Get the number of cis-trans isomeric groups in one of the systems of the attached synthesis.
system_index | Index of the system of interest |
int stormm::synthesis::SynthesisPermutor::getSystemRotatableBondCount | ( | int | system_index | ) | const |
Get the number of rotatable groups in one of the systems of the attached synthesis.
system_index | Index of the system of interest |
int stormm::synthesis::SynthesisPermutor::getVariableElementCount | ( | int | system_index | ) | const |
Get the total number of variable elements in one of the systems: rotatable bonds, cis-trans bonds, and chiral centers (even centers that cannot invert are counted).
Overloaded:
system_index | Index of the system of interest |
void stormm::synthesis::SynthesisPermutor::impartControlData | ( | const ConformerControls & | confcon | ) |
Transfer control data from a &conformer namelist to the object. This will include vectors of torsion angle settings as well as information on how to adjust the settings based on a set of supplied structures.
confcon | User input derived from a &conformer namelist |
void stormm::synthesis::SynthesisPermutor::permuteSystem | ( | PhaseSpaceSynthesis * | psynth, |
int | system_index, | ||
int | map_index, | ||
const CoupledEdit | ce, | ||
int | setting_index, | ||
PrecisionModel | prec = PrecisionModel::SINGLE ) const |
Manipulate one of the systems inside a synthesis, based on the internal permutor maps. The type of manipulation will be interpreted so that the appropriate group of atoms can be set to the internal coordinates selected from the array of settings. See randomizeSystem() below for a discussion on the limited advantages of batching these operations to work on a single, real-valued coordinate set and then converting all of the coordinates back to the split fixed-precision format.
Overloaded:
psynth | The collection of systems to operate upon |
system_index | Index of the system to manipulate within synth |
map_index | Index of the permutor map (this can be inferred if the attached synthesis is the one being altered) |
ce | A tuple of the manipulation to perform and its index from within the concatenated lists spanning all permutor maps |
setting_index | Index of the setting to use, numbered 0, 1, ... N for a choice of N possible options |
void stormm::synthesis::SynthesisPermutor::randomizeSystem | ( | PhaseSpaceSynthesis * | psynth, |
int | system_index, | ||
int | map_index, | ||
Xoshiro256ppGenerator * | xrs, | ||
PrecisionModel | prec = PrecisionModel::SINGLE, | ||
const CoupledEdit | mask_a = { ConformationEdit::BOND_ROTATION, -1 }, | ||
const CoupledEdit | mask_b = { ConformationEdit::BOND_ROTATION, -1 }, | ||
const CoupledEdit | mask_c = { ConformationEdit::BOND_ROTATION, -1 } ) const |
Randomize the system's degrees of freedom. Up to three degrees of freedom can be masked against any changes. This function inherently converts the (possibly split) fixed-precision coordinate arrays of the synthesis to real numbers for manipulation, then converts the real numbers back. However, due to the limited extent to which this happens, it is not of much performance advantage to perform the full conversion of all coordinates to real values, batch the manipulations, and then convert the results back (primarily because of the reverse conversion). Such an optimization would also require additional code, and not be replicable on the GPU.
Overloaded:
psynth | The collection of systems to operate upon |
system_index | Index of the system to manipulate within synth |
map_index | Index of the permutor map to which the system corresponds (if the synthesis to manipulate differs from the one referenced in the object) |
xrs | Psuedo-random number generator for selecting random settings of each mutable element |
prec | Precision model under which to perform the structural operations |
mask_a | First of up to three features that will be left as they are found |
mask_c | Second of up to three features that will be left as they are found |
mask_b | Third of up to three features that will be left as they are found |
void stormm::synthesis::SynthesisPermutor::setVariableRanges | ( | const std::vector< double > & | general_rot_settings_in, |
const std::vector< double > & | general_ctx_settings_in, | ||
bool | sample_cis_trans_states = false, | ||
bool | sample_chiral_states = false ) |
Set the ranges of variables (rotatable bonds, cis-trans bonds, chiral centers) for each permutor map.
general_rot_settings_in | General-purpose settings for any rotatable bond |
general_ctx_settings_in | General-purpose settings for any cis-trans bond |
sample_cis_trans_states | Directive to sample cis- and trans-isomeric forms of double bonds (likely passed down from a &conformer namelist, which carries the same default value of FALSE) |
sample_chiral_states | Directive to sample D- and L-chiral states of invertible atom centers (likely passed down from a &conformer namelist, which carries the same default value of FALSE) |
const SyPermutorKit< float > stormm::synthesis::SynthesisPermutor::spData | ( | HybridTargetLevel | tier = HybridTargetLevel::HOST | ) | const |
Get the single-precision read-only abstract for the object.
tier | Get data pointers relevant to the CPU, or to the GPU. |