Wayne Boucher wrote: > So they are all HSQCs? (So 2D windows and one dimension is 1H and the > other 15N.) In this case windowPopup.getSpectrumViews() should return all > 15 spectra. Which it is .. > How do you want to distinguish the two subsets of the 15? > Because if there is some data model way to distinguish them we can add > another function which does that. > (So, is it by whether they appear in > the toolbar of the window?) > > Yes yes yes. i.e. I would understand the language of the popups as all mapped to one window. I can think of a recent example (that I did not use analysis to look at) where I had about 4 different point mutants with a titration for each. I can easily imagine wanting a window for each and wanting to control those groups of spectra's display properties in one fell swoop. There must be other more common cases, e.g. if have a set of T2 spectra, a set of T1 spectra etc. Intuitively I was guessing that there might be views = windowPopup.getMappedSpectrumViews() Regards Jeremy > Wayne > > On Mon, 24 Sep 2007, Jeremy Craven wrote: > > >> Thanks for the info Wayne. >> >> The macro still seems to be changing the base level in all the spectra >> in the project (and all 15 >> spectra yield the 'print "before",....' output). I am running it by >> putting a keyboard shortcut ("z"), which I >> assume should tie the running of the macro to the particular window that >> the cursor is in when I press "z". >> >> I tried >> >> views = windowPopup.getActiveSpectrumViews() >> >> and that behaved as I expected (so I only got the print statements for >> the spectra on view) >> >> when I put it back to >> >> views = windowPopup.getSpectrumViews() >> >> >> Then I got all 15 printed again (I have 15 spectra divided roughly >> evenly between two windows; one set are HSQCs, and one set are long >> range HSQCs). >> >> Any ideas what else I might be doing wrong ? >> >> Regards >> >> Jeremy >> >> >> Wayne Boucher wrote: >> >>> Hello, >>> >>> It looks ok to me, i.e. it should only affect spectra which are mapped >>> into that window. I just tried it and it seemed to work for me (i.e. the >>> contour levels for the spectra of the window were changed and the other >>> spectrum was not). A couple of other comments. >>> >>> With the call windowPopup.getSpectrumViews() you are getting the views (in >>> data model terminology, the SpectrumWindowViews) of the window, which >>> exactly represent the spectra which are mapped into that window. To get >>> to the spectrum from a view you do exactly what you did, i.e. spectrum = >>> view.dataSource. >>> >>> Alternatively, you can get the data model window object via window = >>> windowPopup.window (in data model terminology, this is a SpectrumWindow). >>> And you can then get the views from that via views = >>> window.spectrumWindowViews. This is what the function getSpectrumViews() >>> is doing, except that that also tries to protect against broken links >>> view.dataSource (these are not supposed to occur but for technical reasons >>> they might). >>> >>> On the contour level front, this is all unfortunately more complicated >>> than you might think it ought to be, but the problem is that we have two >>> systems in place. One is where you just define the baseLevel, the number >>> of levels and the level changer and mode. The other is where you define >>> the levels explicitly as a list (or tuple). The former is normally what >>> people like to use, and that should then set the latter, because it is the >>> latter that the contouring code actually uses. What you have done seems >>> as reasonable an approach as any. >>> >>> Wayne >>> >>> On Fri, 21 Sep 2007, Jeremy Craven wrote: >>> >>> >>> >>>> Hi, it seems my macro is actually changing the values of the contour >>>> levels in ALL the spectra in the project rather than just the ones >>>> mapped to my window >>>> of interest (so that is one bogus macro in this list for "posterity"..). >>>> Only just realised this when tried to make one that would set the base >>>> level of all the mapped spectra to the same thing and it seems to report >>>> dealing with all the spectra in the whole project. is there something like >>>> views = windowPopup.getMappedSpectrumViews() >>>> ?? >>>> >>>> Also am I changing the contour levels using the correct functions or is >>>> there a more logical way to do it ? >>>> >>>> Cheers >>>> >>>> Jeremy >>>> >>>> >>>> ################################################################################# >>>> >>>> def setAllContoursMappedToWindow(argServer = None, windowPopup = None): >>>> >>>> # this sets base level same for ALL the spectra mapped to window >>>> # (I hope) so all points in titration stay in lock step, whether viewed >>>> or not >>>> >>>> from ccpnmr.analysis import Util >>>> from ccpnmr.analysis.ExperimentBasic import changeSpectrumContourLevels, >>>> calcContourLevels >>>> >>>> if argServer and not windowPopup: >>>> windowPopup = argServer.getCurrentWindowPopup() >>>> >>>> if windowPopup: >>>> >>>> newBaseLevel=argServer.askFloat("Enter base level for all spectra",10.0) >>>> views = windowPopup.getSpectrumViews() >>>> for view in views: >>>> spectrum = view.dataSource >>>> (baseLevel, numberLevels, levelChanger, changeMode) = >>>> Util.getSpectrumLevelValues(spectrum) >>>> print "before",spectrum, baseLevel >>>> baseLevel=newBaseLevel >>>> Util.setSpectrumContourLevels(spectrum, calcContourLevels(baseLevel, >>>> numberLevels, levelChanger, changeMode = 0)) >>>> Util.setSpectrumLevelValues(spectrum, baseLevel, numberLevels, levelChanger) >>>> >>>> ############################################################################## >>>> >>>> >>>> >>>> Wayne Boucher wrote: >>>> >>>> >>>>> Hello, >>>>> >>>>> The graphical interaction with contour levels is in >>>>> python/ccpnmr/analysis/EditContourLevelsPopup.py. >>>>> >>>>> The function that Jeremy wrote changes the levels of all spectra mapped >>>>> into a window. Perhaps people would also want a function that changes the >>>>> levels of all spectra, period. Etc. A workshop sounds like a reasonable >>>>> idea to me. >>>>> >>>>> Wayne >>>>> >>>>> On Fri, 21 Sep 2007, Brian Smith wrote: >>>>> >>>>> >>>>> >>>>> >>>>>> On Fri, 21 Sep 2007, Jeremy Craven wrote: >>>>>> >>>>>> >>>>>> >>>>>>> Thanks Wayne, got it to work now. (Took out the try/except - which I >>>>>>> inherited from the analysis code, and there was one more import needed). Will >>>>>>> append the working code below for posterity. >>>>>>> >>>>>>> >>>>>>> >>>>>> Nice one Jeremy. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> I think a bunch of utilities like this would be good and some macro-writing >>>>>>> users should get together to see what we can achieve maybe. >>>>>>> >>>>>>> >>>>>>> >>>>>> An excellent idea. Time for an advanced analysis users' workshop perhaps >>>>>> where a bunch of us bring our wish list together with Tim/Wayne/Wim on >>>>>> hand to facilitate us implementing them? >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> Oh and before I poke around more: where is levelChanger set in the GUIs (or >>>>>>> is it?) ? >>>>>>> >>>>>>> >>>>>>> >>>>>> Not quite sure what you're asking but I always start digging with >>>>>> something like >>>>>> >>>>>> grep levelChanger /usr/local/ccpnmr/ccpnmr1.0/python/ccpnmr/analysis/*.py >>>>>> >>>>>> If you're after where the value of levelChanger is set in the GUI, my >>>>>> reading of the code is that it's the modifier that determines your contour >>>>>> spacing. i.e. you should go up or down one whole contour. Haven't >>>>>> checked if that's true yet. >>>>>> >>>>>> Brian >>>>>> >>>>>> -- >>>>>> Dr. Brian O. Smith ---------------------- B Smith at bio gla ac uk >>>>>> Division of Biochemistry & Molecular Biology, >>>>>> Institute Biomedical & Life Sciences, >>>>>> Joseph Black Building, University of Glasgow, Glasgow G12 8QQ, UK. >>>>>> Tel: 0141 330 5167/6459/3089 Fax: 0141 330 8640 >>>>>> >>>>>> >>>>>> >>>>>> >>>> -- >>>> ********************************************************************************* >>>> >>>> Dr C. Jeremy Craven >>>> Department of Molecular Biology and Biotechnology >>>> University of Sheffield, >>>> Firth Court, Western Bank >>>> S10 2TN Sheffield UK >>>> >>>> e-mail: [log in to unmask] >>>> http://www.nmr.group.shef.ac.uk/CJC.html >>>> >>>> Phone: x24323 >>>> >From outside Sheffield: 0114 222 4323 >>>> >From outside UK: +44 114 2224323 >>>> Fax: 0114 272 2800 >>>> >>>> ********************************************************************************* >>>> >>>> >>>> >> -- >> ********************************************************************************* >> >> Dr C. Jeremy Craven >> Department of Molecular Biology and Biotechnology >> University of Sheffield, >> Firth Court, Western Bank >> S10 2TN Sheffield UK >> >> e-mail: [log in to unmask] >> http://www.nmr.group.shef.ac.uk/CJC.html >> >> Phone: x24323 >> >From outside Sheffield: 0114 222 4323 >> >From outside UK: +44 114 2224323 >> Fax: 0114 272 2800 >> >> ********************************************************************************* >> >> -- ********************************************************************************* Dr C. Jeremy Craven Department of Molecular Biology and Biotechnology University of Sheffield, Firth Court, Western Bank S10 2TN Sheffield UK e-mail: [log in to unmask] http://www.nmr.group.shef.ac.uk/CJC.html Phone: x24323 From outside Sheffield: 0114 222 4323 From outside UK: +44 114 2224323 Fax: 0114 272 2800 *********************************************************************************