]> git.donarmstrong.com Git - mothur.git/blob - nmdscommand.h
working on nmds command
[mothur.git] / nmdscommand.h
1 #ifndef NMDSCOMMAND_H
2 #define NMDSCOMMAND_H
3
4 /*
5  *  nmdscommand.h
6  *  mothur
7  *
8  *  Created by westcott on 1/11/11.
9  *  Copyright 2011 Schloss Lab. All rights reserved.
10  *
11  */
12
13 #include "command.hpp"
14 #include "linearalgebra.h"
15
16
17 /*  
18  Translated from the nmds.R code written by Sarah Goslee using,
19  
20  # Non-metric multidimensional scaling function
21  # using the majorization algorithm from
22  # Borg & Groenen 1997, Modern Multidimensional Scaling.
23  #
24  
25  # also referenced (Kruskal 1964)
26  
27  */
28
29 /*****************************************************************/
30 class NMDSCommand : public Command {
31         
32 public:
33         NMDSCommand(string);    
34         NMDSCommand();
35         ~NMDSCommand();
36         vector<string> getRequiredParameters();
37         vector<string> getValidParameters();
38         vector<string> getRequiredFiles();
39         map<string, vector<string> > getOutputFiles() { return outputTypes; }
40         int execute();  
41         void help();
42         
43 private:
44         
45         bool abort, trace;
46         string phylipfile, outputDir, axesfile;
47         int maxdim, mindim, maxIters, iters;
48         double epsilon;
49         vector<string> outputNames;
50         map<string, vector<string> > outputTypes;
51         LinearAlgebra linearCalc;
52         
53         vector< vector<double> > nmdsCalc(vector< vector<double> >&, vector< vector<double> >&, double&);
54         vector< vector<double> > getConfiguration(vector< vector<double> >&, int);
55         vector< vector<double> > generateStartingConfiguration(int, int); //pass in numNames, return axes
56         int normalizeConfiguration(vector< vector<double> >&, int, int);
57         double calculateStress(vector< vector<double> >&, vector< vector<double> >&);
58         vector< vector<double> > readAxes(vector<string>);
59         int output(vector< vector<double> >&, vector<string>&, ofstream&);
60
61         //vector<seqDist> satisfyMonotonicity(vector<seqDist>, vector<int>);
62         //vector< vector<double> > calculateStressGradientVector(vector<seqDist>&, vector<seqDist>&, double, double, vector< vector<double> >&);
63         //double calculateMagnitude(vector< vector<double> >&);
64         //double calculateStep(vector< vector<double> >&, vector< vector<double> >&, vector<double>&);
65         //vector< vector<double> > calculateNewConfiguration(double, vector< vector<double> >&, vector< vector<double> >&);
66         
67 };
68
69 /*****************************************************************/
70
71 #endif
72
73