]> ruin.nu Git - germs.git/commitdiff
add an option to print the permutation
authorMichael Andreen <harv@ruin.nu>
Wed, 5 Dec 2007 02:26:53 +0000 (03:26 +0100)
committerMichael Andreen <harv@ruin.nu>
Wed, 5 Dec 2007 02:26:53 +0000 (03:26 +0100)
src/main.cpp

index fe581385516cc1133f80a49a9e338211a7a69279..16e7de7768f853eb2de87fde7b7f2923c696d29b 100644 (file)
@@ -21,10 +21,11 @@ int main(int argc, char** argv){
        Model model(0);
        bool detectModel = true;
        bool onlyIdentify = false;
+       bool printPerm = false;
 
        //Parse command line arguments
        int opt;
-       while ((opt = getopt(argc, argv, "im:n:h")) != -1) {
+       while ((opt = getopt(argc, argv, "im:n:hp")) != -1) {
                switch (opt) {
                        case 'm':
                                model = Model::modelFactory(optarg);
@@ -36,6 +37,9 @@ int main(int argc, char** argv){
                        case 'i':
                                onlyIdentify = true;
                                break;
+                       case 'p':
+                               printPerm = true;
+                               break;
                        case 'h':
                                cout << "Usage: " << argv[0] << " [OPTION] [FILE]" << endl
                                        << endl << "  -m <model> Specifies which model to use for sorting: Whirl, X, Zipper, FatX or Cloud "
@@ -97,9 +101,17 @@ int main(int argc, char** argv){
 
        //Print the result
        double score = 0;
+
+       GeneOrder temp(go);
        for (GeneSorter::ActionList::iterator sa = al.begin(); sa != al.end(); ++sa){
-               cout << "Action: " << sa->toString() << " model score: " << model.score(*sa,go) << endl;
-               score += model.score(*sa,go);
+               cout << "Action: " << sa->toString() << " model score: " << model.score(*sa,temp) << endl;
+               (*sa)(temp);
+               score += model.score(*sa,temp);
+
+               if (printPerm){
+                       copy(temp.begin(), temp.end(), ostream_iterator<int>(cout, " "));
+                       cout << endl;
+               }
        }
        cout << "Avg score: " << score / al.size() << endl;