diff --git a/CHANGELOG.md b/CHANGELOG.md index f203c0a59fe0944ee6a9d81234c11be83791ccd0..e1398fc9d7414342848db2aaacece013598ca99e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ All notable changes to this project will be documented in this file. - Fix xcor to increase file size for --random-source - Fix skip diff test for paired-end data - Add test data for single control and single replicate +- Fix python version for MultiQC report +- Fix xcor to get lowest non zero value above 50 +- Fix references to display in Multiqc report + ## [publish_1.0.6 ] - 2019-05-31 ### Added 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/main.nf b/workflow/main.nf index bf87941930e7a3737c8610703d224887c113a4d1..765ba3b1d1cd5b1d37d8dc339464d694c46ab8e2 100644 --- a/workflow/main.nf +++ b/workflow/main.nf @@ -654,10 +654,10 @@ process multiqcReport { """ echo $workflow.nextflow.version > version_nextflow.txt - singularity exec /project/shared/bicf_workflow_ref/singularity_images/multiqc.sif multiqc --version > version_multiqc.txt + singularity exec /project/shared/bicf_workflow_ref/singularity_images/bicf-multiqc-2.0.0.img multiqc --version > version_multiqc.txt python --version &> version_python.txt python3 $baseDir/scripts/generate_references.py -r $references -o software_references python3 $baseDir/scripts/generate_versions.py -o software_versions - singularity exec /project/shared/bicf_workflow_ref/singularity_images/multiqc.sif multiqc -c $multiqc . + singularity exec /project/shared/bicf_workflow_ref/singularity_images/bicf-multiqc-2.0.0.img multiqc -c $multiqc . """ } 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/scripts/generate_versions.py b/workflow/scripts/generate_versions.py index 4f0d8b143b36efbe207a303b2eb164d0de1a0e8a..c4814eda4cc375a5634f01ae7c4ff6f0b712a5ce 100644 --- a/workflow/scripts/generate_versions.py +++ b/workflow/scripts/generate_versions.py @@ -46,7 +46,7 @@ SOFTWARE_REGEX = { 'MEME-ChIP': ['motifSearch_vf/version_memechip.txt', r"Version (\S+)"], 'DiffBind': ['diffPeaks_vf/version_DiffBind.txt', r"Version (\S+)\""], 'deepTools': ['experimentQC_vf/version_deeptools.txt', r"deeptools (\S+)"], - 'Python': ['version_python.txt', r"python, version (\S+)"], + 'Python': ['version_python.txt', r"Python (\S+)"], 'MultiQC': ['version_multiqc.txt', r"multiqc, version (\S+)"], } 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(): diff --git a/workflow/tests/test_generate_software_references.py b/workflow/tests/test_generate_software_references.py index 4d0025dfc3a925d2ec0d7bcd2bae86529d75e574..2420c6f3cee4032ea073219b7ada4a73b8582176 100644 --- a/workflow/tests/test_generate_software_references.py +++ b/workflow/tests/test_generate_software_references.py @@ -4,6 +4,7 @@ import pytest import os import utils import yaml +from bs4 import BeautifulSoup test_output_path = os.path.dirname(os.path.abspath(__file__)) + \ '/../output/multiqcReport/' @@ -21,3 +22,14 @@ def test_software_references_output(): data_loaded = yaml.load(stream) assert len(data_loaded['data'].split('<ul>')) == 19 + + +@pytest.mark.singleend +def test_software_references_html(): + multiqc_report = os.path.join(test_output_path, 'multiqc_report.html') + html_file = open(multiqc_report, 'r') + source_code = html_file.read() + multiqc_html = BeautifulSoup(source_code, 'html.parser') + references = multiqc_html.find(id="mqc-module-section-Software_References") + assert references is not None + assert len(references.find_all('ul')) == 18 diff --git a/workflow/tests/test_generate_software_versions.py b/workflow/tests/test_generate_software_versions.py index 04ecdf3f57edee3507abaec27652023c8c5f5716..80b9981dabbf2c5944b74af792dae5a8621b6146 100644 --- a/workflow/tests/test_generate_software_versions.py +++ b/workflow/tests/test_generate_software_versions.py @@ -21,3 +21,4 @@ def test_software_versions_output(): data_loaded = yaml.load(stream) assert len(data_loaded['data'].split('<dt>')) == 18 + assert 'Not Run' not in data_loaded['data'].split('<dt>')[17]