# 1.25.5
* within_clust_sort now respects "none" sort strategy. was bugged

# 1.25.4
* applyMovingAverage should handle extra columns better now

# 1.25.3
* ssvFetchBamPE.RNA now uses anchor = "left" internally

# 1.23.14
* reimplemneted "left" and "right" within_cluster_sort_strategy for ssvSignalClustering

# 1.23.13
* added ssvAnnotateSubjectGRanges to add mcols from overlapping GRanges to subject
* ssvOverlapIntervalSets and ssvConsensusIntervalSets now have preserve_mcols flag to automatically apply ssvAnnotateSubjectGRanges

# 1.23.11
* make_facet_str - to handle facets

# 1.23.9
* fixed mis behaving test

# 1.23.7
* bugfix for emergent ggplot2 conflict using palette in banded quantile plots

# 1.23.6
* bugfix for 1.23.5 fix where query width < 1/2 window size for summary

# 1.23.5
* bugfix to handle edge case of query width less than window size for summary

# 1.23.4
* bugfix for previous bugfix - easyLoad_FUN was failing when source file was empty
* bugfix for "center" anchor. Uses shifted result of same code as "left" now.

# 1.23.3
* bugfix - easyLoad_bed (and specifically easyLoad_seacr) now assign unique values of `name` as default.

# 1.23.2
* bigfix - heatmaps generated with min_method = "summary" had inappropriate cluster bar spacing.

# 1.23.1
* BUGFIX for splice_strategy = "splice_count" soft clippped reads would improperly shift position by 1.

# 1.21.13
* ssvMakeMembTable now tolerates NA values with a warning.

# 1.21.12
* safeBrew accepts logical as n

# 1.21.11
* bugfix where centerGRangesAtMax was not passing x_ to centerAtMax

# 1.21.10
* added gg/ggplot/ggplot2 pal to safeBrew to reproduce ggplot default colors

# 1.21.9
* added applyMovingAverage equivalent of applySpline

# 1.21.7
* rm bad file in test causing bioc error

# 1.21.6
* splice_count target_strand and flip_strand now behaves consistently and is tested

# 1.21.5
* bugfix for flip_strand when splice_strategy == "splice_count", was not being applied

# 1.21.4
* bugfix for assembling more than 2 heatmap elements, now nrow = 1

# 1.21.3
* added do_not_scaleTo1 to append_ynorm.

# 1.21.2
* added findMaxPos

# 1.21.1
* added counts_as_percent and percentage_digits to ssvFeatureVenn to allow percentages to be displayed

# 1.19.4
* added count_label_size = 8 to ssvFeatureBars

# 1.19.3

* bugifx: ssvSignalLineplotAgg now uses non-default values of y_ properly

# 1.19.2

* Update all aes_string calls to aes with tidy ideoms to avoid deprecated aes_string
* Use linewidth instead of size to avoid deprecated use of size

# 1.19.1

* Catch up devel to recent development

# 1.18.1

* Catch up release to recent development

# 1.15.18

* Added named color vector support to rect_color and text_color to add_cluster_annotation.
* ssvSignalHeatmap and ssvSignalHeatmap.ClusterBars both support basic add_cluster_annotation arguments. (rect_color, text_color, label_angle, show_label)

# 1.15.16

* ssvSignalHeatmap, ssvSignalHeatmap.ClusterBars, and ssvSignalClustering now support fun.aggregate to combine values when facet covers multiple samples.

# 1.15.15

* added certain add_cluster_annotation arguments to ssvSignalHeatmap.ClusterBars

# 1.15.14

* added fragLens as a dummy argument to ssvFetchBigwig and ssvFetchBamPE to increase flexibility

# 1.15.12

* minor bugfix for nclust reduction in ssvSignalClustering in for low uniqueness.

# 1.15.11

* added support for empty bed and np files to easyLoad_*

# 1.15.10

* ssvFetchGRanges no accepts GrangesList properly

# 1.15.9

* added copy_clust_info to duplicate cluster info (row order and cluster assignment) from one ssvSignalClustering result to any ssvFetch* result.
* added get_mapped_reads functiont to retrieve mamped read counts from bam files
* fixed data.table shallow copy warning in within_clust_order

# 1.15.7

* safeBrew now accepts character and factor inputs and returns named colors accordingly.
* ssvSignalHeatmap.ClusterBars refined annotation bar placement

# 1.15.6

* bugfix, needed explicit GenomeInfoDb::seqlevels

# 1.15.5

* cowplot added to imports
* bugfixes with seqlevels in view functions(Bioc 15 new).

# 1.15.3

* build warning fix - didn't update docs when changing raster_approximation default for ssvBinaryHeatmap

# 1.15.2

* default for ssvFeatureBinaryHeatmap is now raster_approximation = TRUE
* optimization of ssvFactorizeMembTable

# 1.14.2

* more robust seqnames handling in harmonize_seqlengths with user instruction to resolve issues.
* bugfix for seqlengths in fetch_bamPE

# 1.14.1

* bugfix for "invalid class "GRanges" object:
    'seqlevels(seqinfo(x))' and 'levels(seqnames(x))' are not identical"

# 1.13.10

* bugfix fixed bad example in clusteringKmeansNestedHclust

# 1.13.8

* added "reverse" within_order_strategy options to within_clust_sort
* added function reverse_clusters - reverses cluster orders
* added function split_cluster - splits existing cluster up

# 1.13.6

* added "left" and "right" within_order_strategy options to within_clust_sort
* added  function reorder_clusters_stepdown - attempts to arrange clusters so that more signal is on the left at the top and right at the bottom
* added  function reorder_clusters_hclust - arranges clusters using hierarchical clustering of centroids
* added  function reorder_clusters_manual - manually specify cluster order, brings manually specified clusters to top
* added  function merge_clusters - merges multiple clusters together

# 1.13.5

* more robust harmonize_seqlengths

# 1.13.4

* auto reduce nclust when too high

# 1.13.3

* better bugfix to avoid using pbmclapply on windows via ssv_mclapply

# 1.13.2

* bugfix to avoid using pbmclapply on windows

# 1.13.1

* calling ssvFeatureUpset with a single set now produces plot with message instead of uncaught error.
* data.table assignments by [[]] switched to set() to avoid invalid .internal.selref warnings
* fragLens calc is now multicore
* added easyLoad_FUN to allow arbitrary load functions
* added easyLoad_IDRmerged
* added within_cluster_sort for sorting within clusters by different values/data.
* kmeans iter.max
* inject formating to ssvSignalHeatmap.ClusterBars with FUN_format_heatmap
* cluster reorder disabled if manual clusters
* docs to address warnings and notes

# 1.11.12

* for ssvFetch*, input of a 0 length query GRanges is now an ERROR.

# 1.11.11

* compressed large data objects to address warnings : save(obj, file="data/obj.rda", compress='xz')

# 1.11.10

* improved clustering and heatmap messaging
* max_rows and max_cols now applies to heatmap call upstream of clustering and independent when data is already clustered.

# 1.11.9

* repaired missing elementType slot warning on older GRanges data objects

# 1.11.8

* prepare_fetch_GRanges has been deprecated and prepare_fetch_GRanges_width should be used instead.
* prepare_fetch_GRanges_names has been exposed and allows name seeting of query GRanges with what seqsetvis does internally.

# 1.11.6

* bugfix when min_number = 0
* ssvFetchBam return_unprocessed supresses fragLens calc
* ssvFetchBam & ssvFetchBamPE reutrn_unprocessed yields same variables

# 1.11.5

* feature - fill_limits to ssvSignalHeatmap and ssvSignalHeatmap.ClusterBars to control fill limits
* tweak - rel_widths default of 1,9 for ssvSignalHeatmap.ClusterBars
* bugfix - drop removed ids from ssvSignalClustering
* tweak - row and column drops are messages, not warnings.

# 1.11.3

* feature - ssvSignalClustering accepts memb_table
* feature - ssvSignalHeatmap.ClusterBars displays cluster bars once on the left instead of in each facet
* feature - ssvSignalClustering accepts centroids instead of nclust
* feature - exposed make_clustering_matrix to convert tidy data.table to wide matrix
* feature - exposed add_cluster_annotation to append or insert cluster size bars beside heatmaps
* feature - exposed assemble_heatmap_cluster_bars to make appending add_cluster_annotation easier

# 1.11.2

* feature - added ssvFeatureUpset to support upset plots.

# seqsetvis 1.9.19

* tweak - ssvConsensusOverlaps accepts 0 for min_fraction and min_number
* bugfix - data.table::get no longer accepts multiple items, broke applySpline

# seqsetvis 1.9.18

* feature - text_colors for ssvFeatureBars

# seqsetvis 1.9.17

* bugfix - resolved unexpected strand behavior with flip_strand and target_strand interaction in ssvFetchBam.

# seqsetvis 1.9.16

* improvement - ssvConsensusIntervalSets and ssvOverlapIntervalSets now pass ... params to findOverlaps.

# seqsetvis 1.9.15

* fetch_bam return_unprocessed now returns all bam fields (seq etc.)
* new feature - ssvConsensusIntervalSets allows consensus style overlaps, ie. more than 3 of 10 regions must be present.

# seqsetvis 1.9.13

* parallelization support for easyLoad_* via n_cores argument

# seqsetvis 1.9.11

* new feature - centerGrangesAtMax function for creating query GRanges centered
at. signal maximum.

#seqsetvis 1.9.10

* new feature - easyLoad_seacr function for loading seacr output bed files.
* bugfix ssvFetchBamPE can handle ranges with no reads.

# seqsetvis 1.9.9

*bugfix - levels of unique_names was not being used in ssvFetch functions

# seqsetvis 1.9.5

* bugfix - for stranded bam fetch, strand sensititvity lost when overlapping
features have opposing strands.
* improvement - error if qgr has duplicate names/ids

# seqsetvis 1.9.4

* bugfix - n_region_splits limited to length of qgr

# seqsetvis 1.9.3

* new feature - improved parallelization by splitting up regions according to n_region_splits
* improvement - fragLen for bam file is now calculatd once per bam file prior to any region splitting.
* bugfix - stranded qgr and odd win_size causes inconsistent x values
* bugfix - ssvFetch* - file_paths and file_attribs as data.table causes error.

# seqsetvis 1.7.6

* improvement - added show_cluster_bars arg to ssvSignalHeatmap to suppress cluster labelling.
* improvement - added force_append arg to appen_ynorm to conveinently overwrite previous normalization,

# seqsetvis 1.7.5

* bugfix - update ssvSignalHeatmap for within_order_strategy compatibility
* change - default within_order_strategy is now "sort"

# seqsetvis 1.7.4

* bugfix - error if uniq_names factor

# seqsetvis 1.7.2

* fix - ssvSignalClustering - within cluster sorting was not being applied
* new feature - added within_order_strategy = c("hclust", "sort") paramter to ssvSignalClustering.

# seqsetvis 1.5.3

* new feature - added skip_force_centerFix to all ssvFetch functions to accomodate
retrieval of variable width regions using sample methods, i.e. exons.
* new feature - added collapse_gr() and convert_collapsed_coord() functions to
support maniulation of signal across exons.
* getReadLength is now exported

# seqsetvis 1.5.2

* improvement - ssvFetchGRanges does more than coverage now and can retrieve a qualititative attribute from supplied GRanges.  Support for summary too.  These changes are ideal for chromHMM states or similar.
* improvement - added do_not_cap to append_ynorm to prevent capping at 1.
* bugfix - ssvFetchSignal handle empty result.
* bugfix - better seqlengths handling for fetchBam
* FEATURE viewGrangesWin*_dt now handles qualitative attribute fields via attrib_name parameter.  Default behavior unchanged.

# seqsetvis 1.5.1

* FEATURE added calc_norm_factors and append_y_norm to facilitate normalization
between datasets.
* bugfix - apparent change in how names are used for which parameter of
rtracklayer::import.bw required tweak in ssvFetchBam.single

# seqsetvis 1.3.13

* FEATURE added ssvFetchBamPE to properly handle paired-end (PE) ChIP-seq and
similar data.  In contrast to ssvFetchBamPE read pairs in windows are
identified and entire span of pair (instead of alignment location) is used for
covereage calculation.
* bugfix ssvFetchBam - fixed issue where PE data caused crash.
* improvemnet - fragLen_calcStranded added flip_strand parameter to allow
swapping of strand prior to strand cross correlation.
* bugfix/cleanup in automatic sample naming, unlikely to affect anyone.

# seqsetvis 1.3.8

* coding practice fixes

# seqsetvis 1.3.7

* bam indexes are generated automatically
* added flip_strand param to ssvFetchBam
* bugfix/improvement ssvFetchBam passes ... args to ScanBamParam

# seqsetvis 1.3.6

* change - when strands of qgr are negative, strands of results are
swapped. x coordinates are already flipped.

# seqsetvis 1.3.5

* bugfix/improvement - checks were timing out due to fragLen_calcStranded()
poor performance.  switched to shiftApply on Rle strategy to speed up.
* FEATURE - ssvFetch accepts data.frame/table for file_paths
(character still fine) to efficiently set additional attribues like metadata.
* docs up to passing checks
* FEATURE - ssvFetch* accept n_cores or uses option("mc.cores") to in
parallel.
* FEATURE - ssvFetchGRanges - retreives coverage of a list of GRanges in
form parallel to existing ssvFetch*.

# seqsetvis 1.1.7

* minor documenation improvement

# seqsetvis 1.1.6

* ssvFeature* and ssvSignal* added return_data paramter to skip plotting and
return data used.
* ssvFetchBam added target_strand = "both" support

# seqsetvis 1.1.5

* ssvBamFetch - added max_dupes parameter, default is Inf and shouldn't change
behavior. uses .rm_dupes() internally.
* bugfix: shift_anchor was causing a 1bp shift per call.
* bugfix: ssvBamFetch, strand of qgr and target_strand interacted incorrectly and
led to empty results for mismatches.

# seqsetvis 1.1.4

* ssvBamFetch - added splice_strategy parameter to control split reads for RNA-
seq data.  Defaults is "none" and shouldn't change behavior.
Uses .expand_cigar_dt() internally.

# seqsetvis 1.1.3

* BiocManager added to suggests and vignette.

# seqsetvis 1.1.2

* bugfix: viewGrangesWinSample/Summary_dt were both erroring when 0 reads were in window.
* bugfix: ggplot2 2.3.0 compatibility fix in ssvSignalLinePlotAgg()
* bugfix: col2hex now properly preserves character vector names
* bugfix: ssvFetch now properly allows NA for fragLens to disable fragment extension
* bugfix: ggellipse line_scale and color_scale were being ignored

# seqsetvis 1.1.1

* bugfix: skip rtracklayer::import.bw depedent tests on Windows OS

# seqsetvis 1.1.0

* seqsetvis is released!

# seqsetvis 0.99.20

Impacts existing scripts

* fetchWindowedBam is now ssvFetchBam.single
* fetchWindowedBamList is now ssvFetchBam
* fetchWindowedBigwig is now ssvFetchBigwig.single
* fetchWindowedBigwigList is now ssvFetchBigwig
* fetchWindowedSignalList is now ssvFetchSignal

Independent addititions

* anchor parameter for all fetch functions.  allows strand sensitive x assignment
and left or center reference point.
* added viewGRangesWinSummary_dt() -  allows summary statistic to be appled over
windows in contrast to sampling method. allows qgr to be varying width.
* renamed viewGRangesWindowed_dt() to viewGRangesWinSample_dt()

# seqsetvis 0.99.18

* updated package title
* updated vignette title

# seqsetvis 0.99.17

* fetch functions, _dt versions removed and param return_data.table = FALSE
added
* refactoring to encapsulate fetch utility functions shared by bw and bam

# seqsetvis 0.99.13

* added bamFetch*
* refactored bwFetch* to use viewGRangesWindowed_dt, same as bamFetch*
* ssvSignalClustering and Heatmap bug fixes related to hardcoded data.table
variables
* restructured and renamed extdata to be cleaner/more intuitive.

# seqsetvis 0.99.12

* small changes to clear warning for Bioc acceptance.

# seqsetvis 0.99.10

* fewer and smaller vignette figures
* ggellipse exported with documentation
* ssvSignalHeatmap calcs better xticks
* ssvFeatureBinaryHeatmap true_color and false_color params added to allow
color control
* ssvFeatureVenn and Euler params unified
* ssvFeatureBars has bar_color param like that of venn and euler

# seqsetvis 0.99.9

* vigentte - some plots reduced in size and dpi reduced to save space.
* ssvFeatureVenn and Euler refactored to use common internal ggellipse function
for
consistency.
* ssvBinarizeHeatmap cleaned up plot output and changed default to
raster_approximation = FALSE

# seqsetvis 0.99.8

* fetch* now automatically calculate and apply a fixed width.
* BiocFileCache used for all URL resources in vignette
* vigentte uses cases for CTCF peak overlap and for chromHMM states complete

# seqsetvis 0.99.7

* fixed examples error for ssvSignalLineplot
* addressed BioC notes for seq_len instead of 1:x
* addressed BioC notes for vapply instead of sapply

# seqsetvis 0.99.5

* added easyLoad_narrowPeak() and easyLoad_broadPeak()
* added ssvFactorizeMembTable() for converting membership table to factor
* added movingAverage() from r cookbook
* rename ssvSignalTrackplot to ssvSignalLineplot
* rename bw_dt param to bw_data in all ssvSignal* functions to reflect increased
argument flexibility (GRanges or data.table accepted).
* expanded vignette to include more thorough overview, overview finished but need
use cases.

minor changes

* renamed vignette to seqsetvis_overview.Rmd

# seqsetvis 0.99.4

* rename overlapIntervalSets to ssvOverlapIntervalSets
* improved documentation for CTCF datasets used by vignette
* expanded vignette to include more thorough overview, work in progress.

minor changes

* added show_counts param to ssvFeatureBars

# seqsetvis 0.99.3

* all fetch functions that previously returned data.table now return GRanges by default
* all functions that accepted data.table now also accept GRanges and return the matching class where appropriate
* magrittr pipes removed from all package code and magrittr moved to suggests from imports
* misc minor changes to address reviewer comments (message instead of print, stopifnot to verify inputs, etc.)

# seqsetvis 0.99.2

* Added a `NEWS.md` file to track changes to the package.



