final SimpleJSAP jsap = new SimpleJSAP(ClusterSequences.class.getName(),
"Parses input sequences to do clustering on them. Input sequences should have one sequence per line. "
+ "Each sequence is a tab-separated list of symbols.", new Parameter[] {
new Switch("verbose", 'v', "verbose", "Set verbose output"),
new FlaggedOption("taxonomy-file", JSAP.STRING_PARSER, JSAP.NO_DEFAULT, JSAP.REQUIRED, 't', "taxonomy-file",
"File containing the description of the taxonomy."),
new FlaggedOption("clusters", JSAP.INTEGER_PARSER, Integer.toString(DEFAULT_CLUSTERS), JSAP.NOT_REQUIRED, 'c', "clusters",
"Number of clusters to use."),
new FlaggedOption("passes", JSAP.INTEGER_PARSER, Integer.toString(DEFAULT_PASSES), JSAP.NOT_REQUIRED, 'p', "passes",
"Number of passes of the algorithm to do."),
new Switch("init-all-leaves", 'l', "init-all-leaves", "Initial model states are all leaves from taxonomy."),
new FlaggedOption("init-all-level", JSAP.INTEGER_PARSER, JSAP.NO_DEFAULT, JSAP.NOT_REQUIRED, 'e', "init-all-level",
"Initial model states are leaves or internal nodes at level <= x."),
new FlaggedOption("init-explicit", JSAP.STRING_PARSER, JSAP.NO_DEFAULT, JSAP.NOT_REQUIRED, 'x', "init-explicit",
"Initial model states are a quote-enclosed, space-separated list, given as input."),
new FlaggedOption("max-iterations", JSAP.INTEGER_PARSER, JSAP.NO_DEFAULT, JSAP.NOT_REQUIRED, 'm', "max-iterations",
"Maximum number of iterations to try for building the model."),
new FlaggedOption("batch-size", JSAP.INTEGER_PARSER, Integer.toString(LearnModel.DEFAULT_BATCH_SIZE), JSAP.NOT_REQUIRED, 'b', "batch-size",
"How many candidates to evaluate at a time before adding their children to the priority queue."),
new FlaggedOption("search-method", JSAP.STRING_PARSER, SearchStrategy.DEFAULT_SEARCH_STRATEGY.getSimpleName(), JSAP.NOT_REQUIRED, 's',
"search-method", "Search method, allowed values: " + LearnModel.getSearchCriteriaAsString()),
new FlaggedOption("search-method-weight-1", JSAP.DOUBLE_PARSER, Double.toString(CloserToOrigin.DEFAULT_PROBABILITY_WEIGHT), JSAP.NOT_REQUIRED,
'w', "search-method-weight-1", "For the method " + CloserToOrigin.class.getSimpleName()
+ ", the relative importance of having low probability versus having less states"),
new FlaggedOption("winner-model-maxstates", JSAP.INTEGER_PARSER, Integer.toString(LearnModel.DEFAULT_OUTPUT_MAX_STATES), JSAP.NOT_REQUIRED, 'u',
"winner-model-maxstates",
"Output model (winner) must have at most this number of states; this is taken only as a hint, so if there is no model with that few states, "
+ "the one with the lower number of states will be selected"),
new FlaggedOption("input-file", JSAP.STRING_PARSER, JSAP.NO_DEFAULT, JSAP.REQUIRED, 'i', "input-file", "File containing the input sequences."),
new FlaggedOption("output-assignment", JSAP.STRING_PARSER, JSAP.NO_DEFAULT, JSAP.REQUIRED, 'a', "output-assignment",
"File for writing the output cluster assignments."),
new FlaggedOption("output-models-basename", JSAP.STRING_PARSER, JSAP.NO_DEFAULT, JSAP.NOT_REQUIRED, 'o', "output-models-basename",
"Base filename for writing the models."),
});
final JSAPResult jsapResult = jsap.parse(args);