Hi James,

not sure if it's relevant in this case, but you might also want to use
retain_order, to avoid messing up your pdbs.
https://pymolwiki.org/index.php/Retain_order

Cheers,
Lorenzo

Il giorno mar 25 giu 2019 alle ore 16:04 Thomas Holder <
thomas.hol...@schrodinger.com> ha scritto:

> > generally if I integrate a pymol silent script inside my
> > bash script, I do not need to use cmd.* syntax, right?
>
> Correct. The -d argument takes PyMOL commands, like a .pml script. Python
> syntax is optional.
>
> Python syntax (cmd.*) is necessary and most useful if you write a Python
> script (.py extension) and run that with PyMOL. You could write your
> multi-chains loop as a Python script:
>
> ################ example.py ##########
> from pymol import cmd
> pdb = "my.pdb"
> chains_arrays = ["A", "B", "C", "D", "E", "F", "G"]
>
> for chain in chains_array:
>     cmd.load(pdb)
>     cmd.alter('chain ' + chain, 'chain=""')
>     cmd.save('output_' + chain + '.pdb')
>     cmd.delete('*')
> ######################################
>
> Then run it with PyMOL:
> pymol -ckqr example.py
>
> See also:
> https://pymolwiki.org/index.php/Launching_From_a_Script
> https://pymolwiki.org/index.php/Python_Integration
>
> Cheers,
>   Thomas
>
> > On Jun 25, 2019, at 3:08 PM, James Starlight <jmsstarli...@gmail.com>
> wrote:
> >
> > one extra programming question:
> >
> > imagine now in my pdb I have severals chain which I would like to
> > rename to blank chain.
> >
> > I can do it simply like this
> > # a case for 3 chains to be renamed
> >
> > #!/bin/bash
> > pdb="my.pdb"
> > output=$(pwd)
> > pymol -c -d "
> > cmd.load('${pdb}')
> > cmd.alter('(chain A)', 'chain=\"\"')
> > cmd.alter('(chain B)', 'chain=\"\"')
> > cmd.alter('(chain C)', 'chain=\"\"')
> > cmd.save('${output}/output.pdb','all')
> > "
> >
> > or for multi-chain protein I can alternatively create external loop,
> > thus running pymol 3 times iteratively (which is not good realization)
> > providin array info from external shell session
> >
> > # this example save 7 different pdbs renaming one chain in each of them
> > #!/bin/bash
> > pdb="my.pdb"
> > output=$(pwd)
> > chains_arrays=( A B C D E F G )
> >
> > for i in "$chains_array[@]}"; do
> > pymol -c -d "
> > cmd.load('${pdb}')
> > cmd.alter('(chain $i)', 'chain=\"\"')
> > cmd.save('${output}/output_$i.pdb','all')
> > "
> > done
> >
> > would it be possible rather to make an array and loop inside the pymol
> > to rename all chains into the blank chain during one execution of
> > pymol?
> >
> > Thanks in advance!
> >
> > вт, 25 июн. 2019 г. в 14:50, James Starlight <jmsstarli...@gmail.com>:
> >>
> >> I have got the idea!
> >> thank you so much Thomas!
> >> One question: generally if I integrate a pymol silent script inside my
> >> bash script, I do not need to use cmd.* syntax, right?  In what cases
> >> cmd.* sytax might be usefull?
> >>
> >> Thank you again!
> >>
> >> вт, 25 июн. 2019 г. в 12:05, Thomas Holder <
> thomas.hol...@schrodinger.com>:
> >>>
> >>>
> >>>> On Jun 25, 2019, at 11:48 AM, James Starlight <jmsstarli...@gmail.com>
> wrote:
> >>>>
> >>>> so what I need is just to update my pymol, keep using the same
> command?
> >>>
> >>> Yes
> >>>
> >>>> P.S.would the following integration of the code into bash script be
> >>>> usefull to remove chains in no gui mode?
> >>>>
> >>>> pymol -cQkd "
> >>>> from pymol import cmd
> >>>> fetch $pdb, type=pdb, tmp
> >>>> cmd.alter('(chain A)',chain='')
> >>>> "
> >>>> I am not sure whether I used here cmd.alter in correct way ..
> >>>
> >>>
> >>> With fetch, use "async=0" or use Python syntax. And keyword arguments
> (type=) must be after positional arguments (tmp).
> >>>
> >>> It's easier if you don't use Python syntax for alter, otherwise you'll
> need three levels of nested quotes, which gets ugly:
> >>>
> >>> pymol -cQkd "
> >>> fetch $pdb, tmp, type=pdb, async=0
> >>> alter (chain A), chain=''
> >>> "
> >>>
> >>> With Python syntax (note the ugly escaping of quotes):
> >>>
> >>> pymol -cQkd "
> >>> cmd.fetch('$pdb', 'tmp', type='pdb')
> >>> cmd.alter('(chain A)', 'chain=\"\"')
> >>> "
> >>>
> >>> Cheers,
> >>>  Thomas
> >>>
> >>> --
> >>> Thomas Holder
> >>> PyMOL Principal Developer
> >>> Schrödinger, Inc.
> >>>
>
> --
> Thomas Holder
> PyMOL Principal Developer
> Schrödinger, Inc.
>
>
>
> _______________________________________________
> PyMOL-users mailing list
> Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
> Unsubscribe:
> https://sourceforge.net/projects/pymol/lists/pymol-users/unsubscribe
_______________________________________________
PyMOL-users mailing list
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
Unsubscribe: 
https://sourceforge.net/projects/pymol/lists/pymol-users/unsubscribe

Reply via email to