11 #include <IMP/atom/atom_config.h>
26 IMPATOM_BEGIN_NAMESPACE
28 typedef Key<IMP_ATOM_TYPE_INDEX, false> 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;
248 return m->get_has_attribute(get_atom_type_key(), pi) &&
254 get_model()->get_attribute(get_atom_type_key(), get_particle_index()));
258 void set_atom_type(AtomType t);
263 get_model()->get_attribute(get_element_key(), get_particle_index()));
269 double get_occupancy()
const {
270 if (!
get_model()->get_has_attribute(get_occupancy_key(),
271 get_particle_index())) {
275 get_particle_index());
279 void set_occupancy(
double occupancy) {
280 if (!
get_model()->get_has_attribute(get_occupancy_key(),
281 get_particle_index())) {
290 double get_temperature_factor()
const {
291 if (!
get_model()->get_has_attribute(get_temperature_factor_key(),
292 get_particle_index())) {
296 get_particle_index());
300 void set_temperature_factor(
double tempFactor) {
301 if (!
get_model()->get_has_attribute(get_temperature_factor_key(),
302 get_particle_index())) {
304 get_particle_index(), tempFactor);
307 get_particle_index(), tempFactor);
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.
Import IMP/kernel/base_types.h in the namespace.
Element get_element() const
get element
static bool get_is_setup(kernel::Model *m, kernel::ParticleIndex pi)
Key< 1, true > IntKey
The type used to identify int attributes in the Particles.
#define IMP_DECORATOR_METHODS(Name, Parent)
#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.
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
static bool get_is_setup(kernel::Model *m, kernel::ParticleIndex p)
Atom get_atom(Residue rd, AtomType at)
Return a particle atom from the residue.
Type get_attribute(TypeKey attribute_key, ParticleIndex particle)
const AtomType AT_UNKNOWN
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.
The standard decorator for manipulating molecular structures.
A decorator for a particle representing an atom.
A decorator for Residues.
void set_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
Storage of a model, its restraints, constraints and particles.
Classes to handle individual model particles.
Various important macros for implementing decorators.
Residue get_residue(Atom d, bool nothrow=false)
Return the Residue containing this atom.
void add_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
int Int
Basic integer value.
Element
The various elements currently supported/known.
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
#define IMP_DECORATORS(Name, PluralName, Parent)
Define the types for storing sets of decorators.
Key< 0, true > FloatKey
The type used to identify float attributes in the Particles.
Class for storing model, its restraints, constraints, and particles.