Re: [PyMOL] PDB post-processing and TER records

2019-06-26 Thread James Starlight
Awesome, thanks so much Jared for your usefull suggestions!

all the best

james

вт, 25 июн. 2019 г. в 22:00, Jared Sampson :
>
> Hi James - Glad you got it working.
>
> > chains_array = ["A", "B"]
>
> If you want a list of chains without having to hard-code them, try the 
> `get_chains` command.
>
> ```
> chains_array = cmd.get_chains()
> ```
>
> > cmd.load('${pdb}')
> > cmd.alter('chain ' + '+'.join(chains_array), 'chain=\"\"')
>
> Alternatively, if you want to remove all the chain IDs (which it appears you 
> might), you don't need a list of chains at all, and can just do:
>
> ```
> alter all, chain=''
> ```
>
> Hope that helps.
>
> Cheers,
> Jared
>
>
> On June 25, 2019 at 11:48:32 AM, James Starlight (jmsstarli...@gmail.com) 
> wrote:
>
> I have got it, it works now!
> in my example the double quotes were not escaped in pymol script :-)
>
> the only (more python-oriented) question, would it be possible to
> indicate chains_array for all letters A-Z (e.g. using some python
> regex, rather just for A and B, chains_array = ["A", "B"], like in my
> example?
>
>
> вт, 25 июн. 2019 г. в 17:22, James Starlight :
> >
> > I actually tried to do like that still defining chains_array = ["A",
> > "B"] inside of pymol script and use external bash loop to loop over
> > pdbs
> > but it does not works ;(
> >
> > #!/bin/bash
> > # this script rename chains in pdb to "empty" chain
> > home=$(pwd)
> > pdb_folder=$home/pdbs
> > output=$home/output
> > rm -r $output
> > mkdir $output
> >
> > #pymol -cQkd "
> > for pdb in "${pdb_folder}"/*.pdb ; do
> > pdb_name2=$(basename "${pdb}")
> > pdb_name="${pdb_name2/pdb}"
> > pymol -c -d "
> > from pymol import cmd
> > chains_array = ["A", "B"]
> > cmd.load('${pdb}')
> > cmd.alter('chain ' + '+'.join(chains_array), 'chain=\"\"')
> > cmd.set('pdb_use_ter_records', 1)
> > cmd.set('retain_order', 1)
> > cmd.save('${output}/output_without'+"".join(chains_array) + '.pdb')
> > " > $output/pymol_${pdb_name}.log
> > done
> >
> > вт, 25 июн. 2019 г. в 16:58, James Starlight :
> > >
> > > yes, actually it is better because we avoid looping!
> > > and how it would be possible to use array provided in the externall shell?
> > >
> > > #!/bin/bash
> > > pdb="final.pdb"
> > > output=$(pwd)
> > >
> > > # array given in bash
> > > chains_array=('A' 'B')
> > >
> > > # chains are cutted by pymol
> > > pymol -c -d "
> > > cmd.load('${pdb}')
> > > cmd.alter('chain ' + '+'.join($chains_array), 'chain=\"\"')
> > > cmd.set('pdb_use_ter_records', 1)
> > > cmd.set('retain_order', 1)
> > > cmd.save('output_without'+"".join($chains_array) + '.pdb')
> > > "
> > >
> > > вт, 25 июн. 2019 г. в 16:47, Thomas Holder 
> > > :
> > > >
> > > > If you want to rename multiple chains at once, make a selection like 
> > > > (chain A+B+C). This list selection syntax is documented here: 
> > > > https://pymolwiki.org/index.php/Property_Selectors
> > > >
> > > > cmd.load(pdb)
> > > > cmd.alter('chain ' + '+'.join(chains_array), 'chain=""')
> > > > cmd.save('output.pdb')
> > > >
> > > > Cheers,
> > > > Thomas
> > > >
> > > >
> > > > > On Jun 25, 2019, at 4:14 PM, James Starlight  
> > > > > wrote:
> > > > >
> > > > > thanks so much Thomas, for this example!
> > > > >
> > > > > Actually, your python script does exactly what my bash script -
> > > > > produces number of pdbs for each of the renamed chain.
> > > > > I would like rather to produce at the end ONE pdb with all chains
> > > > > renamed to empty chain...
> > > > > I guess I need to save the result outside of the loop something like 
> > > > > this
> > > > >
> > > > >  hop hey lalaley #
> > > > > from pymol import cmd
> > > > > pdb = "Ev_complex_model_final.pdb"
> > > > > chains_array = ["A", "B"] # add more chains in case of more complex 
> > > > > pdb
> > > > >
> > > > > # loop over chains to rename it
> > > > > for chain in chains_array:
> > > > > cmd.load(pdb)
> > > > > cmd.alter('chain ' + chain, 'chain=""')
> > > > > cmd.delete('*')
> > > > > ##
> > > > >
> > > > > # save output as pdb
> > > > > # I need to add something in the name of output indicating how much
> > > > > chains have been renamed
> > > > > # like output_withoutAB.pdb
> > > > > cmd.save('output_' + '.pdb')
> > > > >
> > > > > thanks in advance for help!
> > > >
> > > > --
> > > > 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread Jared Sampson
Hi James - Glad you got it working.

> chains_array = ["A", "B"]

If you want a list of chains without having to hard-code them, try the 
`get_chains` command.

```
chains_array = cmd.get_chains()
```

> cmd.load('${pdb}')
> cmd.alter('chain ' + '+'.join(chains_array), 'chain=\"\"')

Alternatively, if you want to remove all the chain IDs (which it appears you 
might), you don't need a list of chains at all, and can just do:

```
alter all, chain=''
```

Hope that helps.

Cheers,
Jared


On June 25, 2019 at 11:48:32 AM, James Starlight (jmsstarli...@gmail.com) wrote:

I have got it, it works now!
in my example the double quotes were not escaped in pymol script :-)

the only (more python-oriented) question, would it be possible to
indicate chains_array for all letters A-Z (e.g. using some python
regex, rather just for A and B, chains_array = ["A", "B"], like in my
example?


вт, 25 июн. 2019 г. в 17:22, James Starlight :
>
> I actually tried to do like that still defining chains_array = ["A",
> "B"] inside of pymol script and use external bash loop to loop over
> pdbs
> but it does not works ;(
>
> #!/bin/bash
> # this script rename chains in pdb to "empty" chain
> home=$(pwd)
> pdb_folder=$home/pdbs
> output=$home/output
> rm -r $output
> mkdir $output
>
> #pymol -cQkd "
> for pdb in "${pdb_folder}"/*.pdb ; do
> pdb_name2=$(basename "${pdb}")
> pdb_name="${pdb_name2/pdb}"
> pymol -c -d "
> from pymol import cmd
> chains_array = ["A", "B"]
> cmd.load('${pdb}')
> cmd.alter('chain ' + '+'.join(chains_array), 'chain=\"\"')
> cmd.set('pdb_use_ter_records', 1)
> cmd.set('retain_order', 1)
> cmd.save('${output}/output_without'+"".join(chains_array) + '.pdb')
> " > $output/pymol_${pdb_name}.log
> done
>
> вт, 25 июн. 2019 г. в 16:58, James Starlight :
> >
> > yes, actually it is better because we avoid looping!
> > and how it would be possible to use array provided in the externall shell?
> >
> > #!/bin/bash
> > pdb="final.pdb"
> > output=$(pwd)
> >
> > # array given in bash
> > chains_array=('A' 'B')
> >
> > # chains are cutted by pymol
> > pymol -c -d "
> > cmd.load('${pdb}')
> > cmd.alter('chain ' + '+'.join($chains_array), 'chain=\"\"')
> > cmd.set('pdb_use_ter_records', 1)
> > cmd.set('retain_order', 1)
> > cmd.save('output_without'+"".join($chains_array) + '.pdb')
> > "
> >
> > вт, 25 июн. 2019 г. в 16:47, Thomas Holder :
> > >
> > > If you want to rename multiple chains at once, make a selection like 
> > > (chain A+B+C). This list selection syntax is documented here: 
> > > https://pymolwiki.org/index.php/Property_Selectors
> > >
> > > cmd.load(pdb)
> > > cmd.alter('chain ' + '+'.join(chains_array), 'chain=""')
> > > cmd.save('output.pdb')
> > >
> > > Cheers,
> > > Thomas
> > >
> > >
> > > > On Jun 25, 2019, at 4:14 PM, James Starlight  
> > > > wrote:
> > > >
> > > > thanks so much Thomas, for this example!
> > > >
> > > > Actually, your python script does exactly what my bash script -
> > > > produces number of pdbs for each of the renamed chain.
> > > > I would like rather to produce at the end ONE pdb with all chains
> > > > renamed to empty chain...
> > > > I guess I need to save the result outside of the loop something like 
> > > > this
> > > >
> > > >  hop hey lalaley #
> > > > from pymol import cmd
> > > > pdb = "Ev_complex_model_final.pdb"
> > > > chains_array = ["A", "B"] # add more chains in case of more complex pdb
> > > >
> > > > # loop over chains to rename it
> > > > for chain in chains_array:
> > > > cmd.load(pdb)
> > > > cmd.alter('chain ' + chain, 'chain=""')
> > > > cmd.delete('*')
> > > > ##
> > > >
> > > > # save output as pdb
> > > > # I need to add something in the name of output indicating how much
> > > > chains have been renamed
> > > > # like output_withoutAB.pdb
> > > > cmd.save('output_' + '.pdb')
> > > >
> > > > thanks in advance for help!
> > >
> > > --
> > > 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread James Starlight
I have got it, it works now!
in my example the double quotes were not escaped in pymol script :-)

the only (more python-oriented) question, would it be possible to
indicate chains_array for all letters A-Z (e.g. using some python
regex, rather just for A and B, chains_array = ["A", "B"], like in my
example?


вт, 25 июн. 2019 г. в 17:22, James Starlight :
>
> I actually tried to do like that still defining chains_array = ["A",
> "B"] inside of pymol script and use external bash loop to loop over
> pdbs
> but it does not works ;(
>
> #!/bin/bash
> # this script rename chains in pdb to "empty" chain
> home=$(pwd)
> pdb_folder=$home/pdbs
> output=$home/output
> rm -r $output
> mkdir $output
>
> #pymol -cQkd "
> for pdb in "${pdb_folder}"/*.pdb ; do
>   pdb_name2=$(basename "${pdb}")
>   pdb_name="${pdb_name2/pdb}"
> pymol -c -d "
> from pymol import cmd
> chains_array = ["A", "B"]
> cmd.load('${pdb}')
> cmd.alter('chain ' + '+'.join(chains_array), 'chain=\"\"')
> cmd.set('pdb_use_ter_records', 1)
> cmd.set('retain_order', 1)
> cmd.save('${output}/output_without'+"".join(chains_array) + '.pdb')
> " > $output/pymol_${pdb_name}.log
> done
>
> вт, 25 июн. 2019 г. в 16:58, James Starlight :
> >
> > yes, actually it is better because we avoid looping!
> > and how it would be possible to use array provided in the externall shell?
> >
> > #!/bin/bash
> > pdb="final.pdb"
> > output=$(pwd)
> >
> > # array given in bash
> > chains_array=('A' 'B')
> >
> > # chains are cutted by pymol
> > pymol -c -d "
> > cmd.load('${pdb}')
> > cmd.alter('chain ' + '+'.join($chains_array), 'chain=\"\"')
> > cmd.set('pdb_use_ter_records', 1)
> > cmd.set('retain_order', 1)
> > cmd.save('output_without'+"".join($chains_array) + '.pdb')
> > "
> >
> > вт, 25 июн. 2019 г. в 16:47, Thomas Holder :
> > >
> > > If you want to rename multiple chains at once, make a selection like 
> > > (chain A+B+C). This list selection syntax is documented here: 
> > > https://pymolwiki.org/index.php/Property_Selectors
> > >
> > > cmd.load(pdb)
> > > cmd.alter('chain ' + '+'.join(chains_array), 'chain=""')
> > > cmd.save('output.pdb')
> > >
> > > Cheers,
> > >   Thomas
> > >
> > >
> > > > On Jun 25, 2019, at 4:14 PM, James Starlight  
> > > > wrote:
> > > >
> > > > thanks so much Thomas, for this example!
> > > >
> > > > Actually, your python script does exactly what my bash script -
> > > > produces number of pdbs for each of the renamed chain.
> > > > I would like rather to produce at the end ONE pdb with all chains
> > > > renamed to empty chain...
> > > > I guess I need to save the result outside of the loop something like 
> > > > this
> > > >
> > > >  hop hey lalaley #
> > > > from pymol import cmd
> > > > pdb = "Ev_complex_model_final.pdb"
> > > > chains_array = ["A", "B"] # add more chains in case of more complex pdb
> > > >
> > > > # loop over chains to rename it
> > > > for chain in chains_array:
> > > >cmd.load(pdb)
> > > >cmd.alter('chain ' + chain, 'chain=""')
> > > >cmd.delete('*')
> > > > ##
> > > >
> > > > # save output as pdb
> > > > # I need to add something in the name of output indicating how much
> > > > chains have been renamed
> > > > # like output_withoutAB.pdb
> > > > cmd.save('output_'  + '.pdb')
> > > >
> > > > thanks in advance for help!
> > >
> > > --
> > > 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread James Starlight
I actually tried to do like that still defining chains_array = ["A",
"B"] inside of pymol script and use external bash loop to loop over
pdbs
but it does not works ;(

#!/bin/bash
# this script rename chains in pdb to "empty" chain
home=$(pwd)
pdb_folder=$home/pdbs
output=$home/output
rm -r $output
mkdir $output

#pymol -cQkd "
for pdb in "${pdb_folder}"/*.pdb ; do
  pdb_name2=$(basename "${pdb}")
  pdb_name="${pdb_name2/pdb}"
pymol -c -d "
from pymol import cmd
chains_array = ["A", "B"]
cmd.load('${pdb}')
cmd.alter('chain ' + '+'.join(chains_array), 'chain=\"\"')
cmd.set('pdb_use_ter_records', 1)
cmd.set('retain_order', 1)
cmd.save('${output}/output_without'+"".join(chains_array) + '.pdb')
" > $output/pymol_${pdb_name}.log
done

вт, 25 июн. 2019 г. в 16:58, James Starlight :
>
> yes, actually it is better because we avoid looping!
> and how it would be possible to use array provided in the externall shell?
>
> #!/bin/bash
> pdb="final.pdb"
> output=$(pwd)
>
> # array given in bash
> chains_array=('A' 'B')
>
> # chains are cutted by pymol
> pymol -c -d "
> cmd.load('${pdb}')
> cmd.alter('chain ' + '+'.join($chains_array), 'chain=\"\"')
> cmd.set('pdb_use_ter_records', 1)
> cmd.set('retain_order', 1)
> cmd.save('output_without'+"".join($chains_array) + '.pdb')
> "
>
> вт, 25 июн. 2019 г. в 16:47, Thomas Holder :
> >
> > If you want to rename multiple chains at once, make a selection like (chain 
> > A+B+C). This list selection syntax is documented here: 
> > https://pymolwiki.org/index.php/Property_Selectors
> >
> > cmd.load(pdb)
> > cmd.alter('chain ' + '+'.join(chains_array), 'chain=""')
> > cmd.save('output.pdb')
> >
> > Cheers,
> >   Thomas
> >
> >
> > > On Jun 25, 2019, at 4:14 PM, James Starlight  
> > > wrote:
> > >
> > > thanks so much Thomas, for this example!
> > >
> > > Actually, your python script does exactly what my bash script -
> > > produces number of pdbs for each of the renamed chain.
> > > I would like rather to produce at the end ONE pdb with all chains
> > > renamed to empty chain...
> > > I guess I need to save the result outside of the loop something like this
> > >
> > >  hop hey lalaley #
> > > from pymol import cmd
> > > pdb = "Ev_complex_model_final.pdb"
> > > chains_array = ["A", "B"] # add more chains in case of more complex pdb
> > >
> > > # loop over chains to rename it
> > > for chain in chains_array:
> > >cmd.load(pdb)
> > >cmd.alter('chain ' + chain, 'chain=""')
> > >cmd.delete('*')
> > > ##
> > >
> > > # save output as pdb
> > > # I need to add something in the name of output indicating how much
> > > chains have been renamed
> > > # like output_withoutAB.pdb
> > > cmd.save('output_'  + '.pdb')
> > >
> > > thanks in advance for help!
> >
> > --
> > 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread James Starlight
yes, actually it is better because we avoid looping!
and how it would be possible to use array provided in the externall shell?

#!/bin/bash
pdb="final.pdb"
output=$(pwd)

# array given in bash
chains_array=('A' 'B')

# chains are cutted by pymol
pymol -c -d "
cmd.load('${pdb}')
cmd.alter('chain ' + '+'.join($chains_array), 'chain=\"\"')
cmd.set('pdb_use_ter_records', 1)
cmd.set('retain_order', 1)
cmd.save('output_without'+"".join($chains_array) + '.pdb')
"

вт, 25 июн. 2019 г. в 16:47, Thomas Holder :
>
> If you want to rename multiple chains at once, make a selection like (chain 
> A+B+C). This list selection syntax is documented here: 
> https://pymolwiki.org/index.php/Property_Selectors
>
> cmd.load(pdb)
> cmd.alter('chain ' + '+'.join(chains_array), 'chain=""')
> cmd.save('output.pdb')
>
> Cheers,
>   Thomas
>
>
> > On Jun 25, 2019, at 4:14 PM, James Starlight  wrote:
> >
> > thanks so much Thomas, for this example!
> >
> > Actually, your python script does exactly what my bash script -
> > produces number of pdbs for each of the renamed chain.
> > I would like rather to produce at the end ONE pdb with all chains
> > renamed to empty chain...
> > I guess I need to save the result outside of the loop something like this
> >
> >  hop hey lalaley #
> > from pymol import cmd
> > pdb = "Ev_complex_model_final.pdb"
> > chains_array = ["A", "B"] # add more chains in case of more complex pdb
> >
> > # loop over chains to rename it
> > for chain in chains_array:
> >cmd.load(pdb)
> >cmd.alter('chain ' + chain, 'chain=""')
> >cmd.delete('*')
> > ##
> >
> > # save output as pdb
> > # I need to add something in the name of output indicating how much
> > chains have been renamed
> > # like output_withoutAB.pdb
> > cmd.save('output_'  + '.pdb')
> >
> > thanks in advance for help!
>
> --
> 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread Thomas Holder
If you want to rename multiple chains at once, make a selection like (chain 
A+B+C). This list selection syntax is documented here: 
https://pymolwiki.org/index.php/Property_Selectors

cmd.load(pdb)
cmd.alter('chain ' + '+'.join(chains_array), 'chain=""')
cmd.save('output.pdb')

Cheers,
  Thomas


> On Jun 25, 2019, at 4:14 PM, James Starlight  wrote:
> 
> thanks so much Thomas, for this example!
> 
> Actually, your python script does exactly what my bash script -
> produces number of pdbs for each of the renamed chain.
> I would like rather to produce at the end ONE pdb with all chains
> renamed to empty chain...
> I guess I need to save the result outside of the loop something like this
> 
>  hop hey lalaley #
> from pymol import cmd
> pdb = "Ev_complex_model_final.pdb"
> chains_array = ["A", "B"] # add more chains in case of more complex pdb
> 
> # loop over chains to rename it
> for chain in chains_array:
>cmd.load(pdb)
>cmd.alter('chain ' + chain, 'chain=""')
>cmd.delete('*')
> ##
> 
> # save output as pdb
> # I need to add something in the name of output indicating how much
> chains have been renamed
> # like output_withoutAB.pdb
> cmd.save('output_'  + '.pdb')
> 
> thanks in advance for help!

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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread James Starlight
in python version I have got it

# to be run with PyMOL:
#pymol -ckqr pymol_cut_off.py
 cut_off.py #
from pymol import cmd
pdb = "final.pdb"
chains_array = ["A", "B"] # two chains will be cuted

for chain in chains_array:
cmd.load(pdb)
cmd.alter('chain ' + chain, 'chain=""')


cmd.set('pdb_use_ter_records', 1)
cmd.set('retain_order', 1)
cmd.save('output_without'+"".join(chains_array) + '.pdb')

now the question would it be possible to do the same but in my bash script?

вт, 25 июн. 2019 г. в 16:20, James Starlight :
>
> OK Lorenzo, thank you !
>
> As an alternative question, would it be possible to put that loop
> while renaming of the chains in the processed PBD within the bash
> loop?
>
> Here is an idea
>
> #!/bin/bash
> # this script rename chains in pdb to "empty" chain
> pdb="my.pdb"
> output=$(pwd)
>
> # chain array is provided in a shell array
> chains=('A' 'B')
>
> # create several pdbs without individual chains
> #pymol -cQkd "
> pymol -c -d "
> # I need to add loop within PYMOL over the elements of external arrays
> for chains
> # mb for i in chains:
> cmd.load('${pdb}')
> cmd.alter('(chain $i)', 'chain=\"\"')
> cmd.set('pdb_use_ter_records', 1)
> cmd.set('retain_order', 1)
> # close the loop and save final output as 1 pdb
> cmd.save('${output}/output_withoutAB.pdb','all')
> "
>
> вт, 25 июн. 2019 г. в 16:14, James Starlight :
> >
> > thanks so much Thomas, for this example!
> >
> > Actually, your python script does exactly what my bash script -
> > produces number of pdbs for each of the renamed chain.
> > I would like rather to produce at the end ONE pdb with all chains
> > renamed to empty chain...
> > I guess I need to save the result outside of the loop something like this
> >
> >  hop hey lalaley #
> > from pymol import cmd
> > pdb = "Ev_complex_model_final.pdb"
> > chains_array = ["A", "B"] # add more chains in case of more complex pdb
> >
> > # loop over chains to rename it
> > for chain in chains_array:
> > cmd.load(pdb)
> > cmd.alter('chain ' + chain, 'chain=""')
> > cmd.delete('*')
> > ##
> >
> > # save output as pdb
> > # I need to add something in the name of output indicating how much
> > chains have been renamed
> > # like output_withoutAB.pdb
> > cmd.save('output_'  + '.pdb')
> >
> > thanks in advance for help!
> >
> > вт, 25 июн. 2019 г. в 16:03, Thomas Holder :
> > >
> > > > 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  
> > > > 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!
> > > >
> > 

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread James Starlight
OK Lorenzo, thank you !

As an alternative question, would it be possible to put that loop
while renaming of the chains in the processed PBD within the bash
loop?

Here is an idea

#!/bin/bash
# this script rename chains in pdb to "empty" chain
pdb="my.pdb"
output=$(pwd)

# chain array is provided in a shell array
chains=('A' 'B')

# create several pdbs without individual chains
#pymol -cQkd "
pymol -c -d "
# I need to add loop within PYMOL over the elements of external arrays
for chains
# mb for i in chains:
cmd.load('${pdb}')
cmd.alter('(chain $i)', 'chain=\"\"')
cmd.set('pdb_use_ter_records', 1)
cmd.set('retain_order', 1)
# close the loop and save final output as 1 pdb
cmd.save('${output}/output_withoutAB.pdb','all')
"

вт, 25 июн. 2019 г. в 16:14, James Starlight :
>
> thanks so much Thomas, for this example!
>
> Actually, your python script does exactly what my bash script -
> produces number of pdbs for each of the renamed chain.
> I would like rather to produce at the end ONE pdb with all chains
> renamed to empty chain...
> I guess I need to save the result outside of the loop something like this
>
>  hop hey lalaley #
> from pymol import cmd
> pdb = "Ev_complex_model_final.pdb"
> chains_array = ["A", "B"] # add more chains in case of more complex pdb
>
> # loop over chains to rename it
> for chain in chains_array:
> cmd.load(pdb)
> cmd.alter('chain ' + chain, 'chain=""')
> cmd.delete('*')
> ##
>
> # save output as pdb
> # I need to add something in the name of output indicating how much
> chains have been renamed
> # like output_withoutAB.pdb
> cmd.save('output_'  + '.pdb')
>
> thanks in advance for help!
>
> вт, 25 июн. 2019 г. в 16:03, Thomas Holder :
> >
> > > 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  
> > > 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 :
> > >>
> > >> 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 
> > >> :
> > >>>
> > >>>
> >  On Jun 25, 2019, at 11:48 AM, James Starlight  
> >  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, 

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread James Starlight
thanks so much Thomas, for this example!

Actually, your python script does exactly what my bash script -
produces number of pdbs for each of the renamed chain.
I would like rather to produce at the end ONE pdb with all chains
renamed to empty chain...
I guess I need to save the result outside of the loop something like this

 hop hey lalaley #
from pymol import cmd
pdb = "Ev_complex_model_final.pdb"
chains_array = ["A", "B"] # add more chains in case of more complex pdb

# loop over chains to rename it
for chain in chains_array:
cmd.load(pdb)
cmd.alter('chain ' + chain, 'chain=""')
cmd.delete('*')
##

# save output as pdb
# I need to add something in the name of output indicating how much
chains have been renamed
# like output_withoutAB.pdb
cmd.save('output_'  + '.pdb')

thanks in advance for help!

вт, 25 июн. 2019 г. в 16:03, Thomas Holder :
>
> > 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  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 :
> >>
> >> 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 :
> >>>
> >>>
>  On Jun 25, 2019, at 11:48 AM, James Starlight  
>  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: 

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread Lorenzo Gaifas
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 
> 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 :
> >>
> >> 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 
> 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread Thomas Holder
> 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  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 :
>> 
>> 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 :
>>> 
>>> 
 On Jun 25, 2019, at 11:48 AM, James Starlight  
 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread James Starlight
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 :
>
> 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 :
> >
> >
> > > On Jun 25, 2019, at 11:48 AM, James Starlight  
> > > 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

Re: [PyMOL] PDB post-processing and TER records

2019-06-25 Thread Thomas Holder
Hi James,

pdb_use_ter_records works in PyMOL 2.3.0, but not in previous versions (was 
broken and then removed). See 
https://pymolwiki.org/index.php/pdb_use_ter_records

Cheers,
  Thomas

> On Jun 25, 2019, at 10:25 AM, James Starlight  wrote:
> 
> Dear Pymol Users!
> 
> I need to process input PDB via pymol (this time no need to do it via
> no-gui mode!!) to remove chain id from PDB.
> 
> I am using alter command to do it with the following syntax
> #rename chain A to phantom chain :-)
> alter (chain A),chain=''
> 
> the problem that in my initial PDBs there are many TER records (e.g.
> to separate protein from ligand etc), which should be keeped after
> such post-processing in the form of original PDB (with chain A).
> 
> I have tried to do this before saving of the PDB
> get pdb_use_ter_records
> 
> however, as the result, all the TER records were removed from the
> processed pdb. How I could fix it?
> 
> Many thanks in advance!
> 
> 
> ___
> 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

--
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] PDB post-processing and TER records

2019-06-25 Thread James Starlight
Dear Pymol Users!

I need to process input PDB via pymol (this time no need to do it via
no-gui mode!!) to remove chain id from PDB.

I am using alter command to do it with the following syntax
#rename chain A to phantom chain :-)
alter (chain A),chain=''

the problem that in my initial PDBs there are many TER records (e.g.
to separate protein from ligand etc), which should be keeped after
such post-processing in the form of original PDB (with chain A).

I have tried to do this before saving of the PDB
get pdb_use_ter_records

however, as the result, all the TER records were removed from the
processed pdb. How I could fix it?

Many thanks in advance!


___
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