1 #ifndef ALGO_GNOMON___GNOMON_ENGINE__HPP
2 #define ALGO_GNOMON___GNOMON_ENGINE__HPP
3 
4 /*  $Id: gnomon_engine.hpp 556322 2018-01-29 20:11:39Z souvorov $
5  * ===========================================================================
6  *
7  *                            PUBLIC DOMAIN NOTICE
8  *               National Center for Biotechnology Information
9  *
10  *  This software/database is a "United States Government Work" under the
11  *  terms of the United States Copyright Act.  It was written as part of
12  *  the author's official duties as a United States Government employee and
13  *  thus cannot be copyrighted.  This software/database is freely available
14  *  to the public for use. The National Library of Medicine and the U.S.
15  *  Government have not placed any restriction on its use or reproduction.
16  *
17  *  Although all reasonable efforts have been taken to ensure the accuracy
18  *  and reliability of the software and data, the NLM and the U.S.
19  *  Government do not and cannot warrant the performance or results that
20  *  may be obtained by using this software or data. The NLM and the U.S.
21  *  Government disclaim all warranties, express or implied, including
22  *  warranties of performance, merchantability or fitness for any particular
23  *  purpose.
24  *
25  *  Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Authors:  Alexandre Souvorov
30  *
31  * File Description:
32  *
33  */
34 
35 #include <corelib/ncbistd.hpp>
36 #include "gnomon_seq.hpp"
37 #include "hmm.hpp"
38 
39 class CTerminal;
40 class CCodingRegion;
41 class CNonCodingRegion;
42 class CSeqScores;
43 class CParse;
44 
45 BEGIN_NCBI_SCOPE
46 BEGIN_SCOPE(gnomon)
47 
48 struct CGnomonEngine::SGnomonEngineImplData {
49     SGnomonEngineImplData(CConstRef<CHMMParameters> hmm_params, CResidueVec&& sequence, TSignedSeqRange range);
50     SGnomonEngineImplData(CConstRef<CHMMParameters> hmm_params, const CResidueVec& sequence, TSignedSeqRange range);
51     ~SGnomonEngineImplData();
52 
53     CResidueVec       m_seq;
54     CDoubleStrandSeq  m_ds;
55     TSignedSeqRange   m_range;
56     int               m_gccontent;
57 
58     CConstRef<CHMMParameters> m_hmm_params;
59 
60     template<class C>
GetHMMParameterCGnomonEngine::SGnomonEngineImplData61     void GetHMMParameter(const C*& param)
62     {
63         param = dynamic_cast<const C*>( & m_hmm_params->GetParameter(C::class_id(),m_gccontent));
64     }
65 
66     const CWAM_Acceptor<2>*       m_acceptor;
67     const CWAM_Donor<2>*          m_donor;
68     const CWMM_Start*             m_start;
69     const CWAM_Stop*              m_stop;
70     const CMC3_CodingRegion<5>*   m_cdr;
71     const CMC_NonCodingRegion<5>* m_ncdr;
72     const CMC_NonCodingRegion<5>* m_intrg;
73     const CIntronParameters*      m_intron_params;
74     const CIntergenicParameters*  m_intergenic_params;
75     const CExonParameters*        m_exon_params;
76 
77 
78     auto_ptr<CSeqScores>       m_ss;
79     auto_ptr<CParse>           m_parse;
80 };
81 
82 END_SCOPE(gnomon)
83 END_NCBI_SCOPE
84 
85 #endif  // ALGO_GNOMON___GNOMON_ENGINE__HPP
86