[Bioperl-l] extract and write a pdb chain
Joan Segura Mora
umjsm at leeds.ac.uk
Mon Dec 14 05:39:32 EST 2009
Hi Brian,
I am not calling the method add_chain, I am calling the method chain
http://doc.bioperl.org/releases/bioperl-1.0.1/Bio/Structure/Entry.html#POD6
and if I don't use as an argument an object of type
Bio::Structure::Chain
I get an error like this (-->depends of the argument<--)
------------- EXCEPTION: Bio::Root::Exception -------------
MSG: Supplied a -->Bio::Structure::Residue=HASH(0x11be6a0)<-- to chain,
we want a Bio::Structure::Chain or a list of these
STACK: Error::throw
STACK:
Bio::Root::Root::throw /usr/local/share/perl/5.8.8/Bio/Root/Root.pm:368
STACK:
Bio::Structure::Entry::chain /usr/local/share/perl/5.8.8/Bio/Structure/Entry.pm:314
STACK: read_pdb.pl:11
-----------------------------------------------------------
And if I use a Chain object I get the error that I told you.
I have try this code:
use Bio::Structure::IO;
use strict;
my $structio = Bio::Structure::IO->new(-file => "101m.pdb",'-format' =>
'pdb');
my $struc = $structio->next_structure;
my $new_entry = Bio::Structure::Entry->new( -id => 'structure_id');
my $model = Bio::Structure::Model->new( -id => '0');
for my $chain ($struc->get_chains) {
if($chain->id eq "A"){
$new_entry->add_chain($model,$chain);
last;
}
}
$new_entry->add_model($model);
my $out = Bio::Structure::IO->new(-file => ">out.pdb",'-format' =>
'pdb');
$out->write_structure($new_entry);
But I get an empty pdb
HEADER DEFAULT CLASSIFICATION 24-JAN-70
stru
REMARK
1
TER 1 A
0
MASTER
END
I am trying a lot of combinations, but I can't write a single chain into
a file. I don't know what I am doing wrong.
Thanks for helping
regards,
Joan
On Fri, 2009-12-11 at 15:37 -0500, Brian Osborne wrote:
> Joan,
>
> It looks to me like the first argument to the add_chain() method has
> to be a Model object, the second is the Chain itself. See Structure/
> Entry.pm, for example. However if you're seeing some documentation
> that says something else then tell us where, it needs to be corrected.
>
> In Bio::Structure an Entry consists of one or Models, each of which
> has one or more Chains. This allows you to build macromolecular
> complexes (an Entry), which could have more than one defined proteins
> or protein complexes (Models).
>
> Brian O.
>
> On Dec 11, 2009, at 11:44 AM, Joan Segura Mora wrote:
>
> > Hello,
> >
> > I am trying to do a very easy think but I don't get it. I want to
> > write
> > in a file a chain of a pdb. I have try a lot of thinks but what I
> > think
> > that it should work is the next script:
> >
> > use Bio::Structure::IO;
> > use strict;
> >
> > my $structio = Bio::Structure::IO->new(-file => "101m.pdb",'-format'
> > =>
> > 'pdb');
> > my $struc = $structio->next_structure;
> >
> > my $new_entry = Bio::Structure::Entry->new( -id => 'structure_id');
> >
> > for my $chain ($struc->get_chains) {
> > if($chain->id eq "A"){
> > $new_entry->chain($chain);
> > last;
> > }
> > }
> >
> > my $out = Bio::Structure::IO->new(-file => ">out.pdb",'-format' =>
> > 'pdb');#
> > $out->write_structure($new_entry);
> >
> > it doesn't. I get the next error:
> >
> > ------------- EXCEPTION: Bio::Root::Exception -------------
> > MSG: add_chain: first argument needs to be a Model object ()
> >
> > STACK: Error::throw
> > STACK:
> > Bio::Root::Root::throw /usr/local/share/perl/5.8.8/Bio/Root/Root.pm:
> > 368
> > STACK:
> > Bio::Structure::Entry::add_chain /usr/local/share/perl/5.8.8/Bio/
> > Structure/Entry.pm:335
> > STACK:
> > Bio::Structure::Entry::get_chains /usr/local/share/perl/5.8.8/Bio/
> > Structure/Entry.pm:391
> > STACK:
> > Bio::Structure::Entry::chain /usr/local/share/perl/5.8.8/Bio/
> > Structure/Entry.pm:304
> > STACK: read_pdb.pl:10
> > -----------------------------------------------------------
> >
> > As far I understand the documentation, the method chain of the object
> > Bio::Structure::Entry requires an as input an object of type Chain.
> >
> > Any solution will be very welcome.
> >
> > best regards,
> > Joan
> >
> > _______________________________________________
> > Bioperl-l mailing list
> > Bioperl-l at lists.open-bio.org
> > http://lists.open-bio.org/mailman/listinfo/bioperl-l
>
More information about the Bioperl-l
mailing list