Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
T_Alignment_engine_structures< StructureType, AlignerAlgorithm, FT, MolecularDistance > Class Template Reference

Base engine for making alignments between structures. Base engine for making alignments between structures. More...

#include <Alignment_engine_structures.hpp>

Public Types

typedef Base::Alignment_unit Alignment_unit
 Type for a unit (e.g residue or nucleotid) More...
 
typedef Base::Alignment_unit_rep Alignment_unit_rep
 Representation of a unit for index purposes. More...
 
typedef Base::Alignment_unit_name Alignment_unit_name
 Representation of the name of a unit. More...
 
typedef Base::Score_type Score_type
 Representation of the score of the algorithm. More...
 
typedef Base::Aligned_pair Aligned_pair
 Representation of two aligned units. More...
 
typedef Base::Alignment_type Alignment_type
 Representation of an alignment as a sequence of aligned units. More...
 
typedef Base::Substitution_matrix Substitution_matrix
 Representation of the storage of values of the subtitution matrix. More...
 
typedef Base::Matrix_function Matrix_function
 Functor for the substitution matrix. Is imposed the following properties: (i) symmetry, (ii) undefined values are 0. Thus, it is just enough to specify non null values on only one triangle of the matrix. More...
 
typedef Base::Sequence_length_type Sequence_length_type
 Enum for selecting the length of the sequence to consider when computing the similarity / identity percentages. More...
 
typedef std::vector< std::vector< FT > > Distance_difference_matrix
 DDM for computing the dRMSD. More...
 
typedef CGAL::Cartesian_d< FT >::Point_d Conformation
 Data type representing a conformation used in the lRMSD computation (constructor takes (dimension, begin_coordinates, end_coordinates)). More...
 
typedef StructureType Sequence_or_structure
 Type for representing the sequences or the structures to align.
More...
 
typedef AlignerAlgorithm Aligner_algorithm
 Core algorithm performing the alignment. More...
 
typedef std::pair< Alignment_unit_name, Alignment_unit_nameName_pair
 Representation of two unit names. More...
 

Constructors

 T_Alignment_engine_structures (const StructureType &struct_1, const StructureType &struct_2, const AlignerAlgorithm &aligner=AlignerAlgorithm())
 Constructor initializing the input structures and possibly the aligner algorithm. More...
 

Overloaded Algorithm

void align (void)
 
void align (unsigned verbose, std::ostream &out)
 

Structures Analysis

const Distance_difference_matrixget_distance_difference_matrix (void)
 
FT get_dRMSD (void)
 
FT get_lRMSD (void)
 
void statistics (std::ostream &out, Sequence_length_type type)
 

Accessors

const AlignerAlgorithm & get_aligner (void) const
 
AlignerAlgorithm & get_aligner (void)
 
const StructureType & get_first_sos (void) const
 Returns the first sequence or structure of the alignment. More...
 
const StructureType & get_second_sos (void) const
 Returns the second sequence or structure of the alignment. More...
 

Outputs

const Score_typeget_score (void) const
 
Score_typeget_score (void)
 
Alignment_typeget_alignment (void)
 
const Alignment_typeget_alignment (void) const
 

Analysis

void set_substitution_matrix (const Substitution_matrix &matrix)
 The input is a map from pairs of Alignment_unit_name to the associated score. Note that by construction, it is enough to specify non null values on a half of the matrix, diagonal excluded. More...
 
void load_substitution_matrix (const std::string &matrix_filename, unsigned nb_units_names)
 Loads directly the substitution matrix from a file of the format : Alignment_unit_name Alignment_unit_name Value. If duplicated values, the last one is taken. More...
 
void set_blosum_30 (void)
 Set the current matrix as the BLOSUM30 matrix as defined in Seqan 2.0. More...
 
void set_blosum_45 (void)
 Set the current matrix as the BLOSUM45 matrix as defined in Seqan 2.0. More...
 
void set_blosum_62 (void)
 Set the current matrix as the BLOSUM62 matrix as defined in Seqan 2.0. More...
 
void set_blosum_80 (void)
 Set the current matrix as the BLOSUM80 matrix as defined in Seqan 2.0. More...
 
void set_pam_40 (void)
 Set the current matrix as the PAM40 matrix as defined in Seqan 2.0. More...
 
void set_pam_120 (void)
 Set the current matrix as the PAM120 matrix as defined in Seqan 2.0. More...
 
void set_pam_200 (void)
 Set the current matrix as the PAM200 matrix as defined in Seqan 2.0. More...
 
void set_pam_250 (void)
 Set the current matrix as the PAM250 matrix as defined in Seqan 2.0. More...
 
void set_vtml_200 (void)
 Set the current matrix as the VTML200 matrix as defined in Seqan 2.0. More...
 
void set_standard_substitution_matrix (SBL::CSB::Alignment_substitution_matrix_type matrix_type)
 Set the current matrix as one of the standard substitution matrices. More...
 
Substitution_matrixget_substitution_matrix (void)
 
double get_substitution_score (const Alignment_unit_name &p, const Alignment_unit_name &q) const
 
double get_identity_percentage (Sequence_length_type type=ALIGNMENT_SEQUENCE_LENGTH) const
 
double get_similarity_percentage (Sequence_length_type type=ALIGNMENT_SEQUENCE_LENGTH) const
 
void statistics (std::ostream &out, Sequence_length_type type) const
 
void print_alignment_txt (std::ostream &out) const
 Print the alignment in txt format. More...
 
void print_alignment_dot (std::ostream &out) const
 Print the alignment as a dot graph. More...
 

Detailed Description

template<class StructureType, class AlignerAlgorithm, class FT = double, class MolecularDistance = T_Least_RMSD_cartesian<typename CGAL::Cartesian_d<FT>::Point_d>>
class SBL::CSB::T_Alignment_engine_structures< StructureType, AlignerAlgorithm, FT, MolecularDistance >

Base engine for making alignments between structures. Base engine for making alignments between structures.

It inherits from the generic interface for all alignments and provide its base functionality. It also implements functionality specific to structural alignments, in particular for anaylzing and comparing alignments. The specific functionality concerns:

  • the molecular distance between the two aligned structures (e.g the lRMSD),
  • the Distance Difference Matrix (DDM),
  • the dRMSD of the alignment.

Due to geometric nature of the structural alignment, the structure type requires that its units define 3D coordinates, i.e the Alignment_unit defines methods x(), y() and z().

Template Parameters
StructureTypeRepresentation of a structure : it requires in particular to define the type Alignment_unit for the geometric representation of a unit to align (e.g a residue or a nucleotid with associated 3D coordinates), the type Alignment_unit indexing the units in the structure, the method size() to return the length of the sequence, and the operator [Alignment_unit_rep] for accessing to the corresponding unit of the structure.
AlignerAlgorithmBase functor for the algorithm that makes the alignment between the two input structures : it requires to define a type Score_type for the score (e.g a double, or a pair of doubles if two scores are required), to take two input structures and an output iterator over pairs of Alignment_unit_rep for the output alignment, and to return the score of the algorithm
FTNumber type representation used for all statistics except the algorithm score.
MolecularDistanceDistance functor between two molecular structures (default is lRMSD).

Member Typedef Documentation

◆ Aligned_pair

Representation of two aligned units.

◆ Aligner_algorithm

typedef AlignerAlgorithm Aligner_algorithm
inherited

Core algorithm performing the alignment.

◆ Alignment_type

Representation of an alignment as a sequence of aligned units.

◆ Alignment_unit

Type for a unit (e.g residue or nucleotid)

◆ Alignment_unit_name

Representation of the name of a unit.

◆ Alignment_unit_rep

Representation of a unit for index purposes.

◆ Conformation

typedef CGAL::Cartesian_d<FT>::Point_d Conformation

Data type representing a conformation used in the lRMSD computation (constructor takes (dimension, begin_coordinates, end_coordinates)).

◆ Distance_difference_matrix

typedef std::vector<std::vector<FT> > Distance_difference_matrix

DDM for computing the dRMSD.

◆ Matrix_function

Functor for the substitution matrix. Is imposed the following properties: (i) symmetry, (ii) undefined values are 0. Thus, it is just enough to specify non null values on only one triangle of the matrix.

◆ Name_pair

typedef std::pair<Alignment_unit_name, Alignment_unit_name> Name_pair
inherited

Representation of two unit names.

◆ Score_type

Representation of the score of the algorithm.

◆ Sequence_length_type

Enum for selecting the length of the sequence to consider when computing the similarity / identity percentages.

◆ Sequence_or_structure

typedef StructureType Sequence_or_structure
inherited

Type for representing the sequences or the structures to align.

◆ Substitution_matrix

Representation of the storage of values of the subtitution matrix.

Constructor & Destructor Documentation

◆ T_Alignment_engine_structures()

T_Alignment_engine_structures ( const StructureType &  struct_1,
const StructureType &  struct_2,
const AlignerAlgorithm &  aligner = AlignerAlgorithm() 
)
inline

Constructor initializing the input structures and possibly the aligner algorithm.

Member Function Documentation

◆ get_first_sos()

const StructureType & get_first_sos ( void  ) const
inlineinherited

Returns the first sequence or structure of the alignment.

◆ get_second_sos()

const StructureType & get_second_sos ( void  ) const
inlineinherited

Returns the second sequence or structure of the alignment.

◆ load_substitution_matrix()

void load_substitution_matrix ( const std::string &  matrix_filename,
unsigned  nb_units_names 
)
inlineinherited

Loads directly the substitution matrix from a file of the format : Alignment_unit_name Alignment_unit_name Value. If duplicated values, the last one is taken.

◆ print_alignment_dot()

void print_alignment_dot ( std::ostream &  out) const
inlineinherited

Print the alignment as a dot graph.

◆ print_alignment_txt()

void print_alignment_txt ( std::ostream &  out) const
inlineinherited

Print the alignment in txt format.

◆ set_blosum_30()

void set_blosum_30 ( void  )
inlineinherited

Set the current matrix as the BLOSUM30 matrix as defined in Seqan 2.0.

◆ set_blosum_45()

void set_blosum_45 ( void  )
inlineinherited

Set the current matrix as the BLOSUM45 matrix as defined in Seqan 2.0.

◆ set_blosum_62()

void set_blosum_62 ( void  )
inlineinherited

Set the current matrix as the BLOSUM62 matrix as defined in Seqan 2.0.

◆ set_blosum_80()

void set_blosum_80 ( void  )
inlineinherited

Set the current matrix as the BLOSUM80 matrix as defined in Seqan 2.0.

◆ set_pam_120()

void set_pam_120 ( void  )
inlineinherited

Set the current matrix as the PAM120 matrix as defined in Seqan 2.0.

◆ set_pam_200()

void set_pam_200 ( void  )
inlineinherited

Set the current matrix as the PAM200 matrix as defined in Seqan 2.0.

◆ set_pam_250()

void set_pam_250 ( void  )
inlineinherited

Set the current matrix as the PAM250 matrix as defined in Seqan 2.0.

◆ set_pam_40()

void set_pam_40 ( void  )
inlineinherited

Set the current matrix as the PAM40 matrix as defined in Seqan 2.0.

◆ set_standard_substitution_matrix()

void set_standard_substitution_matrix ( SBL::CSB::Alignment_substitution_matrix_type  matrix_type)
inlineinherited

Set the current matrix as one of the standard substitution matrices.

◆ set_substitution_matrix()

void set_substitution_matrix ( const Substitution_matrix matrix)
inlineinherited

The input is a map from pairs of Alignment_unit_name to the associated score. Note that by construction, it is enough to specify non null values on a half of the matrix, diagonal excluded.

◆ set_vtml_200()

void set_vtml_200 ( void  )
inlineinherited

Set the current matrix as the VTML200 matrix as defined in Seqan 2.0.