public boolean parseArguments(String[] args)
throws FileNotFoundException, IOException
{
CommandLineParser parser = new CommandLineParser();
// input
parser.addStringArrayCommand("i", true);
// mandatory parameters
parser.addIntCommand("nhidden", true);
// optional initialization
parser.addCommand("init", false);
parser.addStringArgument("init", true); // T
parser.addStringArgument("init", true); // Chi
// option estimate
parser.addCommand("estimate", false);
parser.addIntArgument("estimate", true); // tau
parser.addIntArgument("estimate", true); // average window
// option hmm timescales
parser.addCommand("hmmtimescales", false);
parser.addIntArgument("hmmtimescales", true); // tau-min
parser.addIntArgument("hmmtimescales", true); // tau-max
parser.addDoubleArgument("hmmtimescales", true); // tau-mult
parser.addIntArgument("hmmtimescales", true); // max-avg-window
// hmm convergence options
parser.addCommand("hmmconv",false);
parser.addDoubleArgument("hmmconv", true, -0.1, Double.NEGATIVE_INFINITY,Double.POSITIVE_INFINITY); // dectol
parser.addIntArgument("hmmconv", true, 1000, 0, Integer.MAX_VALUE); // niter
// option
parser.addCommand("direct", false);
// output
parser.addStringCommand("o", true);
if (!parser.parse(args))
{
return false;
}
// read input and construct NINJA
String[] ifiles = parser.getStringArray("i");
inputFiles = new ArrayList();
for (int i = 0; i < ifiles.length; i++)
{
inputFiles.add(ifiles[i]);
}
discreteTrajectories = intseqNew.intSequenceLoader(inputFiles).loadAll();
// mandatory input
nhidden = parser.getInt("nhidden");
if (parser.hasCommand("init"))
{
String fileT = parser.getString("init",0);
init_T = doublesNew.fromFile(fileT);
String fileChi = parser.getString("init",1);
init_Chi = doublesNew.fromFile(fileChi);
}
// read command option
if (parser.hasCommand("estimate"))
{
singlePointEstimate = true;
tau = parser.getInt("estimate",0);
timeshift = parser.getInt("estimate",1);
}
else if (parser.hasCommand("estimatemult"))
{
multiStartEstimate = true;
tau = parser.getInt("estimatemult",0);
timeshift = parser.getInt("estimatemult",1);
metastabilities = parser.getDoubleArray("metastabilities");
}
else if (parser.hasCommand("hmmtimescales"))
{
hmmTimescalesEstimate = true;
taumin = parser.getInt("hmmtimescales",0);
taumax = parser.getInt("hmmtimescales",1);
taumult = parser.getDouble("hmmtimescales",2);
timeshift = parser.getInt("hmmtimescales",3);
}
direct = parser.hasCommand("direct");
if (parser.hasCommand("hmmconv"))
{
hmmDecTol = parser.getDouble("hmmconv",0);
hmmNIter = parser.getInt("hmmconv",1);
}
outdir = parser.getString("o");
return true;
}