]> ruin.nu Git - germs.git/commitdiff
adding command line options
authorMichael Andreen <harv@ruin.nu>
Mon, 30 Jul 2007 10:07:13 +0000 (10:07 +0000)
committerMichael Andreen <harv@ruin.nu>
Mon, 30 Jul 2007 10:07:13 +0000 (10:07 +0000)
src/CMakeLists.txt
src/main.cpp

index 16e293676d7c2d98e77fb9237e9e683c3d0b0ae1..88e33de6af4b433140e85868ce304a92220463a8 100644 (file)
@@ -2,7 +2,11 @@ PROJECT(GeneSort)
 
 SET(CMAKE_VERBOSE_MAKEFILE OFF)
 
 
 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_DIRECTORIES(.)
 ADD_LIBRARY(GeneSort geneorder genealgorithms modelidentifier genesorter)
index 5e6a5c99902915cd28e344b4d63eecec0ed8f375..34ac34fbfc54cfa749900b90d337cd3a4b9be66f 100644 (file)
@@ -2,8 +2,12 @@
 #include <vector>
 #include <queue>
 #include <iterator>
 #include <vector>
 #include <queue>
 #include <iterator>
+#include <fstream>
+
 using namespace std;
 
 using namespace std;
 
+#include <unistd.h>
+
 #include "geneorder.h"
 #include "modelidentifier.h"
 #include "genesorter.h"
 #include "geneorder.h"
 #include "modelidentifier.h"
 #include "genesorter.h"
@@ -11,16 +15,51 @@ using namespace std;
 
 typedef pair<ModelIdentifier::Model,double> modelpair;
 
 
 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;
        //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
                     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){
        map<ModelIdentifier::Model,double> scores = mi.identify(go);
        for (map<ModelIdentifier::Model,double>::iterator m = scores.begin();
                        m != scores.end(); ++m){
@@ -32,5 +71,5 @@ int main(){
        //TODO: Sort
        GeneSorter::ActionList al = so.sort(go);
        //TODO: Print result
        //TODO: Sort
        GeneSorter::ActionList al = so.sort(go);
        //TODO: Print result
-       return 0;
+       return EXIT_SUCCESS;
 }
 }