CHANGES IN VERSION 1.2.1
------------------------

BUG FIXES

    o Mispelled variable in enrich_motifs()

CHANGES IN VERSION 1.2.0
------------------------

NEW FEATURES

    o New motif_peaks() function: test for significantly overrepresented peaks
      of motif sites in a set of sequences.

    o New get_bkg() function: calculate background frequencies of sequence
      alphabets, including higher order backgrounds. Works for any sequence
      alphabet. Can also create MEME background format files.

    o read_meme() has a new option, readites.meta, which allows for reading
      individual motif site positions and P-values, as well as combined
      sequence P-values.

    o shuffle_sequences(..., method = "markov") works for any set of
      characters instead of just DNA/RNA.

    o shuffle_sequences(): new shuffling method, 'euler'. This allows for k>1
      shuffling that preserves exact letter counts, as opposed to 'markov'.
      This method is set as the new default shuffling method.

    o create_sequences() has a new option "freqs" which allows for generating
      sequence from higher order backgrounds and any sequence alphabet
      (options "monofreqs", "difreqs" and "trifreqs" are now deprecated).

    o universalmotif objects can now hold onto higher order backgrounds.

    o motif_pvalue() with use.freq > 1 can calculate P-values from
      provided higher-order backgrounds, instead of assuming a uniform
      background.

    o add_multifreq() adds corresponding higher order background probabilities
      to motifs.

    o New get_klets() utility function: generate all possible k-lets for any
      set of characters.

    o New score_match() utility function: score a match for a particular motif.

    o New get_matches() utility function: get all possible motif matches above
      a certain score.

    o New count_klets() utility function: count all k-lets for any string
      of characters.

    o New motif_score() utility function: calculate motif score from input
      thresholds.

    o New shuffle_string() utility function: shuffle a string of character
      using one of three methods: euler, linear, and markov.

    o The native write_motifs()/read_motifs() universalmotif format is now
      YAML based. Motifs written before v1.2.0 can still be read by
      read_motifs().

MINOR CHANGES

    o Increased input security for character type parameters throughout.

    o Expanded motif_pvalue(), scan_sequences(), motif_tree() examples
      sections.

    o New vignette sections for motif_peaks() and get_bkg() added to
      SequenceSearches.Rmd.

    o Various vignette tweaks.

    o Fixed various spelling mistakes throughout, added Language field to
      Description, and added spell check to tests.

    o Documentation for the "random" shuffling method has been removed and a
      warning is shown when used to tell the user that it will be removed in
      the next minor update.

    o Generally increased test coverage.

    o The "k=1", "linear" and "markov" shuffling methods are much faster.

    o create_sequences() for higher order backgrounds is much faster.

    o Faster add_multifreqs(): slight improvement for DNA motifs, big
      improvement for non-DNA motifs.

    o sample_sites() has been rewritten for use.freq > 1: the probability of
      each letter in the site is now dependent on the previous letters (also
      faster and more memory efficient for any use.freq).

    o Improvement to calculating motif scores from p-value input: no
      longer guesses different scores, instead estimating a normal distribution
      of scores. This new approach is much, much faster and more memory
      efficient. It does however assume a uniform background.

    o The "score.pct" column in scan_sequences() results now represents the
      percent score based on the total possible score, not just the score
      between zero and the max possible score.

    o summarise_motifs() is much faster.

    o Objects in data/ are saved using serialization format version 3.

    o convert_motifs(motif, class = "universalmotif-universalmotif"): performs
      a validObject() check if "motif" is a universalmotif object.

    o The show() method for universalmotif objects performs a validObject()
      check first.

    o motif_rc() has a new option "ignore.alphabet", used to turn on or off the
      alphabet check (checks for DNA/RNA motif).

    o Added "overwrite" and "append" options to write_*() functions.

    o enrich_motifs(..., return.scan.results = FALSE): uses a slimmed down
      version of scan_sequences() which skips construction of the complete
      results data.frame, saving a tiny bit of time on large jobs.

    o compare_motifs() now includes log P-values. This way comparisons can
      still be properly ranked even if their P-values are below the machine
      limit.

    o convert_motifs() from MotifList (MotifDb) carries over dataSource.

    o If a MEME motif has two names, the second will be assigned as "altname"
      by read_meme().

    o Utilities documentation has been split into two: ?utils-motif and
      ?utils-sequence.

BUG FIXES

    o Fixed IC score calculation from character input in create_motif().

    o The internal DNA consensus letter calculation previously did not assign
      ambiguous letters when one PPM position was >0.5 and another was >0.25.
      This was unintended behaviour and will now output the proper ambigous
      DNA letter.

CHANGES IN VERSION 1.0.22
-------------------------

BUG FIXES

    o Fixed incorrect RcppExports code introduced in last patch

CHANGES IN VERSION 1.0.21
-------------------------

BUG FIXES

    o Fixed an incorrect citation in motif_pvalue()

CHANGES IN VERSION 1.0.20
-------------------------

BUG FIXES

    o Fixed a bug introduced in previous patches where create_sequences()
      fails with alphabet = "RNA" and missing difreq/trifreq

CHANGES IN VERSION 1.0.19
-------------------------

BUG FIXES

    o Fixed create_sequences(alphabet = "RNA") when providing difreq/trifreq

CHANGES IN VERSION 1.0.18
-------------------------

BUG FIXES

    o Fixed alphabet letters being stripped from difreq and trifreq params in
      create_sequences()

    o Fixed an incorrect call to sample() when using create_sequences() with
      difreq

CHANGES IN VERSION 1.0.17
-------------------------

BUG FIXES

    o Custom motif alphabets are properly sorted in the alphabet slot of motifs

    o scan_sequences() properly matches custom sequence and motif alphabets

CHANGES IN VERSION 1.0.16
-------------------------

BUG FIXES

    o scan_sequences() will now properly create a scoring matrix from motifs
      with pseudocounts of 0

CHANGES IN VERSION 1.0.15
-------------------------

BUG FIXES

    o view_motifs() will now give an informative error message when trying
      to plot multiple motifs with non-unique names

CHANGES IN VERSION 1.0.14
-------------------------

BUG FIXES

    o Fixed 'method' parameter documentation for motif_tree()

CHANGES IN VERSION 1.0.13
-------------------------

BUG FIXES

    o Fixed the error message given when a vector of incorrect length is
      used in a function

CHANGES IN VERSION 1.0.12
-------------------------

BUG FIXES

    o motif_pvalue() no longer throws an error for
      motif_pvalue(..., pvalue = 0)

    o motif_tree() now works properly with dist objects as input

CHANGES IN VERSION 1.0.11
-------------------------

BUG FIXES

    o The compare_motifs() example for min.mean.ic in the Advanced Usage
      vignette now makes more sense

CHANGES IN VERSION 1.0.10
-------------------------

BUG FIXES

    o More strangely behaving MotifDb vignette code addressed in Advanced Usage
      vignette

CHANGES IN VERSION 1.0.9
------------------------

BUG FIXES

    o shuffle_motifs() now produces motifs of proper length

CHANGES IN VERSION 1.0.8
------------------------

BUG FIXES

    o Trying to prevent R CMD BUILD from changing the behaviour of vignette
      code involving MotifDb package

CHANGES IN VERSION 1.0.7
------------------------

BUG FIXES

    o merge_motifs() will not show repeat families/organisms in new merged
      motif

    o show method will no longer show name slot instead of altname

CHANGES IN VERSION 1.0.6
------------------------

BUG FIXES

    o If MEME motif file has no strand info, assume `strand = "+"`, not
      `strand = c("+", "-")`

CHANGES IN VERSION 1.0.5
------------------------

BUG FIXES

    o `read_meme()` can now read non-DNA/RNA motifs

    o removed duplicate line in run_meme.R

    o `scan_sequences()` will not scan mismatching motif/sequence alphabets

    o verbose output from `scan_sequences()` will now display correctly

    o Using `enrich_motifs()` and not finding any motif hits in the input
      sequences no longer throws an error

    o Fixed threshold calculation in `enrich_motifs()`

    o `enrich_motifs()` will now show results for motifs which have hits in
      target sequences but none in bkg sequences

CHANGES IN VERSION 1.0.4
------------------------

BUG FIXES

    o Can now use `view_motifs(..., tryRC=F)` without throwing an error

CHANGES IN VERSION 1.0.3
------------------------

BUG FIXES

    o Missed a couple [Biostrings::*StringSet-class] from last patch

    o Updated README to reflect new installation method

    o Wrapped instances of \link{} with \code{\link{}}

CHANGES IN VERSION 1.0.2
------------------------

BUG FIXES

    o `read_meme()` can now read meme result files with missing strand info

    o Use \link{*StringSet} instead of [Biostrings::*StringSet-class] in
      documentation

    o No longer load MotifDb package in examples on Windows

CHANGES IN VERSION 1.0.1
------------------------

BUG FIXES

    o TFBSTools motifs with multiple species can convert to universalmotif

    o `scan_sequences()`: will now ignore non-standard letters instead of
      crashing

CHANGES IN VERSION 1.0.0
------------------------

SIGNIFICANT USER-VISIBLE CHANGES

    o Changed the appearance of some of the vignette code blocks

    o More documentation added in data.R

BUG FIXES

    o Replaced for loop with `lapply()` in add_multifreq.R L120-133

    o Replaced for loop with `lapply()` in enrich_motifs.R L327-330

    o Replaced for loop with `lapply()` in shuffle_motifs.R L77-80

    o Using `diag()` instead of for loop in `fix_pcc_diag()` (compare_motifs.R)

    o Fixed `read_motifs()` not parsing alphabet correctly

    o Vignettes are now built using pdflatex instead of lualatex

CHANGES IN VERSION 0.99.0
-------------------------

    o Ready for bioconductor

CHANGES IN VERSION 0.98.0
-------------------------

    o Pre-bioconductor
