HackaMol

 view release on metacpan or  search on metacpan

examples/Analysis/Bfact.pl  view on Meta::CPAN

use Modern::Perl;
use HackaMol;
use List::Util qw(sum0);

my $mol = HackaMol->new->pdbid_mol('2cba');
my %select = (
    "protein" => ['protein'],
    "water"   => ['water'],
    "HETATM"  => ['record_name HETATM'],
    "not_water/protein", ['record_name HETATM','.not. water']
);

foreach my $select (sort keys %select){
    my $selects_ar = $select{$select};
    my $first_select = shift @{$selects_ar};
    my $group = $mol->select_group($first_select);
    while (my $added_select = shift @{$selects_ar}){
        $group = $group->select_group($added_select);
    }
    my $count = $group->count_atoms;
    if ($count){
        my @bfact = map {$_->bfact} $group->all_atoms;
        printf("%s,%i,%.2f\n",$select, $count, sum0(@bfact)/$count);
    }
    else{
        printf("%s,%i\n", $select,$count);
    }
}



( run in 1.742 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )