]> git.donarmstrong.com Git - mothur.git/blobdiff - nmdscommand.h
working on nmds command
[mothur.git] / nmdscommand.h
index 5e4e65596a05a91cfdc6824db1b4086303a0f8e3..d7bedcf7f9c37a6f8091d32792c10a160be3e5c5 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 {
@@ -33,24 +42,28 @@ public:
        
 private:
        
-       bool abort;
+       bool abort, trace;
        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&);
+
+       //vector<seqDist> satisfyMonotonicity(vector<seqDist>, vector<int>);
+       //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> >&);
+       
 };
 
 /*****************************************************************/