mailRe: cst branch development


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Pavel Kaderavek on January 22, 2009 - 12:31:
Hi,
I have not heard about wiki (sorry I am very low IT educated person),
but if I understood in a right way I can place those files on the web-site to enable you to download them.
So the files are:
https://www.ncbr.chemi.muni.cz/~kada/maths_fns_branch.tar
https://www.ncbr.chemi.muni.cz/~kada/relax-1.2.10_cst.tar
-the first one is only maths_fns directory for 1.3 version, still with the abundant mf_csa.py file which was not incorporated into mf.py. The content was checked only by "eyes", but I am checking it using that validator just now. -the second one is the old "dirty" version (I cut out only the most evident abundant comments) So far, I tested the code only in the way that I calculated the values of relaxation times by script in octave. Then I fit these values in relax and checked, if the result of the fitted parameters is the same as those used for the calculation. For the 1.3 line I will also try to use that test system you suggest, but now I do not think I am not at that state yet (In addition I have to admitt I do not understand what really happen there, I have just looked at it briefly).
Regards
Pavel

On Thu, 22 Jan 2009, Edward d'Auvergne wrote:

Date: Thu, 22 Jan 2009 10:16:46 +0100
From: Edward d'Auvergne <edward@xxxxxxxxxxxxx>
To: Pavel Kaderavek <kada@xxxxxxxxxxxxx>,
    Petr Novak <shaman@xxxxxxxxxxxxxxxxxx>
Cc: relax-devel@xxxxxxx
Subject: Re: cst branch development

Hi,

If we work together, we should be able to resolve all issues.  I
believe that it is in everyone's interests that this code, once clean
and acceptably designed, is integrated into the main relax codebase
and standard relax releases.  And integration into 1.3 would be very
beneficial for RNA analyses.  So the first thing I think that should
be done is Petr's point 1, getting the 1.2.10 branched code into the
repository.  This can sit in it's own private branch until all ideas
are integrated into 1.3.  This will give the option for others to port
the code to 1.3 in the future, if any issues blocking development
arise.

For porting the maths_fns/ code to 1.3, if there are formatting
issues, much of this can be found using the code validation script I
have written which is located at
http://www.nmr-relax.com/scripts/code_validator.  Apart from one or
two rare exceptions, this script should pass.  It will also
significantly speed up the fixing of whitespace issues and consistency
with the rest of relax.  Now, to get this code into the 'cst' branch,
I need to know one thing.  Did this code come from another file within
maths_fns/?  If so, for legal reasons involving copyright law, I will
need to use 'svn cp' to duplicate this file again.  All code should be
traceable to the original author.  Then this file can be modified with
your changes (possibly by simple replacement with your copy to create
the diff or patch).

If you do have a wiki where files can be placed, this can be used
instead of the task I created (https://gna.org/task/?6397).  If an
email is sent with a link to the code, I can then download this and
apply the changes.  But please remember that the changes need to be
incorporated incrementally.  Massive code dumps onto a software
project are never acceptable.  So I would add the changes to
maths_fns/mf.py separately to changes to any other file, possibly as a
series of logically grouped changes as well.

Now, something which must be done for the 1.3 line integration is the
addition of a system test.  If you have a relax script, some test
input data (for 1 or 2 spins), and know what the final result should
be, then creating the system test is very, very easy.  The script just
has to be copied into test_suite/system_tests/scripts, with an
appropriate name.  The data should be copied into
test_suite/shared_data/*/.  Then edit
test_suite/system_tests/model_free.py and maybe copy one of the tests
such as test_bugs_12582_12591_12607().  The final optimised values can
be checked as in the test_opt*() methods.  I can't reinforce enough
how important this system test is!  It will make sure that the code is
100% functional, now and forever into the future.

Regards,

Edward



On Thu, Jan 22, 2009 at 8:46 AM, Pavel Kaderavek <kada@xxxxxxxxxxxxx> wrote:
Hi,
I try to do everything, you asked me so:
now the last thing I need to do with the part of the code in the maths_fns
directory is the editation of mf.py. The changes between the 1.3 and 1.2
versions were only small in the rest of the files in this directory. So I
give everything, that is already done for 1.3 from my side and also the
function version of 1.2.10. But let me note, this one is a bit "dirty"
(i.e. there might be some nonsense comments, different spacing than
 in the rest of the relax, or parts of the code, which are not used ...this
 everything I tried cut out or fix for the "oficial" 1.3 version). On the
other hand it is functional version I used and it was tested (Despite I
wouldn't rather show this version but if you wish).
 That everything I can do now, I think. Now I will continue in the
preparing the mf.py for the 1.3 version. I send all this things to Petr
Novak in the afternoon and he will put it on the website (this
complication is caused just by my stay abroad now)
I hope we get over these troubles.
Best
Pavel

On Wed, 21 Jan 2009, Edward d'Auvergne wrote:

Date: Wed, 21 Jan 2009 16:45:54 +0100
From: Edward d'Auvergne <edward@xxxxxxxxxxxxx>
To: Petr Novak <shaman@xxxxxxxxxxxxxxxxxx>,
    Pavel Kaderavek <kada@xxxxxxxxxxxxx>
Cc: relax-devel@xxxxxxx
Subject: Re: cst branch development

On Wed, Jan 21, 2009 at 3:29 PM, Petr Novak <shaman@xxxxxxxxxxxxxxxxxx> wrote:
Hi,

 From your emails I got an impression that there are
far more things to do/know than I expected (not only creating a
functional code). The thing is that I understand the needs for all those
but I simply might not have time to do it. My idea was that we would
create a functional version of relax with features we want to implement,
send you patch to check our changes and (dis)approve them and we would
repair errors. I don't have enough time for sending couple of emails
about each change we want to make and then coding it (reason given at
the end) as it involves hundreds of codelines. So I would like to ask if
you can see some solution. We see these possibilities on our side:

Hi.  Yes, this development will be quite involved.  The 1.3 line code
is quite different from the 1.2 line code, so not much from your
codebase (which was branched from the 1.2) can be used.  The code in
maths_fns/ should be fine, assuming it plays nicely with the rest of
relax.  Note that the process of getting this code in is peer
reviewed, and anything which hurts other parts of relax or goes
against relax's design principles will not be acceptable.  The result
is that only high quality, well designed code can get into relax.
That being said, if you have mimicked other parts of the code base,
then there may not be too many problems.  But I do see this process
taking 1 to 2 month to deliver to end users (but much longer for your
citations to come in ;)

Unfortunately a single patch covering all changes cannot be accepted.
I need to check every line of code, and as this was developed in
isolation, there is guaranteed to be a number of design issues.  I
need to ensure a consistent user interface throughout the program,
that the coding style is consistent with the rest of relax, that there
is no duplicated efforts, that historic links in the code are
preserved, and that the code is of reasonable quality and bug-free.
This is also the point of version control and working in a group
environment.  You code cannot step on the toes of other people code,
and vice versa.  It's a pity that the original code wasn't developed
in public, or that the idea of forking relax wasn't discussed.  That
would have saved all these troubles.

Nevertheless, we should be able to find a number of solutions.


1) we can give you the code for 1.2.10 - I think this is the worst
option, because the code needs some work anyway and it would require
conversion (btw tomorrow Pavel will link it anyway)

I think this can be done as a starting point.  What I can do here is
make a branch from the 1.2.10 tag in the subversion repository.  You
can then check out this tag and submit one massive patch (and any new
files).  I can incorporate this as one massive blob.  Note that this
code cannot be merged into the 1.2 line as this has been in feature
freeze for 2 to 3 years now.  Therefore it will serve as a historical
note, and can be used by users as a last resort if no other solutions
from below can be acheived.


2) we can give you 1.3 version of the files with equations - which means
someone would have to write the code handling data to/from equations

This can be done as part of the cst branch anyway.  The equations /
number crunching code should be located in the maths_fns directory
and, because of the abstraction layers, this code has not changed
between relax versions 1.2 and 1.3.  If this code comes from copying
other code, then I must use the 'svn cp' command to create the files -
no exception (for strong legal reasons).


3) we can give you 1.3 version of our implementation made without any
serious preceding discussion about every detail of implementation - this
would mean checking a rather big portion of code at one time and maybe
somewhat more correspondence about repairing errors (which is no problem
for me, I will be able to do minor thing once the major job is done)

This is not acceptable.  This can never be done in an open source
project.  The same goes if you are working in a company developing
non-public code as a group effort.  Unless you are the sole author on
a project, this just cannot ever be done.


4) after Pavel will return from Lund back to Czech republic (in
approximately half a year) I can show him what to do and he will learn
more about Python and do it whole himself. - this is very long shot so I
don't think it is good plan.

If point 1 is undertaken, then someone else might decide to port this
to the 1.3 line.  Don't count on that though.  For example I'm too
busy as I'm still converting old code to the new 1.3 line design, I'm
integrating relax with the BMRB, modifying the program to handle
dynamically averaged NOEs, RDCs, PCSs, J-couplings, etc., porting 1.2
line code to make relax run on clusters and super-computers (Gary's
code), and reviewing all changes that come in from other developers,
especially the relaxation dispersion work of Seb.  Therefore I won't
have the time to port this code.

Note that the 1.3 line has been specifically redesigned to better
handle small molecules and RNA - it allows multiple spins per residue
and different types of nuclei to be handled together.  Therefore this
will be much better for your analysis.


5) we can very roughly split our implementation into some logical parts
and send it to relax-devel to discuss. We understand need of
collaboration though again I am quite time-limited to discuss every line
of every function before coding.

There is no need to discuss each line, especially if you just slightly
change the behaviour of copied code (remember I will see and check
every single line). But design decisions must be discussed.  There are
often times where the functionality you require is located in another
part of the program, but you may not know it is there.  This is quite
a common situation, and I can therefore point you in the correct
direction.  Slightly expanding the abilities of current functions is
preferable to reinventing the wheel.  It's faster too.

Oh, this development will take much longer than one or two weeks to
have in a form deliverable to the end user.  I would guess that a
resonable estimate would be one month if all goes well, more if there
are issues with clashes with the other parts of relax.


I would be very happy to have our analysis in the Relax project and I am
definitly willing to work hard on it but currently I am very
time-limited by the end of my PhD. What will be after I am done with
studies I cannot predict because I don't have any post-doc position yet.
It would be nice if we could find some solution.
I am very sorry for these complications.

I would be happy to accept this code into relax, but this must be done
in the proper way.  Isolated development unknown to the main project
developers is always a problem for merging the code back in.  In most
situations, this results in a fork of the parent project.  But
maintaining a fork is extremely expensive, time-wise, and therefore I
would hope that we can manage to get this code ported to the 1.3 line
and in a state that it can be merged into the main line.  Then your
code will benefit from any future developments that happen within
relax, which for RNA will surely happen.

Regards,

Edward


_______________________________________________
relax (http://nmr-relax.com)

This is the relax-devel mailing list
relax-devel@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-devel





Related Messages


Powered by MHonArc, Updated Thu Jan 22 14:00:36 2009