Hello,
They are all mapped, it's just that some are in the toolbar and some are
not, and some are visible and some are not. So to do what you want you
can just do:
views = [view for view in windowPopup.getSpectrumViews() if
view.isInToolbar]
If you look at the API documentation (ccpnmr1.0/python/doc/classMap.html)
for SpectrumWindowView you will see there are the following attributes
that you could filter on:
isInToolbar
isNegVisible (negative contours)
isPosVisible (positive contours)
isSliceVisible (1D trace)
Wayne
On Tue, 25 Sep 2007, Jeremy Craven wrote:
> 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
>
> *********************************************************************************
>
|