Helicity check: Difference between revisions
Jump to navigation
Jump to search
Avelldiroll (talk | contribs) (helicity_check show the evolution of O - N distances over an amino acid sequence) |
No edit summary |
||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
helicity_check | '''helicity_check''' shows the evolution of O—N distances over an amino acid sequence | ||
See for further info: | See for further info: | ||
[http://www.proteinscience.org/cgi/content/abstract/5/8/1687 "Models for the 3(10)-helix/coil, pi-helix/coil, and alpha-helix/3(10)-helix/coil transitions in isolated peptides"]. ''Protein Sci'' ROHL and DOIG 5 (8) 1687. | |||
"Models for the 3(10)-helix/coil, pi-helix/coil, and alpha-helix/3(10)-helix/coil transitions in isolated peptides. | |||
Uses: | |||
*in the pymol console: | *in the pymol console: | ||
>run pymol_helicity_check.py | >run pymol_helicity_check.py | ||
Line 17: | Line 15: | ||
launch Pymol: you now have a new option in the Plugin menu | launch Pymol: you now have a new option in the Plugin menu | ||
helicity_check uses | helicity_check uses [http://www.gnuplot.info gnuplot] to display its results. | ||
As a consequence gnuplot needs to be installed. | As a consequence gnuplot needs to be installed. | ||
This plugin was tested on linux only, it | This plugin was tested on linux only, it might need some modifications to run on | ||
other OSes. (hints: launching gnuplot and path to dumpfile) | other OSes. (hints: launching gnuplot and path to dumpfile) | ||
Line 68: | Line 66: | ||
from math import sqrt | from math import sqrt | ||
import sys | import sys | ||
import os | |||
import subprocess | import subprocess | ||
import time | |||
def __init__(self): | def __init__(self): | ||
Line 140: | Line 139: | ||
distONi.append(calc_distON(res.Ocoord, resi.Ncoord)) | distONi.append(calc_distON(res.Ocoord, resi.Ncoord)) | ||
dump = ' | dump = os.tmpnam()+'.dat' | ||
dumpfile = file(dump,'w') | dumpfile = file(dump, 'w') | ||
sys.stdout.write('\n#Distances O(i)---N(i+n)\n' | sys.stdout.write('\n#Distances O(i)---N(i+n)\n' | ||
Line 152: | Line 151: | ||
dumpfile.write( | dumpfile.write( | ||
' %i %f %f %f \n'%(i, d3, d4, d5)) | ' %i %f %f %f \n'%(i, d3, d4, d5)) | ||
dumpfile.flush() | |||
#launch a gnuplot window to show the distances | #launch a gnuplot window to show the distances | ||
Line 162: | Line 162: | ||
"'%s' using 1:4 title 'd(O(i)-N(i+5))' with lines\n'" | "'%s' using 1:4 title 'd(O(i)-N(i+5))' with lines\n'" | ||
% (dump, dump, dump)) | % (dump, dump, dump)) | ||
time.sleep(3) | |||
dumpfile.close() | |||
os.remove(dump) | |||
</source> | </source> | ||
==Download== | |||
[[Media:Helicity_check-1.0.tar.zip|Helicity_check-1.0.tar.zip]] | |||
[[Category:Plugins]] | |||
[[Category:Script_Library|Helicity Check]] | |||
[[Category:Structural_Biology_Scripts]] |
Latest revision as of 13:07, 31 October 2015
helicity_check shows the evolution of O—N distances over an amino acid sequence
See for further info:
"Models for the 3(10)-helix/coil, pi-helix/coil, and alpha-helix/3(10)-helix/coil transitions in isolated peptides". Protein Sci ROHL and DOIG 5 (8) 1687.
Uses:
- in the pymol console:
>run pymol_helicity_check.py ----> select some consecutive amino acids - this is nicely done with the Display->Sequence tool >helicity_check()
- installing helicity_check
copy pymol_helicity_check.py in $PYMOL_INSTALL_DIR/modules/pmg_tk/startup launch Pymol: you now have a new option in the Plugin menu
helicity_check uses gnuplot to display its results. As a consequence gnuplot needs to be installed.
This plugin was tested on linux only, it might need some modifications to run on other OSes. (hints: launching gnuplot and path to dumpfile)
# pymol_helicity_check.py
# Copyright (c) 2006-2007 Julien Lefeuvre <lefeuvrejulien@yahoo.fr>
#
"""
Pymol plugin for checking helicity type
helicity_check() takes as input a selection ('sele' by default)
of at least 5 amino acids and computes the distances between
O(i) - N(i+3)
O(i) - N(i+4)
O(i) - N(i+5)
See for further info:
Protein Sci ROHL and DOIG 5 (8) 1687
'Models for the 3(10)-helix/coil, pi-helix/coil,
and alpha-helix/3(10)-helix/coil transitions in isolated peptides.'
uses:
*in the pymol console:
>run pymol_helicity_check.py
----> select some consecutive amino acids
- this is nicely done with the Display->Sequence tool
>helicity_check()
*installing helicity_check
copy pymol_helicity_check.py in $PYMOL_INSTALL_DIR/modules/pmg_tk/startup
launch Pymol: you now have a new option in the Plugin menu
helicity_check uses gnuplot (http://www.gnuplot.info) to display its results
As a consequence gnuplot needs to be installed.
This plugin was tested on linux only, it my need some modifications to run on
other OSes (hints: launching gnuplot and path to dumpfile)
"""
__author__ = "Julien Lefeuvre <lefeuvrejulien@yahoo.fr>"
__version__ = "1.0"
__date__ = "2007-04-02"
__copyright__ = "Copyright (c) 2007 %s. All rights reserved." % __author__
__licence__ = "BSD"
from pymol import cmd
from math import sqrt
import sys
import os
import subprocess
import time
def __init__(self):
"""init function in order to have a nice menu option in Pymol"""
self.menuBar.addmenuitem('Plugin', 'command', 'Helicity Check',
label='Helicity Check', command = lambda: helicity_check())
class Residue(object):
def __init__(self):
self.name=None
self.index=None
self.Ocoord=None
self.Ncoord=None
def calc_distON(Ocoord,Ncoord):
"""return the distance between 2 atoms given their coordinates"""
sum = 0
for o, n in zip(Ocoord, Ncoord):
sum += (o - n)**2
return sqrt(sum)
def helicity_check(selection='sele'):
"""calcultate distance O[res i]-N[res i+3]
O[res i]-N[res i+4]
O[res i]-N[res i+5]
"""
seq_model = cmd.get_model(selection) #get info from selection
res_lim = seq_model.get_residues()
if len(res_lim)<5:
sys.stderr.write("\nPlease select at least 5 residues\n")
return
atom_list = seq_model.atom
res_data=[]
for start,end in res_lim: #extract the data we are interested in
res=Residue()
for atom in atom_list[start:end]:
if atom.name == 'N':
res.name = atom.resn
res.index = atom.resi
res.Ncoord = atom.coord
elif atom.name == 'O':
res.Ocoord = atom.coord
if res.Ocoord and res.Ncoord and res.name and res.index:
res_data.append(res)
else:
sys.stderr.write("\nPlease select complete protein residues\n")
return
res_list = [int(res.index) for res in res_data]
if res_list != range(res_list[0], res_list[-1]+1):
sys.stderr.write("\nPlease select a unbrocken residue sequence\n")
return
distON3 = []
distON4 = []
distON5 = []
distONs = [distON3, distON4, distON5]
for i,res in enumerate(res_data[:-5]): #distances calculations
resis = res_data[i+3:i+6]
for resi, distONi in zip(resis, distONs):
distONi.append(calc_distON(res.Ocoord, resi.Ncoord))
dump = os.tmpnam()+'.dat'
dumpfile = file(dump, 'w')
sys.stdout.write('\n#Distances O(i)---N(i+n)\n'
'#ResNum , d(O(i)-N(i+3)) , d(O(i)-N(i+4)) , d(O(i)-N(i+4))\n')
for i, d3, d4, d5 in zip(res_list, distON3, distON4, distON5):
#writing console output
sys.stdout.write(
' %i , %f , %f , %f \n'%(i, d3, d4, d5))
#writing data to a dump file for use by gnuplot
dumpfile.write(
' %i %f %f %f \n'%(i, d3, d4, d5))
dumpfile.flush()
#launch a gnuplot window to show the distances
gnuplotcmd = subprocess.Popen(['/usr/bin/gnuplot'], shell=True,
stdin=subprocess.PIPE)
gnuplotcmd.stdin.write('set autoscale\n')
gnuplotcmd.stdin.write("plot "
"'%s' using 1:2 title 'd(O(i)-N(i+3))' with lines, "
"'%s' using 1:3 title 'd(O(i)-N(i+4))' with lines, "
"'%s' using 1:4 title 'd(O(i)-N(i+5))' with lines\n'"
% (dump, dump, dump))
time.sleep(3)
dumpfile.close()
os.remove(dump)