This is a read-only mirror of pymolwiki.org

Difference between revisions of "Ccp4 ncont"

From PyMOL Wiki
Jump to navigation Jump to search
(updated script with faster selection and naming scheme.)
m (18 revisions)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[File:HhaExample.png|thumb|300px|right|Interface residues (at cutoff <4A) in the 2c7r.pdb were found using NCONT. Usage of selectNCONTContacts script in PyMOL allows easy selection of residues and atoms listed in ncont.log file. Interacting protein and DNA residues are colored in red and slate, respectively. Atoms in contact are shown in dots.]]
+
{{Infobox script-repo
 +
|type      = script
 +
|filename  = ccp4_ncont.py
 +
|author    = [[User:Dalyte|Gerhard Reitmayr and Dalia Daujotyte]]
 +
|license  = GPL
 +
}}
  
 
== Overview ==
 
== Overview ==
 +
[[File:HhaExample.png|thumb|300px|right|Interface residues (at cutoff <4A) in the 2c7r.pdb were found using NCONT. Usage of ccp4_ncont script in PyMOL allows easy selection of residues and atoms listed in ncont.log file. Interacting protein and DNA residues are colored in red and slate, respectively. Atoms in contact are shown in dots.]]
  
 
The script selects residues and atoms from the list of the contacts found by NCONT from CCP4 Program Suite (NCONT analyses contacts between subsets of atoms in a PDB file).
 
The script selects residues and atoms from the list of the contacts found by NCONT from CCP4 Program Suite (NCONT analyses contacts between subsets of atoms in a PDB file).
First, we run NCONT on our pdb file to find interface residues. Then by using the selectNCONTContacts script in PyMOL we separately select residues and atoms listed in a ncont.log file. This generates two selections (atoms and residues) for each interacting chain, allowing quick manipulation of (sometimes) extensive lists in NCONT log file.
+
First, we run NCONT on our pdb file to find interface residues. Then by using the ccp4_ncont script in PyMOL we separately select residues and atoms listed in a ncont.log file. This generates two selections (atoms and residues) for each interacting chain, allowing quick manipulation of (sometimes) extensive lists in NCONT log file.
  
 
This script works best for intermolecular contacts (when NCONT target and source selections don't overlap). If crystal contacts (NCONT parameter cell = 1 or 2) are included then additional coding is required to distinguish inter from intramolecular contacts.
 
This script works best for intermolecular contacts (when NCONT target and source selections don't overlap). If crystal contacts (NCONT parameter cell = 1 or 2) are included then additional coding is required to distinguish inter from intramolecular contacts.
Line 10: Line 16:
 
== Usage ==
 
== Usage ==
  
selectNCONTContacts( contactsfile, selName1 = "source", selName2 = "target" )
+
ccp4_ncont( contactsfile, selName1 = "source", selName2 = "target" )
  
  
Line 17: Line 23:
  
 
First use NCONT to find interface residues/atoms in the pdb file. Once you have ncont.log file proceed to PyMOL.
 
First use NCONT to find interface residues/atoms in the pdb file. Once you have ncont.log file proceed to PyMOL.
Make sure you've run the selectNCONTContacts script first.
+
Make sure you import the ccp4_ncont script first.
 
   
 
   
 
  fetch 2c7r
 
  fetch 2c7r
  selectNCONTContacts ncont.log, selName1=prot, selName2=dna
+
  ccp4_ncont 2c7r.ncont, selName1=prot, selName2=dna
  
 
[[File:HhaI20example.png|thumb|300px|right|Quick and easy selection of interacting residues and atoms listed in the NCONT log file. Protein and DNA residues are colored in red and slate, respectively. Atoms in contact are shown in dots.]]
 
[[File:HhaI20example.png|thumb|300px|right|Quick and easy selection of interacting residues and atoms listed in the NCONT log file. Protein and DNA residues are colored in red and slate, respectively. Atoms in contact are shown in dots.]]
  
== The Code ==
+
{{Template:PymolScriptRepoDownload|examples/ccp4_ncont_1.pml}}
<source lang="python">
+
<include src="https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/examples/ccp4_ncont_1.pml" highlight="python" />
import re
 
  
def parseNCONTContacts( f ):
+
== Getting a NCONT file ==
    # /1/B/ 282(PHE). / CE1[ C]:  /1/E/ 706(GLN). / O  [ O]:  3.32
 
    conParser = re.compile("\s*/(\d+)/([A-Z]*)/\s*(\d+).*?/\s*([A-Z0-9]*).*?:") # * in the second group is needed when chain code is blank
 
    mode = 0
 
    s1 = []
 
    s2 = []
 
    pairs = []
 
    for line in f:
 
        if mode == 0:
 
            if line.strip().startswith("SOURCE ATOMS"):
 
                mode = 1
 
        elif mode == 1:
 
            mode = 2
 
        elif mode == 2:
 
            matches = conParser.findall(line)
 
            if len(matches) == 0:
 
                return (s1, s2, pairs)
 
            if len(matches) == 2:
 
                s1.append(matches[0])
 
                s2.append(matches[1])
 
            elif len(matches) == 1:
 
                s2.append(matches[0])
 
            pairs.append((len(s1)-1, len(s2)-1))
 
        else:
 
            print "Unknown mode", mode
 
  
def selectNCONTContacts( contactsfile, selName1 = "source", selName2 = "target" ):
+
=== Install CCP4 - for Linux ===
    """
+
Goto: http://www.ccp4.ac.uk/download.php <br>
    selectContacts -- parses CCP4/NCONT log file and selects residues and atoms.
+
Click: automated Downloads Pages <br>
    http://www.ccp4.ac.uk/html/ncont.html
+
Select: Linux, generic linux (x86) <br>
   
+
Select: Customized installation <br>
    PARAMS
+
Select: Only CCP4 Program Suite, Executables -> Continue <br>
        contactsfile
+
No additional packages -> Continue <br>
            filename of the CCP4/NCONT contacts log file
+
Download <br>
  
        selName1
+
Extract for example to: '''/home/YOU/Software/CCP'''4 <br>
            the name prefix for the _res and _atom selections returned for the
+
Then run: <br>
            source set of chain
+
<syntaxhighlight lang="bash">
 +
$ /home/YOU/Software/CCP4/install.sh
 +
</syntaxhighlight>
 +
write yes, read agreement, push y to agree license <br>
 +
For sourcing scripts, say yes. <br>
 +
See the changes to your environmental virables: <br>
 +
<syntaxhighlight lang="bash">
 +
$ less ~/.bashrc
 +
</syntaxhighlight>
  
        selName2
+
=== Use of NCONT - for Linux ===
            the name prefix for the _res and _atom selections returned for the  
+
See here for the NCONT program and options: <br>
            target set of chain
+
http://www.ccp4.ac.uk/html/ncont.html <br>
 +
http://www.ccp4.ac.uk/html/pdbcur.html#atom_selection <br>
 +
Locate the pdb, and now run in terminal: <br>
 +
<syntaxhighlight lang="bash">
 +
$ ncont XYZIN 2c7r.pdb >> 2c7r.ncont << eof  (#press enter)
 +
> source A    (#press enter)
 +
> target C,D  (#press enter)
 +
> eof        (#press enter, and now the program runs, and shell saves to 2c7r.ncont)
 +
</syntaxhighlight>
  
    RETURNS
 
        4 selections of interface residues and atoms are created and named
 
        depending on what you passed into selName1 and selName2
 
  
    REPOSITORY
+
[[Category:Script_Library]]
        https://github.com/GerhardR/pymol-scripts
+
[[Category:ThirdParty Scripts]]
 
+
[[Category:Structural Biology Scripts]]
    AUTHOR
+
[[Category:Pymol-script-repo]]
        Gerhard Reitmayr and Dalia Daujotyte, 2009.
 
    """
 
    # read and parse contacts file into two lists of contact atoms and contact pair list
 
    s1, s2, pairs = parseNCONTContacts(open(contactsfile))
 
    # create a selection for the first contact list
 
   
 
    # create the PYMOL selection macros for the residues
 
    resNames = [chain+"/"+residue+"/" for (type, chain, residue, atom) in s1]
 
    # put them in a set to remove duplicates and then join with 'or'
 
    resSel = " or ".join(frozenset(resNames))
 
    # finally select them under the new name
 
    cmd.select(selName1 + "_res", resSel)
 
   
 
    atomNames = [chain+"/"+residue+"/"+atom for (type, chain, residue, atom) in s1]
 
    atomSel = " or ".join(frozenset(atomNames))
 
    cmd.select(selName1 + "_atom", atomSel)
 
 
 
    # create a selection for the second contact list
 
 
 
    resNames = [chain+"/"+residue+"/" for (type, chain, residue, atom) in s2]
 
    resSel = " or ".join(frozenset(resNames))
 
    cmd.select(selName2 + "_res", resSel)
 
   
 
    atomNames = [chain+"/"+residue+"/"+atom for (type, chain, residue, atom) in s2]
 
    atomSel = " or ".join(frozenset(atomNames))
 
    cmd.select(selName2 + "_atom", atomSel)
 
 
 
cmd.extend("selectNCONTContacts", selectNCONTContacts)
 
</source>
 
 
 
== Code repository ==
 
 
 
The latest version of this script and related scripts is available at https://github.com/GerhardR/pymol-scripts.
 
 
 
[[Category:Script_Library]] [[Category:ThirdParty Scripts]] [[Category:Structural Biology Scripts]]
 

Latest revision as of 01:06, 28 March 2014

Type Python Script
Download ccp4_ncont.py
Author(s) Gerhard Reitmayr and Dalia Daujotyte
License GPL
This code has been put under version control in the project Pymol-script-repo

Overview

Interface residues (at cutoff <4A) in the 2c7r.pdb were found using NCONT. Usage of ccp4_ncont script in PyMOL allows easy selection of residues and atoms listed in ncont.log file. Interacting protein and DNA residues are colored in red and slate, respectively. Atoms in contact are shown in dots.

The script selects residues and atoms from the list of the contacts found by NCONT from CCP4 Program Suite (NCONT analyses contacts between subsets of atoms in a PDB file). First, we run NCONT on our pdb file to find interface residues. Then by using the ccp4_ncont script in PyMOL we separately select residues and atoms listed in a ncont.log file. This generates two selections (atoms and residues) for each interacting chain, allowing quick manipulation of (sometimes) extensive lists in NCONT log file.

This script works best for intermolecular contacts (when NCONT target and source selections don't overlap). If crystal contacts (NCONT parameter cell = 1 or 2) are included then additional coding is required to distinguish inter from intramolecular contacts.

Usage

ccp4_ncont( contactsfile, selName1 = "source", selName2 = "target" )


Examples

First use NCONT to find interface residues/atoms in the pdb file. Once you have ncont.log file proceed to PyMOL. Make sure you import the ccp4_ncont script first.

fetch 2c7r
ccp4_ncont 2c7r.ncont, selName1=prot, selName2=dna
Quick and easy selection of interacting residues and atoms listed in the NCONT log file. Protein and DNA residues are colored in red and slate, respectively. Atoms in contact are shown in dots.
Download: examples/ccp4_ncont_1.pml
This code has been put under version control in the project Pymol-script-repo

<include src="https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/examples/ccp4_ncont_1.pml" highlight="python" />

Getting a NCONT file

Install CCP4 - for Linux

Goto: http://www.ccp4.ac.uk/download.php
Click: automated Downloads Pages
Select: Linux, generic linux (x86)
Select: Customized installation
Select: Only CCP4 Program Suite, Executables -> Continue
No additional packages -> Continue
Download

Extract for example to: /home/YOU/Software/CCP4
Then run:

$ /home/YOU/Software/CCP4/install.sh

write yes, read agreement, push y to agree license
For sourcing scripts, say yes.
See the changes to your environmental virables:

$ less ~/.bashrc

Use of NCONT - for Linux

See here for the NCONT program and options:
http://www.ccp4.ac.uk/html/ncont.html
http://www.ccp4.ac.uk/html/pdbcur.html#atom_selection
Locate the pdb, and now run in terminal:

$ ncont XYZIN 2c7r.pdb >> 2c7r.ncont << eof   (#press enter)
> source A    (#press enter)
> target C,D  (#press enter)
> eof         (#press enter, and now the program runs, and shell saves to 2c7r.ncont)