Changes in version 2.2.0:

BUG FIXES

    o Restore the `correctSystematicG` option in `getCTSS()`.  See #61.
    o Restore object class consistency in if / else statement in private function
      `bam2CTSS`.  Fixes #49.
    o Restore proper CTSS conversion from BAM files (bug introduced in v1.34.0)
      while fixing issue #36.
    o Ensure Tag Clusters have a Seqinfo. Fixes #63.

Changes in version 2.0.0:

BACKWARDS-INCOMPATIBLE CHANGES

    o The `CAGEset` class is removed.
    o Accessors using plain `data.frame` formats are removed.
    o Modifier functions return the object instead of silently modifying it
      in the global environment.  Thus, you can use R pipes (`|>`).
    o Removed export function that unconditionally wrote files to the
      working directory, such as `exportCTSStoBedGraph`.  As a replacement a
      new converter is provided, `exportToBrowserTrack`, that produces
      `UCSCData` objects that the user can then wite to files using the
      _rtracklayer_ package.
    o Removed the `extractExpressionClass` function, as the information is
      easily accessible from within the `CTSS` or `ConsensusClusters` objects.
      
NEW FEATURES

    o `CTSSnormalizedTpmGR` and `CTSStagCountGR` now accept `"all"` as a special
      sample name to return them all in a `GRangesList` object.
    o Plot interquantile width and expression clusters with ggplot2.
      
BUG FIXES

    o Corrected the `getExpressionProfiles` function to accept CAGEexp objects.
    o Updated the `exampleCAGEexp` object to contain expression classes.
    o Restore paraclu support for CAGEexp objects.
    o Corrected a bug in `aggregateTagClusters` that was causing mislabelling
      of tag clusters (PR#42).
    o Prevent `plotReverseCumulatives` from crashing when values are not in
      range. (PR#43).

Changes in version 1.34.0:

BUG FIXES

    o Reform the CTSS class.  New accessor: `CTSS()` (with no dot).
    o Correct a class error when loading BAM files. (Closes #36).
    o Use the BSgenome object from the main environment if available.

Changes in version 1.32.0:

BUG FIXES

    o Update end coordinates before start coordinates in the function
      `.aggregateTagClustersGR()`.  This should stop triggering
      "'width(x)' cannot contain negative integers" errors.
    o Correct `.make.consensus.clusters` internal function.  This should stop
      triggering "Consensus clusters must not overlap with each other" errors.
    o Allow empty `CTSS.chr` objects.
    o Correct `plotInterquantileWidth()` to really use consensus clusters
      when passed the argument `clusters = "consensusClusters".
    o Fix failures on `CAGEexp` objects containing only one sample.

Changes in version 1.30.0:

BUG FIXES

    o Correct usage of `&&` for vector comparison in pairs.DataFrame().
    o Adjust to latest SummarizedExperiment MultiAssayExperiment versions.

Changes in version 1.28.0:

BACKWARDS-INCOMPATIBLE CHANGES:

    o The CTSS objects are now based on the UnstitchedGPos class instead
      of the parent GPos class.  Existing CAGEexp objects might give
      errors after package upgrade.

NEW FEATURES

    o Depends on MultiAssayExperiemnt instead of previously Importing it.
      No need to load it by hand (nor SummaryExperiment) anymore.

BUG FIXES

    o Correct strand in .remove.added.G private function (PR#26).

Changes in version 1.26.0:

DOCUMENTATION

    o Split the "CAGE resources" documentation into a separate vignette.

Changes in version 1.24.0:

NEW FEATURES

    o plotAnnot(): the "group" argument now accepts formulas such as "~ a + b"
      to indicate names of metadata column that will be pasted together to
      form a new group factor.

BUG FIXES

    o Prevent mergeSamples() from producing colData that cause other functions
      to crash later when coercing to data.frame.
    o Repaired paraclu support for CAGEset objects.
    o normalizeTagCount() works again on CAGEset objects.
    o consensusClustersGR() reports expression score of the selected sample
      (instead of silently ignoring the "sample" argument and reporting
      expression sum on all the samples).

Changes in version 1.22.0:

BACKWARDS-INCOMPATIBLE CHANGES:

    o The plotting functions send their output to the graphical device instead
      of writing it to a file.  This makes their use more consistent with most
      plotting functions in R.
    
NEW FEATURES

    o New "CAGEexp" class extending the MultiAssayExperiment class.  It stores
      expression data more efficiently than "CAGEset", and uses core
      Bioconductor typse natively.  For backwards compatibility it also support
      many of the original generic functions for "CAGEset" objects.  Sample
      names in CAGEexp objects must by syntactically valid.  Some methods
      are not yet available for CAGEexp object (see the vignette).  Conversely
      some new functions will not be available for CAGEset objects.
    o New "CTSS" and "TagClusters" classes wrapping GPos and GRanges objects,
      for more type safety.
    o New functions for quality controls such as plotAnnot() or hanabiPlot().
      See the CAGEexp vignette for details.
    o New removeStrandInvaders() function to count and remove strand-invasion
      artefacts (see Tang et al., 2013, doi:10.1093/nar/gks112).
    o Data export as DESeqDataSet object for DESeq2 with the new
      consensusClustersDESeq2() and GeneExpDESeq2() functions.
    o New "bedctss" format to load the FANTOM5 and FANTOM6 CAGE data.
    o Multicore parallelisation with BiocParallel instead of parallel.
    o New function sampleList() to help looping on samples with lapply().
    o New plotCorrelation2() function, faster than plotCorrelation() because
      it is plain black and white.
    o Multicore loading of CTSS data in CAGEexp objects.
    
OTHER CHANGES

    o Example data "exampleCAGEexp", "exampleCAGEexp" and "exampleZv9_annot"
      are now is lazy-loaded.
    o NULL can be passed as genome name, to circumvent the requirement for a
      BSgenome object when actually not needing one.
    o In CAGEexp objects, expression quantile positions are given relative
      to the cluster start site.
    o For performance reasons, the positions of a quantile Q is now calculated
      as the position of the first base where cumulative expression is higher
      or equal to Q% of the total expression of a cluster.
    o plotReverseCumulatives():
      - fitInRange accepts a value of "NULL" to turn off power law fitting.
      - New "legend" argument to remove legend when set to "FALSE".
      - Axis range and labels can be modified with xlab/ylab and xlim/ylim.
      - Ladders steps start on the values instead of being centered on.
    o setColors(): allow lowercase in color names.

BUG FIXES

    o Corrected a bug that was crashing CAGEset objects when loading more than
      one BAM file.
    o Load BAM as gapped alignment with readGAlignments() instead of
      scanBam().  Without this correction, TSS position on minus strand is
      incorrect in case of indels in the read.

DOCUMENTATION UPDATES

    o Roxygen is used to generate the manual pages.
    o A new HTML vignette describes the "CAGEexp" class.

CHANGES in version 1.18.1 :

    o getCTSS() can now load data from large BAM files.  Before this update,
      there were "negative length vectors" errors when filtering out low quality
      reads from datasets with multiple dozens of millions of sequences.

CHANGES in version 1.18.0 :

    o Added Charles Plessy as co-maintainer.
    o Remove warning by replacing deprecated ignoreSelf() with drop.self().

CHANGES in previous versions:

Updated to version 1.13.4 (27/04/2016)
26/04/2016	updated the vignette
26/04/2016	added support for BED file CAGE tags input - included the new accepted value for inputFilesType="bed"
24/04/2016	added support for paired-end BAM file CAGE data input (CAGEscan) - included the new accepted value for inputFilesType="bamPairedEnd"
Updated to version 1.13.3 (18/04/2016)
18/04/2016	updated the vignette
14/04/2016	modified the consensusClusters() function to allow extracting sample-specific information, such as CAGE signal, position of the dominant TSS and interquantile width in a specific sample (i.e. consensusClusters() now behaves analogously to tagClusters() function)
10/03/2016	fixed the bandwidth of the smoothing kernel for plotting correlation density plots to always scale with the number of bins
10/03/2016	added new argument to plotCorrelation() function that allows controlling figure size in pixels
03/11/2015	fixed the format of exporting bed12 files for tag clusters, which contained overlapping blocks per record and caused problems when trying to convert bed to bigBed 
03/11/2015	added an option of exporting CTSS bedGraph files to BigWig format - added a new argument to exportCTSStoBedGraph() function
Updated to version 1.13.0 (15/10/2015, Bioconductor 3.2 release)
Updated to version 1.10.2 in the release and 1.11.2 in the development (11/10/2015)
11/10/2015	changed to selective import from data.table package to resolve the conflict regarding the shift function
Updated to version 1.10.1 in the release and 1.11.1 in the development (17/09/2015)
15/05/2015	updated the vignette
15/05/2015	enabled changing xlim and ylim when plotting interquantile width distribution
13/05/2015	added mergeCAGEsets() function for merging two CAGEset objects
11/05/2015	defined 'as' method for coercing a data.frame into a CAGEset object
Updated to version 1.11.0 (17/04/2015, Bioconductor 3.1 release)
Updated to version 1.9.3 (06/02/2015)
06/02/2015	CAGEr package has now been published in NAR! If you find this package useful in your work, please cite: Haberle et al. (2015) CAGEr: precise TSS data retrieval and high-resolution promoterome mining for integrative analyses. Nucleic Acids Research 43(8):e51, doi:10.1093/nar/gkv054. Check citation("CAGEr") for more details.
13/01/2015	fixed the error message in tagClusters() function for the case no qLow and qUp values are specified
Updated to version 1.9.2 (03/12/2014)
03/12/2014	updated the vignette - fixed the references
Updated to version 1.9.1 (01/12/2014)
01/12/2014	fixed the bug in importing data from ENCODEprojectCAGE data package using importPublicData() function when importing from multiple datasets that contain groups with the same name
Updated to version 1.9.0 (14/10/2014, Bioconductor 3.0 release)
Updated to version 1.7.2 (01/06/2014)
01/06/2014      replaced the .RData files in the /data folder with the more compressed ones
Updated to version 1.7.1 (30/05/2014)
30/05/2014	updated the vignette with the description of available public CAGE data resources and how to use them in CAGEr
25/05/2014	added a list of available human and mouse FANTOM5 samples as a dataset that can be loaded via call to data(FANTOM5humanSamples) or data(FANTOM5mouseSamples)
25/05/2014	modified the importPublicData() function so that it supports importing FANTOM5 data for human and mouse directly from FANTOM web resource, as well as data from several CAGE data packages
23/05/2014	optimized the creation of CTSS table across samples by performing merge on data.tables rather than data.frames - reading the data into CAGEset object from BAM or CTSS files is now ~10X faster
Updated to version 1.7.0 (14/04/2014, Bioconductor 2.14 release)
Updated to version 1.5.5 (01/04/2014)
13/02/2014	fixed bug in function for plotting interquantile width (in cases of multiple pairs of low and high quantiles present it was sometime fetching multiple columns and stopping with an error)
12/02/2014	fix typo in Details section of man page for exportToBed function
12/02/2014	fixed the bug in function for systematic correction of G addition bias (it was stopping with an error in a rare case when all reads beginning with a G and mapping to the genome are derived by trimming the G mismatch from upstream position)
Updated to version 1.5.3 (10/11/2013)
08/11/2013      fixed the bug in importPublicData function that caused problems when importing only one sample
08/11/2013	fixed error in BibTex file
Updated to version 1.5.2 (06/11/2013)
06/11/2013	updated vignette and NEWS file
Updated to version 1.5.1 (02/11/2013)
02/11/2013	moved vignette source to /vignettes folder
Updated to version 1.5.0
15/10/2013	Biodonductor 2.14. release
Updated to version 1.3.10 in the development (24/09/2013)
24/09/2013	optimized calculation of K-S p-values for shifting promoters using vectorized functions
23/09/2013	removed a .C call to the pKS2 function from stats package and replaced it by an R implementation of pKS2
Updated to version 1.2.9 in the release and 1.3.9 in the development (23/08/2013)
23/08/2013      added consensusClustersTpm() function for retrieving matrix with tpm values for consensus clusters across all samples
Updated to version 1.2.8 in the release and 1.3.8 in the development (23/08/2013)
22/08/2013	modified all functions to work on data from only one strand (some were previously giving error in such case)
21/08/2013	fixed the bug in calling CTSSs from reads on minus strand when not correcting for G addition, i.e. when removeFirstG=FALSE
Updated to version 1.2.7 in the release and 1.3.7 in the development (08/08/2013)
08/08/2013	added new argument to aggregateTagClusters() function (excludeSignalBelowThreshold) that controls which TCs will contribute to the total CAGE signal of the consensus cluster - only the ones above the threshold that are used initially to set the boundaries of the consensus cluster, or all TCs that overlap the resulting consensus clusters 
07/08/2013	enabled retrieving interquantile width for tag clusters - added new returnInterquantileWidth argument to tagClusters() function
06/07/2013	enabled importing entire CTSS table with multiple columns of tag counts representing multiple samples/experiments - allowed setting imputFilesType to "CTSStable" when creating CAGEset object and extended getCTSS function accordingly to read the entire table at once and fill the object
Updated to version 1.2.6 in the release and 1.3.6 in the development (23/07/2013)
22/07/2013	replaced multicore package dependency with parallel package (suggested by Bioconductor core team)
21/07/2013	fixed the bug in using loaded genome when correcting for G nucleotide bias
20/07/2013	fixed plotReverseCumulatives to work with only one sample in the CAGEset
19/07/2013	changed naming of correlation plot files to distinguish CTSS from consensus clusters plot
Updated to version 1.2.5 in the release and 1.3.5 in the development (28/06/2013)
28/06/2013	updated the vignette
Updated to version 1.2.4 in the release and 1.3.4 in the development (16/06/2013)
16/06/2013	allowed plotting reverse cumulatives for normalized tag counts - added new argument to plotReverseCumulatives() function
15/06/2013	implemented calculating suggested referent power-law distribution and visualizing the distribution and its parameters on reverse cumulatives plot when calling plotReverseCumulatives() function
14/06/2013	allowed assigning user-specified colors to samples to be used in visualizations - added new setColors() function
13/06/2013	allowed plotting scatter plots and correlation for both individual TSSs (raw or normalized values) and consensus clusters - added new argument to plotCorrelation() function
Updated to version 1.2.3. in the release and 1.3.3 in the development (12/06/2013)
12/06/2013	implemented plotting pairwise scatter plots of CAGE tag count and calculating correlation between samples - added new plotCorrelation() function
Updated to version 1.2.2. in the release and 1.3.2 in the development (30/05/2013)
30/05/2013	implemented the algorithm for correcting 'G' nucleotide addition bias to CAGE tags described in Carninci et al., Nature Genetics 2006 - added a new option 'correctSystematicG' to getCTSS function
Updated to version 1.2.1 in the release and 1.3.1 in the development (28/05/2013)
28/05/2013	fixed the bug in reporting number of CTSSs in cluster when clustering CTSSs using custom clusters (for empty clusters it was returning that the number of CTSSs is 1, although the signal is 0)
28/05/2013	fixed the bug in clustering CTSSs using custom clusters when run with multicore=FALSE (it was returning to many clusters - correct specified region but all of the regions on each chromosome, not only the specified one)
22/05/2013	fixed the column classes in CTSS data.frame when reading the data from bam files (to match the classes when reading from ctss files)
21/05/2013	updated the vignette with explanation on how to use custom build genomes
21/05/2013	allowed usage of custom build BSgenome packages by removing the check whether the specified genome is present in the available.genomes() from BSgenome package
Updated to version 1.2.0 in the release and 1.3.0 in the development (02/05/2013)
02/05/2013	updated the vignette
02/05/2013	added a new feature in the plotReverseCumulatives function, so that the slope of the fitted power-law distribution in the user selected range of values is shown on the plot for each sample (helps to choose appropriate alpha parameter for normalization)
02/05/2013	fixed a bug in selecting the range of tag count values for fitting power-law distribution in normalization
01/05/2013	added sample labels as names to library sizes vector
29/04/2013	implemented statistical testing (Kolmogorov-Smirnov test) for differential promoter usage based on cumulative sums of CAGE signal along the promoters (implemented within the scoreShift function)
20/04/2013	added pass-through option "none" for 'method' parameter in normalizeTagCount function to enable using raw tag counts in downstream steps (CTSS clustering, promoter width, etc.)
19/04/2013	optimized scoreShift function to extract and process only the cumulative sums for samples being compared 
19/04/2013	replaced lapply with a for loop in the scoreShift function to avoid invoking multicore within lapply
18/04/2013	fixed wrong error message in plotExpressionProfiles function that notifies about accepted values for 'what' parameter
27/03/2013	added data.table to the list of dependencies and optimized various parts of the code to use data.table instead of data.frame