Pierre: I think he is looking for the structure coordinates here.
I am trying to extract individual chains from a pdb file using the edPDB module. In python I load the module then:
>>> edPDB.xpdb.write_pdb(structure='1ES7.pdb',filename='1ES7_B2.pdb', chain='B')
to which I get the following error:
edPDB.write_pdb: INFO Setting the chain id for ALL atoms to 'B'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/GromacsWrapper-0.1.15_dev-py2.6.egg/edPDB/xpdb.py", line 194, in write_pdb
for c in structure.get_chains():
AttributeError: 'str' object has no attribute 'get_chains'
Anyone else have this problem? Is there another way to do this using Python?
Cheers,
Sat
2 answers
Is there another way to do this using Python?
I don't know much about PDB, but for the structure you gave, you could use XSLT to extract the chains with the following stylesheet:
<xsl:stylesheet xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform" "="" rel="nofollow">http://www.w3.org/1999/XSL/Transform'
xmlns:p="http://pdbml.pdb.org/schema/pdbx-v32.xsd"
version='1.0'
>
<xsl:key name="entity_poly" match="p:datablock/p:entity_polyCategory/p:entity_poly" use="@entity_id"/>
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="p:datablock"/>
</xsl:template>
<xsl:template match="p:datablock">
<xsl:apply-templates select="p:entityCategory/p:entity"/>
</xsl:template>
<xsl:template match="p:entity[@id]">
<xsl:if test="key('entity_poly',@id)">
<xsl:text>></xsl:text>
<xsl:value-of select="p:pdbx_description"/>
<xsl:text>
</xsl:text>
<xsl:value-of select="key('entity_poly',@id)/p:pdbx_seq_one_letter_code"/>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Usage:
xsltproc --novalid chains.xsl "http://www.pdb.org/pdb/download/downloadFile.do?fileFormat=xml&compression=NO&structureId=1ES7"
Result:
>BONE MORPHOGENETIC PROTEIN-2
MAQAKHKQRKRLKSSCKRHPLYVDFSDVGWNDWIVAPPGYHAFYCHGECPFPLADHLNSTNHAIVQTLVNSVNSKIPKAC
CVPTELSAISMLYLDENEKVVLKNYQDMVVEGCGCR
>BONE MORPHOGENETIC PROTEIN RECEPTOR IA
TLPFLKCYCSGHCPDDAINNTCITNGHCFAIIEEDDQGETTLASGCMKYEGSDFQCKDSPKAQLRRTIECCRTNLCNQYL
QPTLPPVVI
saperlipopette ! http://www.wordreference.com/fren/saperlipopette
Did you see the Google translation on wordreference.com? Brilliant ;-)
@Pierre / Chris :) !!
Thanks for the responses. I ended up emailing the author of the module and he directed to use his new project MDAnalysis. It is fairly straight forward to install, but does have a number of prerequisites. Here is the solution for extracting a chain taken from http://code.google.com/p/mdanalysis/wiki/Examples :
import MDAnalysis
u = MDAnalysis.Universe('1ES7.pdb', permissive=False) # permissive=False uses Bio.PDB (True will probably also work)
A = u.selectAtoms('segid A')
A.write('1ES7_A.pdb')
Cheers!
Log in to answer this question.