Hi Edward. That sounds very interesting. :-)
I still have a very little clue of how the organization of files are structured, so I have a little hard time to comment on it. But I really like the idea, to be able to extract different kind of information from the same file. I also think I would have a hard time helping, until your reconstruction have finished. So, I guess I will move on with the models in relax_disp branch I need for my data, and wait for your reconstruction. Then I would like to be able to make the ability to read the model from the intensity files. Keep me informed if there is something I can help with. Best Troels Troels Emtekær Linnet 2013/8/9 Edward d'Auvergne <[email protected]> > Hi, > > I like the idea of reusing the code! I've been thinking and maybe > there is an even better solution, one that is much more flexible. I > am trying to shift as much code as possible into the relax library. > Any code which does not relate to the specific analyses or does not > touch the relax data store should be shifted into the relax library. > The whole concept of reading peak list data fits into this. So I'm > wondering about creating a new module called lib.spectrum and creating > a function called read_peak_list(). This function would then be used > to read all types of data from a peak list, independent of the format > of that list. With this, a lot of code from > pipe_control.spectrum.read() would be shifted into this new function. > So instead of using pipe_control.spectrum.read(), you call > lib.spectrum.read_peak_list() to do all the work. The generic peak > list code in pipe_control.spectrum would also shift into lib.spectrum. > > One reason this would be useful is because I will likely implement the > reading of chemical shifts from these peaks lists for the > off-resonance R1rho support in the relax_disp branch. This would > likely go into a new module called pipe_control.chemical_shift. This > code could then call the lib.spectrum.read_peak_list(). The > pipe_control.spectrum.read() function could be renamed to > pipe_control.spectrum.read_intensities() and call this function too. > And the spectrum.read_sequence user function backend is called > pipe_control.spectrum.read_sequence() which also calls this function. > The spin ID can be then built by each pipe_control function, but only > if required. For example, when generating the sequence data as spin > ID is not needed. It's only used to return a pre-existing spin. But > the spin ID generation function is dependent on the relax data store, > so it cannot be called from the relax library. > > For the lib.spectrum.read_peak_list() function, we could have > arguments to select if the chemical shifts should be returned, the > peak intensity, etc. One argument for each type of data present in a > peak list, all defaulting to None. This function can return the > molecule name, residue name, residue number, spin name, and spin > number (defaulting to None when no data is present) as the first > elements, followed by what ever other data is asked for. What do you > think? > > Regards, > > Edward > > On 9 August 2013 12:11, Troels Emtekær Linnet <[email protected]> wrote: > > Hi Edward. > > > > Thanks for your suggestions. > > > > I was carried away, to try to make some GUI changes. > > Just to see, how it worked. > > > > So, I have thought a little about the design since then. > > > > I was thinking to take advantage of the: .\pipe_control\spectrum.py > read() > > function. > > > > I already provides a spin_id in its functions. > > > > And so the functions could be modified to create spins instead of reading > > the > > intensities. > > > > I think the easiest would be to provide another keyword to the read() > > function. > > Something like: return_model = False > > > > If then read() is called with return_model = True > > the checks and reading of intensities are skipped, but the > > spin_ids are returned. > > > > What do you think of this? > > > > > > > > > > Troels Emtekær Linnet > > > > > > 2013/8/3 Edward d'Auvergne <[email protected]> > >> > >> Hi, > >> > >> It might be better to discuss the design a bit before. I've looked at > >> the patches and although half are ok, I think it is a little too > >> specific for relax. By that I mean that this idea can be generalised, > >> as is the design goal for most of relax. So instead of being Sparky > >> specific, everything should be generalised to be a 'peak list'. That > >> way support can be added for NMRPipe series Tab, NMRView, XEasy, Cara, > >> CCPN, etc. later much more easily - i.e. only the user function front > >> and backends need to be modified. That is how the > >> spectrum.read_intensities user function works. > >> > >> For the user function name itself, the best might be > >> spectrum.read_sequence. Though an alternative place might be under > >> sequence.peak_list. The first one might be more logical from the code > >> perspective as the backend will be in pipe_control.spectrum. But I'm > >> not sure for a user which would be easier to find. > >> > >> Anyway, your patches won't take much to modify. However I think > >> patches 0001 to 0005 should be one commit. 0006 would need a little > >> work. I think that *.* should be the default for the file arguments, > >> and then the user can select *.ser, *.xpk, *.list and *.text (for > >> NMRPipe, NMRView, Sparky and XEasy) to be more specific when selecting > >> the file. I think that the molecule should also be left unnamed if > >> the user does not supply a molecule name. They can always use > >> molecule.name later. It also needs a description and title along the > >> lines of the sequence.read user function, as its front end design and > >> its aim are similar. So the title might be "Read the molecule, > >> residue, and spin sequence from a peak list.". And the short title > >> something like "Sequence reading from peak lists.". What do you > >> think? > >> > >> Patch 0007* has the trailing whitespace removal problem, so it seems > >> like you haven't fully eliminated that issue. In this case that > >> whitespace should be removed, but it should be a separate trivial > >> patch. The code is also in the wrong place, the backend should be in > >> pipe_control.spectrum, and it should be modelled on the read() > >> function (maybe called read_sequence()). The 0008* patch is also > >> quite far off target. This is why it is better to discuss a design > >> idea on the mailing list before implementing it. With discussions, > >> the best solution can be found from the start. > >> > >> Cheers, > >> > >> Edward > >> > >> > >> > >> On 3 August 2013 08:56, Troels E. Linnet > >> <[email protected]> wrote: > >> > Follow-up Comment #2, sr #3044 (project relax): > >> > > >> > Initial tries for a SPARKY/NMRPipe seriesTab GUI read of spins. > >> > > >> > If these patches are ok, it would be time to establish system tests, > and > >> > I > >> > hope for a little guide in which files these should be written. > >> > > >> > (file #18632) > >> > _______________________________________________________ > >> > > >> > Additional Item Attachment: > >> > > >> > File name: sparky1.patch.tar.gz Size:4 KB > >> > > >> > > >> > _______________________________________________________ > >> > > >> > Reply to this item at: > >> > > >> > <http://gna.org/support/?3044> > >> > > >> > _______________________________________________ > >> > Message sent via/by Gna! > >> > http://gna.org/ > >> > > >> > > >> > _______________________________________________ > >> > relax (http://www.nmr-relax.com) > >> > > >> > This is the relax-devel mailing list > >> > [email protected] > >> > > >> > 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 > > > > >
_______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list [email protected] 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

