The last function I posted didn’t work optimally - when merge_molecules is 
called, imol_daughter is undisplayed, but imol_ref is not updated straight away 
(which is a little confusing as it looks like you’ve deleted a mol rather than 
merged) - adding a toggle_display step fixes that, as below:

def merge_fragments():
  def merge_2_fragments(res1,res2):
    mol_daughter=[res2[1]]
    mol_ref=res1[1]
    merge_molecules(mol_daughter,mol_ref)
    toggle_display_mol(mol_ref)
    toggle_display_mol(mol_ref)
  user_defined_click(2,merge_2_fragments)
add_simple_coot_menu_menuitem(menu, "Merge two mols (click two)", lambda func: 
merge_fragments())

On Apr 3, 2014, at 7:49 AM, Oliver Clarke <olibcla...@gmail.com> wrote:

> I knew that I was missing something obvious. Thanks Paul. Although as it 
> turns out, in Python the arguments are switched around (the first one is a 
> list and the second one is imol_ref).
> 
> Thanks!
> 
> Then, for the record, the function that I wanted to write goes something like 
> this:
> 
> def merge_fragments():
>  def merge_2_fragments(res1,res2):
>    mol_daughter=[res2[1]]
>    mol_ref=res1[1]
>    merge_molecules(mol_daughter,mol_ref)
>  user_defined_click(2,merge_2_fragments)
> add_simple_coot_menu_menuitem(menu, "Merge two fragments (click two 
> fragments)", lambda func: merge_fragments())
> 
> Oliver.
> On Apr 3, 2014, at 5:04 AM, Paul Emsley <pems...@mrc-lmb.cam.ac.uk> wrote:
> 
>> On 03/04/14 04:45, Oliver Clarke wrote:
>>> Hi all,
>>> 
>>> Is the functionality of ‘Calculate-->Merge Molecules’ available from the 
>>> scripting interface?
>> 
>> Yes.
>>> 
>>> I couldn’t find it in the manual. There is a function named 
>>> merge_molecules, but I don’t know what arguments it takes and it does not 
>>> do what I would expect - I’d like it to take two mol_ids and merge the 
>>> second one with the first, but that does not seem to be the case.
>> 
>> Recall that you can merge many molecules with a "first" molecule, then 
>> you're golden.
>> 
>> merge_molecules(imol_ref, [imol_daughter])
>> 
>> Although not written in python, I believe that the documentation hints that 
>> the second argument is a list of molecule numbers.
>> 
>>> 
>>> I’d like this function so I can write a little shortcut that will allow me 
>>> to click on two fragments and join them, rather than having to scroll 
>>> through the list of mol_ids of various newly placed helices etc.
>>> 
>>> I guess I could use replace_fragment if I add a dummy atom to the first 
>>> molecule and then replace it with the second -
>> 
>> Yikes! :-)
>> 
>> HTH,
>> 
>> Paul.
>> 
> 

Reply via email to