[Biopython] Merging different pdbs into a single object structure and writing it

Claudia Millán Nebot cmncri at ibmb.csic.es
Thu Jun 26 09:31:53 UTC 2014


Thanks for the replies :) It's already working fine!!!!

Claudia Millán (cmncri at ibmb.csic.es)

Crystallographic Methods Group

http://chango.ibmb.csic.es

Institut de Biologia Molecular de Barcelona (IBMB-CSIC)

Barcelona, Spain


2014-06-25 18:26 GMT+02:00 Lenna Peterson <lennalenna at gmail.com>:

> Hi Claudia,
>
> * You don't need a separate parser for each PDB file, you can just use the
> same parser object and it will return separate structure objects.
> * An alternative to using chr on integers would to be to use
> string.ascii_uppercase
> * Yes, set_structure() is replacing each structure in turn, so you're only
> writing out the last structure.
>
> You can only write one structure at a time, so you need to combine
> multiple structures into different chains in one structure. To do this,
> you'll need to use the detach_parent() and add() methods. Something like
> this may work:
>
> import string
> index = 0
> main_structure = list_of_structures[0]
> # Set chains in structures and move to first structure
> for x, structure in enumerate(list_of_structures):
>     for chain in structure:
>         chain.id = string.ascii_uppercase[index]
>         index += 1
>         # Don't move chains of first structure
>         if x == 0: continue
>         chain.detach_parent()
>         main_structure[0].add(chain)
>
> Let me know whether or not that works for you.
>
> Cheers,
>
> Lenna
>
>
> On Wed, Jun 25, 2014 at 11:48 AM, Claudia Millán Nebot <
> cmncri at ibmb.csic.es> wrote:
>
>> Hi :) I'm newbie to BioPython and I am trying to do the following:
>>
>> I have a set of different pdbs that I want to merge together into a
>> single file. I would like to take into consideration that there could be
>> issues with the naming, so, after reading a few other posts in this same
>> list, I came up with the following code:
>>
>>             list_parsers=[]
>>             list_of_structures=[]
>>             for index in range(len(list_of_filenames)):
>>                 parser=PDBParser()
>>                 list_parsers.append(parser)
>>
>> structure=parser.get_structure(list_of_filenames[index][:-4],list_of_filenames[index])
>>                 list_of_structures.append(structure)
>>             i_chain = 65
>>             for structure in list_of_structures:
>>               for chain in structure:
>>                 chain.id = chr(i_chain)
>>                 i_chain += 1
>>             io=PDBIO()
>>             for structure in list_of_structures:
>>                 io.set_structure(structure)
>>             io.save(clust_fold+key[:-4]+"_fused.pda")
>>
>> This is not working, as I guess i'm just changing the structure set each
>> time I do  io.set_structure, and writing the last one. And as there is not
>> such a thing as the append_structure() method I have just tried a silly
>> thing. So my question would be which is the best way to get the pdbs
>> merged? Should I save as independent unfold entities and then write them by
>> using a Select class?
>>
>> Thanks in advance and regards,
>>
>> Claudia Millán (cmncri at ibmb.csic.es)
>>
>> Crystallographic Methods Group
>>
>> http://chango.ibmb.csic.es
>>
>> Institut de Biologia Molecular de Barcelona (IBMB-CSIC)
>>
>> Barcelona, Spain
>>
>> _______________________________________________
>> Biopython mailing list  -  Biopython at mailman.open-bio.org
>> http://mailman.open-bio.org/mailman/listinfo/biopython
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.open-bio.org/pipermail/biopython/attachments/20140626/dbc8b392/attachment.html>


More information about the Biopython mailing list