Parse the specified command line. */
| 213 | |
| 214 | /** Parse the specified command line. */ |
| 215 | void parse(int argc, char* const* argv) |
| 216 | { |
| 217 | ostringstream sargv; |
| 218 | if (opt::rank <= 0) { |
| 219 | char* const* last = argv + argc - 1; |
| 220 | copy(argv, last, ostream_iterator<const char *>(sargv, " ")); |
| 221 | sargv << *last; |
| 222 | } |
| 223 | |
| 224 | opt::assemblyCmd = sargv.str(); |
| 225 | opt::metaVars.resize(3); |
| 226 | bool die = false; |
| 227 | for (int c; (c = getopt_long(argc, argv, |
| 228 | shortopts, longopts, NULL)) != -1;) { |
| 229 | istringstream arg(optarg != NULL ? optarg : ""); |
| 230 | switch (c) { |
| 231 | case '?': |
| 232 | die = true; |
| 233 | break; |
| 234 | case 'b': |
| 235 | arg >> bubbleLen; |
| 236 | break; |
| 237 | case 'c': |
| 238 | arg >> coverage; |
| 239 | break; |
| 240 | case 'k': |
| 241 | arg >> kmerSize; |
| 242 | k = kmerSize; |
| 243 | kMin = kmerSize; |
| 244 | switch (arg.get()) { |
| 245 | case ',': |
| 246 | arg >> kMax; |
| 247 | kStep = kMax - kMin; |
| 248 | break; |
| 249 | case '-': |
| 250 | arg >> kMax; |
| 251 | if (arg.get() == ':') |
| 252 | arg >> kStep; |
| 253 | break; |
| 254 | default: |
| 255 | kMax = kmerSize; |
| 256 | } |
| 257 | assert(kMin <= kMax); |
| 258 | break; |
| 259 | case 'K': |
| 260 | arg >> singleKmerSize; |
| 261 | break; |
| 262 | case COVERAGE_HIST: |
| 263 | getline(arg, coverageHistPath); |
| 264 | break; |
| 265 | case 'm': |
| 266 | maskCov = true; |
| 267 | break; |
| 268 | case 'o': |
| 269 | getline(arg, contigsPath); |
| 270 | break; |
| 271 | case 'e': |
| 272 | arg >> erode; |