Difference between revisions of "Ccp4 contact"

From PyMOLWiki
Jump to navigation Jump to search
m (Minor fixes)
Line 1: Line 1:
[[File:HhaExample.png|thumb|300px|right|Interface residues (at cutoff <4A) in the 2c7r.pdb were found using NCONT, but similar results can be obtained using this script and CONTACT output. Usage of selectCONTACTContacts script in PyMOL allows easy selection of residues and atoms listed in the output 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_contact.py
 +
|author    = [[Users:Dalyte|Gerhard]]
 +
|license  = GPL
 +
}}
  
 
== Overview ==
 
== Overview ==
 +
[[File:HhaExample.png|thumb|300px|right|Interface residues (at cutoff <4A) in the 2c7r.pdb were found using NCONT, but similar results can be obtained using this script and CONTACT output. Usage of ccp4_contact script in PyMOL allows easy selection of residues and atoms listed in the output 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 CONTACT from CCP4 Program Suite (CONTACT analyses contacts between subsets of atoms in a PDB file).
 
The script selects residues and atoms from the list of the contacts found by CONTACT from CCP4 Program Suite (CONTACT analyses contacts between subsets of atoms in a PDB file).
First, we run CONTACT on our pdb file to find interface residues. Then by using the selectCONTACTContacts script in PyMOL we separately select residues and atoms listed in the output file. This generates two selections (atoms and residues) for each interacting chain, allowing quick manipulation of (sometimes) extensive lists in CONTACT log file.
+
First, we run CONTACT on our pdb file to find interface residues. Then by using the ccp4_contact script in PyMOL we separately select residues and atoms listed in the output file. This generates two selections (atoms and residues) for each interacting chain, allowing quick manipulation of (sometimes) extensive lists in CONTACT log file.
 
      
 
      
 
== Usage ==
 
== Usage ==
  
selectCONTACTContacts( contactsfile, selName1 = "source", selName2 = "target" )
+
ccp4_contact( contactsfile, selName1 = "source", selName2 = "target" )
 
 
 
 
== Examples ==
 
  
  
 +
== Example 1 ==
 
First use CONTACT to find interface residues/atoms in the pdb file. Once you have the log file proceed to PyMOL.
 
First use CONTACT to find interface residues/atoms in the pdb file. Once you have the log file proceed to PyMOL.
Make sure you've run the selectCONTACTContacts script first.
+
Make sure you import the ccp4_contact script first.
 
   
 
   
 
  fetch 2c7r
 
  fetch 2c7r
  selectCONTACTContacts cont.log, selName1=prot, selName2=dna
+
  selectCONTACTContacts 2c7r.contact, selName1=prot, selName2=dna
  
 
[[File:HhaI20example.png|thumb|300px|right|Quick and easy selection of interacting residues and atoms listed in the CONTACT 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 CONTACT 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_contact_1.pml}}
<source lang="python">
+
<include src="https://raw.github.com/Pymol-Scripts/Pymol-script-repo/master/examples/ccp4_contact_1.pml" highlight="python" />
import re
 
 
 
def parseCONTACTContacts( f ):
 
    # Lys    24A  ca  Asp  263D  CG  ...  4.94    [  -1B  ]  3: -X,  Y+1/2,  -Z+1/2
 
    conParser = re.compile("(\S*)\s*(\d+)([A-Z])\s*(\w+)")
 
    s1 = []
 
    s2 = []
 
    for line in f:
 
        if line.startswith('#'):
 
            continue
 
        matches = conParser.findall(line)
 
        if len(matches) == 2:
 
            s1.append(matches[0])
 
            s2.append(matches[1])
 
        elif len(matches) == 1:
 
            s2.append(matches[0])
 
           
 
    return (s1, s2)
 
 
 
def selectCONTACTContacts( contactsfile, selName1 = "source", selName2 = "target" ):
 
    """
 
    selectCONTACTContacts -- parses CCP4/CONTACT log file and selects residues and atoms.
 
    http://www.ccp4.ac.uk/html/contact.html
 
 
    PARAMS
 
        contactsfile
 
            filename of the CCP4/CONTACT log file
 
 
        selName1
 
            the name prefix for the _res and _atom selections returned for the
 
            source set of chain
 
 
        selName2
 
            the name prefix for the _res and _atom selections returned for the
 
            target set of chain
 
 
 
    RETURNS
 
        4 selections of interface residues and atoms are created and named
 
        depending on what you passed into selName1 and selName2
 
 
 
    REPOSITORY
 
        https://github.com/GerhardR/pymol-scripts
 
 
 
    AUTHOR
 
        Gerhard Reitmayr and Dalia Daujotyte, 2011.
 
    """
 
    # read and parse contacts file into two lists of contact atoms and contact pair list
 
    s1, s2 = parseCONTACTContacts(open(contactsfile))
 
   
 
    # create a selection for the first contact list
 
   
 
    # create the PYMOL selection macros for the residues
 
    resNames = [chain+"/"+residue+"/" for (type, residue, chain, 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, residue, chain, 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, residue, chain, atom) in s2]
 
    resSel = " or ".join(frozenset(resNames))
 
    cmd.select(selName2 + "_res", resSel)
 
   
 
    atomNames = [chain+"/"+residue+"/"+atom for (type, residue, chain, atom) in s2]
 
    atomSel = " or ".join(frozenset(atomNames))
 
    cmd.select(selName2 + "_atom", atomSel)
 
 
 
cmd.extend("selectCONTACTContacts", selectCONTACTContacts)
 
</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]]
 
[[Category:Script_Library]] [[Category:ThirdParty Scripts]] [[Category:Structural Biology Scripts]]

Revision as of 15:21, 14 December 2011

Type Python Script
Download ccp4_contact.py
Author(s) Gerhard
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, but similar results can be obtained using this script and CONTACT output. Usage of ccp4_contact script in PyMOL allows easy selection of residues and atoms listed in the output 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 CONTACT from CCP4 Program Suite (CONTACT analyses contacts between subsets of atoms in a PDB file). First, we run CONTACT on our pdb file to find interface residues. Then by using the ccp4_contact script in PyMOL we separately select residues and atoms listed in the output file. This generates two selections (atoms and residues) for each interacting chain, allowing quick manipulation of (sometimes) extensive lists in CONTACT log file.

Usage

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


Example 1

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

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

fetch 2c7r, async=0
remove solvent
show_as cartoon, 2c7r

python
if 'PYMOL_GIT_MOD' in os.environ:
    example_dir = os.path.join(os.path.split(os.environ['PYMOL_GIT_MOD'])[0],"files_for_examples")
    contactfile = os.path.join(example_dir,"2c7r.contact")
else:
    contactfile = "2c7r.contact"
python end

select ligands, organic
select prot, chain A
select ssDNAa, chain C
select ssDNAb, chain D
select dsDNA, chain C+D

ccp4_contact.ccp4_contact(contactfile, selName1="prot", selName2="dsDNA")

# See here to represent nuc acids
#http://www.pymolwiki.org/index.php/Examples_of_nucleic_acid_cartoons
set cartoon_ring_mode, 3
set cartoon_ring_finder, 1
color slate, dsDNA and elem C

show sticks, prot_res and prot
color raspberry, prot_res and prot
show dots,  prot_atom and prot
orient prot_res
ray