1 #ifndef NGALIGN_INTERFACE__HPP 2 #define NGALIGN_INTERFACE__HPP 3 4 /* $Id: ngalign_interface.hpp 408317 2013-07-29 18:47:05Z grichenk $ 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: Nathan Bouk 30 * 31 * File Description: 32 * 33 */ 34 35 #include <corelib/ncbistd.hpp> 36 #include <corelib/ncbiobj.hpp> 37 #include <objects/seqloc/Na_strand.hpp> 38 39 #include <algo/align/ngalign/result_set.hpp> 40 41 42 BEGIN_NCBI_SCOPE 43 44 BEGIN_SCOPE(objects) 45 class CScope; 46 class CSeq_align; 47 class CSeq_align_set; 48 class CSeq_id; 49 END_SCOPE(objects) 50 51 BEGIN_SCOPE(blast) 52 class IQueryFactory; 53 class CLocalDbAdapter; 54 class CBlastOptionsHandle; 55 class CSearchResultSet; 56 class CSearchResults; 57 END_SCOPE(blast) 58 59 class CSeqMasker; 60 61 62 typedef CRef<objects::CSeq_align_set> TAlignSetRef; 63 typedef CRef<blast::CSearchResultSet> TResultsSetRef; 64 typedef CRef<CAlignResultsSet> TAlignResultsRef; 65 66 67 class ISequenceSet : public CObject 68 { 69 public: 70 virtual CRef<blast::IQueryFactory> CreateQueryFactory( 71 objects::CScope& Scope, const blast::CBlastOptionsHandle& BlastOpts) = 0; 72 virtual CRef<blast::IQueryFactory> CreateQueryFactory( 73 objects::CScope& Scope, const blast::CBlastOptionsHandle& BlastOpts, 74 const CAlignResultsSet& Alignments, int Threshold) = 0; 75 virtual CRef<blast::CLocalDbAdapter> CreateLocalDbAdapter( 76 objects::CScope& Scope, const blast::CBlastOptionsHandle& BlastOpts) = 0; 77 }; 78 79 80 81 class IAlignmentFactory : public CObject 82 { 83 public: 84 virtual string GetName() const = 0; 85 virtual TAlignResultsRef GenerateAlignments(objects::CScope& Scope, 86 ISequenceSet* Querys, 87 ISequenceSet* Subjects, 88 TAlignResultsRef AccumResults) = 0; 89 }; 90 91 92 // Low Ranks are better. 93 class IAlignmentFilter : public CObject 94 { 95 public: 96 virtual void FilterAlignments(TAlignResultsRef In, 97 TAlignResultsRef Out, 98 objects::CScope& Scope) = 0; 99 virtual unsigned int GetFilterRank() const = 0; 100 101 static const char* KFILTER_SCORE; 102 }; 103 104 105 106 class IAlignmentScorer : public CObject 107 { 108 public: 109 virtual void ScoreAlignments(TAlignResultsRef Alignments, 110 objects::CScope& Scope) = 0; 111 }; 112 113 114 115 116 END_NCBI_SCOPE 117 118 #endif 119