]> git.donarmstrong.com Git - mothur.git/blobdiff - nmdscommand.h
working on nmds command
[mothur.git] / nmdscommand.h
index 5e4e65596a05a91cfdc6824db1b4086303a0f8e3..7979c67a3eb9d043c8e19ef2429a9e5ffdff57b0 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 {
@@ -35,22 +44,19 @@ 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&);      
 };
 
 /*****************************************************************/