9 #ifndef IMPRMF_ATOM_LINKS_H
10 #define IMPRMF_ATOM_LINKS_H
12 #include <IMP/rmf/rmf_config.h>
14 #include "internal/atom_links_static.h"
15 #include "internal/atom_links_rigid_bodies.h"
16 #include "internal/atom_links_xyzs.h"
17 #include "internal/atom_links_gaussians.h"
18 #include <RMF/decorator/alternatives.h>
21 #include <RMF/NodeHandle.h>
22 #include <RMF/FileHandle.h>
27 #include <RMF/decorators.h>
28 #include <boost/unordered_map.hpp>
29 IMPRMF_BEGIN_NAMESPACE
37 RMF::decorator::IntermediateParticleFactory intermediate_particle_factory_;
38 RMF::decorator::ReferenceFrameFactory reference_frame_factory_;
39 RMF::decorator::AlternativesFactory af_;
40 RMF::decorator::ExplicitResolutionFactory explicit_resolution_factory_;
43 internal::HierarchyLoadStatic load_static;
44 internal::HierarchyLoadBonds load_bonds;
45 internal::HierarchyLoadXYZs load_xyzs;
46 internal::HierarchyLoadGaussians load_gaussians;
47 internal::HierarchyLoadRigidBodies load_rigid_bodies;
48 Data(RMF::FileConstHandle h)
53 load_rigid_bodies(h) {}
55 typedef boost::unordered_map<ParticleIndex, boost::shared_ptr<Data> >
58 virtual bool get_is(RMF::NodeConstHandle nh)
const IMP_OVERRIDE {
59 return nh.get_type() == RMF::REPRESENTATION;
63 RMF::NodeConstHandle node,
67 virtual void do_add_link(
Particle *o,
70 virtual Particle *do_create(RMF::NodeConstHandle name,
75 virtual void do_load_one(RMF::NodeConstHandle nh,
91 RMF::NodeConstHandle node) {
103 RMF::NodeConstHandle node) {
113 static const char *get_name() {
return "atom load"; }
125 internal::HierarchySaveStatic save_static;
126 internal::HierarchySaveBonds save_bonds;
127 internal::HierarchySaveXYZs save_xyzs;
128 internal::HierarchySaveGaussians save_gaussians;
129 internal::HierarchySaveRigidBodies save_rigid_bodies;
130 Data(RMF::FileHandle h)
135 save_rigid_bodies(h) {}
137 typedef boost::unordered_map<ParticleIndex, boost::shared_ptr<Data> >
140 RMF::decorator::AlternativesFactory af_;
141 RMF::decorator::ExplicitResolutionFactory explicit_resolution_factory_;
149 virtual void do_save_one(
Particle *o,
151 RMF::NodeType get_type(
Particle *)
const {
152 return RMF::REPRESENTATION;
166 RMF::NodeHandle root_node) {
174 static const char *get_name() {
return "atom save"; }
Various general useful macros for IMP.
virtual void do_load_hierarchy(RMF::NodeConstHandle root_node, Model *m, ParticleIndex root)
#define IMP_FINAL
Have the compiler report an error if anything overrides this method.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
virtual void do_save_hierarchy(Model *m, ParticleIndex root, RMF::NodeHandle root_node)
Various general useful macros for IMP.
Class for storing model, its restraints, constraints, and particles.
Decorator for helping deal with a hierarchy of molecules.
virtual void do_link_particle(Model *m, ParticleIndex root, ParticleIndex cur, RMF::NodeConstHandle node)
#define IMP_UNUSED(variable)
Manage links between IMP objects and a part of the RMF file.
virtual void do_setup_particle(Model *m, ParticleIndex root, ParticleIndex cur, RMF::NodeConstHandle node)
Various general useful macros for IMP.
Key< 1 > IntKey
The type used to identify int attributes in the Particles.
macros for display classes
Manage links between IMP objects and RMF nodes.
Class to handle individual particles of a Model object.
virtual void do_setup_node(Model *m, ParticleIndex root, ParticleIndex p, RMF::NodeHandle n)
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.