IMP
2.0.0
The Integrative Modeling Platform
|
README.md
, given the github id of the person to whome issues should be assigned.setup_git.py
support the --module
flag which will set up git hooks and things for a git repository that contains a module.dependencies.py
and the module docs in a README.md
, both in the main module directory.IMP-wide
support for progress bars was added with the IMP::base::set_progress_display() function and helpers. These are only displayed when the IMP::base::get_log_level() is IMP::base::PROGRESS. IMP
, it is way better.release
has been reduced to IMP::USAGE as that speeds things up a bit..cpp
file linked with any .cpp
files contained in a subdirectory called lib
. Nothing needs to be put into the SConscript file.repository
argument. This was always required for out of source builds, which is what one should be doing, but is now required for in source builds to, so as to make accidentally poluting your source with an in-source build harder. Use repository="."
in that case.RMF/HDF5
, the python functionality into RMF_HDF5
and the code into namespace RMF::HDF5
and all HDF5
or hdf5
mentions in the class and function names were removed.IMP-wide
command line flags have been added to IMP::base in the base/flags.h file. They provide a simple command line parsing interface that can be used from C++ and python. In addition, various functionality in IMP
is automatically exposed on the commend line when those functions are used. For example, one can control logging, checks or profiling. See IMP/base/flags.h for (some) more info.overview.dox
in the module doc
folder. Modules in IMP
svn have been updated. For external modules, you can just move a overview.dox
from that was previously generated into your doc
folder and (eventually) remove the lines from your doc/SConscript
. This makes it easier to use the full range of doxygen markup, as well as removes the need to escape doxygen markup for python..py
and .readme
files (putting \#\#
in front of each line of the .readme
) and adding a ## \\example module/examplename.py
line at the begginning. You can use ./tools/updaters/update_examples.py modules/mymodule
to update a module that was not already updated.include
. If so, just \#if 0
them out, or move them some place nicer.modules
, which must have an SConscript
file._do_get_outputs(self, m, particle_indexes)
which should probably just return
[m.get_particle(i) for in in particle_indexes] to return all the passed particles.IMP
more python friendly, macros IMP_PROTECTED_METHOD(), IMP_PROTECTED_CONSTRUCTOR() were added that properly expose such methods to python. The standards checks now complain if protected
is used an a class in the API.module/bin
are now put in build/module_bin/module. This removes a recurring source of errors in the build script due to the origin and destination directory have the same name in scons.module/benchmark
and build to build/benchmark/module
to remove a recurring source of errors.bin
whose name starts with benchmark_
) that use the IMP_BENCHMARK() macro have command line flags to turn on and cpu and memory profiling.pyext
directories changed. They should now be IMP_modulename.name.i
instead of IMP_modulename_name.i
. This is to better support underscores in names. IMP
headers include which other heads have been substantially simplified. This may result in compilation errors for code outside of svn
that depended on IMP
headers including other headers. In general, you want to explicitly include the header defining each thing you use.IMP
is now exposed at IMP::base::Vector and what it does it documented.IMP
are now implemented in IMP::ScoringFunction objects. All restraint evaluation is handled by them and they can cache various useful information to aid in accelerating restraint evaluation. Backward compatibility interfaces have mostly been provided, please complain if some important interface went away. This has greatly simplified the code as well as fixed various bugs in various types of restraint evaluation (particularly in the handling of maximum scores on IMP::Restraint and IMP::RestraintSet objects.tools/show-changes
has been added that shows the changes in the history log since you last updated.tools/make-source
has been added that adds a source/header pair to a modulepretty
and color
were added (defaulting to True). When they are true, build commands are mostly suppressed and a much briefer description of what is being done is printed out (in color). Note that color
mode and compilation in emacs don't get along too well.matplotlib
.base
qualifier (eg base::TextInput) so that swig is happy.kernel
to modules/kernel
. This is unlikely to effect anyone.python
argument to scons.nullptr
. You should prefer that to NULL
in IMP
code that you want to run cross platform.IMP
now supports usage of restraints without adding them to the IMP::Model scoring function. To do this, do IMP::Restraint::set_model(), passing the model. The restraint can then be evaluated.IMP
. The reason for doing this was that the code was complicated, created overhead even when incremental support was not used and was not commonly used. Further, decomposing the restraints and using the dependency graph yields similar results and is more transparent.dot
and then open the pdf.IMP
graphs. Unfortunately, they still pale compared to graphviz.IMP
.IMP
modules are now built by first combining all the .cpp files into one, and then building that file. This greatly accelerates building of a module from scratch as build time is dominated by parsing headers. This does change the semantics of .cpp files as they see headers included by and functions declared by an arbitrary subset of other .cpp files. For now they are still required to be able to be compiled separately. To get the only behavior back either globally or on a per-module basis, see the percppcompilation parameter to scons.IMP
build. See the installation guide.This
typedef and makes them more consistent with the other macros in IMP
.IMP
svn in addition to applications and biological systems. To do so, create a directory with your module in a subdir containing links to the IMP
SConscript file and scons_tools and a config.py that has information needed to run IMP
(eg an appropriate pythonpath
, ldpath
).IMP
.new
in C++ code. It also means that one is no longer prohibited from storing them (not that there is much use in doing that).IMP
naming scheme as we don't expect they were used outside of the IMP
source.IMP
used on a biological systemIMP
.get_
)get_
as a prefix and/or add a _3d
suffix when they did not take any arguments._3d
so we can add 2D versions at some point)".transform("
worked in the IMP
code base.IMP
body, all instances of the string Selector were for PDBSelectors and so sed was safe to use.IMP
svn which use the IMP_*_SCORE macros now have to implement the get_is_changed() function outside of the class declaration and scores which use the IMP_SIMPLE_*_SCORE now don't have to implement the functions to get interactions and used particles.sed
should manage updates just fine), but the internal implementation is completely new, so pay attention.IMP
now has a text i/o layer consisting of IMP::TextInput and IMP::TextOutput. These classes are convertible to C++ streams and implicitly constructable from both streams and file paths. As a result, functions that take them will work when called with a string for a file path, a Python file or a C++ stream.IMP
now makes use of Boost.Filesystem to manipulate paths. Things may not work well on systems where boost libs are not available which does not support posix paths. But libless boost installs generally don't exist outside of our test systems.IMP
exceptions can be caught in Python using "except IMP.Exception". For convenience, the IMP::IOException, IMP::ValueException and IMP::IndexException classes in Python also derive from the similarly-named standard Python classes (IOError, ValueError and IndexError respectively).
.i files have been renamed to start with IMP_
to help make dependency tracking easier.static=True
) build both the static and dynamic libraries and just static executablesprofile
build target has been removed as static=True
does the important bit of what is needed. Just do linkflags=
['-pg'] to add the needed link flag for gprof
.bin/imppy.sh
no longer works, as was previously warned. Use tools/imppy.sh
instead. The bin directory will go away eventually, for now the script just tells you to use the tools version.print
or str
to not return something useful in Python for any IMP
object.IMP
was built from.tools/update-decorators
is provided which updates the names in all code in subdirectories of the current directory. Please backup things first.scons_tools
and SConstruct
from the source directory in the build directory and then add the lineconfig.py
in the build directory. Then running scons
in the build directory will put generated files there. This allows you to make both a release
and fast
build off of the same set of sources. Proper docs will be added soon.IMP-specific
doxygen commands have been documented.DecoratorName()
) rather than throwing an exception. This might make it actually useful.IMP
.map
in Python and for_each
in C++. See IMP::SingletonFunctor and IMP::PairFunctor for more information.compose() for transformation is now a free function so compose(rotation, vector) will work via promotions.
IMP
standards (and more likely to do what their names/comments suggest). See IMP::algebra::Sphere3D, IMP::algebra::Cylinder3D, IMP::algebra::Segment3D, IMP::algebra::Plane3D etc.