From 2f654dfcc580bc0b3701e938047570ee9706d961 Mon Sep 17 00:00:00 2001
From: Devon Ryan <dpryan79@users.noreply.github.com>
Date: Thu, 5 Mar 2020 15:28:26 +0100
Subject: [PATCH] 3.4.0 (#926)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* copy changes from bgruening

* this file should not be here since years (#845)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* this file should not be here since years

* Add Arabidopsis TAIR10 (A_thaliana_Jun_2009) (#853)

Using output from:
faCount A_thaliana_Jun_2009.fa
#seq	len	A	C	G	T	N	cpg
Chr1	30427671	9709674	5435374	5421151	9697113	164359	697370
Chr2	19698289	6315641	3542973	3520766	6316348	2561	457572
Chr3	23459830	7484757	4258333	4262704	7448059	5977	559031
Chr4	18585056	5940546	3371349	3356091	5914038	3032	439585
Chr5	26975502	8621974	4832253	4858759	8652238	10278	630299
ChrC	154478	48546	28496	27570	49866	0	4639
ChrM	366924	102464	82661	81609	100190	0	13697
total	119667750	38223602	21551439	21528650	38177852	186207	2802193
hpc $ python
Python 2.7.11 (default, Jul 25 2019, 12:10:26)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 119667750-186207
119481543

* Fix python version in Azure tests  (#860)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* Fix python version

* Update azure-pipelines.yml

* fixed typo (#864)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* fixed typo

* Update test images, skip testing if the wrong matplotlib version is used (#865)

* Update test images, skip testing if the wrong matplotlib version is used

* Update test-template.yml

* linting

* can't conda activate on azure

* now the heatmap is correct and the profile is wrong

* lint

* only one test should fail now

* Fix #844

* Should fix one test at least

* fix last tests

* fix #838 (#843)

* fix #838

* fixes

* Update CHANGES.txt

* Close #868 #867 and #851 (#869)

* Fix #868

* Fix #867

* Default ALL the things!

* Fix #866 (#871)

* Release 3.3.1 (#873)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* release 3.3.1

* try github actions

* each action is a file

* OK, that's inflexible

* OK, the action.yml thing is a mess

* syntax

* ok, try this

* uses

* spacing

* ok

* do anchors work?

* boo, so duplicative!

* oops

* maybe this will work for pypi

* ensure dist is empty

* nev

* rename

* bump version number

* Actionable active actions acting actively (#874)

* give actions another try

* wrong docs?

* ok

* hmm

* WTF

* ah, we CAN give a path

* hmm

* actions everywhere

* foo

* artifacts

* fix #889 (#891)

* Fix888 (#892)

* fix x-axis profile tick positions

* set minimum matplotlib version to 3.1.0

* fix hexbin and overlapped_lines too

* fix #887 (#893)

* update change log

* Seaborn colormaps (#894)

* add seaborn colormaps

* bump version and finally change license

* indenting

* update colormaps in galaxy wrapper

* update version in galaxy wrapper

* changelog

* wrong issue number

* pep8

* pep8

* pep8

* pep8

* added clusterUsingSamples to heatmap

* Added a couple of assertions to cehck the range of samples' indices

* Using --xRange and --yRange fails in galaxy due to the single quote. … (#901)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* Release 3.3.1 (#872)

* copy changes from bgruening

* this file should not be here since years (#845)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* this file should not be here since years

* Add Arabidopsis TAIR10 (A_thaliana_Jun_2009) (#853)

Using output from:
faCount A_thaliana_Jun_2009.fa
#seq	len	A	C	G	T	N	cpg
Chr1	30427671	9709674	5435374	5421151	9697113	164359	697370
Chr2	19698289	6315641	3542973	3520766	6316348	2561	457572
Chr3	23459830	7484757	4258333	4262704	7448059	5977	559031
Chr4	18585056	5940546	3371349	3356091	5914038	3032	439585
Chr5	26975502	8621974	4832253	4858759	8652238	10278	630299
ChrC	154478	48546	28496	27570	49866	0	4639
ChrM	366924	102464	82661	81609	100190	0	13697
total	119667750	38223602	21551439	21528650	38177852	186207	2802193
hpc $ python
Python 2.7.11 (default, Jul 25 2019, 12:10:26)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 119667750-186207
119481543

* Fix python version in Azure tests  (#860)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* Fix python version

* Update azure-pipelines.yml

* fixed typo (#864)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* fixed typo

* Update test images, skip testing if the wrong matplotlib version is used (#865)

* Update test images, skip testing if the wrong matplotlib version is used

* Update test-template.yml

* linting

* can't conda activate on azure

* now the heatmap is correct and the profile is wrong

* lint

* only one test should fail now

* Fix #844

* Should fix one test at least

* fix last tests

* fix #838 (#843)

* fix #838

* fixes

* Update CHANGES.txt

* Close #868 #867 and #851 (#869)

* Fix #868

* Fix #867

* Default ALL the things!

* Fix #866 (#871)

* release 3.3.1

* try github actions

* each action is a file

* OK, that's inflexible

* OK, the action.yml thing is a mess

* syntax

* ok, try this

* uses

* spacing

* ok

* do anchors work?

* boo, so duplicative!

* oops

* maybe this will work for pypi

* ensure dist is empty

* nev

* rename

* bump version number

* Using --xRange and --yRange fails in galaxy due to the single quote. Removed them.

* Try just changing the wrapper

* fix wrapper linting

* plotCorrelation wrapper works properly now

* Add separate linting step to catch some of this in the future

Co-authored-by: Devon Ryan <dpryan79@users.noreply.github.com>
Co-authored-by: Björn Grüning <bjoern@gruenings.eu>
Co-authored-by: Steffen Möller <steffen_moeller@gmx.de>

* Documentation fixes, closes #886 (#905)

* Fix #902 (#906)

* [WIP] added a silhouette calculation (#876)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* Release 3.3.1 (#872)

* copy changes from bgruening

* this file should not be here since years (#845)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* this file should not be here since years

* Add Arabidopsis TAIR10 (A_thaliana_Jun_2009) (#853)

Using output from:
faCount A_thaliana_Jun_2009.fa
#seq	len	A	C	G	T	N	cpg
Chr1	30427671	9709674	5435374	5421151	9697113	164359	697370
Chr2	19698289	6315641	3542973	3520766	6316348	2561	457572
Chr3	23459830	7484757	4258333	4262704	7448059	5977	559031
Chr4	18585056	5940546	3371349	3356091	5914038	3032	439585
Chr5	26975502	8621974	4832253	4858759	8652238	10278	630299
ChrC	154478	48546	28496	27570	49866	0	4639
ChrM	366924	102464	82661	81609	100190	0	13697
total	119667750	38223602	21551439	21528650	38177852	186207	2802193
hpc $ python
Python 2.7.11 (default, Jul 25 2019, 12:10:26)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 119667750-186207
119481543

* Fix python version in Azure tests  (#860)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* Fix python version

* Update azure-pipelines.yml

* fixed typo (#864)

* Develop (#827)

* Merged into the wrong branch without noticing :( (#814)

* use better conda link (#799)

* Estimated filtering fix (#813)

* oops

* fix testing and set a max number of filtered reads

* apparently a bunch of things were getting skipped

* fix wrappers

* update computeMatrix wrapper

* Decrease memory needs (#817)

* Use an iterator to not blow memory up

* Update a bit more

* The GC bias stuff is all deprecated, I'm not fixing that old code

* Cache resulting counts rather than just decreasing the bin size (#818)

* Cache resulting counts rather than just decreasing the bin size

* sanity check

* Implement #815

* [skip ci] update change log

* Implement #816 (#825)

* Implement #816

* expose option

* Add a test using pseudocounts and skipZeroOverZero

* syntax

* Fix tests

* Make --skipZeroOverZero a galaxy macro and add to bigwigCompare

* [ci skip] a bit of formatting

* Fix #822 (#826)

* fixes linting issues (#837)

* Delete #test.bg# (#859)

File is removed upon clean.

* fixed typo

* Update test images, skip testing if the wrong matplotlib version is used (#865)

* Update test images, skip testing if the wrong matplotlib version is used

* Update test-template.yml

* linting

* can't conda activate on azure

* now the heatmap is correct and the profile is wrong

* lint

* only one test should fail now

* Fix #844

* Should fix one test at least

* fix last tests

* fix #838 (#843)

* fix #838

* fixes

* Update CHANGES.txt

* Close #868 #867 and #851 (#869)

* Fix #868

* Fix #867

* Default ALL the things!

* Fix #866 (#871)

* release 3.3.1

* try github actions

* each action is a file

* OK, that's inflexible

* OK, the action.yml thing is a mess

* syntax

* ok, try this

* uses

* spacing

* ok

* do anchors work?

* boo, so duplicative!

* oops

* maybe this will work for pypi

* ensure dist is empty

* nev

* rename

* bump version number

* added a silhouette calculation

* remove sklearn, implement with scipy and numpy

* Update requirements.txt

* Update setup.py

* Update heatmapper.py

* update galaxy wrapper

* Fix run time issues

* refactor, the order matters here.

* removing debugging stuff

* Update heatmapper.py

* Update plotHeatmap.py

Co-authored-by: Devon Ryan <dpryan79@users.noreply.github.com>
Co-authored-by: Björn Grüning <bjoern@gruenings.eu>
Co-authored-by: Steffen Möller <steffen_moeller@gmx.de>

* mention silhouette score

* update help location

* see if this fixes things (#909)

* update Azure OSX client version

* Fix typos in documentation (#916)

Fixes two typos in example code.

* copy wrapper fixes from Bjoern's PR

* Fix dotted line (#921)

* Fix the dashed line in plotHeatmap with reference-point TES and sorting by region_length

* fix test

* Implement #924 (#925)

* Basic implementation of --linesAtTickMarks and galaxy wrapper

* bump version to 3.4.0

* typo

* stupid eigenvalues

Co-authored-by: Björn Grüning <bjoern@gruenings.eu>
Co-authored-by: A. Loraine <aloraine@uncc.edu>
Co-authored-by: Jan Janssen <jan-janssen@users.noreply.github.com>
Co-authored-by: Ömer An <bounlu@gmail.com>
Co-authored-by: LeilyR <leila.rabbani@gmail.com>
Co-authored-by: cgirardot <girardot@embl.de>
Co-authored-by: Steffen Möller <steffen_moeller@gmx.de>
Co-authored-by: Lucille Delisle <lucille.delisle@epfl.ch>
Co-authored-by: Sichong <scpeng@ucdavis.edu>
---
 CHANGES.txt                           |  5 +++++
 azure-pipelines.yml                   |  2 +-
 deeptools/_version.py                 |  2 +-
 deeptools/parserCommon.py             |  6 ++++++
 deeptools/plotHeatmap.py              | 16 +++++++++++++++-
 docs/content/example_api_tutorial.rst |  4 ++--
 galaxy/wrapper/deepTools_macros.xml   |  4 ++--
 galaxy/wrapper/plotHeatmap.xml        |  6 ++++++
 8 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 3c8f999bf3..3e5964f232 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,8 @@
+3.4.0
+
+ * Fixed a bug in one of the Galaxy wrappers.
+ * Added the `--lineAtTickMarks` option to `plotHeatmap` so that there are dashed vertical lines for each tick mark in the plot. (issue #924)
+
 3.3.2
 
  * Fixed --yAxisLabel in plotProfile (issue #889)
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 4c30def945..e970e281b6 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -19,7 +19,7 @@ jobs:
 
 - job: 'OSX'
   pool:
-    vmImage: 'macOS-10.13'
+    vmImage: 'macOS-10.14'
   strategy:
     matrix:
       Python37:
diff --git a/deeptools/_version.py b/deeptools/_version.py
index fe1c1a888b..c551a1e1c2 100644
--- a/deeptools/_version.py
+++ b/deeptools/_version.py
@@ -2,4 +2,4 @@
 # This file is originally generated from Git information by running 'setup.py
 # version'. Distribution tarballs contain a pre-generated copy of this file.
 
-__version__ = '3.3.2'
+__version__ = '3.4.0'
diff --git a/deeptools/parserCommon.py b/deeptools/parserCommon.py
index c76eb603f8..0b4a387790 100644
--- a/deeptools/parserCommon.py
+++ b/deeptools/parserCommon.py
@@ -611,6 +611,12 @@ def heatmapperOptionalArgs(mode=['heatmap', 'profile'][0]):
                               'example: --sortUsingSamples 1 3',
                               type=int, nargs='+')
 
+        optional.add_argument('--linesAtTickMarks',
+                              help='Draw dashed lines from all tick marks through the heatmap. '
+                              'This is then similar to the dashed line draw at region bounds '
+                              'when using a reference point and --sortUsing region_length',
+                              action='store_true')
+
         optional.add_argument('--clusterUsingSamples',
                               help='List of sample numbers (order as in '
                               'matrix), that are used for clustering by '
diff --git a/deeptools/plotHeatmap.py b/deeptools/plotHeatmap.py
index 8bd6b42e60..0cabe046d7 100644
--- a/deeptools/plotHeatmap.py
+++ b/deeptools/plotHeatmap.py
@@ -389,6 +389,7 @@ def plotMatrix(hm, outFileName,
                heatmapWidth=7.5,
                perGroup=False, whatToShow='plot, heatmap and colorbar',
                plot_type='lines',
+               linesAtTickMarks=False,
                image_format=None,
                legend_location='upper-left',
                box_around_heatmaps=True,
@@ -539,7 +540,7 @@ def plotMatrix(hm, outFileName,
                         _len *= 0.5
                         _reg_len.append((hm.parameters['upstream'][idx] + _len) / hm.parameters['bin size'][idx])
                     elif hm.parameters['ref point'][idx] == 'TES':
-                        _reg_len.append((hm.parameters['downstream'][idx] - _len) / hm.parameters['bin size'][idx])
+                        _reg_len.append((hm.parameters['upstream'][idx] - _len) / hm.parameters['bin size'][idx])
                 foo.append(_reg_len)
             regions_length_in_bins[idx] = foo
 
@@ -659,6 +660,18 @@ def plotMatrix(hm, outFileName,
             elif not perGroup and sample == 0:
                 ax.axes.set_ylabel(sub_matrix['group'])
 
+            # Plot vertical lines at tick marks if desired
+            if linesAtTickMarks:
+                xticks_heat, xtickslabel_heat = hm.getTicks(sample)
+                xticks_heat = [x + 0.5 for x in xticks_heat]  # There's an offset of 0.5 compared to the profile plot
+                if np.ceil(max(xticks_heat)) != float(sub_matrix['matrix'].shape[1]):
+                    tickscale = float(sub_matrix['matrix'].shape[1]) / max(xticks_heat)
+                    xticks_heat_use = [x * tickscale for x in xticks_heat]
+                else:
+                    xticks_heat_use = xticks_heat
+                for x in xticks_heat_use:
+                    ax.axvline(x=x, color='black', linewidth=0.5, dashes=(3, 2))
+
             # add labels to last block in a column
             if (perGroup and sample == numsamples - 1) or \
                (not perGroup and group_idx == numgroups - 1):
@@ -845,6 +858,7 @@ def main(args=None):
                args.heatmapWidth,
                args.perGroup,
                args.whatToShow,
+               linesAtTickMarks=args.linesAtTickMarks,
                plot_type=args.plotType,
                image_format=args.plotFileFormat,
                legend_location=args.legendLocation,
diff --git a/docs/content/example_api_tutorial.rst b/docs/content/example_api_tutorial.rst
index 09556d3b1a..1770be665b 100644
--- a/docs/content/example_api_tutorial.rst
+++ b/docs/content/example_api_tutorial.rst
@@ -261,7 +261,7 @@ a tuple with the parameters: chromosome name, start position, end position, and
         f_lens_list = []
         for fetch_start in range(start, end, 1000000):
             # simply get the reads over a region of 10000 bases
-            fetch_end = min(end, start + 10000)
+            fetch_end = min(end, fetch_start + 10000)
 
             f_lens_list.append(np.array([abs(read.template_length)
                                   for read in bam.fetch(chrom, fetch_start, fetch_end)
@@ -290,7 +290,7 @@ to the function, the BAM file name. The next two positional arguments are the na
 
     result = mapReduce.mapReduce([bam_file_name],
                                  get_fragment_length,
-                                 chrom_sizes,
+                                 chroms_sizes,
                                  genomeChunkLength=10000000,
                                  numberOfProcessors=20,
                                  verbose=True)
diff --git a/galaxy/wrapper/deepTools_macros.xml b/galaxy/wrapper/deepTools_macros.xml
index 5c947f0e54..4d47970369 100644
--- a/galaxy/wrapper/deepTools_macros.xml
+++ b/galaxy/wrapper/deepTools_macros.xml
@@ -1,10 +1,10 @@
 <macros>
 
     <token name="@THREADS@">--numberOfProcessors "\${GALAXY_SLOTS:-4}"</token>
-    <token name="@WRAPPER_VERSION@">3.3.2.0</token>
+    <token name="@WRAPPER_VERSION@">3.4.0.0</token>
     <xml name="requirements">
         <requirements>
-            <requirement type="package" version="3.3.2">deeptools</requirement>
+            <requirement type="package" version="3.4.0">deeptools</requirement>
             <requirement type="package" version="1.9">samtools</requirement>
         </requirements>
         <expand macro="stdio" />
diff --git a/galaxy/wrapper/plotHeatmap.xml b/galaxy/wrapper/plotHeatmap.xml
index 57f9b605ad..9f7b34e94f 100644
--- a/galaxy/wrapper/plotHeatmap.xml
+++ b/galaxy/wrapper/plotHeatmap.xml
@@ -34,6 +34,10 @@
                     --sortRegions '$advancedOpt.sortRegions'
                 #end if
 
+                #if $advancedOpt.linesAtTickMarks:
+                    --linesAtTickMarks
+                #end if
+
                 #if $advancedOpt.sortUsing:
                     --sortUsing '$advancedOpt.sortUsing'
                 #end if
@@ -130,6 +134,8 @@
             <when value="yes">
                 <expand macro="sortRegions" />
                 <expand macro="sortUsing" />
+                <param argument="--linesAtTickMarks" type="boolean" truevalue="--linesAtTickMarks" falsevalue=""
+                    label="Draw dashed lines in heatmap above all tick marks?" />
                 <param argument="--averageTypeSummaryPlot" type="select"
                     label="Type of statistic that should be plotted in the summary image above the heatmap"
                     help="">