-ql <qual_levels>... | -qual_levels <qual_levels>... Generate basic quality scores for the simulated reads. Good residues are given a specified good score (e.g. 30) and residues that are the result of an insertion or substitution are given a specified bad score (e.g. 10). Specify first the good score and then the bad score on the command-line, e.g.: 30 10. Default: qual_levels.default =for Euclid: qual_levels.type: 0+integer qual_levels.default: [ ]

Need to make sure that default reported is something like '' or "" or [] and not some blank value

Compatiblity notes: when using the pp (perl packer) utility to produce binary files, use * the PAR_VERBATIM=1 environment variable to ensure that POD is not stripped: * --compress = 0 to prevent POD from being unreadable * --clean export PAR_VERBATIM=1 && pp --compress 0 ...

Problem with this: =item -mo <mate_orientation> | -mate_orientation <mate_orientation> When generating paired-end or mate-pair reads (see <insert_dist>), specify the orientation of the reads (F: forward, R: reverse): FR, FF, RF, RR =for Euclid: mate_orientation.type: string, mate_orientation =~ m/^[FR]{2}$/ That's the regexp I need, but I get problems with Getopt::Euclid: perl -Ilib ./script/grinder -reference_file ../test-db.fa -unidirectional 0 -read_dist 80 -insert_dist 240 -total_reads 10 -mate_orientation FRR Use of uninitialized value $var_val in substitution (s///) at /usr/local/share/perl/5.12.4/Getopt/Euclid.pm line 652. Use of uninitialized value $main:: in regexp compilation at (eval 89) line 1.

Have new directive: use Getopt::Euclid qw( :placeholder_keys ) instead of %ARGS = ( -s h w --size h w ) :placeholder keys gives: %ARGS = ( <h> <w> ) and in :minimalist_keys, it gives %ARGS = ( h w )

in pod, have example of default for a list of values:

-mr <mutation_ratio>... | -mutation_ratio <mutation_ratio>...

Indicate the percentage of substitutions and the number of indels. =for Euclid: mutation_ratio.type: num, mutation_ratio >= 0 mutation_ratio.default: [80, 20]

1/ Having subheadings (=headX) inside a REQUIRED ARGUMENTS or OPTIONS section breaks Getopt::Euclid. Example: =head1 OPTIONS =head2 Input files =over =item -f <fasta_file> This may possibly require using a module (POD::Parser) that understands the POD document hierarchy

2/ Decorations for REQUIRED ARGUMENTS and OPTIONS are put in man(), but not in help() Example: =head1 OPTIONS Input files =over =item -f <fasta_file> Maybe, I need to implement a new specifier: use Getopt::Euclid qw( :help_decoration );

3/ Use POD::Constants so that default values are exported in README Or see alternate solution: http://stackoverflow.com/questions/2521188/how-can-i-use-macros-in-perl

4/ Need a way to know whether an option was used by a user, or just if its default was setup. In object that is returned, have elements called {is_default} and {is_opt_default}

use TT::Template that are customizable for messages.

implement a 'requires' attribute for argument that can only be specified when another one has been specified

required arguments cannot have defaults

merge required and optional arguments

when an argument is unknown, specify explicitly which one was not recognized. At the moment, we get "Unknown argument: --alpha aaa --beta 999 --gamma 0 --delta asdf"

1 POD Error

The following errors were encountered while parsing the POD:

Around line 22:

'=item' outside of any '=over'

=over without closing =back