SET(CMAKE_VERBOSE_MAKEFILE OFF)
-ADD_DEFINITIONS(-Wall -g)
+ADD_DEFINITIONS(-Wall -pedantic -g -D_GLIBCXX_DEBUG)
+
+#INCLUDE(CheckCXXSourceCompiles)
+
+#CheckCXXSourceCompiles(test HAVE_TR1)
INCLUDE_DIRECTORIES(.)
ADD_LIBRARY(GeneSort geneorder genealgorithms modelidentifier genesorter)
#include <vector>
#include <queue>
#include <iterator>
+#include <fstream>
+
using namespace std;
+#include <unistd.h>
+
#include "geneorder.h"
#include "modelidentifier.h"
#include "genesorter.h"
typedef pair<ModelIdentifier::Model,double> modelpair;
-int main(){
+int main(int argc, char** argv){
+
+ string ann = "default.ann";
+ int opt;
+ while ((opt = getopt(argc, argv, "n:h")) != -1) {
+ switch (opt) {
+ case 'n':
+ ann = optarg;
+ break;
+ case 'h':
+ cout << "Usage: " << argv[0] << " [OPTION] [FILE]" << endl
+ << endl << " -n <ann> Specifies which artificial neural network to use for identification. '" << ann << "' is used by default"
+ << endl << " -h Prints this help message"
+ << endl << endl
+ << "With no FILE, or if FILE is '-', stdin will be used"
+ << endl;
+ exit(EXIT_SUCCESS);
+ break;
+ default: /* '?' */
+ cerr << "Usage: " << argv[0] << " [-n <ann>] [-h] [FILE]" << endl;
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ istream* in;
+ ifstream file;
+ if (optind == argc || *argv[optind] == '-'){
+ in = &cin;
+ }else{
+ file.open(argv[optind]);
+ if (file.fail()){
+ cerr << "Could not open file: '" << argv[optind] << "'" << endl;
+ exit(EXIT_FAILURE);
+ }
+ in = &file;
+ }
//TODO: Parse
vector<Gene> g;
- copy(istream_iterator<int>(cin), istream_iterator<int>(),
+ copy(istream_iterator<int>(*in), istream_iterator<int>(),
back_inserter(g));
GeneOrder go(g.begin(),g.end());
//TODO: Identify
- ModelIdentifier mi("default.ann");
+ ModelIdentifier mi(ann);
map<ModelIdentifier::Model,double> scores = mi.identify(go);
for (map<ModelIdentifier::Model,double>::iterator m = scores.begin();
m != scores.end(); ++m){
//TODO: Sort
GeneSorter::ActionList al = so.sort(go);
//TODO: Print result
- return 0;
+ return EXIT_SUCCESS;
}