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>
31 #include <boost/unordered_map.hpp>
33 IMPRMF_BEGIN_NAMESPACE
41 RMF::decorator::IntermediateParticleFactory intermediate_particle_factory_;
42 RMF::decorator::ReferenceFrameFactory reference_frame_factory_;
43 RMF::decorator::AlternativesFactory af_;
44 RMF::decorator::StructureProvenanceFactory strucpf_;
45 RMF::decorator::SampleProvenanceFactory samppf_;
46 RMF::decorator::CombineProvenanceFactory combpf_;
47 RMF::decorator::FilterProvenanceFactory filtpf_;
48 RMF::decorator::ClusterProvenanceFactory clustpf_;
49 RMF::decorator::ScriptProvenanceFactory scriptpf_;
50 RMF::decorator::SoftwareProvenanceFactory softpf_;
51 RMF::decorator::ExplicitResolutionFactory explicit_resolution_factory_;
54 internal::HierarchyLoadStatic load_static;
55 internal::HierarchyLoadBonds load_bonds;
56 internal::HierarchyLoadXYZs load_xyzs;
57 internal::HierarchyLoadGaussians load_gaussians;
58 internal::HierarchyLoadRigidBodies load_rigid_bodies;
59 Data(RMF::FileConstHandle h)
64 load_rigid_bodies(h) {}
66 typedef boost::unordered_map<ParticleIndex, std::shared_ptr<Data> >
69 virtual bool get_is(RMF::NodeConstHandle nh)
const override {
70 return nh.get_type() == RMF::REPRESENTATION;
74 RMF::NodeConstHandle node,
78 virtual void do_add_link(
Particle *o,
79 RMF::NodeConstHandle node)
final override;
81 virtual Particle *do_create(RMF::NodeConstHandle name,
82 Model *m)
final override;
88 void create_provenance(
Model *m, RMF::NodeConstHandle node,
94 virtual void do_load_one(RMF::NodeConstHandle nh,
110 RMF::NodeConstHandle node) {
122 RMF::NodeConstHandle node) {
132 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_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.