Added formatf function to matrix GC content display.
Made some javascript changes.
Changed error and warning templates to expect an already html formatted
error/warning text instead of a listref of errors/warnings.
Changed the fetch_where to always return an array ref (or array) instead of
just a single scalar value in the case where only one value was fetched.
Instead the other fetch routines which call fetch_where return a single value
if that specific fetch routine was designed to only return a single value,
e.g. fetch_by_id.
Instead of carping errors, sets the $error parameter.

Correctly set the y-axis label to the type of plot.

Simplified some R commands by setting any parameters which just require a
scalar using the perl scalar directly rather than setting an intermediate R
variable from the perl scalar.
Wrapped the call to R->run in an eval{} so program does not crash on an R
error.

Checks output from R and if it is a 'null device' error, ignores it as this
is not an error but is a message which is always returned when dev.off() is
called. If any other output is returned, this is considered and error and
returned to the caller via the $error parameter.
Added read_from_BED_file routine.
Changed the fatal routine to only e-mail administrator in web context.
Changed the way read_matrices assigns matrix ID and name depending on whether
there are 1 or 2 strings in the matrix header line.
Added multi_anchored_tf_set_search_seqs and compute_site_counts_multi_anchor
routines.
Changed write_tfbs_details to check if TF ID contains special characters and
replace them with '_' so that creating output files using the TF ID is safe
(especially useful when the TF ID is actually a user created name and not a
standard type of matrix ID such as a JASPAR ID.
Changed write_tfbs_details to check if TF ID contains special characters and
replace them with '_' so that creating output files using the TF ID is safe
(especially useful when the TF ID is actually a user created name and not a
standard type of matrix ID such as a JASPAR ID.
Changed all error and warning routines to use the CGI::Application modules
param method to store errors and warning rather than using the OPOSSUM::State
object.
Added check_seq_text routine to check sequence text does not contain any
special characters and that the total sequence text size is not greater
than some maximum size.
Changed fetch_where to always return an array ref (or array) even in the case
where only a single value was fetched. The routines which call fetch_where now
check the return from fetch_where and return the expected results (array ref
or single scalar value).
Changed plotting calls to pass and check error parameter.
Added MAX_SEQ_FILE_SIZE setting.
Errors and warnings are now set using the CGI::Application param method rather
then in OPOSSUM::Web::State.
For sequence based methods, the sequence files are now checked for overall
size and special characters and the generate errors are handled.
Changed the wording/formatting.
Formatted internal seq. IDs so that they can be sorted to preserve original
sequence input order.
Added/modified routines so that binding site details are written out to
temporary data files on-the-fly as binding site counts are computed rather
than storing all the sites in memory which was very memory intensive.
The temporary data files are later used to produce the formatted text/html
binding site detail files.
Modified script to utilize the new routines in Include::SeqSSAInclude which
now write out binding site details on-the-fly to temporary files as TFBS counts
are being computed to reduce the memory footprint.
Binding site details are now written out to temporary data files while the
TFBS counts are being computed rather than being stored in memory to reduce
the excessive memory footprint. The template was modified to read the binding
site details from these temporary data files using the Template Toolkit's
Datafile plugin.
Modified the gene-based input templates so that there is no longer a
requirement to select the gene ID type.