Pdbfixchains - perl script

From NMR Wiki

Revision as of 21:53, 9 March 2009 by Evgeny Fadeev (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search
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);
}
Personal tools