1 /*  $Id: rmblastn_args.cpp 500404 2016-05-04 14:59:01Z camacho $
2  * ===========================================================================
3  *
4  *                            PUBLIC DOMAIN NOTICE
5  *
6  * ===========================================================================
7  *
8  * Author: Robert M. Hubley
9  *         Shameless based on the work of Christiam Camacho in
10  *           rmblastn_args.cpp
11  *
12  */
13 
14 /** @file rmblastn_args.cpp
15  * Implementation of the RMBLASTN command line arguments
16  */
17 
18 
19 #include <ncbi_pch.hpp>
20 #include <algo/blast/blastinput/rmblastn_args.hpp>
21 #include <algo/blast/api/disc_nucl_options.hpp>
22 #include <algo/blast/api/blast_exception.hpp>
23 #include <algo/blast/blastinput/blast_input_aux.hpp>
24 
25 BEGIN_NCBI_SCOPE
26 BEGIN_SCOPE(blast)
27 USING_SCOPE(objects);
28 
CRMBlastnAppArgs()29 CRMBlastnAppArgs::CRMBlastnAppArgs()
30 {
31     CRef<IBlastCmdLineArgs> arg;
32     // Something appears to be overriding this
33     arg.Reset(new CProgramDescriptionArgs("rmblastn",
34                                           "Nucleotide-Nucleotide BLAST with RepeatMasker Extensions"));
35     const bool kQueryIsProtein = false;
36     m_Args.push_back(arg);
37 
38     // Don't want the greedy megablast...no howdy doody
39     static const string kDefaultTask = "rmblastn";
40     SetTask(kDefaultTask);
41     set<string> tasks
42         (CBlastOptionsFactory::GetTasks(CBlastOptionsFactory::eNuclNucl));
43     arg.Reset(new CTaskCmdLineArgs(tasks, kDefaultTask));
44     m_Args.push_back(arg);
45 
46     m_BlastDbArgs.Reset(new CBlastDatabaseArgs);
47     arg.Reset(m_BlastDbArgs);
48     m_Args.push_back(arg);
49 
50     m_StdCmdLineArgs.Reset(new CStdCmdLineArgs);
51     arg.Reset(m_StdCmdLineArgs);
52     m_Args.push_back(arg);
53 
54     arg.Reset(new CGenericSearchArgs(kQueryIsProtein, false, true));
55     m_Args.push_back(arg);
56 
57     arg.Reset(new CNuclArgs);
58     m_Args.push_back(arg);
59 
60     arg.Reset(new CDiscontiguousMegablastArgs);
61     m_Args.push_back(arg);
62 
63     arg.Reset(new CFilteringArgs(kQueryIsProtein));
64     m_Args.push_back(arg);
65 
66     // RMH: Wasn't previously an option in blastn
67     arg.Reset(new CRMBlastNArg );
68     m_Args.push_back(arg);
69 
70     arg.Reset(new CGappedArgs);
71     m_Args.push_back(arg);
72 
73     m_HspFilteringArgs.Reset(new CHspFilteringArgs);
74     arg.Reset(m_HspFilteringArgs);
75     m_Args.push_back(arg);
76 
77     arg.Reset(new CWindowSizeArg);
78     m_Args.push_back(arg);
79 
80     arg.Reset(new CMbIndexArgs);
81     m_Args.push_back(arg);
82 
83     m_QueryOptsArgs.Reset(new CQueryOptionsArgs(kQueryIsProtein));
84     arg.Reset(m_QueryOptsArgs);
85     m_Args.push_back(arg);
86 
87     m_FormattingArgs.Reset(new CFormattingArgs);
88     arg.Reset(m_FormattingArgs);
89     m_Args.push_back(arg);
90 
91     m_MTArgs.Reset(new CMTArgs);
92     arg.Reset(m_MTArgs);
93     m_Args.push_back(arg);
94 
95     m_RemoteArgs.Reset(new CRemoteArgs);
96     arg.Reset(m_RemoteArgs);
97     m_Args.push_back(arg);
98 
99     m_DebugArgs.Reset(new CDebugArgs);
100     arg.Reset(m_DebugArgs);
101     m_Args.push_back(arg);
102 }
103 
104 CRef<CBlastOptionsHandle>
x_CreateOptionsHandle(CBlastOptions::EAPILocality locality,const CArgs & args)105 CRMBlastnAppArgs::x_CreateOptionsHandle(CBlastOptions::EAPILocality locality,
106                                       const CArgs& args)
107 {
108     CRef<CBlastOptionsHandle> retval =
109         x_CreateOptionsHandleWithTask(locality, args[kTask].AsString());
110     return retval;
111 }
112 
113 int
GetQueryBatchSize() const114 CRMBlastnAppArgs::GetQueryBatchSize() const
115 {
116     return blast::GetQueryBatchSize(ProgramNameToEnum(GetTask()));
117 }
118 
119 END_SCOPE(blast)
120 END_NCBI_SCOPE
121 
122