diff --git a/.gitignore b/.gitignore index bf385c65b78082fb3581d2a2f613ae4da90d7d4b..7756350a2c67d0e3d37642c65031fe63689233da 100644 --- a/.gitignore +++ b/.gitignore @@ -108,5 +108,4 @@ report*.html* timeline*.html* /workflow/output/* /work/* -/test_data/* /.nextflow/* diff --git a/CHANGELOG.md b/CHANGELOG.md index 77ccac22151846411a2e843ee79a592c6200af85..b2413626756a41740b515b5d1c01e05ab6ce2b23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,8 +14,10 @@ All notable changes to this project will be documented in this file. - Make gtf and geneName files as param inputs - Fix xcor to increase file size for --random-source - Fix skip diff test for paired-end data +- Fix xcor to get lowest non zero value about 50 - Fix references to display in Multiqc report + ## [publish_1.0.6 ] - 2019-05-31 ### Added - MIT LICENSE diff --git a/test_data/test_cross.qc b/test_data/test_cross.qc new file mode 100644 index 0000000000000000000000000000000000000000..6fbc0ad1ab342196e525953dbcb28b6d07ba24f9 --- /dev/null +++ b/test_data/test_cross.qc @@ -0,0 +1 @@ +Test.20.tagAlign.gz 18588987 0,20,33 0.211525291335199,0.211232019956852,0.211139666755398 35 0.2123067 1500 0.209429 1.01001 0.7284536 0 diff --git a/workflow/scripts/call_peaks_macs.py b/workflow/scripts/call_peaks_macs.py index e094fb914734cf66e7ec4b99be19511585c10e63..f7527ebffffd5b87860f736e6e5382f4ea886eb7 100644 --- a/workflow/scripts/call_peaks_macs.py +++ b/workflow/scripts/call_peaks_macs.py @@ -138,8 +138,20 @@ def call_peaks_macs(experiment, xcor, control, prefix, genome_size, chrom_sizes) with open(xcor, 'r') as xcor_fh: firstline = xcor_fh.readline() frag_lengths = firstline.split()[2] # third column - fragment_length = frag_lengths.split(',')[0] # grab first value - logger.info("Fraglen %s", fragment_length) + frag_lengths_array = frag_lengths.split(',') + fragment_length = 0 + fragment = False + # Loop through all values of fragment length + for f in frag_lengths.split(','): + fragment_length = f + logger.info("Fraglen %s", fragment_length) + if int(fragment_length) > 50: + fragment = True + break + + if fragment == False: + logger.info('Error in cross-correlation analysis: %s', frag_lengths_array) + raise Exception("Error in cross-correlation analysis: %s" % frag_lengths_array) # Generate narrow peaks and preliminary signal tracks diff --git a/workflow/tests/test_call_peaks_macs.py b/workflow/tests/test_call_peaks_macs.py index cd94e1783a25ffa953b3666f7cb3172c33f4f0bd..3b4404dfda2499cbb416e851bb7fcc3289d7de90 100644 --- a/workflow/tests/test_call_peaks_macs.py +++ b/workflow/tests/test_call_peaks_macs.py @@ -3,10 +3,29 @@ import pytest import os import utils +from io import StringIO +import call_peaks_macs test_output_path = os.path.dirname(os.path.abspath(__file__)) + \ '/../output/callPeaksMACS/' +test_data_path = os.path.dirname(os.path.abspath(__file__)) + \ + '/../../test_data/' + + +@pytest.mark.unit +def test_fragment_length(): + experiment = "experiment.tagAlign.gz" + control = "control.tagAlign.gz" + prefix = 'test' + genome_size = 'hs' + chrom_sizes = 'genomefile.txt' + cross_qc = os.path.join(test_data_path, 'test_cross.qc') + with pytest.raises(Exception) as excinfo: + call_peaks_macs.call_peaks_macs(experiment, cross_qc, control, prefix, genome_size, chrom_sizes) + assert str(excinfo.value) == "Error in cross-correlation analysis: ['0', '20', '33']" + + @pytest.mark.singleend def test_fc_signal_singleend():