IMP
2.0.1
The Integrative Modeling Platform
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
IMP
IMP Documentation
Application Index
Argument Index
Class Examples
Modeling of GroEL with cnmultifit
Modeling of 3sfd with EMageFit
EMageFit protocol
EMageFit scripts and tools
Factory Index
Determination of a Nup133 structure with FoXS
Function Examples
Example design discussion
Developer Guide
Change History
Installation
Introduction
Mailing lists
Multithreaded evaluation using OpenMP
Integrative docking utility programs
Docking of PCSK9 with idock
Dependencies between objects
Module Index
Modeling of 3sfd with multifit
Deprecated List
Modules
Namespaces
Classes
Files
File List
__init__.py
algebra/__init__.py
atom/__init__.py
base/__init__.py
benchmark/__init__.py
cgal/__init__.py
cnmultifit/__init__.py
container/__init__.py
core/__init__.py
display/__init__.py
domino/__init__.py
em/__init__.py
em2d/__init__.py
example/__init__.py
gsl/__init__.py
isd/__init__.py
kernel/__init__.py
kmeans/__init__.py
misc/__init__.py
modeller/__init__.py
multifit/__init__.py
parallel/__init__.py
pepdock/__init__.py
restrainer/__init__.py
rmf/__init__.py
rotamer/__init__.py
saxs/__init__.py
score_functor/__init__.py
scratch/__init__.py
statistics/__init__.py
system/__init__.py
test/__init__.py
_display.py
_graph_show.py
_histogram.py
_interaction_graph.py
_main.py
_optimization.py
_pivy.py
_randomize.py
_representation.py
_restraint.py
algebra/_version_check.py
atom/_version_check.py
base/_version_check.py
benchmark/_version_check.py
cgal/_version_check.py
cnmultifit/_version_check.py
container/_version_check.py
core/_version_check.py
display/_version_check.py
domino/_version_check.py
em/_version_check.py
em2d/_version_check.py
example/_version_check.py
gsl/_version_check.py
isd/_version_check.py
kernel/_version_check.py
kmeans/_version_check.py
misc/_version_check.py
modeller/_version_check.py
multifit/_version_check.py
parallel/_version_check.py
pepdock/_version_check.py
restrainer/_version_check.py
rmf/_version_check.py
rotamer/_version_check.py
saxs/_version_check.py
score_functor/_version_check.py
scratch/_version_check.py
statistics/_version_check.py
system/_version_check.py
test/_version_check.py
_xml_parser.py
AbstractGrid.py
add_fit_rmsd.py
AddScores.h
algebra.h
algebra_config.h
algebra_macros.h
align.py
align2D.h
AlignmentParams.h
AlignSymmetric.h
AllBipartitePairContainer.h
AllPairContainer.h
AmbiguousNOERestraint.h
AmbiguousRestraint.h
analysis.h
Analysis.py
analyze_convergence.py
anchor_graph.h
anchor_utilities.h
anchors.py
anchors_reader.h
angle_decorators.h
AngleRestraint.h
AngleSingletonScore.h
AngleTripletScore.h
argminmax.py
Array.h
assess_dope.py
Assignment.h
assignment_containers.h
assignment_tables.h
associations.h
atom/Atom.h
Atom.h
atom_config.h
atom_io.h
atom_links.h
atom_macros.h
atomicDomino.py
atomicDominoUtilities.py
AttributeSingletonScore.h
BallMover.h
base.h
base_config.h
base_macros.h
base_types.h
kernel/base_types.h
basic_display.py
basic_geometry.py
basic_optimization.py
basic_setup.py
benchmark.h
benchmark_config.h
benchmark_macros.h
BerendsenThermostatOptimizerState.h
BildWriter.h
bipartite_nonbonded_interactions.py
bivariate_functions.h
blame.h
bond_decorators.h
bond_graph.h
BondedPairFilter.h
BondEndpointsRefiner.h
BondPairContainer.h
BondSingletonScore.h
BoundingBox3DSingletonScore.h
BoundingBoxD.h
BoxSweepClosePairsFinder.h
bracket_macros.h
BranchAndBoundSampler.h
brownian_statistics.py
BrownianDynamics.h
build.py
buildxlinks.py
cache.h
CenteredMat.h
CentroidOfRefined.h
cg_pdb.py
cgal.h
cgal_config.h
Chain.h
chain.py
Charged.h
charmm_forcefield.py
charmm_forcefield_verbose.py
charmm_segment_topology.h
charmm_topology.h
CHARMMAtom.h
CHARMMParameters.h
CHARMMStereochemistryRestraint.h
check_macros.h
ChecksScoreState.h
ChildrenRefiner.h
chimera_models.py
ChimeraWriter.h
ChiScore.h
ChiScoreLog.h
close_pairs_finder_macros.h
CloseBipartitePairContainer.h
ClosedCubicSpline.h
ClosePairContainer.h
ClosePairsFinder.h
ClosePairsPairScore.h
cluster.py
cluster_coarse.py
clustering_macros.h
clustering_of_pdb_models.py
CMMWriter.h
cn_rmsd.h
cnmultifit.h
cnmultifit.py
cnmultifit_config.h
CnSymmAxisDetector.h
coarse_molecule.h
CoarseCC.h
CoarseCCatIntervals.h
CoarseConvolution.h
collision_cross_section.py
CollisionCrossSection.h
Color.h
Colored.h
CommonEndpointPairFilter.h
comparison_macros.h
compat_subprocess.py
compatibility.h
compiler_macros.h
ComplementarityRestraint.h
complex_assembly.h
complex_to_anchor_graph.py
compute_chi.cpp
Cone3D.h
Configuration.h
kernel/Configuration.h
ConfigurationSet.h
kernel/ConfigurationSet.h
core/ConjugateGradients.h
gsl/ConjugateGradients.h
ConnectingPairContainer.h
connectivity.py
connectivity_restraint.py
ConnectivityRestraint.h
connolly_surface.h
ConsecutivePairContainer.h
ConstantRestraint.h
algebra/constants.h
atom/constants.h
constants.h
kernel/constants.h
Constraint.h
kernel/Constraint.h
ConstVector.h
container.h
container_base.h
kernel/container_base.h
container_config.h
container_macros.h
kernel/container_macros.h
convert_spider_to_jpg.py
converters.h
Copy.h
core.h
core_config.h
core_macros.h
Cosine.h
CoulombPairScore.h
counting.h
cover_particles.py
CoverBond.h
CoverRefined.h
CreateLogContext.h
creating_restraints.h
csv_related.py
cube.py
custom_filter.py
custom_hierarchy.py
CustomXYZR.h
Cylinder3D.h
Database.py
DataObject.h
DataPointsAssignment.h
decay.py
DecayPairContainerOptimizerState.h
declare_Geometry.h
declare_Model.h
kernel/declare_Model.h
declare_Object.h
declare_PairContainer.h
kernel/declare_PairContainer.h
declare_Particle.h
kernel/declare_Particle.h
declare_QuadContainer.h
kernel/declare_QuadContainer.h
declare_Restraint.h
kernel/declare_Restraint.h
declare_RestraintSet.h
kernel/declare_RestraintSet.h
declare_ScoringFunction.h
kernel/declare_ScoringFunction.h
declare_SingletonContainer.h
kernel/declare_SingletonContainer.h
declare_TripletContainer.h
kernel/declare_TripletContainer.h
Decorator.h
kernel/Decorator.h
decorator_macros.h
kernel/decorator_macros.h
def.h
density_analysis.h
density_map_volumetrics.h
density_utilities.h
density_utils.h
DensityDataPoints.h
DensityFillingRestraint.h
DensityHeader.h
DensityMap.h
cnmultifit_tools/dependencies.py
em_tools/dependencies.py
EMageFit/dependencies.py
example_app/dependencies.py
foxs/dependencies.py
integrative_docking/dependencies.py
ligand_score/dependencies.py
multifit_tools/dependencies.py
pdb_tools/dependencies.py
rmf_tools/dependencies.py
saxs_merge/dependencies.py
saxs_tools/dependencies.py
dependency_graph.h
kernel/dependency_graph.h
dependency_graph.py
DependencyScoreState.h
deprecation.h
deprecation_macros.h
DerivativeAccumulator.h
kernel/DerivativeAccumulator.h
DerivativeCalculator.h
DerivativesFromRefined.h
DerivativesToRefined.h
DiameterRestraint.h
Diffusion.h
DihedralRestraint.h
dihedrals.h
DihedralSingletonScore.h
DiscreteSampler.h
display.h
display_config.h
display_log.py
display_macros.h
displaying_ensembles.py
distance.h
distance_pair_score_macros.h
core/DistancePairScore.h
score_functor/DistancePairScore.h
DistanceRestraint.h
DistanceToSingletonScore.h
DistributePairsScoreState.h
DistributeQuadsScoreState.h
DistributeSingletonsScoreState.h
DistributeTripletsScoreState.h
Distribution.h
dock_with_crosslinks.py
Domain.h
domino.h
domino_approach.py
domino_config.h
domino_filter_tables.h
domino_filters.h
domino_macros.h
domino_particle_states.h
DominoModel.py
DominoSampler.h
Dope.h
dope_and_excluded_volume.cpp
DopePairScore.h
doxygen.h
kernel/doxygen.h
doxygen_macros.h
DummyRestraint.h
DynamicListPairContainer.h
DynamicListQuadContainer.h
DynamicListSingletonContainer.h
DynamicListTripletContainer.h
eigen_analysis.h
element.h
Ellipsoid3D.h
em.h
em2d.h
em2d_config.h
Em2DRestraint.h
em_config.h
em_images_conversion.py
em_restraint.py
emagefit.py
emagefit_cluster.py
emagefit_dock.py
emagefit_score.py
em/embedding.h
statistics/embedding.h
embedding_macros.h
embeddings.h
EMReaderWriter.h
endian.h
ensemble_analysis.h
Entry.py
enums.h
envelope_penetration.h
EnvelopeFitRestraint.h
EnvelopePenetrationRestraint.h
EnvelopeScore.h
estimate_threshold_from_molecular_mass.py
estimates.h
EventPairsOptimizerState.h
EventQuadsOptimizerState.h
EventSingletonsOptimizerState.h
EventTripletsOptimizerState.h
example.h
example_config.h
ExampleComplexRestraint.h
ExampleConstraint.h
ExampleDecorator.h
ExamplePairScore.h
ExampleRefCounted.h
ExampleRestraint.h
ExampleSingletonModifier.h
ExampleSubsetFilterTable.h
ExampleTemplateClass.h
ExampleUnaryFunction.h
base/exception.h
exception.h
kernel/exception.h
excluded_volume.py
ExcludedVolumeRestraint.h
exp.h
fft_based_rigid_fitting.h
FFToperations.h
fifobased_loader.py
FIFOBasedGrid.py
base/file.h
file.h
kernel/file.h
filebased_loader.py
FileBasedGrid.py
filenames_manipulation.h
filter_close_pairs.py
FilterGeometry.h
Fine2DRegistrationRestraint.h
fit_fft.py
fit_restraint.py
FitParameters.h
FitRestraint.h
fitting_clustering.h
fitting_solutions_reader_writer.h
fitting_states.h
fitting_tools.h
fitting_utils.h
FittingSolutionRecord.h
FixedRefiner.h
flags.h
FloatIndex.h
kernel/FloatIndex.h
FNormal.h
force_fields.h
ForceFieldParameters.h
FormFactorTable.h
foxs.cpp
Fragment.h
frames.h
functor.h
kernel/functor.h
GaussianProcessInterpolation.h
GaussianProcessInterpolationRestraint.h
GaussianProcessInterpolationRestraintSparse.h
GaussianProcessInterpolationSparse.h
GaussianRestraint.h
generate_density_map_of_fixed_dimension.py
container/generic.h
core/generic.h
generic.h
kernel/generic.h
geometric_alignment.h
geometric_primitive_macros.h
GeometricHash.h
GeometricPrimitiveD.h
geometry.h
algebra/geometry.py
rmf/geometry.py
geometry_io.h
geometry_macros.h
GeometryProcessor.h
GeometrySet.h
graph.py
graph_macros.h
grid_embeddings.h
grid_indexes.h
grid_ranges.h
grid_space.py
grid_storages.h
grid_utility.h
GridClosePairsFinder.h
GridD.h
gsl.h
gsl_config.h
GSLOptimizer.h
core/Harmonic.h
score_functor/Harmonic.h
core/HarmonicLowerBound.h
score_functor/HarmonicLowerBound.h
core/HarmonicUpperBound.h
score_functor/HarmonicUpperBound.h
HarmonicWell.h
hash.h
hash_macros.h
header_converters.h
hierarchical_clustering.h
atom/Hierarchy.h
core/Hierarchy.h
hierarchy_tools.h
Histogram.h
HistogramD.h
History.py
hosts.py
HybridMonteCarlo.h
idock.py
Image.h
image_processing.h
ImageHeader.h
ImageReaderWriter.h
IMP.h
imp_example_app.cpp
imp_restraints_in_modeller.py
ImproperSingletonScore.h
InContainerPairFilter.h
InContainerQuadFilter.h
InContainerSingletonFilter.h
InContainerTripletFilter.h
incremental_mc.py
IncrementalScoringFunction.h
Index.h
indexes.py
input_output.h
kernel/input_output.h
input_output_macros.h
kernel/input_output_macros.h
InputAdaptor.h
interactive.h
interactive.py
interactive_with_containers.py
algebra/io.h
io.h
kernel/io.h
isd.h
isd_config.h
ISDRestraint.h
JeffreysRestraint.h
JPGImageReaderWriter.h
kernel.h
kernel_config.h
KernelParameters.h
kernel/Key.h
Key.h
kernel/key_macros.h
key_macros.h
kmeans/KMeans.h
KMeans.h
kmeans.py
kmeans_config.h
kmeans_example.py
LangevinThermostatOptimizerState.h
LeavesRefiner.h
LennardJones.h
LennardJonesPairScore.h
ligand_score.cpp
Linear.h
LinearFit.h
LinearLowerBound.h
link.py
link_macros.h
links.h
ListPairContainer.h
ListQuadContainer.h
ListSingletonContainer.h
ListTripletContainer.h
live_objects.h
load_modeller_model.py
load_protein_restrain_bonds.py
local_distance.py
local_fitting.py
base/log.h
kernel/log.h
log.h
log.py
log_macros.h
logfile.py
LogicalORRestraint.h
LognormalRestraint.h
LogOptimizerState.h
LogPairScore.h
LowestRefinedPairScore.h
kernel/macros.h
macros.h
MaintainScaleOrderConstraint.h
map.h
map2pca.py
MapDistanceTransform.h
MapReaderWriter.h
MarginalHBondRestraint.h
MarginalNOERestraint.h
marina_party.py
markers.py
masking.h
Mass.h
master_communicator.py
math.h
MCCGSampler.h
doc/examples/domino/merge_tree.py
lib/IMP/multifit/merge_tree.py
merge_tree_utils.h
Metric.h
metric_clustering.h
metric_macros.h
metrics.h
MinimumPairRestraint.h
MinimumPairScore.h
MinimumQuadRestraint.h
MinimumQuadScore.h
MinimumRestraint.h
MinimumSingletonRestraint.h
MinimumSingletonScore.h
MinimumTripletRestraint.h
MinimumTripletScore.h
misc.h
misc_config.h
kernel/Model.h
Model.h
model_interaction.h
model_statistics.h
modeller.h
modeller_config.h
modeller_restraints_in_imp.py
kernel/ModelObject.h
ModelObject.h
models.py
mol2.h
mol2pca.py
MolCnSymmAxisDetector.h
molecular_hierarchy.py
atom/MolecularDynamics.h
isd/MolecularDynamics.h
MolecularDynamicsMover.h
Molecule.h
monte_carlo_macros.h
MonteCarlo.h
MonteCarloMover.h
MonteCarloRelativeMoves.py
Mover.h
mover_macros.h
MoverBase.h
MoveStatisticsScoreState.h
MRCReaderWriter.h
ms_connectivity_restraint.py
MSConnectivityRestraint.h
multifit.h
multifit.py
multifit_config.h
MultipleBinormalRestraint.h
multiresolution.py
multiscale.py
MultivariateFNormalSufficient.h
MultivariateFNormalSufficientSparse.h
NearestNeighborsClosePairsFinder.h
NOERestraint.h
nonbonded_interactions.py
NonCopyable.h
NormalMover.h
Nuisance.h
NuisanceRangeModifier.h
nullptr.h
nullptr_macros.h
nup84.py
nup84_complex_in_bead_representation.py
base/Object.h
kernel/Object.h
Object.h
object_cast.h
object_macros.h
core/OpenCubicSpline.h
score_functor/OpenCubicSpline.h
opencv_interface.h
optimize_balls.py
optimize_em2d_with_montecarlo.py
kernel/Optimizer.h
Optimizer.h
kernel/optimizer_macros.h
optimizer_macros.h
kernel/optimizer_state_macros.h
optimizer_state_macros.h
kernel/OptimizerState.h
OptimizerState.h
optimizing.h
Order.h
OrderedDict.py
osPeptideDocker.py
kernel/pair_macros.h
pair_macros.h
pair_predicates.h
pair_restraint.py
PairConstraint.h
kernel/PairContainer.h
PairContainer.h
PairContainerSet.h
PairContainerStatistics.h
kernel/PairDerivativeModifier.h
PairDerivativeModifier.h
kernel/PairModifier.h
PairModifier.h
kernel/PairPredicate.h
PairPredicate.h
PairRestraint.h
PairsConstraint.h
kernel/PairScore.h
PairScore.h
PairsOptimizerState.h
PairsRestraint.h
ParabolicFit.h
parallel.h
parallel_config.h
cnmultifit/param.py
multifit/param.py
kernel/Particle.h
Particle.h
particle_geometry.h
kernel/particle_index.h
particle_index.h
particle_io.h
particle_states.h
kernel/ParticleTuple.h
ParticleTuple.h
partitional_clustering_macros.h
PartitionalClustering.h
PartitionalClusteringWithCenter.h
path_reader_writer.h
pca_based_rigid_fitting.h
PCAAligner.h
PCAFitRestraint.h
pdb.h
pdb.py
pdb2density.py
pdb_check.cpp
pdb_rmf.cpp
pepdock.h
pepdock_config.h
peptideDocker.py
periodic_optimizer_state_macros.h
PeriodicOptimizerState.h
piecewise_linear_distribution.h
Plane3D.h
point_clustering.h
base/Pointer.h
kernel/Pointer.h
Pointer.h
PolarResamplingParameters.h
PredicatePairsRestraint.h
PredicateQuadsRestraint.h
predicates.h
PredicateSingletonsRestraint.h
PredicateTripletsRestraint.h
primitive_geometries.h
Profile.h
profile.py
profile_fit.py
ProfileFitter.h
Profiler.h
project.h
ProjectionFinder.h
ProjectionMask.h
ProjectionParameters.h
protein_anchors_mapping_reader.h
protein_ligand_score.h
proteomics.py
proteomics_em_alignment_atomic.h
proteomics_reader.h
PymolWriter.h
PyroGrid.py
PyroHandlerLoader.py
PyroUtils.py
algebra/python_only.h
atom/python_only.h
core/python_only.h
display/python_only.h
kernel/python_only.h
python_only.h
statistics/python_only.h
kernel/quad_macros.h
quad_macros.h
quad_predicates.h
QuadConstraint.h
kernel/QuadContainer.h
QuadContainer.h
QuadContainerSet.h
QuadContainerStatistics.h
kernel/QuadDerivativeModifier.h
QuadDerivativeModifier.h
kernel/QuadModifier.h
QuadModifier.h
kernel/QuadPredicate.h
QuadPredicate.h
QuadraticClosePairsFinder.h
QuadRestraint.h
QuadsConstraint.h
kernel/QuadScore.h
QuadScore.h
QuadsOptimizerState.h
QuadsRestraint.h
QuasiNewton.h
multifit/RadiusOfGyrationRestraint.h
saxs/RadiusOfGyrationRestraint.h
RAII.h
raii_macros.h
base/random.h
kernel/random.h
random.h
randomize_rigid_body.py
randomizing.h
range_restriction.py
RecursivePartitionalClusteringEmbedding.h
RecursivePartitionalClusteringMetric.h
ref_counted_macros.h
base/RefCounted.h
kernel/RefCounted.h
RefCounted.h
reference.py
ReferenceFrame3D.h
refine_fft.py
RefinedPairsPairScore.h
kernel/Refiner.h
Refiner.h
kernel/refiner_macros.h
refiner_macros.h
Reflection3D.h
RegistrationResult.h
RelativePositionMover.h
RemoveRigidMotionOptimizerState.h
RemoveTranslationOptimizerState.h
Replica.py
RepulsiveDistancePairScore.h
resample_density.py
Residue.h
restrain_diameter.py
restrain_in_sphere.py
restrain_minimum_distance.py
restrainer.h
restrainer_config.h
kernel/Restraint.h
Restraint.h
saxs/Restraint.h
restraint_cache.py
restraint_geometry.h
restraint_io.h
kernel/restraint_macros.h
restraint_macros.h
restraints.py
kernel/RestraintSet.h
RestraintSet.h
RestraintsScoringFunction.h
rg.cpp
rigid_bodies.h
rigid_bodies.py
rigid_body_and_excluded_volume_restraint.py
rigid_body_excluded_volume.py
rigid_body_geometries.h
rigid_brownian_dynamics.py
rigid_collisions.py
rigid_fitting.h
RigidBodiesImageFitRestraint.h
RigidBodyDistancePairScore.h
RigidBodyMover.h
RigidClosePairsFinder.h
rmf.h
rmf_color.cpp
rmf_config.h
rmf_display.cpp
RMFWriter.h
rmsd.py
RMSDClustering.h
ro.py
rotamer.h
rotamer_config.h
rotamer_pdb.py
rotamer_pdb2.py
RotamerCalculator.h
RotamerLibrary.h
Rotation2D.h
Rotation3D.h
SameResiduePairFilter.h
SampledDensityMap.h
kernel/Sampler.h
Sampler.h
kernel/sampler_macros.h
sampler_macros.h
sampling.py
save_assignments.py
SaveOptimizerState.h
saxs.h
saxs_config.h
saxs_merge.py
saxs_restraint.py
Scale.h
kernel/scoped.h
scoped.h
Score.h
score.py
score_functor.h
score_functor_config.h
score_protein_with_ligand.py
kernel/score_state_macros.h
score_state_macros.h
kernel/ScoreAccumulator.h
ScoreAccumulator.h
scores2D.h
kernel/ScoreState.h
ScoreState.h
ScoreUnaryFunction.h
kernel/scoring_function_macros.h
scoring_function_macros.h
kernel/ScoringFunction.h
ScoringFunction.h
scratch.h
scratch_config.h
secondary_structure_reader.h
SecondaryStructureResidue.h
Segment3D.h
Selection.h
SerialMover.h
serialPeptideDocker.py
set.h
SetCheckState.h
SetLogState.h
SettingsData.h
setup.py
shared_functions.py
Shift.h
shortest_segment.h
show_particles_as_spheres.py
Showable.h
showable_macros.h
simple_connectivity_on_molecules.py
simple_connectivity_on_rigid_bodies.py
simple_diameter.py
simple_distance.py
simple_em_fit.py
simple_excluded_volume.py
simple_links.h
Simplex.h
simplex.py
simplify_restraint.h
simulate_density_from_pdb.py
simulation.py
Simulator.h
kernel/singleton_macros.h
singleton_macros.h
singleton_predicates.h
SingletonConstraint.h
kernel/SingletonContainer.h
SingletonContainer.h
SingletonContainerSet.h
SingletonContainerStatistics.h
kernel/SingletonDerivativeModifier.h
SingletonDerivativeModifier.h
kernel/SingletonModifier.h
SingletonModifier.h
kernel/SingletonPredicate.h
SingletonPredicate.h
SingletonRestraint.h
SingletonsConstraint.h
kernel/SingletonScore.h
SingletonScore.h
SingletonsOptimizerState.h
SingletonsRestraint.h
six_particles_optimization.py
slave_handler.py
slavestate.py
Slice.h
SlidingPriorRestraint.h
smoothing_functions.h
SoftCylinderPairScore.h
solutions_io.py
SolventAccessibleSurface.h
Sphere3D.h
SphereD.h
SphereDistance.h
SphereDistancePairScore.h
SpherePatch3D.h
SphericalVector3D.h
SpiderHeader.h
SpiderImageReaderWriter.h
SpiderReaderWriter.h
standard_grids.h
StateAdaptor.h
Statistical.h
StatisticalPairScore.h
statistics.h
Statistics.py
statistics_config.h
SteepestDescent.h
StereochemistryPairFilter.h
structure_from_sequence.py
subproc.py
Subset.h
subset_filters.h
subset_graphs.h
subset_scores.h
surface.py
SurfaceShellDensityMap.h
swap_macros.h
swig_macros.h
Switching.h
symmetric_multifit.h
symmetry.h
symmetry.py
symmetry_utils.h
system.h
system_config.h
TableRefiner.h
TALOSReader.py
TALOSRestraint.h
tasks.py
TBLReader.py
test.h
thread_macros.h
threads.h
TIFFImageReaderWriter.h
tracking.h
Transform.h
Transformation2D.h
Transformation3D.h
TransformationClustering.h
TransformedDistancePairScore.h
transforms.py
Triangle3D.h
kernel/triplet_macros.h
triplet_macros.h
triplet_predicates.h
TripletConstraint.h
kernel/TripletContainer.h
TripletContainer.h
TripletContainerSet.h
TripletContainerStatistics.h
kernel/TripletDerivativeModifier.h
TripletDerivativeModifier.h
kernel/TripletModifier.h
TripletModifier.h
kernel/TripletPredicate.h
TripletPredicate.h
TripletRestraint.h
TripletsConstraint.h
kernel/TripletScore.h
TripletScore.h
TripletsOptimizerState.h
TripletsRestraint.h
TruncatedHarmonic.h
TuneRex.py
tuple_macros.h
Typed.h
TypedPairScore.h
types.h
kernel/unary_function_macros.h
unary_function_macros.h
kernel/UnaryFunction.h
UnaryFunction.h
UnaryFunctionEvaluate.h
kernel/Undecorator.h
Undecorator.h
univariate_functions.h
util.py
algebra/utility.h
base/utility.h
benchmark/utility.h
core/utility.h
domino/utility.h
kernel/utility.h
saxs/utility.h
statistics/utility.h
utility.h
utility.py
utility_macros.h
utils.py
validate_profile.cpp
Value.h
value_macros.h
Vector.h
Vector2D.h
Vector3D.h
vector_generators.h
vector_metrics.h
vector_property_map.h
vector_search.h
VectorD.h
VelocityScalingOptimizerState.h
base/VersionInfo.h
kernel/VersionInfo.h
VersionInfo.h
view_density_header.py
VolumeRestraint.h
vonMises.h
vonMisesKappaConjugateRestraint.h
vonMisesKappaJeffreysRestraint.h
vonMisesSufficient.h
Voxel.h
warning_macros.h
WarningContext.h
base/WeakPointer.h
kernel/WeakPointer.h
WeakPointer.h
weighted_excluded_volume.h
WeightedExcludedVolumeRestraint.h
WeightScore.h
WormLikeChain.h
write_a_metric.py
write_a_restraint.py
write_an_optimizer_state.py
Writer.h
writer_macros.h
XplorReaderWriter.h
XYZ.h
XYZ_Decorator.py
XYZR.h
XYZR_Decorator.py
File Members
Examples
base/RefCounted.h
Go to the documentation of this file.
1
/**
2
* \file IMP/base/RefCounted.h
3
* \brief A common base class for ref counted objects.
4
*
5
* Copyright 2007-2013 IMP Inventors. All rights reserved.
6
*
7
*/
8
9
#ifndef IMPBASE_REF_COUNTED_H
10
#define IMPBASE_REF_COUNTED_H
11
12
#include <IMP/base/base_config.h>
13
#include "
exception.h
"
14
#include "
utility_macros.h
"
15
#include <boost/static_assert.hpp>
16
#include <boost/type_traits.hpp>
17
#include "
NonCopyable.h
"
18
19
20
#ifndef IMP_DOXYGEN
21
#ifndef SWIG
22
23
namespace
IMP {
24
namespace
base {
25
class
Object;
26
namespace
internal {
27
template
<
class
R,
class
E>
28
struct
RefStuff;
29
}
30
}
31
}
32
#endif
33
#endif
34
35
IMPBASE_BEGIN_NAMESPACE
36
37
38
//! Common base class for ref counted objects.
39
/** This base class implements reference counting when used in
40
conjunction with IMP::Pointer or IMP::WeakPointer objects.
41
Objects which inherit from IMP::RefCounted should be passed
42
using pointers and stored using IMP::Pointer and
43
IMP::WeakPointer objects. Users must be careful to avoid
44
cycles of reference counted pointers, otherwise memory will
45
never be reclaimed.
46
47
\par Introduction to reference counting:
48
Reference counting is a technique for managing memory and
49
automatically freeing memory (destroying objects) when it
50
is no longer needed. In reference counting, each object has a reference
51
count, which tracks how many different places are using the
52
object. When this count goes to 0, the object is freed.\n\n
53
Python internally refence counts everything. C++, on the other hand,
54
requires extra steps be taken to ensure that objects
55
are reference counted properly.\n\n
56
In \imp, reference counting is done through the IMP::Pointer
57
and IMP::RefCounted classes. The former should be used instead of
58
a raw C++ pointer when storing a pointer to any object
59
inheriting from IMP::RefCounted.\n\n
60
Any time one is using reference counting, one needs to be aware
61
of cycles, since if, for example, object A contains an IMP::Pointer to
62
object B and object B contains an IMP::Pointer to object A,
63
their reference counts will never go to 0 even if both A
64
and B are no longer used. To avoid this, use an
65
IMP::WeakPointer in one of A or B.
66
67
IMP::RefCounted provides no public methods or constructors.
68
It makes objects that inherit from it non-copyable.
69
70
\see IMP_REF_COUNTED_DESTRUCTOR()
71
*/
72
class
IMPBASEEXPORT
RefCounted
:
public
NonCopyable
73
{
74
#ifndef IMP_DOXYGEN
75
static
unsigned
int
live_objects_;
76
77
void
init() {
78
#if IMP_HAS_CHECKS >= IMP_INTERNAL
79
++live_objects_;
80
#endif
81
#if IMP_HAS_CHECKS >= IMP_USAGE
82
check_value_=111111111;
83
#endif
84
count_=0;
85
}
86
87
#ifndef _MSC_VER
88
template
<
class
R,
class
E>
89
friend
struct
internal::RefStuff;
90
#else
91
public
:
92
#endif // _MSC_VER
93
mutable
int
count_;
94
#if IMP_HAS_CHECKS >= IMP_USAGE
95
double
check_value_;
96
#endif
97
protected
:
98
RefCounted
(){init();}
99
// things right.
100
#ifdef _MSC_VER
101
public
:
102
#endif
103
// the virtual is not strictly needed but helps for getting
104
virtual
~
RefCounted
();
105
106
public
:
107
108
#ifndef IMP_DOXYGEN
109
// Return whether the object already been freed
110
bool
get_is_valid()
const
{
111
#if IMP_HAS_CHECKS == IMP_NONE
112
return
true
;
113
#else
114
return
static_cast<
int
>
(check_value_)==111111111;
115
#endif
116
}
117
118
void
show
(std::ostream &)
const
{};
119
120
std::string get_name()
const
{
return
"RefCounted"
;}
121
#endif
122
123
unsigned
int
get_ref_count()
const
{
124
return
count_;
125
}
126
127
static
unsigned
int
get_number_of_live_objects() {
128
// for debugging purposes only
129
return
live_objects_;
130
}
131
#endif // IMP_DOXYGEN
132
133
bool
get_is_shared()
const
{
134
return
count_ > 1;
135
}
136
137
};
138
139
IMPBASE_END_NAMESPACE
140
141
#endif
/* IMPBASE_REF_COUNTED_H */