NCBI C++ ToolKit
cuBlockExtender.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: cuBlockExtender.hpp 33815 2007-05-04 17:18:18Z kazimird $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author: Charlie
27  *
28  * File Description:
29  *
30  * to extend blocks in a MultipleAlignment
31  *
32  * ===========================================================================
33  */
34 #ifndef CU_BLOCK_EXTENDER_HPP
35 #define CU_BLOCK_EXTENDER_HPP
36 
40 
43 BEGIN_SCOPE(cd_utils)
44 
46 {
47 public:
48  BlockExtender();
50  ~BlockExtender();
51 
52  void setAlignments(MultipleAlignment* ma);
53  void setScoringMatrix(ScoreMatrix* sm);
54  void setNTermExt(int ext);
55  void setCTermExt(int ext);
56  bool setMatrixForExtensionScores(double** matrix, int matrixSize);
57 
58  //workhorse method
59  bool extendOnePair(int primaryRow, int secondaryRow);
60  void extendAllPairs();
61 
62  //BlockModel& getExtendedBlocks(int primaryRow, int secondaryRow)const;
63  int getTotalLengthExtended(int primaryRow, int secondaryRow)const;
64  bool isThisPairExtended(int primaryRow, int secondaryRow)const;
65  /*
66  BlockExtensionMatrix* subset();
67  */
68  int findCommonExtension(const vector<int>& rows);
69 
70 private:
71 
72  typedef pair<Block, int> ScoringTerm;
73  inline double scoreBlockPair(const ScoringTerm& term1, const ScoringTerm& term);
74  inline bool getScoringTerm(BlockModel& bm, int blockNum, int nExt, int cExt, ScoringTerm& st);
75  inline double optimizeBlockScore(int row1, int row2, int block, int& extension);
76  // same as above except returns the modified block models.
77  double optimizeBlockScore(int row1, int row2, int block, BlockModel& bm1, BlockModel& bm2, int& extension);
78 
80  int m_numRows;
84  int m_nExt;
85  int m_cExt;
87  std::vector< std::string > m_sequences;
88 };
89 
90 END_SCOPE(cd_utils)
92 
93 #endif
MultipleAlignment * m_src
double ** m_extensionScores
pair< Block, int > ScoringTerm
int ** m_extensibilities
BlockModel ** m_extendedBlocks
std::vector< std::string > m_sequences
ScoreMatrix * m_scoringMatrix
USING_SCOPE(objects)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define END_SCOPE(ns)
End the previously defined scope.
Definition: ncbistl.hpp:75
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
#define BEGIN_SCOPE(ns)
Define a new scope.
Definition: ncbistl.hpp:72
#define NCBI_CDUTILS_EXPORT
Definition: ncbi_export.h:376
#include<zmmintrin.h>
Definition: bm.h:78
Modified on Wed Apr 24 14:15:28 2024 by modify_doxy.py rev. 669887