IMP logo
IMP Reference Guide  develop.27926d84dc,2024/04/19
The Integrative Modeling Platform
WeightedDerivativesToRefined.h
Go to the documentation of this file.
1 /**
2  * \file IMP/core/WeightedDerivativesToRefined.h
3  * \brief Copies derivatives from coarse grained particle
4  * to its refined set of particles using weights
5  * indicated by a weight key.
6  *
7  * Copyright 2007-2022 IMP Inventors. All rights reserved.
8  */
9 
10 #ifndef IMPCORE_WEIGHTED_DERIVATIVES_TO_REFINED_H
11 #define IMPCORE_WEIGHTED_DERIVATIVES_TO_REFINED_H
12 
13 #include <IMP/core/core_config.h>
14 
15 #include "XYZ.h"
16 #include <IMP/Refiner.h>
17 #include <IMP/singleton_macros.h>
18 #include <IMP/Pointer.h>
20 
21 IMPCORE_BEGIN_NAMESPACE
22 
23 //! Copy the derivatives from a coarse particle to its refined particles
24 /** \see DerivativesFromRefined
25  \see DerivativesToRefined
26  \see Centroid
27  \see atom::CenterOfMass
28  */
29 class IMPCOREEXPORT WeightedDerivativesToRefined :
32  FloatKey w_; // weights key
33  FloatKeys keys_;
34 
35  public:
36  //! Constructs a weighted derivatives-to-refined modifier that copies
37  //! derivatives from the coarse particle to its refinement
38  /**
39  Constructs a weighted derivatives-to-refined modifier that copies
40  derivatives from the coarse particle to its refinement. The modifier
41  copy the derivatives of keys to the particles returned by r, using weights w,
42  divided by weight of pi.
43 
44  @param r a refiner to get fine particles for particle
45  @param w the key for the weight given to derivatives of the fine
46  particle (to be divided by the weight of the coarse
47  particle). If w equals FloatKey(), then a default weight
48  of [1.0 / N] is used, for N equals the number of particles
49  returned by r.
50  @param keys the keys whose derivatives are to be copied.
51  */
53  FloatKey w = FloatKey(),
54  FloatKeys keys = XYZ::get_xyz_keys());
55 
56  //! Copies weighted derivatives to fine particles
57  /**
58  Copy ks to the particles returned by the refiner r, using weights w,
59  divided by weight of pi, all as indicated in the constructor
60 
61  @param m the model
62  @param pi the coarse grained particle
63  */
64  virtual void apply_index(Model *m, ParticleIndex pi) const
65  override;
66 
68  Model *m, const ParticleIndexes &pis) const override;
69 
71  Model *m, const ParticleIndexes &pis) const override;
72 
74 
76 };
77 
78 IMPCORE_END_NAMESPACE
79 
80 #endif /* IMPCORE_WEIGHTED_DERIVATIVES_TO_REFINED_H */
A base class for modifiers of ParticlesTemp.
Key< 0 > FloatKey
The type used to identify float attributes in the Particles.
Definition: base_types.h:32
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
Macros for various classes.
virtual ModelObjectsTemp do_get_outputs(Model *m, const ParticleIndexes &pis) const =0
Overload this method to specify the outputs.
Simple XYZ decorator.
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:86
#define IMP_SINGLETON_MODIFIER_METHODS(Name)
Refine a particle into a list of particles.
A Modifier on ParticlesTemp.
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:143
virtual ModelObjectsTemp do_get_inputs(Model *m, const ParticleIndexes &pis) const =0
Overload this method to specify the inputs.
A nullptr-initialized pointer to an IMP Object.
virtual void apply_index(Model *m, ParticleIndex v) const =0
Copy the derivatives from a coarse particle to its refined particles.
Abstract class to implement hierarchical methods.
Definition: Refiner.h:34