File: AutoModel.C

package info (click to toggle)
ball 1.5.0%2Bgit20180813.37fc53c-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 239,888 kB
  • sloc: cpp: 326,149; ansic: 4,208; python: 2,303; yacc: 1,778; lex: 1,099; xml: 958; sh: 322; makefile: 95
file content (51 lines) | stat: -rw-r--r-- 1,964 bytes parent folder | download | duplicates (4)
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
#include <BALL/FORMAT/commandlineParser.h>
#include <BALL/QSAR/automaticModelCreator.h>
#include <iostream>
#include "version.h"

using namespace BALL;
using namespace BALL::QSAR;
using namespace std;


int main(int argc, char* argv[])
{
	CommandlineParser par("AutoModel","automatically find best QSAR model", VERSION, String(__DATE__), "QuEasy (QSAR)");
	par.registerMandatoryInputFile("i", "input data-file");
	par.registerMandatoryOutputFile("o", "output model file");
	par.registerOptionalDoubleParameter("min_quality", "minimal desired quality (default: 0.3)", 0.3);
	par.setParameterRestrictions("min_quality",0,1);

	String man = "This tool tries to automatically find the best QSAR model for a given data set. \n\nIt therefore applies nested validation, including feature selection, for each available model-type. The model with the best nested prediction quality is saved to the specified output file. However, if the best obtained nested prediction quality is smaller than the value specified by '-min_quality', an error will be shown and no model will be saved.";
	par.setToolManual(man);
	par.setSupportedFormats("i","dat");
	par.setSupportedFormats("o","mod");
	par.parse(argc,argv);

	QSARData input_data;
	input_data.readFromFile(par.get("i"));
	double min_quality = 0.3;

	if (input_data.getNoResponseVariables() < 1)
	{
		Log.error() << "[Error:] QSAR data file supplied for automatic model generation does not contain any response variables !!" << std::endl << "Model Creation aborted." << std::endl;
		return 1;
	}

	String s = par.get("min_quality");
	if(s!=CommandlineParser::NOT_FOUND)
	{
		min_quality = s.toDouble();
	}

	AutomaticModelCreator creator(&input_data);
	creator.setMinQuality(min_quality);
	Model* model = creator.generateModel();

	if(model)
	{
		model->saveToFile(par.get("o"));
		Log.level(20) << "A model with satisfactory prediction quality has been successfully created and saved to file." << endl;
		delete model;
	}
}