IMP logo

IMP::core::XYZR Class Reference


Detailed Description

A decorator for a particle with x,y,z coordinates and a radius.

A simple example illustrating some of the functionality.

import IMP
import IMP.core
import IMP.algebra

m= IMP.Model()
p0= IMP.Particle(m)
d0= IMP.core.XYZR.setup_particle(p0, IMP.algebra.Sphere3D(IMP.algebra.Vector3D(0,1,2),
                                                           1.0))
p1= IMP.Particle(m)
d1= IMP.core.XYZR.setup_particle(p1)
d1.set_coordinates(IMP.algebra.Vector3D(3,4,5))
d1.set_radius(2.0)

print IMP.core.get_distance(d0, d1)

# use them as XYZ particles
xd0= IMP.core.XYZ.decorate_particle(p0)
xd1= IMP.core.XYZ.decorate_particle(p1)

# distance without radii
print IMP.core.get_distance(xd0, xd1)
Inheritance diagram for IMP::core::XYZR:

Inheritance graph
[legend]

Public Member Functions

void add_to_radius_derivative (double v, DerivativeAccumulator &d)
Float get_radius () const
const FloatKeyget_radius_key () const
algebra::SphereD< 3 > get_sphere () const
 Return a sphere object.
void set_radius (Float t)
void set_sphere (const algebra::SphereD< 3 > &s)
 Set the attributes from a sphere.
 XYZR (::IMP::Particle *p, const FloatKey &tr=get_default_radius_key())

Static Public Member Functions

static XYZR decorate_particle (::IMP::Particle *p, const FloatKey &tr=get_default_radius_key())
static FloatKey get_default_radius_key ()
 Get the default radius key.
static bool particle_is_instance (Particle *p, FloatKey radius_key=get_default_radius_key())
 Check if the particle has the required attributes.
static XYZR setup_particle (Particle *p, const algebra::SphereD< 3 > &s, FloatKey radius_key=get_default_radius_key())
static XYZR setup_particle (Particle *p, Float radius, FloatKey radius_key=get_default_radius_key())
static XYZR setup_particle (Particle *p, FloatKey radius_key=get_default_radius_key())

Related Functions

(Note that these are not member functions.)

XYZRs create_xyzr_particles (Model *m, unsigned int num, Float radius, Float box_side=10)
 Create a set of particles which random coordinates.
double get_distance (XYZR a, XYZR b)
 Compute the distance between a pair of particles.
algebra::SphereD< 3 > get_enclosing_sphere (const XYZsTemp &v, FloatKey rk=XYZR::get_default_radius_key())
 Get a sphere enclosing the set of XYZRs.
void set_enclosing_radius (XYZR b, const XYZsTemp &v)
 Set the radius of the first to enclose the list.
void set_enclosing_sphere (XYZR b, const XYZsTemp &v, double slack=0)
 Set the coordinates and radius of the first to enclose the list.

Member Function Documentation

static XYZR IMP::core::XYZR::setup_particle ( Particle p,
const algebra::SphereD< 3 > &  s,
FloatKey  radius_key = get_default_radius_key() 
) [static]

Create a decorator using radius_key to store the FloatKey.

Parameters:
[in] p The particle to wrap.
[in] s The sphere to use to set the position and radius
[in] radius_key The (optional) key name to use. The default is "radius".

static XYZR IMP::core::XYZR::setup_particle ( Particle p,
Float  radius,
FloatKey  radius_key = get_default_radius_key() 
) [static]

Create a decorator using radius_key to store the FloatKey. The particle should already be an XYZ particle.

Parameters:
[in] p The particle to wrap.
[in] radius The radius to set initially
[in] radius_key The (optional) key name to use. The default is "radius".

static XYZR IMP::core::XYZR::setup_particle ( Particle p,
FloatKey  radius_key = get_default_radius_key() 
) [static]

Create a decorator using radius_key to store the FloatKey.

Parameters:
[in] p The particle to wrap.
[in] radius_key The (optional) key name to use. The default is "radius".


Friends And Related Function Documentation

XYZRs create_xyzr_particles ( Model m,
unsigned int  num,
Float  radius,
Float  box_side = 10 
) [related]

Create a set of particles which random coordinates.

This function is mostly to be used to keep demo code brief.

Parameters:
[in] m The model to add them to.
[in] num The number of particles to create.
[in] radius The radius to give them.
[in] box_side The particles have coordinates from -box_side to box_side.
The particles coordinates are optimized.

algebra::SphereD< 3 > get_enclosing_sphere ( const XYZsTemp v,
FloatKey  rk = XYZR::get_default_radius_key() 
) [related]

Get a sphere enclosing the set of XYZRs.

Parameters:
[in] v The one whose radius should be set
[in] rk The radius key to use Any particle which does not have the attribute b.get_radius() is assumed to have a radius of 0.

void set_enclosing_radius ( XYZR  b,
const XYZsTemp v 
) [related]

Set the radius of the first to enclose the list.

Parameters:
[in] v The vector of XYZ or XYZR particles to enclose
[out] b The one whose radius should be set Any particle which does not have the attribute b.get_radius() is assumed to have a radius of 0.

void set_enclosing_sphere ( XYZR  b,
const XYZsTemp v,
double  slack = 0 
) [related]

Set the coordinates and radius of the first to enclose the list.

Parameters:
[in] v The vector of XYZ or XYZR particles to enclose
[out] b The one whose values should be set
[in] slack An amount to add to the radius. Any particle which does not have the attribute b.get_radius() is assumed to have a radius of 0.
Note:
This function produces tighter bounds if the CGAL library is available.


The documentation for this class was generated from the following files:

Generated on Mon Mar 8 23:08:58 2010 for IMP by doxygen 1.5.8