Rosetta  2020.37
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
core::pack::interaction_graph::RotamerDots Class Reference

Handles sphere-sphere overlap calculations for the HPatchInteractionGraph. More...

#include <RotamerDots.hh>

Inheritance diagram for core::pack::interaction_graph::RotamerDots:
Inheritance graph
[legend]

Public Member Functions

 RotamerDots ()
 
 RotamerDots (conformation::ResidueCOP rotamer, bool exclude_hydrogen_atoms=false, bool use_expanded_polar_atom_radii=false)
 Custom constructor for a RotamerDots object. More...
 
 ~RotamerDots () override
 
 RotamerDots (RotamerDots const &rhs)
 copy constructor More...
 
void copy (RotamerDots const &rhs)
 Copy method for the RotamerDots class. Also used by the assignment operator. More...
 
RotamerDotsoperator= (RotamerDots const &rhs)
 
bool operator!= (RotamerDots const &rhs)
 Used during debugging of the HPatchIG. Some extra information is printed if current state dots is NOT EQUAL to alternate state dots at a Node/BGNode. More...
 
void zero ()
 Zeros out all of the contained data except the rotamer pointer and the radii array. More...
 
bool overlaps (RotamerDots const &other) const
 Returns true if this RotamerDots object has any sphere overlap with the passed in RotamerDots object. More...
 
core::conformation::ResidueCOP rotamer () const
 
bool state_unassigned () const
 Is the state of this RotamerDots object unassigned? More...
 
core::Size get_num_atoms () const
 Returns the number of atoms this RotamerDots object is keeping SASA for. More...
 
numeric::xyzVector< Realget_atom_coords_xyz (Size atom_index) const
 Return the xyz coordinates of an atom in this RotamerDots instance. More...
 
core::Real get_atom_radius (Size atom_index) const
 Returns the SASA radius for the passed in atom type. The DB file should have been read in at construct time. More...
 
core::Real radius_for_attype (Size const attype_index)
 Same as the above, but skips the conversion from atom index to atom type index. More...
 
core::Real max_atom_radius ()
 Returns the maximum atom radius. Used only by the SurfacePotential class. More...
 
utility::vector1< Real > const * get_radii () const
 Returns a pointer to the radii vector. Used only by the InvRotamerDots class. More...
 
void increment_self_overlap ()
 computes and stores self-induced dot coverage. uses a vector1 of vector1 of ubytes to store the calculated overlap information. More...
 
void increment_this_and_cache (RotamerDots const &other, RotamerDotsCache &this_overlap_on_other, utility::vector1< utility::vector1< bool > > &atom_atom_overlaps_cache)
 Add rotamer coverage counts for dots on this object only, leaving rhs unaltered. More...
 
void get_res_res_overlap (RotamerDots const &other_res, utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &res1_covered_by_res2, utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &res2_covered_by_res1, utility::vector1< utility::vector1< bool > > &atom_atom_overlaps_cache) const
 Calls get_atom_atom_coverage for all atom pairs between res1 and res2. This method gets called by RotamerDots::get_overlap_cache(). More...
 
bool get_atom_atom_coverage (Vector const &at1_xyz, Real at1_base_radius, Vector const &at2_xyz, Real at2_base_radius, utility::vector1< ObjexxFCL::ubyte > &at1_sphere_covered, utility::vector1< ObjexxFCL::ubyte > &at2_sphere_covered, Real dist_sq) const
 returns false if the two spheres do not overlap at all. otherwise, saves the overlap masks to the input vectors. More...
 
void increment_from_cached (RotamerDotsCache const &cached_dot_overlap)
 Increments the dot coverage count for this rotamer from a coverage cache. More...
 
void decrement_from_cached (RotamerDotsCache const &cached_dot_overlap)
 decrements the dot coverage count for this by the coverage stored in the input RotamerDotsCache object More...
 
void increment_both (RotamerDots &other)
 Add rotamer coverage counts for dots on both this and other. sets sasa_is_current_ to false on both this and rhs. More...
 
void increment_both_and_cache (RotamerDots &other_rotamer, RotamerDotsCache &others_dots_covered_by_this, RotamerDotsCache &this_dots_covered_by_other, utility::vector1< utility::vector1< bool > > &atom_atom_overlaps_cache)
 
core::Real get_sasa () const
 Given the current dot coverage counts, returns the total SASA of this residue. More...
 
core::Real get_atom_sasa (Size atom_index) const
 Given the current dot coverage counts, returns the total SASA for a particular atom index. Assumes that get_atom_sasa() will never be called when the object is in the unassigned state. More...
 
core::Size get_num_uncovered (core::Size atom) const
 Returns the number of uncovered dots on the given atom, when using standard SASA radii. Note: no expanded polars version of this method. More...
 
core::Size get_num_covered_total () const
 Note: no expanded polars version of this method. More...
 
void print (std::ostream &os) const
 
std::string name3 () const
 
core::Size seqpos () const
 
utility::vector1< DotSphere >
const & 
get_atom_counts ()
 
void invert_to_boolmasks (utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &inv_dots) const
 Inverts the current dot counts and saves them to the passed in vector. More...
 
void invert_to_boolmasks (utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &inv_dots, utility::vector1< Size > const &ats_to_update) const
 invert the current dot counts for a subset of the atoms in this rotamer. More...
 

Static Public Member Functions

static core::Vector dot_coord (Size index)
 

Static Public Attributes

static core::Size const num_bytes_ = 21
 
static core::Real probe_radius_ = 1.4
 
static ObjexxFCL::FArray2D_int
const * 
lg_angles_
 TEMP! More...
 
static
ObjexxFCL::FArray2D_ubyte
const * 
lg_masks_
 

Private Member Functions

void get_overlap_cache (RotamerDots const &other, RotamerDotsCache &others_dots_covered_by_this, RotamerDotsCache &this_dots_covered_by_other, utility::vector1< utility::vector1< bool > > &atom_atom_overlaps_cache) const
 computes the overlap each rotamer (this & other) induce on each other and stores that information in the RotamerDotsCache objects More...
 

Static Private Member Functions

static void initialize_sasa_arrays ()
 Initializes the pointers to the angles and masks FArrays used by sasa.cc and inits the dot sphere coordinates. More...
 
static void initialize_dot_coords (utility::vector1< core::Vector > &dot_coords)
 

Private Attributes

core::conformation::ResidueCOP rotamer_
 
Size num_atoms_
 
utility::vector1< DotSphereatom_counts_
 
core::Real sasa_
 
bool sasa_is_current_
 
utility::vector1< core::Realatom_sasa_
 
utility::vector1< Real > const * radii_
 

Static Private Attributes

static bool sasa_arrays_initialized_ = false
 
static utility::vector1
< core::Vector
dot_coords_
 

Detailed Description

Handles sphere-sphere overlap calculations for the HPatchInteractionGraph.

One big change from the r++ version of this class is that this class now includes all of the information that was previously stored in the RotamerCoords class. Since I'm not storing atoms in trie ordering (perhaps I'll add this later), there is no need to have a separate class for the rotamer coordinates.

RotamerDots hold DotSphere objects for the atoms of a given Residue (or really, of the current state on some interaction graph Node). Default use of the class will result in RotamerDots objects keeping DotSpheres for every atom of a residue. For the hpatch interaction graph, though, we only care about the SASA of the heavy atoms. No need to include the hydrogens when looking for hydrophobic patches. By not keeping track of the hydrogens, we save a huge amount of time on computing updates to the SASA score because hydrogen atoms generally make up half of a protein. So I'm adding a boolean flag to the non-default constructor which toggles whether we're tracking SASA of all atoms, or just the heavy atoms.

Two other big changes being made to this class are that 1) the class will now keep track of two kinds of SASA and 2) it will no longer keep score or score_is_current variables. The two kinds of SASA the class will keep track of are the standard SASA, and a SASA with polar atom radii extended. The expanded polar SASA will only be kept if a boolean flag is set at construct time. If not, it will just calculate standard SASA and that's it. The second change is that this class is now only keeping track of SASA. RotamerDots objects will not be responsible for calculating a score.

Constructor & Destructor Documentation

core::pack::interaction_graph::RotamerDots::RotamerDots ( )
core::pack::interaction_graph::RotamerDots::RotamerDots ( conformation::ResidueCOP  rotamer,
bool  exclude_hydrogen_atoms = false,
bool  use_expanded_polar_atom_radii = false 
)

Custom constructor for a RotamerDots object.

One RotamerDots object get allocated for every state of a first class IG Node, for all first class IG Nodes of a protein being designed. That's potentially a very large number of states. This class should only hold the information it needs to hold to do its job.

References atom_counts_, atom_sasa_, initialize_sasa_arrays(), num_atoms_, radii_, and sasa_arrays_initialized_.

core::pack::interaction_graph::RotamerDots::~RotamerDots ( )
override
core::pack::interaction_graph::RotamerDots::RotamerDots ( RotamerDots const &  rhs)

copy constructor

Member Function Documentation

void core::pack::interaction_graph::RotamerDots::copy ( RotamerDots const &  rhs)

Copy method for the RotamerDots class. Also used by the assignment operator.

References atom_counts_, atom_sasa_, num_atoms_, radii_, rotamer_, sasa_, and sasa_is_current_.

Referenced by operator=().

void core::pack::interaction_graph::RotamerDots::decrement_from_cached ( RotamerDotsCache const &  cached_dot_overlap)

decrements the dot coverage count for this by the coverage stored in the input RotamerDotsCache object

References atom_counts_, core::pack::interaction_graph::RotamerDotsCache::atom_counts_, num_atoms_, and sasa_is_current_.

core::Vector core::pack::interaction_graph::RotamerDots::dot_coord ( Size  index)
static
bool core::pack::interaction_graph::RotamerDots::get_atom_atom_coverage ( Vector const &  at1_xyz,
Real  at1_base_radius,
Vector const &  at2_xyz,
Real  at2_base_radius,
utility::vector1< ObjexxFCL::ubyte > &  at1_sphere_covered,
utility::vector1< ObjexxFCL::ubyte > &  at2_sphere_covered,
Real  dist_sq 
) const

returns false if the two spheres do not overlap at all. otherwise, saves the overlap masks to the input vectors.

References core::kinematics::distance(), core::scoring::sasa::get_legrand_2way_orientation(), core::scoring::sasa::get_legrand_atomic_overlap(), num_bytes_, and probe_radius_.

Referenced by get_res_res_overlap(), and increment_self_overlap().

numeric::xyzVector< Real > core::pack::interaction_graph::RotamerDots::get_atom_coords_xyz ( Size  atom_index) const

Return the xyz coordinates of an atom in this RotamerDots instance.

References rotamer_.

Referenced by get_res_res_overlap(), increment_self_overlap(), and overlaps().

utility::vector1< DotSphere > const& core::pack::interaction_graph::RotamerDots::get_atom_counts ( )
inline

References atom_counts_.

Real core::pack::interaction_graph::RotamerDots::get_atom_radius ( Size  atom_index) const

Returns the SASA radius for the passed in atom type. The DB file should have been read in at construct time.

Many of the functions in this class iterate over 1 .. num_atoms_. That's not the same thing as an atom type index which is what the radii vector is indexed with. So before we can return the radius, we have to convert the passed in atom_index into the right atom in the residue and then use that to get the right type.

References radii_, and rotamer_.

Referenced by get_res_res_overlap(), get_sasa(), increment_self_overlap(), core::pack::interaction_graph::HPatchNode< V, E, G >::initialize_atom_atom_overlap_cache(), overlaps(), and print().

Real core::pack::interaction_graph::RotamerDots::get_atom_sasa ( Size  atom_index) const

Given the current dot coverage counts, returns the total SASA for a particular atom index. Assumes that get_atom_sasa() will never be called when the object is in the unassigned state.

References atom_sasa_, get_sasa(), and sasa_is_current_.

Size core::pack::interaction_graph::RotamerDots::get_num_atoms ( ) const
Size core::pack::interaction_graph::RotamerDots::get_num_covered_total ( ) const

Note: no expanded polars version of this method.

References atom_counts_.

Referenced by print().

Size core::pack::interaction_graph::RotamerDots::get_num_uncovered ( core::Size  atom) const

Returns the number of uncovered dots on the given atom, when using standard SASA radii. Note: no expanded polars version of this method.

References atom_counts_.

Referenced by get_sasa().

void core::pack::interaction_graph::RotamerDots::get_overlap_cache ( RotamerDots const &  other,
RotamerDotsCache others_dots_covered_by_this,
RotamerDotsCache this_dots_covered_by_other,
utility::vector1< utility::vector1< bool > > &  atom_atom_overlaps_cache 
) const
private

computes the overlap each rotamer (this & other) induce on each other and stores that information in the RotamerDotsCache objects

Parameters
other- [in] - the other RotamerDots object other_dots_covered_by_this - [out] - the Cache for the dots on the surface of other that are covered by the atoms on this rotamer this_dots_covered_by_other - [out] - the Cache for the dots on the surface of this that are covered by the atoms on the other rotamer atom_atom_overlaps_cache - [out] - holds a boolean indicating whether two atoms have overlapping, solvent-exposed surface area

References get_num_atoms(), get_res_res_overlap(), core::pack::interaction_graph::RotamerDotsCache::increment_count(), num_atoms_, num_bytes_, and core::pack::interaction_graph::RotamerDotsCache::zero().

Referenced by increment_both_and_cache(), and increment_this_and_cache().

utility::vector1< Real > const * core::pack::interaction_graph::RotamerDots::get_radii ( ) const

Returns a pointer to the radii vector. Used only by the InvRotamerDots class.

References radii_.

Referenced by core::pack::interaction_graph::InvRotamerDots::setup_from_rotamer_dots().

void core::pack::interaction_graph::RotamerDots::get_res_res_overlap ( RotamerDots const &  other_res,
utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &  res1_covered_by_res2,
utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &  res2_covered_by_res1,
utility::vector1< utility::vector1< bool > > &  atom_atom_overlaps_cache 
) const

Calls get_atom_atom_coverage for all atom pairs between res1 and res2. This method gets called by RotamerDots::get_overlap_cache().

References get_atom_atom_coverage(), get_atom_coords_xyz(), get_atom_radius(), get_num_atoms(), num_atoms_, and core::scoring::packstat::overlap().

Referenced by get_overlap_cache().

Real core::pack::interaction_graph::RotamerDots::get_sasa ( ) const

Given the current dot coverage counts, returns the total SASA of this residue.

This method does not do any work figuring out who is overlapping with this rotamer. It assumes that work has been done. Instead, it returns the SASA of the dot counts currently held. If the dot counts have not changed since the last time get_sasa() got called then sasa_is_current_ will be true. In that case, the method will just return the the variable sasa_. If the counts have changed, it iterates over all the atoms and recalculates the total SASA. That value is stored in sasa_ and sasa_is_current_ is set to true.

The reason both sasa_ and sasa_is_current_ are "mutable" is so that they can be modified inside this const function.

References atom_counts_, atom_sasa_, get_atom_radius(), get_num_uncovered(), probe_radius_, sasa_, sasa_is_current_, and state_unassigned().

Referenced by get_atom_sasa(), core::pack::interaction_graph::operator<<(), and print().

void core::pack::interaction_graph::RotamerDots::increment_both ( RotamerDots other)

Add rotamer coverage counts for dots on both this and other. sets sasa_is_current_ to false on both this and rhs.

One use case involves BGNodes initializing overlap with other BGNodes. This is a brute force all BGNode v all BGNode pairwise increment on the RotamerDots objects each Node holds. That's why we call increment both. We don't care about the cache values in this case, but to use increment_both_and_cache, we have to create Cache variables to use as references.

References get_num_atoms(), increment_both_and_cache(), num_atoms_, and core::pack::interaction_graph::RotamerDotsCache::zero().

void core::pack::interaction_graph::RotamerDots::increment_both_and_cache ( RotamerDots other_rotamer,
RotamerDotsCache others_dots_covered_by_this,
RotamerDotsCache this_dots_covered_by_other,
utility::vector1< utility::vector1< bool > > &  atom_atom_overlaps_cache 
)

Add rotamer coverage counts for dots on both this and other. Cache's the overlap this and other have with each other for greater efficiency. The second parameter are the dots on the surface of other_rotamer that this overlaps. The third parameter are the dots on the surface of this that other_rotamer overlaps. The fourth parameter lives on the Edges of the IG and stores a boolean indicating whether two atoms have overlapping, solvent-exposed surface area. Instead of recalculating this for all residue pairs every substitution, keep it in this cache. The vectors are already sized. The outer vector has the "other_rotamer"'s atoms and the inner vector is for the atoms in this class's residue. The structure just gets passed down to get_overlap_cache() and it eventually gets filled in get_atom_atom_coverage().

If the class is keeping the expanded polar atom SASA also, then this function makes an extra call to get_overlap_cache() to get the extra overlap that happens when polar atom radii are expanded.

References get_overlap_cache(), and increment_from_cached().

Referenced by increment_both().

void core::pack::interaction_graph::RotamerDots::increment_from_cached ( RotamerDotsCache const &  cached_dot_overlap)

Increments the dot coverage count for this rotamer from a coverage cache.

References atom_counts_, core::pack::interaction_graph::RotamerDotsCache::atom_counts_, num_atoms_, sasa_is_current_, and TR_RD().

Referenced by increment_both_and_cache(), and increment_this_and_cache().

void core::pack::interaction_graph::RotamerDots::increment_self_overlap ( )

computes and stores self-induced dot coverage. uses a vector1 of vector1 of ubytes to store the calculated overlap information.

uses get_atom_atom_coverage() which in turn uses get_overlap() and get_orientation() method calls in sasa.cc to get the right overlap "masks". when all atom pairs are complete, converts the masks into coverage "counts" which are stored in the DotSphere class (member variable atom_counts_).

to handle the possibility of keeping expanded_polar SASA, we have to run the nested loop over atoms a second time through using the expanded_polar version of get_atom_radius().

References atom_counts_, get_atom_atom_coverage(), get_atom_coords_xyz(), get_atom_radius(), num_atoms_, num_bytes_, and sasa_is_current_.

void core::pack::interaction_graph::RotamerDots::increment_this_and_cache ( RotamerDots const &  other,
RotamerDotsCache this_overlap_on_other,
utility::vector1< utility::vector1< bool > > &  atom_atom_overlaps_cache 
)

Add rotamer coverage counts for dots on this object only, leaving rhs unaltered.

In the context of the HPatchIG, this method is called by all FCNodes to increment the overlap a BG residue has on the FCNode. It is called by all BG Edges, to make sure that all FCNodes that are connected to a BG residue get this method called by them. 'other' in this case is a BG residue, and 'this_overlap_on_other' is the overlap that is caused by all-states-possible-at-this-node on the BG node. Yes, that's keeping the same information in two places, but it makes updating hpatch score calculations later faster. (ronj)

References get_overlap_cache(), increment_from_cached(), and num_atoms_.

void core::pack::interaction_graph::RotamerDots::initialize_dot_coords ( utility::vector1< core::Vector > &  dot_coords)
staticprivate

The contents of "sphere.txt", now hard coded. The coordinates in the original file are all on the opposite size of the unit sphere from where they genuinely appear to be.

Referenced by initialize_sasa_arrays().

void core::pack::interaction_graph::RotamerDots::initialize_sasa_arrays ( )
staticprivate

Initializes the pointers to the angles and masks FArrays used by sasa.cc and inits the dot sphere coordinates.

This call should only occur once (when the first RotamerDots object get constructed) and never again.

References dot_coords_, core::scoring::sasa::get_legrand_sasa_angles(), core::scoring::sasa::get_legrand_sasa_masks(), initialize_dot_coords(), lg_angles_, lg_masks_, and sasa_arrays_initialized_.

Referenced by dot_coord(), and RotamerDots().

void core::pack::interaction_graph::RotamerDots::invert_to_boolmasks ( utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &  inv_dots) const

Inverts the current dot counts and saves them to the passed in vector.

References atom_counts_, and num_atoms_.

Referenced by core::pack::interaction_graph::InvRotamerDots::setup_from_rotamer_dots().

void core::pack::interaction_graph::RotamerDots::invert_to_boolmasks ( utility::vector1< utility::vector1< ObjexxFCL::ubyte > > &  inv_dots,
utility::vector1< Size > const &  ats_to_update 
) const

invert the current dot counts for a subset of the atoms in this rotamer.

References atom_counts_.

core::Real core::pack::interaction_graph::RotamerDots::max_atom_radius ( )

Returns the maximum atom radius. Used only by the SurfacePotential class.

References protocols::mean_field::max(), and radii_.

std::string core::pack::interaction_graph::RotamerDots::name3 ( ) const
bool core::pack::interaction_graph::RotamerDots::operator!= ( RotamerDots const &  rhs)

Used during debugging of the HPatchIG. Some extra information is printed if current state dots is NOT EQUAL to alternate state dots at a Node/BGNode.

References atom_counts_, atom_sasa_, num_atoms_, radii_, rotamer_, sasa_, sasa_is_current_, and state_unassigned().

RotamerDots & core::pack::interaction_graph::RotamerDots::operator= ( RotamerDots const &  rhs)

References copy().

bool core::pack::interaction_graph::RotamerDots::overlaps ( RotamerDots const &  other) const

Returns true if this RotamerDots object has any sphere overlap with the passed in RotamerDots object.

This method only checks to see if two RotamerDots objects are within touching distance of each other. It is used to determine whether Edges or BGEdges should be created in the IG. Calculate this using the expanded polar atom radii. If we don't, there's a chance that a state substitution on a Node may cause SASA changes (when expanded polars are used) on a BGNode, but if we didn't assume expanded radii in this method, there would be no edge between the two nodes.

References core::kinematics::tree::distance_squared(), get_atom_coords_xyz(), get_atom_radius(), get_num_atoms(), num_atoms_, and probe_radius_.

void core::pack::interaction_graph::RotamerDots::print ( std::ostream &  os) const
core::Real core::pack::interaction_graph::RotamerDots::radius_for_attype ( Size const  attype_index)

Same as the above, but skips the conversion from atom index to atom type index.

References radii_.

core::conformation::ResidueCOP core::pack::interaction_graph::RotamerDots::rotamer ( ) const
core::Size core::pack::interaction_graph::RotamerDots::seqpos ( ) const
bool core::pack::interaction_graph::RotamerDots::state_unassigned ( ) const

Is the state of this RotamerDots object unassigned?

References rotamer_.

Referenced by get_sasa(), operator!=(), core::pack::interaction_graph::operator<<(), and print().

void core::pack::interaction_graph::RotamerDots::zero ( )

Zeros out all of the contained data except the rotamer pointer and the radii array.

So far, this function only gets called by the BGNode::prep_for_simA() call so that multiple runs through an interaction graph can be done. If the rotamer dots object on the BGNodes isn't "cleared" after a run, then the run immediately following will have the incorrect counts.

References atom_counts_, atom_sasa_, sasa_, and sasa_is_current_.

Member Data Documentation

utility::vector1< DotSphere > core::pack::interaction_graph::RotamerDots::atom_counts_
private
utility::vector1< core::Real > core::pack::interaction_graph::RotamerDots::atom_sasa_
mutableprivate
utility::vector1< core::Vector > core::pack::interaction_graph::RotamerDots::dot_coords_
staticprivate
ObjexxFCL::FArray2D_int const * core::pack::interaction_graph::RotamerDots::lg_angles_
static

TEMP!

Referenced by initialize_sasa_arrays().

ObjexxFCL::FArray2D_ubyte const * core::pack::interaction_graph::RotamerDots::lg_masks_
static
Size core::pack::interaction_graph::RotamerDots::num_atoms_
private
Size const core::pack::interaction_graph::RotamerDots::num_bytes_ = 21
static
Real core::pack::interaction_graph::RotamerDots::probe_radius_ = 1.4
static
utility::vector1< Real > const* core::pack::interaction_graph::RotamerDots::radii_
private
core::conformation::ResidueCOP core::pack::interaction_graph::RotamerDots::rotamer_
private
core::Real core::pack::interaction_graph::RotamerDots::sasa_
mutableprivate

Referenced by copy(), get_sasa(), operator!=(), and zero().

bool core::pack::interaction_graph::RotamerDots::sasa_arrays_initialized_ = false
staticprivate
bool core::pack::interaction_graph::RotamerDots::sasa_is_current_
mutableprivate

The documentation for this class was generated from the following files: