9 #ifndef IMPRMF_HIERARCHY_LOAD_LINK_H
10 #define IMPRMF_HIERARCHY_LOAD_LINK_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>
19 #include <RMF/decorator/provenance.h>
22 #include <RMF/NodeHandle.h>
23 #include <RMF/FileHandle.h>
29 #include <RMF/decorators.h>
30 #include <boost/unordered_map.hpp>
31 IMPRMF_BEGIN_NAMESPACE
39 RMF::decorator::IntermediateParticleFactory intermediate_particle_factory_;
40 RMF::decorator::ReferenceFrameFactory reference_frame_factory_;
41 RMF::decorator::AlternativesFactory af_;
42 RMF::decorator::StructureProvenanceFactory strucpf_;
43 RMF::decorator::SampleProvenanceFactory samppf_;
44 RMF::decorator::CombineProvenanceFactory combpf_;
45 RMF::decorator::FilterProvenanceFactory filtpf_;
46 RMF::decorator::ClusterProvenanceFactory clustpf_;
47 RMF::decorator::ScriptProvenanceFactory scriptpf_;
48 RMF::decorator::SoftwareProvenanceFactory softpf_;
49 RMF::decorator::ExplicitResolutionFactory explicit_resolution_factory_;
52 internal::HierarchyLoadStatic load_static;
53 internal::HierarchyLoadBonds load_bonds;
54 internal::HierarchyLoadXYZs load_xyzs;
55 internal::HierarchyLoadGaussians load_gaussians;
56 internal::HierarchyLoadRigidBodies load_rigid_bodies;
57 Data(RMF::FileConstHandle h)
62 load_rigid_bodies(h) {}
64 typedef boost::unordered_map<ParticleIndex, boost::shared_ptr<Data> >
67 virtual bool get_is(RMF::NodeConstHandle nh)
const IMP_OVERRIDE {
68 return nh.get_type() == RMF::REPRESENTATION;
72 RMF::NodeConstHandle node,
76 virtual void do_add_link(
Particle *o,
79 virtual Particle *do_create(RMF::NodeConstHandle name,
86 void create_provenance(
Model *m, RMF::NodeConstHandle node,
92 virtual void do_load_one(RMF::NodeConstHandle nh,
108 RMF::NodeConstHandle node) {
120 RMF::NodeConstHandle node) {
130 static const char *get_name() {
return "atom load"; }
Helper macros for implementing IMP Objects.
virtual void do_load_hierarchy(RMF::NodeConstHandle root_node, Model *m, ParticleIndex root)
Classes to track how the model was created.
#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.
Macros to help in defining tuple classes.
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.
Track how parts of the system were created.
#define IMP_OVERRIDE
Cause a compile error if this method does not override a parent method.