-
Notifications
You must be signed in to change notification settings - Fork 281
Expand file tree
/
Copy pathEasyLinclust.cpp
More file actions
88 lines (78 loc) · 3.68 KB
/
EasyLinclust.cpp
File metadata and controls
88 lines (78 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <cassert>
#include "FileUtil.h"
#include "CommandCaller.h"
#include "Util.h"
#include "Debug.h"
#include "Parameters.h"
namespace linclust {
#include "easycluster.sh.h"
}
void setEasyLinclustDefaults(Parameters *p) {
p->spacedKmer = MultiParam<NuclAA<int>>(NuclAA<int>(0, 0));
p->removeTmpFiles = true;
p->covThr = 0.8;
p->evalThr = 0.001;
p->createdbMode = Parameters::SEQUENCE_SPLIT_MODE_SOFT;
p->writeLookup = false;
//p->alignmentMode = Parameters::ALIGNMENT_MODE_SCORE_COV_SEQID;
p->orfStartMode = 1;
p->orfMinLength = 10;
p->orfMaxLength = 32734;
p->evalProfile = 0.1;
}
void setEasyLinclustMustPassAlong(Parameters *p) {
p->PARAM_SPACED_KMER_MODE.wasSet = true;
p->PARAM_REMOVE_TMP_FILES.wasSet = true;
p->PARAM_C.wasSet = true;
p->PARAM_E.wasSet = true;
//p->PARAM_ALIGNMENT_MODE.wasSet = true;
p->PARAM_ORF_START_MODE.wasSet = true;
p->PARAM_ORF_MIN_LENGTH.wasSet = true;
p->PARAM_ORF_MAX_LENGTH.wasSet = true;
p->PARAM_E_PROFILE.wasSet = true;
}
int easylinclust(int argc, const char **argv, const Command &command) {
Parameters &par = Parameters::getInstance();
par.PARAM_ADD_BACKTRACE.addCategory(MMseqsParameter::COMMAND_EXPERT);
par.PARAM_ALT_ALIGNMENT.addCategory(MMseqsParameter::COMMAND_EXPERT);
par.PARAM_RESCORE_MODE.addCategory(MMseqsParameter::COMMAND_EXPERT);
par.PARAM_ZDROP.addCategory(MMseqsParameter::COMMAND_EXPERT);
par.PARAM_MAX_REJECTED.addCategory(MMseqsParameter::COMMAND_EXPERT);
par.PARAM_MAX_ACCEPT.addCategory(MMseqsParameter::COMMAND_EXPERT);
par.overrideParameterDescription(par.PARAM_S, "Sensitivity will be automatically determined but can be adjusted", NULL, par.PARAM_S.category | MMseqsParameter::COMMAND_EXPERT);
par.PARAM_INCLUDE_ONLY_EXTENDABLE.addCategory(MMseqsParameter::COMMAND_EXPERT);
for (size_t i = 0; i < par.createdb.size(); i++){
par.createdb[i]->addCategory(MMseqsParameter::COMMAND_EXPERT);
}
par.PARAM_COMPRESSED.removeCategory(MMseqsParameter::COMMAND_EXPERT);
par.PARAM_THREADS.removeCategory(MMseqsParameter::COMMAND_EXPERT);
par.PARAM_V.removeCategory(MMseqsParameter::COMMAND_EXPERT);
setEasyLinclustDefaults(&par);
par.parseParameters(argc, argv, command, true, Parameters::PARSE_VARIADIC, 0);
setEasyLinclustMustPassAlong(&par);
std::string tmpDir = par.filenames.back();
std::string hash = SSTR(par.hashParameter(command.databases, par.filenames, *command.params));
if (par.reuseLatest) {
hash = FileUtil::getHashFromSymLink(tmpDir + "/latest");
}
tmpDir = FileUtil::createTemporaryDirectory(tmpDir, hash);
par.filenames.pop_back();
CommandCaller cmd;
cmd.addVariable("TMP_PATH", tmpDir.c_str());
cmd.addVariable("RESULTS", par.filenames.back().c_str());
par.filenames.pop_back();
cmd.addVariable("REMOVE_TMP", par.removeTmpFiles ? "TRUE" : NULL);
cmd.addVariable("RUNNER", par.runner.c_str());
cmd.addVariable("CREATEDB_PAR", par.createParameterString(par.createdb).c_str());
cmd.addVariable("CLUSTER_PAR", par.createParameterString(par.linclustworkflow, true).c_str());
cmd.addVariable("CLUSTER_MODULE", "linclust");
cmd.addVariable("RESULT2REPSEQ_PAR", par.createParameterString(par.result2repseq).c_str());
cmd.addVariable("THREADS_PAR", par.createParameterString(par.onlythreads).c_str());
cmd.addVariable("VERBOSITY_PAR", par.createParameterString(par.onlyverbosity).c_str());
std::string program = tmpDir + "/easycluster.sh";
FileUtil::writeFile(program, linclust::easycluster_sh, linclust::easycluster_sh_len);
cmd.execProgram(program.c_str(), par.filenames);
// Should never get here
assert(false);
return 0;
}