8 * Created by westcott on 1/11/11.
9 * Copyright 2011 Schloss Lab. All rights reserved.
13 #include "command.hpp"
14 #include "linearalgebra.h"
18 Translated from the nmds.R code written by Sarah Goslee using,
20 # Non-metric multidimensional scaling function
21 # using the majorization algorithm from
22 # Borg & Groenen 1997, Modern Multidimensional Scaling.
25 # also referenced (Kruskal 1964)
29 /*****************************************************************/
30 class NMDSCommand : public Command {
37 vector<string> setParameters();
38 string getCommandName() { return "nmds"; }
39 string getCommandCategory() { return "Hypothesis Testing"; }
40 string getHelpString();
43 void help() { m->mothurOut(getHelpString()); }
48 string phylipfile, outputDir, axesfile;
49 int maxdim, mindim, maxIters, iters;
51 vector<string> outputNames;
52 LinearAlgebra linearCalc;
54 vector< vector<double> > nmdsCalc(vector< vector<double> >&, vector< vector<double> >&, double&);
55 vector< vector<double> > getConfiguration(vector< vector<double> >&, int);
56 vector< vector<double> > generateStartingConfiguration(int, int); //pass in numNames, return axes
57 int normalizeConfiguration(vector< vector<double> >&, int, int);
58 double calculateStress(vector< vector<double> >&, vector< vector<double> >&);
59 vector< vector<double> > readAxes(vector<string>);
60 int output(vector< vector<double> >&, vector<string>&, ofstream&);
63 /*****************************************************************/