@Immutable\r
public final class OptionCombinator {\r
\r
- private static Logger log = Logger.getLogger(OptionCombinator.class);\r
- private static final String MINVALUE = "-100";\r
- private static final String MAXVALUE = "100";\r
-\r
- private static final Random rand = new Random();\r
- private final RunnerConfig<? extends Executable<?>> rconfig;\r
+ private static Logger log = Logger.getLogger(OptionCombinator.class);\r
+ private static final String MINVALUE = "-100";\r
+ private static final String MAXVALUE = "100";\r
+\r
+ private static final Random rand = new Random();\r
+ private final RunnerConfig<? extends Executable<?>> rconfig;\r
+\r
+ public OptionCombinator(RunnerConfig<? extends Executable<?>> rconfig) {\r
+ if (rconfig == null) {\r
+ throw new IllegalArgumentException("RunnerConfig must be provided!");\r
+ }\r
+ this.rconfig = rconfig;\r
+ }\r
\r
- public OptionCombinator(RunnerConfig<? extends Executable<?>> rconfig) {\r
- if (rconfig == null) {\r
- throw new IllegalArgumentException("RunnerConfig must be provided!");\r
+ public List<String> optionsToCommandString(List<Option<?>> options) {\r
+ List<String> strOptions = new ArrayList<String>();\r
+ for (Option<?> option : options) {\r
+ strOptions.add(optionToCommandString(option));\r
+ }\r
+ return strOptions;\r
}\r
- this.rconfig = rconfig;\r
- }\r
\r
- public List<String> optionsToCommandString(List<Option<?>> options) {\r
- List<String> strOptions = new ArrayList<String>();\r
- for (Option<?> option : options) {\r
- strOptions.add(optionToCommandString(option));\r
+ public List<String> getOptionsAtRandom() {\r
+ return optionsToCommandString(getAllOptions());\r
}\r
- return strOptions;\r
- }\r
-\r
- public List<String> getOptionsAtRandom() {\r
- return optionsToCommandString(getAllOptions());\r
- }\r
-\r
- public List<Option<?>> getAllOptions() {\r
- return new ArrayList<Option<?>>(rconfig.getOptions());\r
- }\r
-\r
- static String optionToCommandString(Option<?> option) {\r
- int size = option.getOptionNames().size();\r
- int idx = rand.nextInt(size);\r
- return option.getOptionNames().get(idx);\r
- }\r
-\r
- public List<Parameter<?>> getAllParameters() {\r
- List<Parameter<?>> args = new ArrayList<Parameter<?>>();\r
- for (Parameter<?> prm : rconfig.getParameters()) {\r
- // Make sure there is a default value linked to the parameter to use\r
- // later\r
- // prm.setDefaultValue(getValue(prm));\r
- args.add(prm);\r
+\r
+ public List<Option<?>> getAllOptions() {\r
+ return new ArrayList<Option<?>>(rconfig.getOptions());\r
}\r
- return args;\r
- }\r
\r
- public List<String> argumentsToCommandString(\r
- List<? extends Option<?>> arguments) {\r
- return argumentsToCommandString(arguments, rconfig);\r
- }\r
+ static String optionToCommandString(Option<?> option) {\r
+ int size = option.getOptionNames().size();\r
+ int idx = rand.nextInt(size);\r
+ return option.getOptionNames().get(idx);\r
+ }\r
\r
- public static List<String> argumentsToCommandString(\r
- List<? extends Option<?>> arguments,\r
- RunnerConfig<? extends Executable<?>> rconfig) {\r
+ public List<Parameter<?>> getAllParameters() {\r
+ List<Parameter<?>> args = new ArrayList<Parameter<?>>();\r
+ for (Parameter<?> prm : rconfig.getParameters()) {\r
+ // Make sure there is a default value linked to the parameter to use later\r
+ // prm.setDefaultValue(getValue(prm));\r
+ args.add(prm);\r
+ }\r
+ return args;\r
+ }\r
\r
- if (arguments == null || rconfig == null) {\r
- throw new NullPointerException(\r
- "Arguments and RunnerConfig objects must be provided!");\r
+ public List<String> argumentsToCommandString(List<? extends Option<?>> arguments) {\r
+ return argumentsToCommandString(arguments, rconfig);\r
}\r
\r
- List<String> command = new ArrayList<String>();\r
- for (Option<?> option : arguments) {\r
-\r
- if (option instanceof Parameter<?>) {\r
- Parameter<?> prm = (Parameter<?>) option;\r
- command.add(prm.getOptionName() + rconfig.getPrmSeparator()\r
- + getValue(prm));\r
- log.trace("Setting parameter " + prm);\r
- } else {\r
- log.trace("Setting option " + option);\r
- command.add(optionToCommandString(option));\r
- }\r
+ public static List<String> argumentsToCommandString(List<? extends Option<?>> arguments,RunnerConfig<? extends Executable<?>> rconfig) {\r
+ if (arguments == null || rconfig == null) {\r
+ throw new NullPointerException("Arguments and RunnerConfig objects must be provided!");\r
+ }\r
+\r
+ List<String> command = new ArrayList<String>();\r
+ for (Option<?> option : arguments) {\r
+ if (option instanceof Parameter<?>) {\r
+ Parameter<?> prm = (Parameter<?>) option;\r
+ command.add(prm.getOptionName() + rconfig.getPrmSeparator() + getValue(prm));\r
+ log.trace("Setting parameter " + prm);\r
+ } else {\r
+ log.trace("Setting option " + option);\r
+ command.add(optionToCommandString(option));\r
+ }\r
+ }\r
+ return command;\r
}\r
- return command;\r
- }\r
-\r
- public List<String> parametersToCommandString(\r
- List<Parameter<?>> orderedList, Map<Parameter<?>, String> prmValue) {\r
- List<String> args = new ArrayList<String>();\r
- for (Parameter<?> param : orderedList) {\r
- args.add(param.getOptionName() + rconfig.getPrmSeparator()\r
- + prmValue.get(param));\r
+\r
+ public List<String> parametersToCommandString(List<Parameter<?>> orderedList, Map<Parameter<?>, String> prmValue) {\r
+ List<String> args = new ArrayList<String>();\r
+ for (Parameter<?> param : orderedList) {\r
+ args.add(param.getOptionName() + rconfig.getPrmSeparator() + prmValue.get(param));\r
+ }\r
+ return args;\r
}\r
- return args;\r
- }\r
\r
- public Map<Parameter<?>, String> getAllConstrainedParametersWithBorderValues(\r
- boolean minValue) {\r
- Map<Parameter<?>, String> paramValue = new HashMap<Parameter<?>, String>();\r
- for (Parameter<?> prm : rconfig.getParameters()) {\r
- ValueConstrain vc = prm.getValidValue();\r
- if (vc == null) {\r
- continue;\r
- }\r
- String value = "";\r
- if (minValue) {\r
- value = getLowBorderValue(prm);\r
- } else {\r
- value = getUpperBorderValue(prm);\r
- }\r
- paramValue.put(prm, value);\r
+ public Map<Parameter<?>, String> getAllConstrainedParametersWithBorderValues( boolean minValue) {\r
+ Map<Parameter<?>, String> paramValue = new HashMap<Parameter<?>, String>();\r
+ for (Parameter<?> prm : rconfig.getParameters()) {\r
+ ValueConstrain vc = prm.getValidValue();\r
+ if (vc == null) {\r
+ continue;\r
+ }\r
+ String value = getUpperBorderValue(prm);\r
+ if (minValue) {\r
+ value = getLowBorderValue(prm);\r
+ }\r
+ paramValue.put(prm, value);\r
+ }\r
+ return paramValue;\r
}\r
- return paramValue;\r
- }\r
\r
- public Map<Parameter<?>, String> getAllConstrainedParametersWithRandomValues() {\r
+ public Map<Parameter<?>, String> getAllConstrainedParametersWithRandomValues() {\r
Map<Parameter<?>, String> paramValue = new HashMap<Parameter<?>, String>();\r
- for (Parameter<?> prm : rconfig.getParameters()) {\r
- ValueConstrain vc = prm.getValidValue();\r
- if (vc == null) {\r
- continue;\r
- }\r
- paramValue.put(prm, getRandomValue(prm));\r
+ for (Parameter<?> prm : rconfig.getParameters()) {\r
+ ValueConstrain vc = prm.getValidValue();\r
+ if (vc == null) {\r
+ continue;\r
+ }\r
+ paramValue.put(prm, getRandomValue(prm));\r
+ }\r
+ return paramValue;\r
}\r
- return paramValue;\r
- }\r
\r
- String getLowBorderValue(Parameter<?> param) {\r
- assert param != null;\r
- ValueConstrain vc = param.getValidValue();\r
- Number minVal = vc.getMin();\r
- return minVal == null ? MINVALUE : minVal.toString();\r
- }\r
+ String getLowBorderValue(Parameter<?> param) {\r
+ assert param != null;\r
+ ValueConstrain vc = param.getValidValue();\r
+ Number minVal = vc.getMin();\r
+ return minVal == null ? MINVALUE : minVal.toString();\r
+ }\r
\r
- String getUpperBorderValue(Parameter<?> param) {\r
- assert param != null;\r
- ValueConstrain vc = param.getValidValue();\r
- Number maxVal = vc.getMax();\r
- return maxVal == null ? MAXVALUE : maxVal.toString();\r
- }\r
+ String getUpperBorderValue(Parameter<?> param) {\r
+ assert param != null;\r
+ ValueConstrain vc = param.getValidValue();\r
+ Number maxVal = vc.getMax();\r
+ return maxVal == null ? MAXVALUE : maxVal.toString();\r
+ }\r
\r
- String getRandomValue(Parameter<?> param) {\r
- assert param != null;\r
- String low = getLowBorderValue(param);\r
- String high = getUpperBorderValue(param);\r
- ValueConstrain vc = param.getValidValue();\r
+ String getRandomValue(Parameter<?> param) {\r
+ assert param != null;\r
+ String low = getLowBorderValue(param);\r
+ String high = getUpperBorderValue(param);\r
+ ValueConstrain vc = param.getValidValue();\r
\r
- if (vc.getType() == ValueConstrain.Type.Float) {\r
- return new Double(Util.getRandomNumber(Double.parseDouble(low),\r
- Double.parseDouble(high))).toString();\r
+ if (vc.getType() == ValueConstrain.Type.Float) {\r
+ return new Double(Util.getRandomNumber(Double.parseDouble(low), Double.parseDouble(high))).toString();\r
+ }\r
+ return new Integer(Util.getRandomNumber(Integer.parseInt(low), Integer.parseInt(high))).toString();\r
}\r
- return new Integer(Util.getRandomNumber(Integer.parseInt(low), Integer\r
- .parseInt(high))).toString();\r
- }\r
\r
- static String getValue(Parameter<?> param) {\r
+ static String getValue(Parameter<?> param) {\r
assert param != null;\r
if (param.getDefaultValue() != null) {\r
- log.trace("Returning default value: " + param.getDefaultValue());\r
- return param.getDefaultValue();\r
+ log.trace("Returning default value: " + param.getDefaultValue());\r
+ return param.getDefaultValue();\r
} else {\r
- // Some parameters do not have default values e.g. seq type - nuc or\r
- // protein\r
- List<String> passValues = param.getPossibleValues();\r
- int idx = rand.nextInt(passValues.size());\r
- log.trace("Returning random value: " + passValues.get(idx));\r
- return passValues.get(idx);\r
+ // Some parameters do not have default values e.g. seq type - nuc or protein\r
+ List<String> passValues = param.getPossibleValues();\r
+ int idx = rand.nextInt(passValues.size());\r
+ log.trace("Returning random value: " + passValues.get(idx));\r
+ return passValues.get(idx);\r
+ }\r
}\r
- }\r
+\r
}\r