8 #ifndef IMPATOM_RESIDUE_H
9 #define IMPATOM_RESIDUE_H
11 #include <IMP/atom/atom_config.h>
21 IMPATOM_BEGIN_NAMESPACE
140 int index=-1,
int insertion_code = 32) {
143 m->
add_attribute(get_insertion_code_key(), pi, insertion_code);
145 if (!Hierarchy::particle_is_instance(m, pi)) {
146 Hierarchy::setup_particle(m, pi);
154 int index=-1,
int insertion_code = 32) {
155 return setup_particle(p->get_model(),
156 p->get_index(), t, index, insertion_code);
161 return setup_particle(p, o.get_residue_type(),
163 o.get_insertion_code());
167 return p->has_attribute(get_residue_type_key())
168 && p->has_attribute(get_index_key())
169 && p->has_attribute(get_insertion_code_key())
173 ResidueType get_residue_type()
const {
174 return ResidueType(
get_particle()->get_value(get_residue_type_key()));
178 void set_residue_type(ResidueType t);
180 bool get_is_protein()
const {
181 return get_residue_type().get_index() < ADE.get_index();
184 bool get_is_dna()
const {
185 return get_residue_type().get_index() >= DADE.get_index()
186 && get_residue_type().get_index() <= DTHY.get_index();
189 bool get_is_rna()
const {
190 return get_residue_type().get_index() >= ADE.get_index()
191 && get_residue_type().get_index() < DADE.get_index();
198 char get_insertion_code()
const {
199 return char(
get_particle()->get_value(get_insertion_code_key()));
202 void set_insertion_code(
char insertion_code) {
203 return get_particle()->set_value(get_insertion_code_key(), insertion_code);
206 static IntKey get_index_key();
208 static IntKey get_residue_type_key();
210 static IntKey get_insertion_code_key();
242 IMPATOMEXPORT ResidueType get_residue_type(
char c);
249 IMPATOM_END_NAMESPACE