]> git.donarmstrong.com Git - mothur.git/blobdiff - nmdscommand.h
fixes while testing 1.33.0
[mothur.git] / nmdscommand.h
index 5e4e65596a05a91cfdc6824db1b4086303a0f8e3..92b694864a6d15f5b5dc20f176a271a7506ae6eb 100644 (file)
 #include "linearalgebra.h"
 
 
-/*  references used to make this command: "Nonmetric Multidimensional Scalling: A Numerical Method"
- by J. B. Kruskal  Psychometrika - Vol 29, No. 2 June 1964 */
+/*  
+ Translated from the nmds.R code written by Sarah Goslee using,
+ # Non-metric multidimensional scaling function
+ # using the majorization algorithm from
+ # Borg & Groenen 1997, Modern Multidimensional Scaling.
+ #
+ # also referenced (Kruskal 1964)
+ */
 
 /*****************************************************************/
 class NMDSCommand : public Command {
@@ -23,34 +32,36 @@ class NMDSCommand : public Command {
 public:
        NMDSCommand(string);    
        NMDSCommand();
-       ~NMDSCommand();
-       vector<string> getRequiredParameters();
-       vector<string> getValidParameters();
-       vector<string> getRequiredFiles();
-       map<string, vector<string> > getOutputFiles() { return outputTypes; }
-       int execute();  
-       void help();
+       ~NMDSCommand(){}
+       
+       vector<string> setParameters();
+       string getCommandName()                 { return "nmds";                                        }
+       string getCommandCategory()             { return "Hypothesis Testing";          }
+       
+       string getHelpString(); 
+    string getOutputPattern(string);   
+       string getCitation() { return "Borg, Groenen (1997). Non-metric multidimensional scaling function using the majorization algorithm, in Modern Multidimensional Scaling. Ed. T.F. Cox and M.A.A. Cox. Chapman and Hall. \nhttp://www.mothur.org/wiki/Nmds"; }
+       string getDescription()         { return "nmds"; }
+
+       int execute();
+       void help() { m->mothurOut(getHelpString()); }
        
 private:
        
        bool abort;
        string phylipfile, outputDir, axesfile;
-       int dimension, maxIters;
-       double step, cutoff;
+       int maxdim, mindim, maxIters, iters;
+       double epsilon;
        vector<string> outputNames;
-       map<string, vector<string> > outputTypes;
        LinearAlgebra linearCalc;
        
-       vector< vector<double> > generateStartingConfiguration(int); //pass in numNames, return axes
-       int normalizeConfiguration(vector< vector<double> >&, int);
-       vector<seqDist> satisfyMonotonicity(vector<seqDist>);
-       double calculateStress(vector<seqDist>&, vector<seqDist>&, double&);
-       vector< vector<double> > calculateStressGradientVector(vector<seqDist>&, vector<seqDist>&, double, double, vector< vector<double> >&);
-       double calculateMagnitude(vector< vector<double> >&);
-       double calculateStep(vector< vector<double> >&, vector< vector<double> >&, vector<double>&);
-       vector< vector<double> > calculateNewConfiguration(double, vector< vector<double> >&, vector< vector<double> >&);
+       vector< vector<double> > nmdsCalc(vector< vector<double> >&, vector< vector<double> >&, double&);
+       vector< vector<double> > getConfiguration(vector< vector<double> >&, int);
+       vector< vector<double> > generateStartingConfiguration(int, int); //pass in numNames, return axes
+       int normalizeConfiguration(vector< vector<double> >&, int, int);
+       double calculateStress(vector< vector<double> >&, vector< vector<double> >&);
        vector< vector<double> > readAxes(vector<string>);
-       int output(string, string, vector< vector<double> >&, vector<double>&, vector<string>&);
+       int output(vector< vector<double> >&, vector<string>&, ofstream&);      
 };
 
 /*****************************************************************/