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.
> >


_______________________________________________
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