1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
import os
import matplotlib
matplotlib.use('Agg')
from matplotlib.testing.compare import compare_images
from tempfile import NamedTemporaryFile
import deeptools.computeMatrix
import deeptools.plotHeatmap
import deeptools.plotProfile
import deeptools.utilities
__author__ = 'Fidel'
ROOT = os.path.dirname(os.path.abspath(__file__)) + "/test_heatmapper/"
tolerance = 30
skip = False
if matplotlib.__version__ != "3.1.1":
skip = True
def test_plotHeatmap_simple_plot():
"""
Test a simple plot generated using a matrix from
the following command:
computeMatrix reference-point -a 100 -b 100 -S {test_path}/test.bw \
-R {test_path}/test.bed -o /tmp/mat.gz -bs 25
"""
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master.mat.gz --outFileName {}".format(ROOT, outfile.name).split()
deeptools.plotHeatmap.main(args)
res = compare_images(ROOT + '/master.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotHeatmap_rename_labels():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master.mat.gz --outFileName {} --regionsLabel uno dos".format(ROOT, outfile.name).split()
deeptools.plotHeatmap.main(args)
res = compare_images(ROOT + '/master_relabeled.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotHeatmap_scale_regions():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master_scale_reg.mat.gz --outFileName {}".format(ROOT, outfile.name).split()
deeptools.plotHeatmap.main(args)
res = compare_images(ROOT + '/master_scale_reg.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotHeatmap_multi_bigwig_pergroup():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master_multi.mat.gz --perGroup --samplesLabel file1 file2 file3 file4 " \
"--outFileName {}".format(ROOT, outfile.name).split()
deeptools.plotHeatmap.main(args)
res = compare_images(ROOT + '/heatmap_master_multi_pergroup.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotHeatmap_multiple_colors_muti_scales():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master_multi.mat.gz --colorList white,blue white,red --zMin 1 0 --zMax 4 5 " \
"--outFileName {}".format(ROOT, outfile.name).split()
deeptools.plotHeatmap.main(args)
res = compare_images(ROOT + '/heatmap_master_multi_color.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotHeatmap_multiple_colormap_no_boxes():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master_multi.mat.gz --colorMap Reds binary terrain --boxAroundHeatmaps no " \
"--outFileName {}".format(ROOT, outfile.name).split()
deeptools.plotHeatmap.main(args)
res = compare_images(ROOT + '/heatmap_master_multi_colormap_no_box.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotHeatmap_interpolation():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/large_matrix.mat.gz --interpolation bilinear " \
"--outFileName {}".format(ROOT, outfile.name).split()
deeptools.plotHeatmap.main(args)
res = compare_images(ROOT + '/heatmap_master_interpolation_bilinear.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotProfiler():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master.mat.gz --outFileName {} --regionsLabel uno dos " \
"--plotType std".format(ROOT, outfile.name).split()
deeptools.plotProfile.main(args)
res = compare_images(ROOT + '/profile_master.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotProfiler_heatmap():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master.mat.gz --outFileName {} --plotType heatmap".format(ROOT, outfile.name).split()
deeptools.plotProfile.main(args)
res = compare_images(ROOT + '/profile_master_heatmap.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotProfiler_overlapped_lines():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master.mat.gz --outFileName {} " \
"--plotType overlapped_lines --yMin -1".format(ROOT, outfile.name).split()
deeptools.plotProfile.main(args)
res = compare_images(ROOT + '/profile_master_overlap_lines.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotProfiler_multibigwig():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master_multi.mat.gz --outFileName {} " \
"--numPlotsPerRow 2 --yMax 1.5".format(ROOT, outfile.name).split()
deeptools.plotProfile.main(args)
res = compare_images(ROOT + '/profile_master_multi.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
def test_plotProfiler_multibigwig_pergroup():
if skip:
return
outfile = NamedTemporaryFile(suffix='.png', prefix='plotHeatmap_test_', delete=False)
args = "-m {}/master_multi.mat.gz --outFileName {} " \
"--perGroup --yMax 1.5".format(ROOT, outfile.name).split()
deeptools.plotProfile.main(args)
res = compare_images(ROOT + '/profile_master_multi_pergroup.png', outfile.name, tolerance)
assert res is None, res
os.remove(outfile.name)
|