include/algo/align/ngalign/blast_aligner.hpp

Go to the documentation of this file.
00001 #ifndef NGALIGN_BLAST_ALIGNER__HPP
00002 #define NGALIGN_BLAST_ALIGNER__HPP
00003 
00004 /*  $Id: blast_aligner.hpp 172202 2009-10-01 19:10:13Z boukn $
00005  * ===========================================================================
00006  *
00007  *                            PUBLIC DOMAIN NOTICE
00008  *               National Center for Biotechnology Information
00009  *
00010  *  This software/database is a "United States Government Work" under the
00011  *  terms of the United States Copyright Act.  It was written as part of
00012  *  the author's official duties as a United States Government employee and
00013  *  thus cannot be copyrighted.  This software/database is freely available
00014  *  to the public for use. The National Library of Medicine and the U.S.
00015  *  Government have not placed any restriction on its use or reproduction.
00016  *
00017  *  Although all reasonable efforts have been taken to ensure the accuracy
00018  *  and reliability of the software and data, the NLM and the U.S.
00019  *  Government do not and cannot warrant the performance or results that
00020  *  may be obtained by using this software or data. The NLM and the U.S.
00021  *  Government disclaim all warranties, express or implied, including
00022  *  warranties of performance, merchantability or fitness for any particular
00023  *  purpose.
00024  *
00025  *  Please cite the author in any work or product based on this material.
00026  *
00027  * ===========================================================================
00028  *
00029  * Authors:  Nathan Bouk
00030  *
00031  * File Description:
00032  *
00033  */
00034 
00035 #include <corelib/ncbistd.hpp>
00036 #include <corelib/ncbiobj.hpp>
00037 #include <objects/seqloc/Na_strand.hpp>
00038 
00039 #include <objects/seqloc/Seq_loc.hpp>
00040 #include <objects/seqloc/Seq_id.hpp>
00041 #include <objmgr/scope.hpp>
00042 #include <algo/blast/api/blast_types.hpp>
00043 #include <algo/blast/api/bl2seq.hpp>
00044 #include <algo/blast/api/blast_options_handle.hpp>
00045 #include <algo/blast/api/blast_nucl_options.hpp>
00046 #include <objects/seqalign/Seq_align.hpp>
00047 #include <objects/seqalign/Seq_align_set.hpp>
00048 #include <objects/seqalign/Dense_seg.hpp>
00049 
00050 #include <algo/blast/api/blast_types.hpp>
00051 #include <algo/blast/api/blast_options_handle.hpp>
00052 #include <algo/blast/api/sseqloc.hpp>
00053 
00054 #include <algo/align/ngalign/ngalign_interface.hpp>
00055 
00056 BEGIN_NCBI_SCOPE
00057 
00058 BEGIN_SCOPE(objects)
00059     class CScope;
00060     class CSeq_align;
00061     class CSeq_align_set;
00062     class CSeq_id;
00063     class CDense_seg;
00064 END_SCOPE(objects)
00065 
00066 BEGIN_SCOPE(blast)
00067     class SSeqLoc;
00068     class CBlastOptionsHandle;
00069 END_SCOPE(blast)
00070 
00071 
00072 
00073 
00074 class CBlastArgs
00075 {
00076 public:
00077     static void s_CreateBlastArgDescriptions(CArgDescriptions& ArgDesc);
00078     static CRef<blast::CBlastOptionsHandle> s_ExtractBlastArgs(CArgs& Args);
00079     static CRef<blast::CBlastOptionsHandle> s_CreateBlastOptions(const string& Params);
00080 private:
00081     static void x_ParseOptionsString(const string& Params, vector<string>& Tokens);
00082 };
00083 
00084 
00085 class CBlastAligner : public IAlignmentFactory
00086 {
00087 public:
00088     CBlastAligner(blast::CBlastOptionsHandle& Options, int Threshold)
00089         : m_BlastOptions(&Options), m_Threshold(Threshold), m_Filter(0) { ; }
00090 
00091     CBlastAligner(const string& Params, int Threshold)
00092         : m_BlastOptions(CBlastArgs::s_CreateBlastOptions(Params))
00093         , m_Threshold(Threshold), m_Filter(0) { ; }
00094 
00095 
00096     TAlignResultsRef GenerateAlignments(objects::CScope& Scope,
00097                                         ISequenceSet* QuerySet,
00098                                         ISequenceSet* SubjectSet,
00099                                         TAlignResultsRef AccumResults);
00100 
00101     void SetSoftFiltering(int Filter) { m_Filter = Filter; }
00102 
00103     typedef CRef<blast::CBlastOptionsHandle> TBlastOptionsRef;
00104     typedef CRef<CBlastAligner> TBlastAlignerRef;
00105 
00106     static list<TBlastAlignerRef> CreateBlastAligners(list<TBlastOptionsRef>& Options, int Threshold);
00107     static list<TBlastAlignerRef> CreateBlastAligners(const list<string>& Params, int Threshold);
00108 
00109 private:
00110 
00111     CRef<blast::CBlastOptionsHandle> m_BlastOptions;
00112     int m_Threshold;
00113     int m_Filter;
00114 };
00115 
00116 
00117 END_NCBI_SCOPE
00118 
00119 #endif
00120 
00121 

Generated on Sun Dec 6 21:55:27 2009 for NCBI C++ ToolKit by  doxygen 1.4.6
Modified on Mon Dec 07 16:20:32 2009 by modify_doxy.py rev. 173732