NAME

HackaMol::Roles::SymopRole - fill your coordinates with symmetry operations

VERSION

version 0.002

DESCRIPTION

The goal of HackaMol::Roles::SymopRole is to simplify the application of symmetry operations. This role is not loaded with the core; it must be applied as done in the synopsis. This role is envisioned for instances of the HackaMol class, which provides builder.

Symmetry operations using copy and pasted from the PDB

my $symops = '
  REMARK 350 APPLY THE FOLLOWING TO CHAINS: A, B                                  
  REMARK 350   BIOMT1   1  1.000000  0.000000  0.000000        0.00000            
  REMARK 350   BIOMT2   1  0.000000  1.000000  0.000000        0.00000            
  REMARK 350   BIOMT3   1  0.000000  0.000000  1.000000        0.00000            
  REMARK 350   BIOMT1   2 -1.000000  0.000000  0.000000     -125.59400            
  REMARK 350   BIOMT2   2  0.000000 -1.000000  0.000000     -125.48300            
  REMARK 350   BIOMT3   2  0.000000  0.000000  1.000000        0.00000    
'; # from pdb

 say $mol->tmax ; # says 0

 $bldr->apply_string_symops($symops,$mol);  # will add coordinates for each, even the identity op (the first three)

 $mol->tmax ;     # says 2

METHODS

set_selections_cr

two arguments: a string and a coderef

select_group

takes one argument (string) and returns a HackaMol::AtomGroup object containing the selected atoms. Priority: the select_group method looks at selections_cr first, then the common selections, and finally, if there were no known selections, it passes the argument to be processed using regular expressions.

ATTRIBUTES

selections_cr

isa HashRef[CodeRef] that is lazy with public Hash traits. This attribute allows the user to use code references in the atom selections. The list of atoms, contained in the role consuming object, will be passed to the code reference, and a list of atoms is the expected output of the code reference, e.g.

@new_atoms = &{$code_ref}(@atoms);

SYNOPSIS

   # load 2SIC from the the RCSB.org and pull out two groups: the enzyme (chain E) and  the inhibitor (chain I) 

   use HackaMol;
   use Moose::Util qw( ensure_all_roles ); #  to apply the role to the molecule object

   my $mol = HackaMol->new->pdbid_mol("2sic"); #returns HackaMol::Molecule

   ensure_all_roles($mol, 'HackaMol::Roles::SelectionRole') # now $mol has the select_group method;

   my $enzyme = $mol->select_group("chain E");
   my $inhib  = $mol->select_group("chain I");

WARNING

This is still under active development and may change or just not work. I still need to add warnings to help with bad selections. Let me know if you have problems or suggestions!

AUTHOR

Demian Riccardi demianriccardi@gmail.com

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Demian Riccardi.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.