8 * Created by westcott on 1/11/11.
9 * Copyright 2011 Schloss Lab. All rights reserved.
13 #include "command.hpp"
14 #include "linearalgebra.h"
17 /* references used to make this command: "Nonmetric Multidimensional Scalling: A Numerical Method"
18 by J. B. Kruskal Psychometrika - Vol 29, No. 2 June 1964 */
20 /*****************************************************************/
21 class NMDSCommand : public Command {
27 vector<string> getRequiredParameters();
28 vector<string> getValidParameters();
29 vector<string> getRequiredFiles();
30 map<string, vector<string> > getOutputFiles() { return outputTypes; }
37 string phylipfile, outputDir, axesfile;
38 int dimension, maxIters;
40 vector<string> outputNames;
41 map<string, vector<string> > outputTypes;
42 LinearAlgebra linearCalc;
44 vector< vector<double> > generateStartingConfiguration(int); //pass in numNames, return axes
45 int normalizeConfiguration(vector< vector<double> >&, int);
46 vector<seqDist> satisfyMonotonicity(vector<seqDist>);
47 double calculateStress(vector<seqDist>&, vector<seqDist>&, double&);
48 vector< vector<double> > calculateStressGradientVector(vector<seqDist>&, vector<seqDist>&, double, double, vector< vector<double> >&);
49 double calculateMagnitude(vector< vector<double> >&);
50 double calculateStep(vector< vector<double> >&, vector< vector<double> >&, vector<double>&);
51 vector< vector<double> > calculateNewConfiguration(double, vector< vector<double> >&, vector< vector<double> >&);
52 vector< vector<double> > readAxes(vector<string>);
53 int output(string, string, vector< vector<double> >&, vector<double>&, vector<string>&);
56 /*****************************************************************/