11 #include <IMP/atom/atom_config.h>
26 IMPATOM_BEGIN_NAMESPACE
28 typedef Key<IMP_ATOM_TYPE_INDEX> AtomType;
67 IMPATOMEXPORT
extern const AtomType AT_C;
69 IMPATOMEXPORT
extern const AtomType AT_O;
71 IMPATOMEXPORT
extern const AtomType AT_H;
73 IMPATOMEXPORT
extern const AtomType AT_H1;
75 IMPATOMEXPORT
extern const AtomType AT_H2;
77 IMPATOMEXPORT
extern const AtomType AT_H3;
79 IMPATOMEXPORT
extern const AtomType AT_HA;
81 IMPATOMEXPORT
extern const AtomType AT_HA1;
83 IMPATOMEXPORT
extern const AtomType AT_HA2;
85 IMPATOMEXPORT
extern const AtomType AT_HA3;
87 IMPATOMEXPORT
extern const AtomType AT_CB;
89 IMPATOMEXPORT
extern const AtomType AT_HB;
91 IMPATOMEXPORT
extern const AtomType AT_HB1;
92 IMPATOMEXPORT
extern const AtomType AT_HB2;
93 IMPATOMEXPORT
extern const AtomType AT_HB3;
94 IMPATOMEXPORT
extern const AtomType AT_OXT;
95 IMPATOMEXPORT
extern const AtomType AT_CH3;
96 IMPATOMEXPORT
extern const AtomType AT_CH;
97 IMPATOMEXPORT
extern const AtomType AT_CG;
98 IMPATOMEXPORT
extern const AtomType AT_CG1;
99 IMPATOMEXPORT
extern const AtomType AT_CG2;
100 IMPATOMEXPORT
extern const AtomType AT_HG;
101 IMPATOMEXPORT
extern const AtomType AT_HG1;
102 IMPATOMEXPORT
extern const AtomType AT_HG2;
103 IMPATOMEXPORT
extern const AtomType AT_HG3;
104 IMPATOMEXPORT
extern const AtomType AT_HG11;
105 IMPATOMEXPORT
extern const AtomType AT_HG21;
106 IMPATOMEXPORT
extern const AtomType AT_HG31;
107 IMPATOMEXPORT
extern const AtomType AT_HG12;
108 IMPATOMEXPORT
extern const AtomType AT_HG13;
109 IMPATOMEXPORT
extern const AtomType AT_HG22;
110 IMPATOMEXPORT
extern const AtomType AT_HG23;
111 IMPATOMEXPORT
extern const AtomType AT_HG32;
112 IMPATOMEXPORT
extern const AtomType AT_OG;
113 IMPATOMEXPORT
extern const AtomType AT_OG1;
114 IMPATOMEXPORT
extern const AtomType AT_SG;
115 IMPATOMEXPORT
extern const AtomType AT_CD;
116 IMPATOMEXPORT
extern const AtomType AT_CD1;
117 IMPATOMEXPORT
extern const AtomType AT_CD2;
118 IMPATOMEXPORT
extern const AtomType AT_HD;
119 IMPATOMEXPORT
extern const AtomType AT_HD1;
120 IMPATOMEXPORT
extern const AtomType AT_HD2;
121 IMPATOMEXPORT
extern const AtomType AT_HD3;
122 IMPATOMEXPORT
extern const AtomType AT_HD11;
123 IMPATOMEXPORT
extern const AtomType AT_HD21;
124 IMPATOMEXPORT
extern const AtomType AT_HD31;
125 IMPATOMEXPORT
extern const AtomType AT_HD12;
126 IMPATOMEXPORT
extern const AtomType AT_HD13;
127 IMPATOMEXPORT
extern const AtomType AT_HD22;
128 IMPATOMEXPORT
extern const AtomType AT_HD23;
129 IMPATOMEXPORT
extern const AtomType AT_HD32;
130 IMPATOMEXPORT
extern const AtomType AT_SD;
131 IMPATOMEXPORT
extern const AtomType AT_OD1;
132 IMPATOMEXPORT
extern const AtomType AT_OD2;
133 IMPATOMEXPORT
extern const AtomType AT_ND1;
134 IMPATOMEXPORT
extern const AtomType AT_ND2;
135 IMPATOMEXPORT
extern const AtomType AT_CE;
136 IMPATOMEXPORT
extern const AtomType AT_CE1;
137 IMPATOMEXPORT
extern const AtomType AT_CE2;
138 IMPATOMEXPORT
extern const AtomType AT_CE3;
139 IMPATOMEXPORT
extern const AtomType AT_HE;
140 IMPATOMEXPORT
extern const AtomType AT_HE1;
141 IMPATOMEXPORT
extern const AtomType AT_HE2;
142 IMPATOMEXPORT
extern const AtomType AT_HE3;
143 IMPATOMEXPORT
extern const AtomType AT_HE21;
144 IMPATOMEXPORT
extern const AtomType AT_HE22;
145 IMPATOMEXPORT
extern const AtomType AT_OE1;
146 IMPATOMEXPORT
extern const AtomType AT_OE2;
147 IMPATOMEXPORT
extern const AtomType AT_NE;
148 IMPATOMEXPORT
extern const AtomType AT_NE1;
149 IMPATOMEXPORT
extern const AtomType AT_NE2;
150 IMPATOMEXPORT
extern const AtomType AT_CZ;
151 IMPATOMEXPORT
extern const AtomType AT_CZ2;
152 IMPATOMEXPORT
extern const AtomType AT_CZ3;
153 IMPATOMEXPORT
extern const AtomType AT_NZ;
154 IMPATOMEXPORT
extern const AtomType AT_HZ;
155 IMPATOMEXPORT
extern const AtomType AT_HZ1;
156 IMPATOMEXPORT
extern const AtomType AT_HZ2;
157 IMPATOMEXPORT
extern const AtomType AT_HZ3;
158 IMPATOMEXPORT
extern const AtomType AT_CH2;
159 IMPATOMEXPORT
extern const AtomType AT_NH1;
160 IMPATOMEXPORT
extern const AtomType AT_NH2;
161 IMPATOMEXPORT
extern const AtomType AT_OH;
162 IMPATOMEXPORT
extern const AtomType AT_HH;
163 IMPATOMEXPORT
extern const AtomType AT_HH11;
164 IMPATOMEXPORT
extern const AtomType AT_HH21;
165 IMPATOMEXPORT
extern const AtomType AT_HH2;
166 IMPATOMEXPORT
extern const AtomType AT_HH12;
167 IMPATOMEXPORT
extern const AtomType AT_HH22;
168 IMPATOMEXPORT
extern const AtomType AT_HH13;
169 IMPATOMEXPORT
extern const AtomType AT_HH23;
170 IMPATOMEXPORT
extern const AtomType AT_HH33;
171 IMPATOMEXPORT
extern const AtomType AT_P;
172 IMPATOMEXPORT
extern const AtomType AT_OP1;
173 IMPATOMEXPORT
extern const AtomType AT_OP2;
174 IMPATOMEXPORT
extern const AtomType AT_OP3;
175 IMPATOMEXPORT
extern const AtomType AT_O5p;
176 IMPATOMEXPORT
extern const AtomType AT_C5p;
177 IMPATOMEXPORT
extern const AtomType AT_H5p;
178 IMPATOMEXPORT
extern const AtomType AT_H5pp;
179 IMPATOMEXPORT
extern const AtomType AT_C4p;
180 IMPATOMEXPORT
extern const AtomType AT_H4p;
181 IMPATOMEXPORT
extern const AtomType AT_O4p;
182 IMPATOMEXPORT
extern const AtomType AT_C1p;
183 IMPATOMEXPORT
extern const AtomType AT_H1p;
184 IMPATOMEXPORT
extern const AtomType AT_C3p;
185 IMPATOMEXPORT
extern const AtomType AT_H3p;
186 IMPATOMEXPORT
extern const AtomType AT_O3p;
187 IMPATOMEXPORT
extern const AtomType AT_C2p;
188 IMPATOMEXPORT
extern const AtomType AT_H2p;
189 IMPATOMEXPORT
extern const AtomType AT_H2pp;
190 IMPATOMEXPORT
extern const AtomType AT_O2p;
191 IMPATOMEXPORT
extern const AtomType AT_HO2p;
192 IMPATOMEXPORT
extern const AtomType AT_N9;
193 IMPATOMEXPORT
extern const AtomType AT_C8;
194 IMPATOMEXPORT
extern const AtomType AT_H8;
195 IMPATOMEXPORT
extern const AtomType AT_N7;
196 IMPATOMEXPORT
extern const AtomType AT_C5;
197 IMPATOMEXPORT
extern const AtomType AT_C4;
198 IMPATOMEXPORT
extern const AtomType AT_N3;
199 IMPATOMEXPORT
extern const AtomType AT_C2;
200 IMPATOMEXPORT
extern const AtomType AT_N1;
201 IMPATOMEXPORT
extern const AtomType AT_C6;
202 IMPATOMEXPORT
extern const AtomType AT_N6;
203 IMPATOMEXPORT
extern const AtomType AT_H61;
204 IMPATOMEXPORT
extern const AtomType AT_H62;
205 IMPATOMEXPORT
extern const AtomType AT_O6;
206 IMPATOMEXPORT
extern const AtomType AT_N2;
207 IMPATOMEXPORT
extern const AtomType AT_NT;
208 IMPATOMEXPORT
extern const AtomType AT_H21;
209 IMPATOMEXPORT
extern const AtomType AT_H22;
210 IMPATOMEXPORT
extern const AtomType AT_H6;
211 IMPATOMEXPORT
extern const AtomType AT_H5;
212 IMPATOMEXPORT
extern const AtomType AT_O2;
213 IMPATOMEXPORT
extern const AtomType AT_N4;
214 IMPATOMEXPORT
extern const AtomType AT_H41;
215 IMPATOMEXPORT
extern const AtomType AT_H42;
216 IMPATOMEXPORT
extern const AtomType AT_O4;
217 IMPATOMEXPORT
extern const AtomType AT_C7;
218 IMPATOMEXPORT
extern const AtomType AT_H71;
219 IMPATOMEXPORT
extern const AtomType AT_H72;
220 IMPATOMEXPORT
extern const AtomType AT_H73;
221 IMPATOMEXPORT
extern const AtomType AT_O1A;
222 IMPATOMEXPORT
extern const AtomType AT_O2A;
223 IMPATOMEXPORT
extern const AtomType AT_O3A;
224 IMPATOMEXPORT
extern const AtomType AT_O1B;
225 IMPATOMEXPORT
extern const AtomType AT_O2B;
226 IMPATOMEXPORT
extern const AtomType AT_O3B;
258 void set_atom_type(AtomType t);
269 double get_occupancy()
const {
270 if (!
get_model()->get_has_attribute(get_occupancy_key(),
279 void set_occupancy(
double occupancy) {
280 if (!
get_model()->get_has_attribute(get_occupancy_key(),
290 double get_temperature_factor()
const {
291 if (!
get_model()->get_has_attribute(get_temperature_factor_key(),
300 void set_temperature_factor(
double tempFactor) {
301 if (!
get_model()->get_has_attribute(get_temperature_factor_key(),
326 static IntKey get_atom_type_key();
328 static IntKey get_element_key();
330 static IntKey get_input_index_key();
332 static FloatKey get_occupancy_key();
334 static FloatKey get_temperature_factor_key();
354 IMPATOMEXPORT Residue
get_residue(Atom d,
bool nothrow =
false);
362 IMPATOMEXPORT Atom
get_atom(Residue rd, AtomType at);
374 IMPATOMEXPORT
Element get_element_for_atom_type(AtomType at);
379 IMPATOM_END_NAMESPACE
AtomType add_atom_type(std::string name, Element e)
Create a new AtomType.
Various important functionality for implementing decorators.
Define the elements used in IMP.
ParticleIndex get_particle_index() const
Returns the particle index decorated by this decorator.
Key< 0 > FloatKey
The type used to identify float attributes in the Particles.
Element get_element() const
get element
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
#define IMP_DECORATOR_GET_SET_OPT(name, AttributeKey, Type, ReturnType, default_value)
Define methods for getting and setting an optional simple field.
Model * get_model() const
Returns the Model containing the particle.
Storage of a model, its restraints, constraints and particles.
Atom get_atom(Residue rd, AtomType at)
Return a particle atom from the residue.
A more IMP-like version of the std::vector.
const AtomType AT_UNKNOWN
Class for storing model, its restraints, constraints, and particles.
Decorator for helping deal with a hierarchy of molecules.
bool get_atom_type_exists(std::string name)
Return true if that atom type already exists.
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
void add_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
add particle atribute with the specied key and initial value
The standard decorator for manipulating molecular structures.
A decorator for a particle representing an atom.
Hierarchy get_residue(Hierarchy mhd, unsigned int index)
Get the residue with the specified index.
A decorator for Residues.
Key< 1 > IntKey
The type used to identify int attributes in the Particles.
void set_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
set the value of particle attribute with the specified key
Classes to handle individual model particles. (Note that implementation of inline functions is in int...
Various important macros for implementing decorators.
static bool get_is_setup(Model *m, ParticleIndex p)
Check if the particle has the needed attributes for a cast to succeed.
#define IMP_DECORATOR_METHODS(Name, Parent)
#define IMP_DECORATORS(Name, PluralName, Parent)
Define the types for storing sets of decorators.
int Int
Basic integer value.
bool get_has_attribute(TypeKey attribute_key, ParticleIndex particle) const
return true if particle has attribute with the specified key
Element
The various elements currently supported/known.
Type get_attribute(TypeKey attribute_key, ParticleIndex particle)
get the value of the particle attribute with the specified key
static bool get_is_setup(Model *m, ParticleIndex pi)