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 {
36 vector<string> getRequiredParameters();
37 vector<string> getValidParameters();
38 vector<string> getRequiredFiles();
39 map<string, vector<string> > getOutputFiles() { return outputTypes; }
46 string phylipfile, outputDir, axesfile;
47 int maxdim, mindim, maxIters, iters;
49 vector<string> outputNames;
50 map<string, vector<string> > outputTypes;
51 LinearAlgebra linearCalc;
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&);
62 /*****************************************************************/