Merging any kind of objects is a very difficult job. The thing is that all
objects have unique identifiers, and that a lot of links are unchangeable
in the API. In short there is no legal way in the API to change e.g. a
link from a shift to a Resonance to point to another Resonance.
In theory you could do it by making new copies of lots of objects and then
removing the originals. Which would be a pain. In practice we are
bypassing the API and its protections, using the
ccpnmr/analysis/MergeObjects.mergeObjects. That is done by hand and quite
likely it is not present in C.
Wayne (back next week) is the person to answer about the C API. There
might be different wways to override teh API protections in the new
version coming up (we have an 'override' attribute), but Wayne should have
a look at it.
Dr. Rasmus H. Fogh Email: [log in to unmask]
Dept. of Biochemistry, University of Cambridge,
80 Tennis Court Road, Cambridge CB2 1GA, UK. FAX (01223)766002
On Thu, 19 Jul 2007, Magnus Lundborg wrote:
> I'm having problems merging two resonances using the C Api. Both
> resonances are linked to the same atom. I have tried looking at the
> mergeResonances (...) function in the Python Api, but the problem is
> that I don't think mergeObjects (...) is available in the C Api (or is
> it?). Currently I'm trying to manually set the peakDimContribs and
> shifts to the correct resonance, but it's not working (it gets invalid).
> My current code is:
> where resonance and matchingResonance are the two resonances I'm trying
> to merge. I guess my current way of thinking is a bit flawed, but I
> can't see why it isn't working. Do you have any suggestions?
> Another problem I have is that there doesn't seem to be an
> Nmr_Resonance_Delete (...) function in the C Api. How do I delete a
> Thanks for any hints and advice.