From 63ddd150bb720e20678622b62812f9d9b89db507 Mon Sep 17 00:00:00 2001 From: gerikson Date: Wed, 8 Jul 2026 17:51:52 +0200 Subject: [PATCH] Add pytest for r_computematrix (Rust computeMatrix) Salvaged from #1369: keeps only the computeMatrix test, which passes against the current Rust bindings. The alignmentSieve, bamCompare and bamCoverage tests from that PR were dropped because their Rust function signatures have since changed (and alignmentSieve2 is not yet wired up on 4.0.0). Co-Authored-By: Claude Fable 5 --- .../deeptools/test/test_r_computeMatrix.py | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 pydeeptools/deeptools/test/test_r_computeMatrix.py diff --git a/pydeeptools/deeptools/test/test_r_computeMatrix.py b/pydeeptools/deeptools/test/test_r_computeMatrix.py new file mode 100644 index 0000000000..a1dddb64f0 --- /dev/null +++ b/pydeeptools/deeptools/test/test_r_computeMatrix.py @@ -0,0 +1,109 @@ +import pytest +from deeptools.computeMatrix2 import r_computematrix # Adjust the import to your actual module +import os.path +import gzip +import hashlib + +root = os.path.dirname(os.path.abspath(__file__)) + "/test_data/" +matrix = root + "computeMatrixOperations.mat.gz" +bed = root + "computeMatrixOperations.bed" +rbindMatrix1 = root + "somegenes.txt.gz" +rbindMatrix2 = root + "othergenes.txt.gz" +bigwig = root + "testA.bw" +outnpz = root + "output.mat.npz.gz" + +def test_r_computematrix_referencePoint(): + mode = "reference-point" + regionlis = [bed] + bwlis = [bigwig] + sampleslabel = ["sample1"] + upstream = 1000 + downstream = 1000 + unscaled5prime = 0 + unscaled3prime = 0 + regionbodylength = 0 + binsize = 50 + missingdatazero = False + metagene = False + txnid = "" + exonid = "" + txniddesignator = "" + scale = 1.0 + nanafterend = False + skipzeros = False + minthresh = 0.0 + maxthresh = 0.0 + averagetypebins = "mean" + sortregions = "keep" + sortusing = "mean" + ortusingsamples = [] + referencepoint = "TSS" + nproc = 1 + verbose = False + ofile = outnpz + + result = r_computematrix( + mode, regionlis, bwlis, sampleslabel, upstream, downstream, unscaled5prime, unscaled3prime, + regionbodylength, binsize, missingdatazero, metagene, txnid, exonid, txniddesignator, scale, + nanafterend, skipzeros, minthresh, maxthresh, averagetypebins, sortregions, sortusing, + ortusingsamples, referencepoint, nproc, verbose, ofile + ) + + + + with gzip.open(ofile, 'rb') as f: + file_content = f.read() + h = hashlib.md5(file_content).hexdigest() + + expectedh = '4f1a2ce422d5b74fb6b75a81916929db' + assert h == expectedh + + os.remove(ofile) + +def test_r_computematrix_scale(): + mode = "scale-regions" + regionlis = [bed] + bwlis = [bigwig] + sampleslabel = ["sample1"] + upstream = 1000 + downstream = 1000 + unscaled5prime = 0 + unscaled3prime = 0 + regionbodylength = 0 + binsize = 50 + missingdatazero = False + metagene = False + txnid = "" + exonid = "" + txniddesignator = "" + scale = 1.0 + nanafterend = False + skipzeros = False + minthresh = 0.0 + maxthresh = 0.0 + averagetypebins = "mean" + sortregions = "keep" + sortusing = "mean" + ortusingsamples = [] + referencepoint = "TSS" + nproc = 1 + verbose = False + ofile = outnpz + + result = r_computematrix( + mode, regionlis, bwlis, sampleslabel, upstream, downstream, unscaled5prime, unscaled3prime, + regionbodylength, binsize, missingdatazero, metagene, txnid, exonid, txniddesignator, scale, + nanafterend, skipzeros, minthresh, maxthresh, averagetypebins, sortregions, sortusing, + ortusingsamples, referencepoint, nproc, verbose, ofile + ) + + with gzip.open(ofile, 'rb') as f: + file_content = f.read() + h = hashlib.md5(file_content).hexdigest() + + + expectedh = '4f1a2ce422d5b74fb6b75a81916929db' + assert h == expectedh + + os.remove(ofile) +