|
| 1 | +# GENOVA v1.0 27-01-2021 (The Cartographer) |
| 2 | + |
| 3 | +This version marks a large refactoring of the code base in an effort to increase |
| 4 | +consistency. However, it also breaks a lot of old code. It is the version that |
| 5 | +was used during submission of the [GENOVA publication](https://doi.org/10.1093/nargab/lqab040). |
| 6 | + |
| 7 | +## Data representation |
| 8 | + |
| 9 | +- A loaded Hi-C experiment is now dubbed a <contacts> class object. |
| 10 | +- Added support for loading data from the cooler and juicer pipelines. Juicer |
| 11 | + import requires the {strawr} dependency and cooler import requires the {Rhdf5} |
| 12 | + dependency. |
| 13 | +- Centromere information is automatically estimated while loading the data by |
| 14 | + looking for the largest stretch of empty bins. |
| 15 | +- Added the `sync_indices()` function to harmonise data from various |
| 16 | + pipelines. |
| 17 | + |
| 18 | +## Analysis functions |
| 19 | + |
| 20 | +- Results from analysis functions have been dubbed <discovery> class objects. |
| 21 | +- For quantification of analysis, the `quantify()` generic was added with |
| 22 | + methods for several <discovery> objects. |
| 23 | +- Likewise, for visualising results, the `visualise()` generic was added with |
| 24 | + methods for several <discovery> objects. Additionaly, some base R equivalents |
| 25 | + are available as <discovery> methods to the `plot()` function. |
| 26 | +- New `bundle()` and `unbundle()` functions to more easily combine <discovery> |
| 27 | + objects. |
| 28 | +- New `ARA()` functions for aggregating on-diagonal regions, convenient for |
| 29 | + stripe analysis. |
| 30 | +- New `CSCAn()` function for crosswise intersections of different sets of |
| 31 | + regions. |
| 32 | +- New `anchors_*()` family of functions for related analysis functions for |
| 33 | + repeated lookup analyses, to make these analyses more flexible. |
| 34 | +- New `anchors_extendedloops()` function to recapitulate the Haarhuis *et al*. |
| 35 | + (2017) strategy for loop anchors. |
| 36 | +- Standardised the `APA()`, `ATA()` and `PESCAn()` functions to use a common |
| 37 | + pattern for repeatedly looking up regions in the Hi-C map. |
| 38 | +- Speed-up of the repeated lookup functions by making better use of {data.table} |
| 39 | + joins. |
| 40 | +- The `insulation_score()` algorithm was sped up for larger data. |
| 41 | +- TAD calling via `call_TAD_insulation()` was sped up and closer to the |
| 42 | + description of the algorithm in Crane *et al.* (2015). |
| 43 | +- Compartment strength is no longer calculated in the deprecated |
| 44 | + `visualise.compartmentStrength()`, but in the `quantify.saddle_discovery()` |
| 45 | + method. |
| 46 | +- Refactored the `RCP()` function. |
| 47 | + |
| 48 | +## Plotting |
| 49 | + |
| 50 | +- Added colour palettes for sequential and divergent values |
| 51 | + (see `?GENOVA_colours`). The default sequential palette can be changed |
| 52 | + using `options("GENOVA.colour.palette" = {a character vector of colours})`. |
| 53 | +- Wrappers for these colour palettes in {ggplot2} scales are in the |
| 54 | + `scale_{colour/fill}_GENOVA()` and `scale_{colour/fill}_GENOVA_div()` |
| 55 | + functions for sequential and divergent palettes respectively. |
| 56 | +- Added the `pyramid()` and `pyramid_difference()` function for plotting a |
| 57 | + Hi-C map at 45 degree angles. |
| 58 | +- The `pyramid()` plot can be annotated by the `add_bed_graph()`, |
| 59 | + `add_bed_track()`, `add_ctcf_sites()` functions. |
| 60 | +- The `pyramid()` plot can be annotated by compartment score, insulation score, |
| 61 | + directionality index, domainograms, virtual 4C or arbitrary ggplot2 layer |
| 62 | + using the `as_track()` function. |
| 63 | +- Most `image()`-based plotting now have the `rasterise` argument. |
| 64 | +- Replaced the `visualise.{analysis}.ggplot()` pattern functions by a |
| 65 | + `visualise()` generic with methods for <discovery> objects. |
| 66 | + |
| 67 | +## Renamed |
| 68 | + |
| 69 | +Generally, functions have been renamed to prevent `dot.case` functions implying |
| 70 | +S3 methods or `lowerCamelCase` implying S4 functions. Instead they now all use |
| 71 | +the `snake_case`. |
| 72 | + |
| 73 | +| Old name | New name | |
| 74 | +|------------------------------|----------------------------| |
| 75 | +| `hic.matrixplot()` | `hic_matrixplot()` | |
| 76 | +| `construct.experiment()` | `load_contacts()` | |
| 77 | +| `insulation.score()` | `insulation_score()` | |
| 78 | +| `insulation.domainogram()` | `insulation_domainogram()` | |
| 79 | +| `fastDI()` | `direct_index()` | |
| 80 | +| `chromosomeMatrix()` | `chromsome_matrix()` | |
| 81 | +| `compartment.score()` | `compartment_score()` | |
| 82 | +| `insulation.callTAD()` | `call_TAD_insulation()` | |
| 83 | +| `intra.inter.TAD.contacts()` | `intra_inter_TAD()` | |
| 84 | +| `select.subset()` | `select_subset()` | |
| 85 | +| `trans.compartment.plot()` | `trans_matrixplot()` | |
| 86 | + |
| 87 | + |
| 88 | +## Deprecated |
| 89 | + |
| 90 | +- The `badBin.find()` function. |
| 91 | +- The `badBin.plot()` function. |
| 92 | +- The `rescale()` function in favour of `scales::rescale()`. |
| 93 | +- The `resize_mat()` function. |
| 94 | +- The `differential.TAD.dotplot/scatterplot()` function in favour of the |
| 95 | + `visualise.IIT_discovery()` method. |
| 96 | +- The `frequency.from.matrix()` function. |
| 97 | +- The `chrom.comparison.plot()` function in favour of the |
| 98 | + `visualise.chrommat_discovery()` method. |
| 99 | +- The `quantifyAPA()` function in favour of the `quantify.APA_discovery()` |
| 100 | + method. |
| 101 | +- The `cisTotal.perChrom()` and `cisTotal.scores()` functions in favour of the |
| 102 | + `cis_trans()` function. |
| 103 | +- The `insulation.plot.dual()` and `insulation.plot.single()` functions in |
| 104 | + favour of the `insulation_matrixplot()`. |
| 105 | + |
| 106 | +## Miscelaneous |
| 107 | + |
| 108 | +- Added the `get_test_data()` function and 40k/150k datasets of two small |
| 109 | + chromosomes to quickly try some functions with some data. It uses the |
| 110 | + {pkgfilecache} |
| 111 | + |
| 112 | +- Limit the number of threads used by {data.table} to 1 by default. We noticed |
| 113 | + that this is faster if functions are executed in a loop. |
| 114 | +- Removed {reshape2} and {dplyr} dependencies. |
| 115 | +- Replaced {bigwrig} dependency to {rtracklayer} for importing bigwig data. |
| 116 | +- Added the `expnames()` function to glance which samples were involved in |
| 117 | + a <discovery> or <contacts> object. |
| 118 | +- Added the `resolution()` function to glance at which resolution a <discovery> |
| 119 | + object was calculated or <contacts> object has. |
| 120 | + |
| 121 | +# GENOVA 0.9.995 - 20-3-2019 (The Old Lighthouse) |
| 122 | + |
| 123 | +## Added |
| 124 | + |
| 125 | +- HiCseg.callTAD: a function to call TADs with HiCseq (Levy-Leduc) per chromosome-arm or windowed chromosomes. |
| 126 | +- construct.experiment: added an option to get Z-score normalised experiment-objects. |
| 127 | +- hic.matrixplot: added an option to use Z-score normalised experiment-objects. |
| 128 | +- insulation.heatmap: added option to set leftlost bin to 0 |
| 129 | +- insulation.heatmap: added option to use a borders-file (also for peaks!) |
| 130 | + |
| 131 | +## Changed |
| 132 | + |
| 133 | +- APA: sped up by using a vapply loop (@MarijneMia) |
| 134 | +- ATA: sped up by using a vapply loop |
| 135 | +- select.subset: sped up the pos-lookup |
| 136 | +- visualise.APA.ggplot: better divergent colors (same as Z-score colors in hic.matrixplot) |
| 137 | +- visualise.ATA.ggplot: better divergent colors (same as Z-score colors in hic.matrixplot) |
| 138 | +- genome.wide.insulation: added speudocounts |
| 139 | +- compartment.score: uses a more robust handing of comparable tracks. |
| 140 | +- genome.wide.insulation::matrix.insulation: shifted output half a bin upstream. |
| 141 | +- genome.wide.insulation: forcing even window-sizes to get score between bins. |
| 142 | +- insulation.heatmap: nicer plotting of profile and heatmap without grid |
| 143 | +- insulation.heatmap: refactored the scripts. |
| 144 | + |
| 145 | +# GENOVA 0.9.98 - 27-02-2019 |
| 146 | +Github-hash: 9951098 |
| 147 | + |
| 148 | +## Added |
| 149 | + |
| 150 | +- ATA: outputs also the used TADs.bed |
| 151 | +- HiC_matrixplot: smoothing of the regions with no data (e.g. the white stripes) has been implemented. This is done by filling these bins with the result of a Nadaraya/Watson normalization of the kernel. Set `smoothNA` to true to use and `smoothBandwidth` to tweak |
| 152 | +- HiC_matrixplot: If `chip.yMax` is NULL, a warning will be given for the used yMaxes. |
| 153 | +- PE-SCAn: A maximal distance can be given with `maxDist`. |
| 154 | +- PE-SCAn: verbosity can be limited off with `verbose = F` |
| 155 | +- PE-SCAn: Catches errors when no matrices are found by cov2d. |
| 156 | +- PE-SCAn: A treshold for the minimum amount of BED-entries per chromosome is added: `minComparables`. |
| 157 | +- PE-SCAn: Shifted bed-entries bigger than their chromosome are now fixed (they "wrap around" to the start) |
| 158 | +- PE-SCAn: Returns not only the O/E matrix, but a list with a O/E score-matrix (if shift != 0), otherwise an observed score-matrix, the underlying signal and background-matrices and the shift used. |
| 159 | +- visualise.PESCAn.ggplot: several checks to see if the input-data is comparable (including shift). |
| 160 | +- visualise.PESCAn.ggplot: colorscales for O/E and O are better (i.e. no log2-divergent scale for shift==0 matrices). |
| 161 | +- cis.compartment.plot: a second experiment-object can be used. This is plotted in the lower-left corner. Note: only the first matrix is invisibly returned. |
| 162 | +- cis.compartment.plot: smoothing of the regions with no data (e.g. the white stripes) has been implemented. This is done by filling these bins with the result of a Nadaraya/Watson normalization of the kernel. Set `smoothNA` to true to use and `smoothBandwidth` to tweak |
| 163 | +- getTADstats: a new function to get some stats on ATA-results. Still quite buggy. |
| 164 | +- saddle: Forces user for either CS or chip. |
| 165 | +- README now contains actual text. |
| 166 | + |
| 167 | +## Changed |
| 168 | + |
| 169 | +- HiC_matrixplot: `bed.col` and `bw.col` are merged to chip.col. This argument can take a vector of four colours, parallel to the `chip`-argument. |
| 170 | +- HiC_matrixplot: `yMax` is renamed to `chip.ymax`. |
| 171 | +- visualise.PESCAn.ggplot: works woth new output of PE-SCAn |
| 172 | +- PE-SCAn: cov2d loops over a vectorised list without duplicates, which speeds up the code. |
| 173 | +- PE-SCAn: cleaned up cov2d's return-code |
| 174 | +- quantifyAPA: the `enrichmentType` argument lets you choose between pixel/mean(backgroundRegions) and the fraction of loops with more than 50% higher signal than the background. |
| 175 | +- visualise.compartmentStrength: at least one bin is used (bugfix). |
| 176 | +- saddle: extra effort to use the CS is taken by matching the CS-vector and the eigen-vector. This will fix problems due to big centromeres or shaky/different centromere-calls. |
| 177 | +- vignette: fixed typo's |
| 178 | + |
| 179 | +# GENOVA 0.9.971 - 13-06-2018 |
| 180 | +Github-hash: 8edef82 |
| 181 | + |
| 182 | +# GENOVA 0.9.97 - 11-06-2018 |
| 183 | +Github-hash: 35772ec |
| 184 | + |
| 185 | +# GENOVA 0.9.96 - 22-05-2018 |
| 186 | +Github-hash: 7deebca |
| 187 | + |
| 188 | + |
| 189 | + |
0 commit comments