# Name of your program
package "RNALalifold" # don't use package if you're using automake
purpose "calculate locally stable secondary structures for a set of aligned RNAs"
usage   "RNALalifold [options] <file1.aln>"

# Version of your program
# version "2.0"   # don't use version if you're using automake


# command line options passed to gengetopt
args "--file-name=RNALalifold_cmdl --include-getopt --default-optional --unamed-opts --func-name=RNALalifold_cmdline_parser --arg-struct-name=RNALalifold_args_info"

description "reads aligned RNA sequences from stdin or file.aln and calculates\
 locally stable RNA secondary structure with a maximal base pair span. For a sequence\
 of length n and a base pair span of L the algorithm uses only O(n+L*L) memory and\
 O(n*L*L) CPU time. Thus it is practical to \"scan\" very large genomes for short RNA
 structures.\n"

# Options

option  "verbose" v
"Be verbose.\n"
details="Lower the log level setting such that even INFO messages are passed through.\n\n"
flag
off


option  "quiet" q
"Be quiet.\n"
details="This option can be used to minimize the output of additional information\
 and non-severe warnings which otherwise might spam stdout/stderr.\n\n"
flag
off


section "I/O Options"
sectiondesc="Command line options for input and output (pre-)processing\n\n"

option  "input-format"  f
"File format of the input multiple sequence alignment (MSA).\n"
details="If this parameter is set, the input is considered to be in a particular\
 file format. Otherwise, the program tries to determine the file format automatically,\
 if an input file was provided in the set of parameters. In case the input MSA is provided\
 in interactive mode, or from a terminal (TTY), the programs default is to assume\
 CLUSTALW format.\nCurrently, the following formats are available: ClustalW ('C'),\
 Stockholm 1.0 ('S'), FASTA/Pearson ('F'), and MAF ('M').\n\n"
string
typestr="C|S|F|M"
optional

option  "csv"   -
"Create comma separated output (csv)\n\n"
flag
off

option  "aln"             -
"Produce output alignments and secondary structure plots for each hit found.\n"
details="This option tells the program to produce, for each hit, a colored and structure\
 annotated (sub)alignment and secondary structure plot in PostScript format. It also\
 adds the subalignment hit into a multi-Stockholm formatted file \"RNALalifold_results.stk\".\
 The postscript output file names are \"aln_start_end.eps\" and \"ss_start_end.eps\". All\
 files will be created in the current directory. The optional argument string can be used\
 to set a specific prefix that is used to name the output files. The file names then become\
 \"prefix_aln_start_end.eps\", \"prefix_ss_start_end.eps\", and \"prefix.stk\".\
 Note: Any special characters in the prefix will be replaced by the filename delimiter,\
 hence there is no way to pass an entire directory path through this option yet.\
 (See also the \"--filename-delim\" parameter)\n\n"
string
argoptional
typestr="prefix"
optional

option  "aln-stk"             -
"Add hits to a multi-Stockholm formatted output file.\n"
details="The default file name used for the output is \"RNALalifold_results.stk\". Users may\
 change the filename to \"prefix.stk\" by specifying the prefix as optional argument. The file\
 will be create in the current directory if it does not already exist. In case the file already\
 exists, output will be appended to it.\
 Note: Any special characters in the prefix will be replaced by the filename delimiter,\
 hence there is no way to pass an entire directory path through this option yet.\
 (See also the \"--filename-delim\" parameter)\n\n"
string
argoptional
typestr="prefix"
default="RNALalifold_results"
optional

option  "mis" -
"Output \"most informative sequence\" instead of simple consensus: For each column of the alignment\
 output the set of nucleotides with frequency greater than average in IUPAC notation.\n\n"
flag
off

option  "split-contributions"  -
"Split the free energy contributions into separate parts\n"
details="By default, only the total energy contribution for each hit is returned. Using\
 this option, this contribution is split into individual parts, i.e. the Nearest Neighbor\
 model energy, the covariance pseudo energy, and if applicable, a remaining pseudo energy\
 derived from special constraints, such as probing signals like SHAPE.\n\n"
flag
off

option  "noconv"  -
"Do not automatically substitute nucleotide \"T\" with \"U\".\n\n"
flag
off

option  "auto-id"  -
"Automatically generate an ID for each alignment.\n"
details="The default mode of RNALalifold is to automatically determine an ID from the input alignment\
 if the input file format allows to do that. Alignment IDs are, for instance, usually given in\
 Stockholm 1.0 formatted input. If this flag is active, RNALalifold ignores any IDs retrieved from the\
 input and automatically generates an ID for each alignment.\n\n"
flag
off

option  "id-prefix" -
"Prefix for automatically generated IDs (as used in output file names).\n"
details="If this parameter is set, each alignment will be prefixed with the\
 provided string. Hence, the output files will obey the following naming\
 scheme: \"prefix_xxxx_ss.ps\" (secondary structure plot), \"prefix_xxxx_dp.ps\"\
 (dot-plot), \"prefix_xxxx_aln.ps\" (annotated alignment), etc. where xxxx\
 is the alignment number beginning with the second alignment in the input.\
 Use this setting in conjunction with the --continuous-ids flag to assign\
 IDs beginning with the first input alignment.\n\n"
string
typestr="STRING"
default="alignment"
optional

option  "id-delim" -
"Change the delimiter between prefix and increasing number for automatically generated IDs (as used in output file names).\n"
details="This parameter can be used to change the default delimiter \"_\" between\
 the prefix string and the increasing number for automatically generated ID.\n\n"
string
typestr="CHAR"
default="_"
optional
hidden

option  "id-digits"  -
"Specify the number of digits of the counter in automatically generated alignment IDs.\n"
details="When alignments IDs are automatically generated, they receive an increasing number, starting\
 with 1. This number will always be left-padded by leading zeros, such that the number takes up a\
 certain width. Using this parameter, the width can be specified to the users need. We allow\
 numbers in the range [1:18].\n\n"
int
default="4"
optional
hidden

option  "id-start"  -
"Specify the first number in automatically generated alignment IDs.\n"
details="When alignment IDs are automatically generated, they receive an increasing number,\
 usually starting with 1. Using this parameter, the first number can be specified to the users\
 requirements. Note: negative numbers are not allowed.\nNote: Setting this parameter implies\
 continuous alignment IDs, i.e. it activates the --continuous-ids flag.\n\n"
long
default="1"
optional
hidden

option  "filename-delim" -
"Change the delimiting character used in sanitized filenames.\n"
details="This parameter can be used to change the delimiting character used while\
 sanitizing filenames, i.e. replacing invalid characters. Note, that the default\
 delimiter ALWAYS is the first character of the \"ID delimiter\" as supplied through\
 the --id-delim option. If the delimiter is a whitespace character or empty, invalid\
 characters will be simply removed rather than substituted.\
 Currently, we regard the following characters as illegal for use in filenames:\
 backslash '\', slash '/', question mark '?', percent sign '%', asterisk '*', colon ':',\
 pipe symbol '|', double quote '\"', triangular brackets '<' and '>'.\n\n"
string
typestr="CHAR"
default="ID-delimiter"
optional
hidden


option  "log-level" -
"Set log level threshold.\n"
details="By default, any log messages are filtered such that only warnings (level 2) or errors (level 3)\
 are printed. This setting allows for specifying the log level threshold, where higher values result in\
 fewer information. Log-level 5 turns off all messages, even errors and other critical information.\n\n"
int
typestr="level"
default="2"
hidden


option  "log-file" -
"Print log messages to a file instead of stderr.\n"
string
typestr="filename"
default="RNALalifold.log"
argoptional
hidden


option  "log-time" -
"Include time stamp in log messages.\n\n"
flag
off
hidden


option  "log-call" -
"Include file and line of log calling function.\n\n"
flag
off
hidden


section "Algorithms"
sectiondesc="Select additional algorithms which should be included in the calculations.\nThe Minimum free energy\
 (MFE) and a structure representative are calculated in any case.\n\n"

option  "maxBPspan"  L
"Set the maximum allowed separation of a base pair to span. I.e. no pairs (i,j) with\
 j-i>span will be allowed.\n\n"
int
default="70"
optional

option  "threshold"   -
"Energy threshold in kcal/mol per nucleotide above which secondary structure hits are omitted\
 in the output.\n\n"
double
default="-0.1"
optional

option  "gquad" g
"Incoorporate G-Quadruplex formation into the structure prediction algorithm.\n\n"
flag
off


section "Structure Constraints"
sectiondesc="Command line options to interact with the structure constraints feature of this program\n\n"

option  "shape" -
"Use SHAPE reactivity data to guide structure predictions.\n"
details="Multiple shapefiles for the individual sequences in the alignment may be specified \
 as a comma separated list. An optional association of particular shape files to a specific \
 sequence in the alignment can be expressed by prepending the sequence number to the filename, \
 e.g. \"5=seq5.shape,3=seq3.shape\" will assign the reactivity values from file seq5.shape to \
 the fifth sequence in the alignment, and the values from file seq3.shape to sequence 3. If \
 no assignment is specified, the reactivity values are assigned to corresponding sequences in \
 the order they are given.\n\n"
string
typestr="file1,file2"
multiple(1-)
optional

option  "shapeMethod" -
"Specify the method how to convert SHAPE reactivity data to pseudo energy contributions.\n"
details="Currently, the only data conversion method available is that of to Deigan et al 2009. \
 This method is the default and is recognized by a capital 'D' in the provided parameter, i.e.: \
 --shapeMethod=\"D\" is the default setting. The slope 'm' and the intercept 'b' can be set to a \
 non-default value if necessary. Otherwise m=1.8 and b=-0.6 as stated in the paper mentionen before. \
 To alter these parameters, e.g. m=1.9 and b=-0.7, use a \
 parameter string like this: --shapeMethod=\"Dm1.9b-0.7\". You may also provide only one of the two \
 parameters like: --shapeMethod=\"Dm1.9\" or --shapeMethod=\"Db-0.7\".\n\n"
string
typestr="D[mX][bY]"
dependon="shape"
default="D"
optional
hidden


section "Energy Parameters"
sectiondesc="Energy parameter sets can be adapted or loaded from user-provided input files\n\n"

option  "temp"  T
"Rescale energy parameters to a temperature of temp C. Default is 37C.\n\n"
double
default="37.0"
optional

option  "paramFile" P
"Read energy parameters from paramfile, instead of using the default parameter set.\n"
details="Different sets of energy parameters for RNA and DNA should accompany your distribution.\nSee the\
 RNAlib documentation for details on the file format. The placeholder file name 'DNA' can be used\
 to load DNA parameters without the need to actually specify any input file.\n\n"
string
typestr="paramfile"
optional

option  "noTetra" 4
"Do not include special tabulated stabilizing energies for tri-, tetra- and hexaloop hairpins.\n"
details="Mostly for testing.\n\n"
flag
off
hidden

option  "salt" -
"Set salt concentration in molar (M). Default is 1.021M.\n\n"
double
optional


section "Model Details"
sectiondesc="Tweak the energy model and pairing rules additionally using the following parameters\n\n"

option  "dangles" d
"How to treat \"dangling end\" energies for bases adjacent to helices in free ends and multi-loops.\n"
details="\nWith -d1 only unpaired bases can participate in at most one dangling end. With -d2 this\
 check is ignored, dangling energies will be added for the bases adjacent to a helix on both sides in\
 any case; this is the default for mfe and partition function folding (-p).\nThe option -d0 ignores\
 dangling ends altogether (mostly for debugging).\nWith -d3 mfe folding will allow coaxial stacking\
 of adjacent helices in multi-loops. At the moment the implementation will not allow coaxial stacking\
 of the two enclosed pairs in a loop of degree 3 and works only for mfe folding.\n\nNote that with\
 -d1 and -d3 only the MFE computations will be using this setting while partition function uses\
 -d2 setting, i.e. dangling ends will be treated differently.\n\n"
int
default="2"
optional

option  "noLP"  -
"Produce structures without lonely pairs (helices of length 1).\n"
details="For partition function folding this only disallows pairs that can only occur isolated. Other\
 pairs may still occasionally occur as helices of length 1.\n\n"
flag
off

option  "noGU"  -
"Do not allow GU pairs.\n\n"
flag
off
hidden

option  "noClosingGU" -
"Do not allow GU pairs at the end of helices.\n\n"
flag
off
hidden

option  "cfactor"         -
"Set the weight of the covariance term in the energy function\n\n"
default="1.0"
double
optional

option  "nfactor"         -
"Set the penalty for non-compatible sequences in the covariance term of the energy function\n\n"
default="1.0"
double
optional

option  "ribosum_file"    R
"use specified Ribosum Matrix instead of normal energy model.\n"
details="Matrixes to use should be 6x6 matrices, the order of the terms is\
 'AU', 'CG', 'GC', 'GU', 'UA', 'UG'.\n\n"
string
typestr="ribosumfile"
optional

option  "ribosum_scoring" r
"use ribosum scoring matrix.\n"
details="The matrix is chosen according to the minimal and maximal pairwise\
 identities of the sequences in the file.\n\n"
flag
off

option  "nsp" -
"Allow other pairs in addition to the usual AU,GC,and GU pairs.\n"
details="Its argument is a comma separated list of additionally allowed pairs. If the\
 first character is a \"-\" then AB will imply that AB and BA are allowed pairs, e.g.\
 --nsp=\"-GA\"  will allow GA and AG pairs. Nonstandard pairs are given 0 stacking\
 energy.\n\n"
string
optional
hidden

option  "energyModel" -
"Set energy model.\n"
details="Rarely used option to fold sequences from the artificial ABCD... alphabet, where\
 A pairs B, C-D etc.  Use the energy parameters for GC (--energyModel 1) or AU (--energyModel 2) pairs.\n\n"
int
optional
hidden

option  "helical-rise"  -
"Set the helical rise of the helix in units of Angstrom.\n"
details="Use with caution! This value will be re-set automatically to 3.4 in case DNA\
 parameters are loaded via -P DNA and no further value is provided.\n\n"
float
optional
default="2.8"
hidden

option  "backbone-length"  -
"Set the average backbone length for looped regions in units of Angstrom.\n"
details="Use with caution! This value will be re-set automatically to 6.76 in case DNA\
 parameters are loaded via -P DNA and no further value is provided.\n\n"
float
optional
default="6.0"
hidden


section "Plotting"
sectiondesc="Command line options for changing the default behavior of structure layout and pairing probability plots\n\n"

option  "aln-EPS"             -
"Produce colored and structure annotated subalignment for each hit.\n"
details="The default file name used for the output is \"aln_start_end.eps\" where \"start\" and\
 \"end\" denote the first and last column of the subalignment relative to the input (1-based).\
 Users may change the filename to \"prefix_aln_start_end.eps\" by specifying the prefix as optional\
 argument. Files will be create in the current directory.\
 Note: Any special characters in the prefix will be replaced by the filename delimiter,\
 hence there is no way to pass an entire directory path through this option yet.\
 (See also the \"--filename-delim\" parameter)\n\n"
string
argoptional
typestr="prefix"
optional

option  "aln-EPS-cols"        -
"Number of columns in colored EPS alignment output.\n"
details="A value less than 1 indicates that the output should not be wrapped at all.\n\n"
int
default="60"
optional
hidden

option  "aln-EPS-ss"             -
"Produce colored consensus secondary structure plots in PostScript format.\n"
details="The default file name used for the output is \"ss_start_end.eps\" where \"start\" and\
 \"end\" denote the first and last column of the subalignment relative to the input (1-based).\
 Users may change the filename to \"prefix_ss_start_end.eps\" by specifying the prefix as optional\
 argument. Files will be create in the current directory.\
 Note: Any special characters in the prefix will be replaced by the filename delimiter,\
 hence there is no way to pass an entire directory path through this option yet.\
 (See also the \"--filename-delim\" parameter)\n\n"
string
argoptional
typestr="prefix"
optional

option  "color-threshold" -
"Set the threshold of maximum counter examples for coloring consensus structure plot.\n"
details="Floating point numbers between 0 and 1 are treated as frequencies among all sequences\
in the alignment. All other will be truncated to integer and used as absolute number of counter
examples.\n\n"
float
optional
default="2"
hidden


option  "color-min-sat" -
"Set the minimum saturation for coloring consensus structure plot.\n"
details="Floating point number >= 0 and smaller than 1.\n\n"
float
optional
default="0.2"
hidden


text    "\nIf in doubt our program is right, nature is at fault.\nComments should be sent to\
 rna@tbi.univie.ac.at.\n\n"
