Hi all,
In preparation for converting relax into a universal toolkit for NMR
dynamics, I would like to take the following steps:
1) Release relax 2.2.5.
2) Merge the frame order branch back into the relax trunk. This code
is close to complete and is stable. There are also changes to certain
parts of relax which should really have gone into trunk instead of the
branch. This includes, for example, a change of the operation in the
atom_loop() method of the structural API. The merger is essential
prior to the next step as otherwise the branch will no longer be
manageable. After this merger, there will be no branches tracking the
trunk any more. The 'cst', 'inversion-recovery', and 'relax_disp'
branches will remain, but these are too old to follow the trunk with
svnmerge. They can always be restored by the creation of a new branch
and then manually porting the changes of the old branch to the new - a
trivial exercise when using the svnmerge.py script.
3) Completely redesign the package and module layout in relax. The
key idea that this revolves around is the creation of the relax
library package called 'lib'. This will be a huge collection of
functions relevant for NMR dynamics. These will be fully independent
from the relax data store, specific analysis API, and other relax
concepts. It will allow users to employ relax as an alternative to
Mathematica and Matlab, by having a large collection of NMR functions
at their fingertips. A lot more details are given in the
docs/package_layout document, which I have included below. The
redesign should be more logical and easier to understand for new
developers as well.
As there are no relax developers actively making changes at the
moment, I will probably start with these changes today as it should
not interrupt anyone, but any feedback would be appreciated.
Regards,
Edward
Directory layout design (2013-03-01)
====================================
The following is an idea for how to lay out the directories for the
relax sources. The changes suggested must occur after the merging of
the frame_order_testing branch.
____________________________________________________________________________________________________
Package Description
____________________________________________________________________________________________________
analysis_lib Analysis specific code (currently called specific_fns).
auto_analyses Unchanged from now. A collection of massive relax
scripts used to simplify the
life of relax users.
data_store The relax data store and all modules which operate
on it (data and generic_fns).
ds_lib All modules which operate on the relax data store
(data and generic_fns).
Mainly user function backends.
extern GPL compatible packages bundled with relax.
graphics Mainly a repository for all bitmap and vector
graphics, but a few auxiliary
functions for handling graphics within relax (e.g.
icons in the GUI).
gui The graphical UI.
lib A set of modules and functions independent of the
relax data store and specific
analyses. Half of maths_fns and some of
generic_fns. No code is allowed to
reference the data store!
lib.frame_order Most of the modules of maths_fns.frame_order.
lib.geometry To include, for example, maths_fns.rotation_matrix.
lib.opendx From opendx.
lib.nmr For example maths_fns.rdc, math_fns.pcs, etc.
lib.structure From generic_fns.structure.
multi The multi-processor code.
prompt The prompt/script UI.
scons The SCons modules.
target_fns A collection of all the target functions. This is
most of the current
maths_fns. The modules contain target function
classes which must present the
func() method as the target function (and the
optional dfunc() and d2func() for
the gradient and Hessian respectively).
test_suite The relax test suite.
user_functions The definitions of the relax user functions.
____________________________________________________________________________________________________