Source code for molsysmt.form.openmm_Context.get_structural_attributes

#######################################################################################
########### THE FOLLOWING LINES NEED TO BE CUSTOMIZED FOR EVERY CLASS  ################
#######################################################################################

from molsysmt._private.exceptions import NotImplementedMethodError, NotWithThisFormError
from molsysmt._private.digestion import digest
from molsysmt._private.variables import is_all
from molsysmt import pyunitwizard as puw
import numpy as np
import types

form='openmm.Context'


## From atom

[docs] @digest(form=form) def get_coordinates_from_atom(item, indices='all', structure_indices='all', skip_digestion=False): coordinates = item.getState(getPositions=True).getPositions(asNumpy=True) unit = puw.get_unit(coordinates) coordinates = puw.get_value(coordinates) coordinates = coordinates.reshape(1, coordinates.shape[0], coordinates.shape[1]) if not is_all(structure_indices): coordinates = coordinates[structure_indices,:,:] if not is_all(indices): coordinates = coordinates[:,indices,:] coordinates = coordinates * unit coordinates = puw.standardize(coordinates) return coordinates
[docs] @digest(form=form) def get_velocities_from_atom(item, indices='all', structure_indices='all', skip_digestion=False): velocities = item.getState(getVelocities=True).getVelocities(asNumpy=True) unit = puw.get_unit(velocities) velocities = puw.get_value(velocities) velocities = velocities.reshape(1, velocities.shape[0], velocities.shape[1]) if not is_all(structure_indices): velocities = velocities[structure_indices,:,:] if not is_all(indices): velocities = velocities[:,indices,:] velocities = velocities * unit velocities = puw.standardize(velocities) return velocities
## From group ## From component ## From molecule ## From chain ## From entity ## From system
[docs] @digest(form=form) def get_coordinates_from_system(item, structure_indices='all', skip_digestion=False): coordinates = item.getState(getPositions=True).getPositions(asNumpy=True) unit = puw.get_unit(coordinates) coordinates = puw.get_value(coordinates) coordinates = coordinates.reshape(1, coordinates.shape[0], coordinates.shape[1]) if not is_all(structure_indices): coordinates = coordinates[structure_indices,:,:] coordinates = coordinates * unit coordinates = puw.standardize(coordinates) return coordinates
[docs] @digest(form=form) def get_velocities_from_system(item, structure_indices='all', skip_digestion=False): velocities = item.getState(getVelocities=True).getVelocities(asNumpy=True) unit = puw.get_unit(velocities) velocities = puw.get_value(velocities) velocities = velocities.reshape(1, velocities.shape[0], velocities.shape[1]) if not is_all(structure_indices): velocities = velocities[structure_indices,:,:] velocities = velocities * unit velocities = puw.standardize(velocities) return velocities
[docs] @digest(form=form) def get_box_from_system(item, structure_indices='all', skip_digestion=False): box=item.getState().getPeriodicBoxVectors(asNumpy=True) if box is not None: box_unit = box.unit box = np.array(box._value) box = box.reshape(1, box.shape[0], box.shape[1]) box = box * box_unit output=None if box is not None: if is_all(structure_indices): output=box else: output=box[structure_indices,:,:] return output
[docs] @digest(form=form) def get_time_from_system(item, structure_indices='all', skip_digestion=False): output = item.getState().getTime() value = puw.get_value(output) unit = puw.get_unit(output) output = np.array([value])*unit output = puw.standardize(output) return output
[docs] @digest(form=form) def get_structure_id_from_system(item, structure_indices='all', skip_digestion=False): return None
[docs] @digest(form=form) def get_n_structures_from_system(item, structure_indices='all', skip_digestion=False): if is_all(structure_indices): return 1 else: len(structure_indices)
## From bond # List of functions to be imported __all__ = [name for name, obj in globals().items() if isinstance(obj, types.FunctionType) and name.startswith('get_')]