[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