diff --git a/modules/mol/mm/doc/topology.rst b/modules/mol/mm/doc/topology.rst new file mode 100644 index 0000000000000000000000000000000000000000..ef20c0f4704b21b4cdac46472b2de8c60c732b1b --- /dev/null +++ b/modules/mol/mm/doc/topology.rst @@ -0,0 +1,1202 @@ +Topology +================================================================================ + +.. currentmodule:: ost.mol + +The :class:`Topology` object is an abstract representation of a protein +structure or any combination of particles that interact with each other in +some way. Being initialized with a list of masses representing the particles, +the topology allows to define arbitrary forces between these particles. The +:class:`Topology` gets internally translated to a molecular mechanics system +as soon as a :class:`Simulation` is set up. To make setting up a +:class:`Topology` more convenient, the :class:`TopologyCreator` class allows +to create a :class:`Topology` based on an mm :class:`Settings` object, +that should suffice most needs. + +.. class:: TopologyCreator + + .. method:: Create(entity, settings) + + Creates a topology given an :class:`EntityHandle` and a :class:`Settings` + object. Note, that the :class:`EntityHandle` is passed by reference + and gets altered by adding hydrogens and modification of terminal residues + based on the information given by the :class:`Settings`/:class:`Forcefield`. + + :param entity: :class:`EntityHandle` + :param settings: :class:`Settings` + + +.. class:: Topology + + + .. method:: Save(filename) + + Dump Toplogy into binary file + + :param filename: :class:`str` + + + .. method:: Load(filename) + + Load binary topology from disk + + :param filename: :class:`str` + + :returns: loaded :class:`Topology` + + :raises: :class:`RuntimeError` when file can't be found + + + .. method:: Merge(other) + + Merges in another :class:`Topology` and adds all their particles and interactions. + Assuming the actual :class:`Topology` containing n particles, the indexing of the + other :class:`Topology` gets altered by adding n everywhere. + + :param other: :class:`Topology` + + :raises: :class:`RuntimeError` if fudge parameters are not consistent + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains charges but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains sigmas but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains epsilons but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains GBSA Radii but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains OBC scalings but the other not + + .. method:: Merge(ent, other, other_ent) + + Merges in another :class:`Topology` and adds all their particles and + interactions. Assuming the actual :class:`Topology` containing n particles, + the indexing of the other :class:`Topology` gets altered by adding n + everywhere. This version of the Merge function assumes, the current topology + to describe the :class:`EntityHandle` ent and the other :class:`Topology` + to describe the :class:`EntityHandle` other_ent. During merging, all + chains, residues, atoms and bonds from other ent are pulled into ent in + a way, that the current :class:`Topology` is consistent with the + :class:`EntityHandle` ent. + + :param ent: :class:`EntityHandle` + + :param other: :class:`Topology` + + :param other_ent: :class:`EntityHandle` + + :raises: :class:`RuntimeError` if fudge parameters are not consistent + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains charges but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains sigmas but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains epsilons but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains GBSA Radii but the other not + + :raises: :class:`RuntimeError` if current :class:`Topology` + contains OBC scalings but the other not + + :raises: :class:`RuntimeError` if the number of atoms in one + of the entities is not consistent with their related + topologies. + + :raises: :class:`RuntimeError` other_ent contains a chain with + a name already present in ent. + + + .. method:: AddHarmonicBond(index_one, index_two, bond_length, force_constant) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param bond_length: :class:`float` + + :param force_constant: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + + .. method:: AddHarmonicAngle(index_one, index_two, index_three, bond_length, + force_constant) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param angle: :class:`float` + + :param force_constant: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: AddUreyBradleyAngle(index_one, index_two, index_three, + angle, angle_force_constant, + bond_length, bond_force_constant) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param angle: :class:`float` + + :param angle_force_constant: :class:`float` + + :param bond_length: :class:`float` + + :param bond_force_constant: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: AddPeriodicDihedral(index_one, index_two, index_three, index_four, + multiplicity, phase, force_constant) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :param multiplicity: :class:`int` + + :param phase: :class:`float` + + :param force_constant: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: AddPeriodicImproper(index_one, index_two, index_three, index_four, + multiplicity, phase, force_constant) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :param multiplicity: :class:`int` + + :param phase: :class:`float` + + :param force_constant: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: AddHarmonicImproper(index_one, index_two, index_three, index_four, + angle, force_constant) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :param angle: :class:`float` + + :param force_constant: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: AddCMap(index_one, index_two, index_three, index_four, + index_five, dimension, values) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :param index_five: :class:`int` + + :param dimension: :class:`int` + + :param values: :class:`list` of :class:`float` of size + dimension*dimension describing the correction + map. The values have to be ordered like + (phi1,psi1),(phi1,psi2)...(phi1,psin), + (phi2,psi1),(phi2,psi2)...(phi2,psin), + ...(phin,psin). + the range for phi and psi are [-pi,pi[ + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when size of values is not + dimension * dimension or index exceeds number of + particles. + + + .. method:: AddLJPair(index_one, index_two, sigma, epsilon) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param sigma: :class:`float` + + :param epsilon: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles or when particular LJPair is already + parametrized + + + .. method:: AddDistanceConstraint(index_one, index_two, distance) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param distance: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles or when particular distance constraint + is already parametrized + + + .. method:: AddExclusion(index_one, index_two) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles or when particular exclusion is already set + + + .. method:: AddPositionConstraint(index) + + :param index: :class:`int` + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: AddHarmonicPositionRestraint(index, reference_pos, force_constant, + x_scale=1.0, y_scale=1.0, + z_scale=1.0) + + Adds a harmonic position restraint for a particle of the form: + force_constant*(x_scale*(x-x0)^2+y_scale*(y-y0)^2+z_scale*(z-z0)^2) + + :param index: :class:`int` + + :param reference_pos: :class:`ost.geom.Vec3` reference_position + + :param force_constant: :class:`float` + + :param x_scale: :class:`float` + + :param y_scale: :class:`float` + + :param z_scale: :class:`float` + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: AddHarmonicDistanceRestraint(index_one, index_two, length + force_constant) + + Adds a force between two particles of the form: + force_constant * (b-b0)^2 + + :returns: :class:`int` index of added interaction + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: ResetPositionConstraints() + + Removes all position constraints + + + .. method:: ResetExclusions() + + Removes all set exclusions + + + .. method:: SetSigmas(sigmas) + + :param sigmas: :class:`list` of :class:`float` defining sigma params + + :raises: :class:`RuntimeError` when list size is inconsistent + with number of particles + + + .. method:: SetSigma(index, sigma) + + :param index: :class:`int` + + :parm sigma: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: SetEpsilons(epsilons) + + :param epsilons: :class:`list` of :class:`float` defining epsilon params + + :raises: :class:`RuntimeError` when list size is inconsistent + with number of particles + + + .. method:: SetEpsilon(index, epsilon) + + :param index: :class:`int` + + :parm epsilon: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: SetGBSARadii(radii) + + :param radii: :class:`list` of :class:`float` defining radii + + :raises: :class:`RuntimeError` when list size is inconsistent + with number of particles + + + .. method:: SetGBSARadii(index, radius) + + :param index: :class:`int` + + :parm radius: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: SetOBCScalings(scalings) + + :param scalings: :class:`list` of :class:`float` defining scaling params + + :raises: :class:`RuntimeError` when list size is inconsistent + with number of particles + + + .. method:: SetOBCScaling(index, scaling) + + :param index: :class:`int` + + :parm scaling: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: SetCharges(charges) + + :param charges: :class:`list` of :class:`float` defining charge params + + :raises: :class:`RuntimeError` when list size is inconsistent + with number of particles + + + .. method:: SetCharge(index, charge) + + :param index: :class:`int` + + :parm charge: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + .. method:: SetMasses(masses) + + :param masses: :class:`list` of :class:`float` defining mass params + + :raises: :class:`RuntimeError` when list size is inconsistent + with number of particles + + + .. method:: SetMass(index, mass) + + :param index: :class:`int` + + :parm mass: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + particles + + + .. method:: SetFudgeQQ(fudge) + + :param fudge: :class:`fudge` + + + .. method:: SetFudgeLJ(fudge) + + :param fudge: :class:`fudge` + + + .. method:: GetHarmonicBondParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic bonds + + + .. method:: GetHarmonicAngleParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic angles + + .. method:: GetUreyBradleyAngleParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set urey-bradley angles + + .. method:: GetPeriodicDiheralParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set periodic dihedrals + + .. method:: GetPeriodicImproperParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set periodic impropers + + .. method:: GetHarmonicImproperParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic impropers + + + .. method:: GetCMapParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set cmaps + + + .. method:: GetLJPairParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set lj pairs + + + .. method:: GetDistanceConstraintParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set distance constraints + + + .. method:: GetHarmonicPositionRestraintParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic position restraints + + + .. method:: GetHarmonicDistanceRestraintParameters(index) + + :param index: :class:`int` + + :returns: :class:`tuple` containing the indices of the involved + particles and the set parameters + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic distance restraints + + + .. method:: SetHarmonicBondParameters(index, bond_length, force_constant) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param bond_length: :class:`float` + + :param force_constant: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic bonds + + + .. method:: SetHarmonicAngleParameters(index, angle, force_constant) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param angle: :class:`float` + + :param force_constant: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic angles + + .. method:: SetUreyBradleyAngleParameters(index, angle, angle_force_constant, + bond_length, bond_force_constant) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param angle_force_constant: :class:`float` + + :param bond_length: :class:`float` + + :param bond_force_constant: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set urey-bradley angles + + .. method:: SetPeriodicDiheralParameters(index, multiplicity, phase, force_constant) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param multiplicity: :class:`int` + + :param phase: :class:`float` + + :param force_constant: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set periodic dihedrals + + .. method:: SetPeriodicImproperParameters(index, multiplicity, phase, force_constant) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param multiplicity: :class:`int` + + :param phase: :class:`float` + + :param force_constant: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set periodic impropers + + .. method:: SetHarmonicImproperParameters(index, angle, force_constant) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param angle: :class:`float` + + :param force_constant: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic impropers + + + .. method:: SetCMapParameters(index, dimension, map) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param dimension: :class:`int` + + :param map: :class:`list` of :class:`float` values in the format + described in the AddCMap function. + + :raises: :class:`RuntimeError` when index exceeds number of + set cmaps or size of map is not dimension*dimension + + + .. method:: SetLJPairParameters(index, sigma, epsilon) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param sigma: :class:`float` + + :param epsilon: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set lj pairs + + + .. method:: SetDistanceConstraintParameters(index, distance) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param distance: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set distance constraints + + + .. method:: SetHarmonicPositionRestraintParameters(index, ref_position, k, + x_scale=1.0, y_scale=1.0, + z_scale=1.0) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param ref_position: :class:`ost.geom.Vec3` + + :param k: :class:`float` + + :param x_scale: :class:`float` + + :param y_scale: :class:`float` + + :param z_scale: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic position restraints + + + .. method:: SetHarmonicDistanceRestraintParameters(index, length, k) + + Replaces existing parameters for particular interaction + + :param index: :class:`int` + + :param length: :class:`float` + + :param k: :class:`float` + + :raises: :class:`RuntimeError` when index exceeds number of + set harmonic distance restraints + + + .. method:: GetSigmas() + + :returns: :class:`list` of :class:`float` with previously set + sigmas + + + .. method:: GetEpsilons() + + :returns: :class:`list` of :class:`float` with previously set + epsilons + + + .. method:: GetGBSARadii() + + :returns: :class:`list` of :class:`float` with previously set + gbsa radii + + + .. method:: GetOBCScalings() + + :returns: :class:`list` of :class:`float` with previously set + obc scalings + + + .. method:: GetCharges() + + :returns: :class:`list` of :class:`float` with previously set + gbsa charges + + + .. method:: GetMasses() + + :returns: :class:`list` of :class:`float` with previously set + masses + + + .. method:: GetSigma(particle_index) + + :param particle_index: :class:`int` + + :returns: :class:`float` + + :raises: :class:`RuntimeError` when particle_index exceeds + number of particles or sigmas have not been set + + + .. method:: GetEpsilon(particle_index) + + :param particle_index: :class:`int` + + :returns: :class:`float` + + :raises: :class:`RuntimeError` when particle_index exceeds + number of particles or epsilons have not been set + + + + .. method:: GetGBSARadius(particle_index) + + :param particle_index: :class:`int` + + :returns: :class:`float` + + :raises: :class:`RuntimeError` when particle_index exceeds + number of particles or gbsa_radii have not been set + + + .. method:: GetOBCScaling(particle_index) + + :param particle_index: :class:`int` + + :returns: :class:`float` + + :raises: :class:`RuntimeError` when particle_index exceeds + number of particles or obc scalings have not been set + + + .. method:: GetCharge(particle_index) + + :param particle_index: :class:`int` + + :returns: :class:`float` + + :raises: :class:`RuntimeError` when particle_index exceeds + number of particles or charges have not been set + + + .. method:: GetMass(particle_index) + + :param particle_index: :class:`int` + + :returns: :class:`float` + + :raises: :class:`RuntimeError` when particle_index exceeds + number of particles + + + .. method:: GetHarmonicBondIndices(index_one, index_two) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :returns: :class:`list` of :class:`int` describing all harmonic + bonds acting on given particles + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetHarmonicAngleIndices(index_one, index_two, index_three) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :returns: :class:`list` of :class:`int` describing all harmonic + angles acting on given particles + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetUreyBradleyAngleIndices(index_one, index_two, index_three) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :returns: :class:`list` of :class:`int` describing all + urey-bradley angles acting on given particles + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetPeriodicDihedralIndices(index_one, index_two, index_three, + index_four) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :returns: :class:`list` of :class:`int` describing all periodic + dihedrals acting on given particles + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetPeriodicImpropersIndices(index_one, index_two, index_three, + index_four) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :returns: :class:`list` of :class:`int` describing all periodic + impropers acting on given particles + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetHarmonicImpropersIndices(index_one, index_two, index_three, + index_four) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :returns: :class:`list` of :class:`int` describing all harmonic + impropers acting on given particles + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetCMapIndices(index_one, index_two, index_three, + index_four, index_five) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :param index_three: :class:`int` + + :param index_four: :class:`int` + + :param index_five: :class:`int` + + :returns: :class:`list` of :class:`int` describing all cmaps + acting on given particles + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetLJPairIndex(index_one, index_two) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :returns: :class:`int` describing LJPair acting on particles, + -1 if there is none + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetDistanceConstraintIndex(index_one, index_two) + + :param index_one: :class:`int` + + :param index_two: :class:`int` + + :returns: :class:`int` describing distance constraint acting on + particles, -1 if there is none + + :raises: :class:`RuntimeError` when an index exceeds + number of particles in topology + + + .. method:: GetHarmonicBondIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all harmonic + bonds this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetHarmonicAngleIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all harmonic + angles this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetUreyBradleyAngleIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all + urey-bradley angles this particular particle + is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetPeriodicDihedralIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all periodic + dihedrals this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetPeriodicImproperIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all periodic + impropers this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + .. method:: GetHarmonicImproperIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all harmonic + impropers this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetCMapIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all cmaps + this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetLJPairIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all LJPairs + this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetDistanceConstraintIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all distance + constraints this particular particle is involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetHarmonicPositionRestraintIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all harmonic + position restraints this particular particle is + involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetHarmonicDistanceRestraintIndices(index) + + :param index: :class: + + :returns: :class:`list` of :class:`int` describing all harmonic + distance restraints this particular particle is + involved in + + :raises: :class:`RuntimeError` when index exceeds + number of particles in topology + + + .. method:: GetNumParticles() + + :returns: :class:`int` + + + .. method:: GetNumHarmonicBonds() + + :returns: :class:`int` + + + .. method:: GetNumHarmonicAngles() + + :returns: :class:`int` + + + .. method:: GetNumUreyBradleyAngles() + + :returns: :class:`int` + + + .. method:: GetNumPeriodicDihedrals() + + :returns: :class:`int` + + + .. method:: GetNumPeriodicImpropers() + + :returns: :class:`int` + + + .. method:: GetNumHarmonicImpropers() + + :returns: :class:`int` + + + .. method:: GetNumCMaps() + + :returns: :class:`int` + + + .. method:: GetNumLJPairs() + + :returns: :class:`int` + + + .. method:: GetNumDistanceConstraints() + + :returns: :class:`int` + + + .. method:: GetNumPositionConstraints() + + :returns: :class:`int` + + + .. method:: GetNumHarmonicPositionRestraints() + + :returns: :class:`int` + + + .. method:: GetNumHarmonicDistanceRestraints() + + :returns: :class:`int` + + + .. method:: GetNumExclusions() + + :returns: :class:`int` \ No newline at end of file