I am trying to backbone assign my protein using a hNNH and I don’t think the match module is set up to deal with an assignment like this. Is there a manual way I can link 2 residues? The dragging and drop option doesn’t seem to be working.
yes, you can link things manually. But at the moment only on the command line. I think we had at one point been discussing a way of doing this graphically, but it was going to be quite a lot of coding and so we never got round to it. But I’m sure we can up with something a bit quicker and easier - I’ll give it some thought.
But first let me first show you what you can do on the command line:
Open the Python Console by pressing the Space bar twice. In the lower panel you can type commands, so you could do either
get('NR:@-.@61.').connectNext(get('NR:@-.@80.'))
which will connect NmrResidue @-.@80. as being C-terminal to @-.@61..
will connect @-.@56. as being N-terminal to #3.@61.
We don’t currently have any hNNH or other IDP style spectra to try anything out with. So if you or your group were willing and able to share some spectra with us, we could start to test things and try ways out to get this working using the proper Backbone Assignment facility.
It would be amazing to have a “Macht N NmrAtoms” function in the Backbone Assignment module.
Then you could pick the -1N and the +1N peaks in the hNNH.
Or maybe you would need a ±1N NmrAtom option.
So I do have a macro which might help with this. I had written one for someone doing an assignment with 15N-Noesy data: Match 15N-Noesy peaks - CCPN
But I’ve now updated it so that it should look for matches in the y-dimension in any kind of 3D spectrum (i.e. also an hNNH) (though I’ve only checked it with a 15N-Noesy so far).
I’ll paste the code below.
Instructions:
Select a diagonal peak in your 3D 15N-Noesy for which you want to find matches. Then run the macro either from the iPython Console or the Macro Editor (or you could link it to a keyboard shortcut).
Note that you can change the search tolerances by isotope type at the top of the macro.
You can also select whether or not to check for (and only display) strips which include a symmetric correlation peak.
Obviously you will have to peak pick your 3D in advance. Probably easiest to do this with the Pick&Assign module.
If you send us an hNNH spectrum support@ccpn.ac.uk we can have a look at integrating this properly.
Vicky
# Macro to search for matching peaks in the y-dimension of a 3D spectrum and display possible matches as
# strips in the same 3D SpectrumDisplay.
# Set your search tolerance at the top of the macro.
# By default, only strips with a symmetric correlation peak are shown. Switch this function off by setting
# checkForSymPks = False
# at the top of the macro.
# Run by selecting a diagonal search peak in your 3D and then running the macro
# Vicky Higman
#####################################################################################################################
from ccpn.ui.gui.widgets.MessageDialog import showWarning, showYesNoWarning
Htol = 0.05 # in ppm
Ntol = 0.1 # in ppm
Ctol = 0.1 # in ppm
checkForSymPks = True
pl = current.peak.peakList
XDim, YDim, ZDim = current.peak.peakList.spectrum.getByAxisCodes('dimensions', current.strip.spectrumDisplay.axisOrder)
XIC, YIC, ZIC = current.peak.peakList.spectrum.getByAxisCodes('isotopeCodes', current.strip.spectrumDisplay.axisOrder)
qpk = current.peak
spDis = current.strip.spectrumDisplay
def createStrips(peaks):
spDis.makeStripPlot(peaks=tuple(peaks), nmrResidues=None, autoClearMarks=True,
sequentialStrips=False, markPositions=False, widths=None)
def getTolerances(ic):
if ic == '1H':
tol = Htol
elif ic == '15N':
tol = Ntol
elif ic == '13C':
tol = Ctol
else:
tol = 0.01 # default value in case isotope type is not H, N, C.
return tol
if not current.peak:
showWarning('No Peaks selected', 'Please make sure you have selected a peak')
else:
matchPeaks = []
Xtol = getTolerances(XIC)
Ytol = getTolerances(YIC)
Ztol = getTolerances(ZIC)
for pk in pl.peaks:
if pk != qpk:
if (pk.position[YDim-1] <= qpk.position[YDim-1]+Xtol) and (
pk.position[YDim-1] >= qpk.position[YDim-1]-Xtol):
matchPeaks.append(pk)
if not checkForSymPks:
matchPeaks.insert(0,qpk)
if len(matchPeaks) > 15:
proceed = showYesNoWarning(f'{len(matchPeaks)} matches found - do you want to proceed?', 'Recommend that you decrease your tolerance')
if proceed:
createStrips(matchPeaks)
else:
createStrips(matchPeaks)
else:
stripPeaks = [qpk, ]
for pk in pl.peaks:
if pk != qpk:
if (pk.position[XDim - 1] <= qpk.position[XDim - 1] + Xtol) and (
pk.position[XDim - 1] >= qpk.position[XDim - 1] - Xtol):
if (pk.position[ZDim - 1] <= qpk.position[ZDim - 1] + Ztol) and (
pk.position[ZDim - 1] >= qpk.position[ZDim - 1] - Ztol):
for mpk in matchPeaks:
if pk != mpk:
if (pk.position[YDim - 1] <= mpk.position[XDim - 1] + Xtol) and (
pk.position[YDim - 1] >= mpk.position[XDim - 1] - Xtol):
stripPeaks.append(mpk)
if len(stripPeaks) > 15:
yes = showYesNoWarning(f'{len(stripPeaks)} matches found - do you want to proceed?', 'Recommend that you decrease your tolerance')
if yes:
createStrips(stripPeaks)
else:
createStrips(stripPeaks)
I think Matt has or was going to send us some HnnH spectra and did so when Ed was trying to get the hnnh scripts working and I think there are some script from him to make these spectra work… [of course I maybe remembering wrong!]
regards
Gary
Dr Gary S Thompson NMR Facility Manager
CCPN CoI & Working Group Member
Wellcome Trust Biomolecular NMR Facility
School of Biosciences, Division of Natural Sciences
University of Kent, Canterbury, Kent, England, CT2 7NZ