From NMR Wiki
sub pdb::split_models{
my $lines = shift;
my @models;
my $i = 0;
push @models, [];
foreach my $line (@lines){
last if $line =~ /^END\s*$/;
if ($line =~ /^ENDMDL/){
$i++;
push @models, [];
next;
}
next if $line =~ /^MODEL/;
push @{$models[$i]}, $line;
}
return @models;
}
sub pdb::fix_chains{
my $m = shift;
my $ch_id = 1;
my @out;
foreach my $line (@$m){
if ($line =~ /^TER/){
$ch_id++;
}
if ($line =~ /^ATOM/){
$line = pdb::set_atom_chain_id($line,$ch_id);
}
push @out, $line;
}
return \@out;
}
sub pdb::set_atom_chain_id {
my ($line,$cid) = @_;
my @bits = split /|/, $line;
$bits[21] = $cid;
return join('',@bits);
}