From a199f1fe60a1f83cdb3d3a299bd3db1be5a5b548 Mon Sep 17 00:00:00 2001 From: Jin Lee Date: Thu, 29 Oct 2020 18:28:51 -0700 Subject: [PATCH] starch --- chip.croo.v5.json | 60 ++++ chip.wdl | 7 +- dev/docker_image/Dockerfile | 4 + dev/test/test_py/test_encode_lib_genomic.py | 286 +++++++++++++++++++- src/encode_lib_genomic.py | 49 +++- src/encode_task_idr.py | 17 +- src/encode_task_overlap.py | 18 +- src/encode_task_post_call_peak_atac.py | 16 +- src/encode_task_post_call_peak_chip.py | 16 +- src/encode_task_reproducibility.py | 21 +- 10 files changed, 477 insertions(+), 17 deletions(-) diff --git a/chip.croo.v5.json b/chip.croo.v5.json index 122d1fc5..27f6c4b5 100644 --- a/chip.croo.v5.json +++ b/chip.croo.v5.json @@ -177,6 +177,10 @@ "path": "peak/rep${i+1}/${basename}", "table": "Peak/Replicate ${i+1}/Blacklist-filtered narrowpeak (BigBed)" }, + "bfilt_peak_starch": { + "path": "peak/rep${i+1}/${basename}", + "table": "Peak/Replicate ${i+1}/Blacklist-filtered narrowpeak (starch)" + }, "bfilt_peak_hammock": { "path": "peak/rep${i+1}/${basename}", "table": "Peak/Replicate ${i+1}/Blacklist-filtered narrowpeak (hammock)" @@ -199,6 +203,10 @@ "path": "peak/rep${i+1}/pseudorep1/${basename}", "table": "Peak/Replicate ${i+1}/Pseudoreplicate 1/Blacklist-filtered narrowpeak (BigBed)" }, + "bfilt_peak_starch": { + "path": "peak/rep${i+1}/pseudorep1/${basename}", + "table": "Peak/Replicate ${i+1}/Pseudoreplicate 1/Blacklist-filtered narrowpeak (starch)" + }, "bfilt_peak_hammock": { "path": "peak/rep${i+1}/pseudorep1/${basename}", "table": "Peak/Replicate ${i+1}/Pseudoreplicate 1/Blacklist-filtered narrowpeak (hammock)" @@ -221,6 +229,10 @@ "path": "peak/rep${i+1}/pseudorep2/${basename}", "table": "Peak/Replicate ${i+1}/Pseudoreplicate 2/Blacklist-filtered narrowpeak (BigBed)" }, + "bfilt_peak_starch": { + "path": "peak/rep${i+1}/pseudorep2/${basename}", + "table": "Peak/Replicate ${i+1}/Pseudoreplicate 2/Blacklist-filtered narrowpeak (starch)" + }, "bfilt_peak_hammock": { "path": "peak/rep${i+1}/pseudorep2/${basename}", "table": "Peak/Replicate ${i+1}/Pseudoreplicate 2/Blacklist-filtered narrowpeak (hammock)" @@ -247,6 +259,10 @@ "path": "peak/pooled-rep/${basename}", "table": "Peak/Pooled replicate/Blacklist-filtered narrowpeak (BigBed)" }, + "bfilt_peak_starch": { + "path": "peak/pooled-rep/${basename}", + "table": "Peak/Pooled replicate/Blacklist-filtered narrowpeak (starch)" + }, "bfilt_peak_hammock": { "path": "peak/pooled-rep/${basename}", "table": "Peak/Pooled replicate/Blacklist-filtered narrowpeak (hammock)" @@ -269,6 +285,10 @@ "path": "peak/pooled-rep/pseudorep1/${basename}", "table": "Peak/Pooled replicate/Pseudoreplicate 1/Blacklist-filtered narrowpeak (BigBed)" }, + "bfilt_peak_starch": { + "path": "peak/pooled-rep/pseudorep1/${basename}", + "table": "Peak/Pooled replicate/Pseudoreplicate 1/Blacklist-filtered narrowpeak (starch)" + }, "bfilt_peak_hammock": { "path": "peak/pooled-rep/pseudorep1/${basename}", "table": "Peak/Pooled replicate/Pseudoreplicate 1/Blacklist-filtered narrowpeak (hammock)" @@ -291,6 +311,10 @@ "path": "peak/pooled-rep/pseudorep2/${basename}", "table": "Peak/Pooled replicate/Pseudoreplicate 2/Blacklist-filtered narrowpeak (BigBed)" }, + "bfilt_peak_starch": { + "path": "peak/pooled-rep/pseudorep2/${basename}", + "table": "Peak/Pooled replicate/Pseudoreplicate 2/Blacklist-filtered narrowpeak (starch)" + }, "bfilt_peak_hammock": { "path": "peak/pooled-rep/pseudorep2/${basename}", "table": "Peak/Pooled replicate/Pseudoreplicate 2/Blacklist-filtered narrowpeak (hammock)" @@ -370,6 +394,10 @@ "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}", "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered IDR peak (BigBed)" }, + "bfilt_idr_peak_starch": { + "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}", + "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered IDR peak (starch)" + }, "bfilt_idr_peak_hammock": { "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}", "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered IDR peak (hammock)" @@ -402,6 +430,10 @@ "path": "peak/pooled-pseudorep1_vs_2/${basename}", "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered IDR peak (BigBed)" }, + "bfilt_idr_peak_starch": { + "path": "peak/pooled-pseudorep1_vs_2/${basename}", + "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered IDR peak (starch)" + }, "bfilt_idr_peak_hammock": { "path": "peak/pooled-pseudorep1_vs_2/${basename}", "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered IDR peak (hammock)" @@ -433,6 +465,10 @@ "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}", "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered IDR peak (BigBed)" }, + "bfilt_idr_peak_starch": { + "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}", + "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered IDR peak (starch)" + }, "bfilt_idr_peak_hammock": { "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}", "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered IDR peak (hammock)" @@ -464,6 +500,10 @@ "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}", "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered overlap peak (BigBed)" }, + "bfilt_overlap_peak_starch": { + "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}", + "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered overlap peak (starch)" + }, "bfilt_overlap_peak_hammock": { "path": "peak/${basename.split('.')[0].replace('_vs_','_').replace('_','_vs_').replace('-','_vs_')}/${basename}", "table": "Peak/${basename.split('.')[0].replace('_vs_','_').replace('_',' vs. ').replace('-',' vs. ').capitalize()}/Blacklist-filtered overlap peak (hammock)" @@ -483,6 +523,10 @@ "path": "peak/pooled-pseudorep1_vs_2/${basename}", "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered overlap peak (BigBed)" }, + "bfilt_overlap_peak_starch": { + "path": "peak/pooled-pseudorep1_vs_2/${basename}", + "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered overlap peak (starch)" + }, "bfilt_overlap_peak_hammock": { "path": "peak/pooled-pseudorep1_vs_2/${basename}", "table": "Peak/Pooled pseudoreplicate 1 vs. 2/Blacklist-filtered overlap peak (hammock)" @@ -501,6 +545,10 @@ "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}", "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered overlap peak (BigBed)" }, + "bfilt_overlap_peak_starch": { + "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}", + "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered overlap peak (starch)" + }, "bfilt_overlap_peak_hammock": { "path": "peak/rep${i+1}-pseudorep1_vs_2/${basename}", "table": "Peak/Replicate ${i+1}/Pseudorep 1 vs. pseudorep 2/Blacklist-filtered overlap peak (hammock)" @@ -521,6 +569,10 @@ "table": "Peak/IDR reproducibility/Optimal peak (BigBed)", "ucsc_track": "track type=bigBed name=\"Optimal IDR peak\" priority=100 color=0,0,255 visibility=full" }, + "optimal_peak_starch": { + "path": "peak/idr_reproducibility/${basename}", + "table": "Peak/IDR reproducibility/Optimal peak (starch)" + }, "optimal_peak_hammock": { "path": "peak/idr_reproducibility/${basename}", "table": "Peak/IDR reproducibility/Optimal peak (hammock)" @@ -534,6 +586,10 @@ "table": "Peak/IDR reproducibility/Conservative peak (BigBed)", "ucsc_track": "track type=bigBed name=\"Conservative IDR peak\" priority=100 color=0,0,255 visibility=full" }, + "conservative_peak_starch": { + "path": "peak/idr_reproducibility/${basename}", + "table": "Peak/IDR reproducibility/Conservative peak (starch)" + }, "conservative_peak_hammock": { "path": "peak/idr_reproducibility/${basename}", "table": "Peak/IDR reproducibility/Conservative peak (hammock)" @@ -568,6 +624,10 @@ "table": "Peak/Overlap reproducibility/Conservative peak (BigBed)", "ucsc_track": "track type=bigBed name=\"Conservative overlap peak\" priority=100 color=0,0,255 visibility=full" }, + "conservative_peak_starch": { + "path": "peak/overlap_reproducibility/${basename}", + "table": "Peak/Overlap reproducibility/Conservative peak (starch)" + }, "conservative_peak_hammock": { "path": "peak/overlap_reproducibility/${basename}", "table": "Peak/Overlap reproducibility/Conservative peak (hammock)" diff --git a/chip.wdl b/chip.wdl index 0ee7150e..ea608460 100644 --- a/chip.wdl +++ b/chip.wdl @@ -10,7 +10,7 @@ workflow chip { caper_docker: 'encodedcc/chip-seq-pipeline:v1.6.1' caper_singularity: 'docker://encodedcc/chip-seq-pipeline:v1.6.1' - croo_out_def: 'https://storage.googleapis.com/encode-pipeline-output-definition/chip.croo.v4.json' + croo_out_def: 'https://storage.googleapis.com/encode-pipeline-output-definition/chip.croo.v5.json' parameter_group: { pipeline_metadata: { @@ -2507,6 +2507,7 @@ task call_peak { # generated by post_call_peak py File bfilt_peak = glob('*.bfilt.'+peak_type+'.gz')[0] File bfilt_peak_bb = glob('*.bfilt.'+peak_type+'.bb')[0] + File bfilt_peak_starch = glob('*.bfilt.'+peak_type+'.starch')[0] File bfilt_peak_hammock = glob('*.bfilt.'+peak_type+'.hammock.gz*')[0] File bfilt_peak_hammock_tbi = glob('*.bfilt.'+peak_type+'.hammock.gz*')[1] File frip_qc = glob('*.frip.qc')[0] @@ -2599,6 +2600,7 @@ task idr { File idr_peak = glob('*[!.][!b][!f][!i][!l][!t].'+peak_type+'.gz')[0] File bfilt_idr_peak = glob('*.bfilt.'+peak_type+'.gz')[0] File bfilt_idr_peak_bb = glob('*.bfilt.'+peak_type+'.bb')[0] + File bfilt_idr_peak_starch = glob('*.bfilt.'+peak_type+'.starch')[0] File bfilt_idr_peak_hammock = glob('*.bfilt.'+peak_type+'.hammock.gz*')[0] File bfilt_idr_peak_hammock_tbi = glob('*.bfilt.'+peak_type+'.hammock.gz*')[1] File idr_plot = glob('*.txt.png')[0] @@ -2648,6 +2650,7 @@ task overlap { File overlap_peak = glob('*[!.][!b][!f][!i][!l][!t].'+peak_type+'.gz')[0] File bfilt_overlap_peak = glob('*.bfilt.'+peak_type+'.gz')[0] File bfilt_overlap_peak_bb = glob('*.bfilt.'+peak_type+'.bb')[0] + File bfilt_overlap_peak_starch = glob('*.bfilt.'+peak_type+'.starch')[0] File bfilt_overlap_peak_hammock = glob('*.bfilt.'+peak_type+'.hammock.gz*')[0] File bfilt_overlap_peak_hammock_tbi = glob('*.bfilt.'+peak_type+'.hammock.gz*')[1] File frip_qc = if defined(ta) then glob('*.frip.qc')[0] else glob('null')[0] @@ -2686,10 +2689,12 @@ task reproducibility { output { File optimal_peak = glob('*optimal_peak.*.gz')[0] File optimal_peak_bb = glob('*optimal_peak.*.bb')[0] + File optimal_peak_starch = glob('*optimal_peak.*.starch')[0] File optimal_peak_hammock = glob('*optimal_peak.*.hammock.gz*')[0] File optimal_peak_hammock_tbi = glob('*optimal_peak.*.hammock.gz*')[1] File conservative_peak = glob('*conservative_peak.*.gz')[0] File conservative_peak_bb = glob('*conservative_peak.*.bb')[0] + File conservative_peak_starch = glob('*conservative_peak.*.starch')[0] File conservative_peak_hammock = glob('*conservative_peak.*.hammock.gz*')[0] File conservative_peak_hammock_tbi = glob('*conservative_peak.*.hammock.gz*')[1] File reproducibility_qc = glob('*reproducibility.qc')[0] diff --git a/dev/docker_image/Dockerfile b/dev/docker_image/Dockerfile index 1935a871..6ae3d80c 100644 --- a/dev/docker_image/Dockerfile +++ b/dev/docker_image/Dockerfile @@ -111,6 +111,10 @@ RUN wget http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmoma # Install pytest for testing environment RUN pip3 install --no-cache-dir pytest +# Install bedops 2.4.39 +RUN mkdir bedops_2.4.39 && cd bedops_2.4.39 && wget https://github.com/bedops/bedops/releases/download/v2.4.39/bedops_linux_x86_64-v2.4.39.tar.bz2 && tar -xvjf bedops_linux_x86_64-v2.4.39.tar.bz2 && rm -f bedops_linux_x86_64-v2.4.39.tar.bz2 +ENV PATH="/software/bedops_2.4.39/bin:${PATH}" + # Prevent conflict with locally installed python outside of singularity container ENV PYTHONNOUSERSITE=True diff --git a/dev/test/test_py/test_encode_lib_genomic.py b/dev/test/test_py/test_encode_lib_genomic.py index a7918951..4ecfc6ab 100644 --- a/dev/test/test_py/test_encode_lib_genomic.py +++ b/dev/test/test_py/test_encode_lib_genomic.py @@ -5,11 +5,20 @@ This module does not cover all functions defined in encode_lib_genomic. It only covers the following newly added functions. + - bed_clip() + - peak_to_starch() + - starch_to_bed_gz() """ import gzip +import hashlib import pytest -from encode_lib_genomic import bed_clip +from encode_lib_genomic import ( + bed_clip, + peak_to_starch, + starch_to_bed_gz, +) + from textwrap import dedent CHRSZ_HG38 = dedent("""\ @@ -41,6 +50,263 @@ """) +IDR_PEAK_FILE_CONTENTS = dedent("""\ + chr19\t4791326\t4791805\t.\t1000\t.\t681.68750\t-1.00000\t2.81358\t256 + chr19\t48795318\t48795734\t.\t1000\t.\t583.06535\t-1.00000\t2.81358\t230 + chr19\t16496093\t16496481\t.\t1000\t.\t461.80867\t-1.00000\t2.81358\t191 + chr19\t56140813\t56141283\t.\t1000\t.\t371.73851\t-1.00000\t2.81358\t211 + chr19\t46850840\t46851199\t.\t1000\t.\t309.29055\t-1.00000\t2.81358\t198 + chr19\t48363062\t48363375\t.\t1000\t.\t307.12149\t-1.00000\t2.81358\t151 + chr19\t49443686\t49444013\t.\t1000\t.\t304.10627\t-1.00000\t2.81358\t162 + chr19\t49641825\t49642188\t.\t1000\t.\t298.25263\t-1.00000\t2.81358\t209 + chr19\t5680459\t5680890\t.\t1000\t.\t296.50155\t-1.00000\t2.81358\t243 + chr19\t45485328\t45485617\t.\t1000\t.\t295.74491\t-1.00000\t2.81358\t138 + chr19\t48644822\t48645135\t.\t1000\t.\t288.18640\t-1.00000\t2.81358\t146 + chr19\t19776347\t19776687\t.\t1000\t.\t285.70042\t-1.00000\t2.81358\t156 + chr19\t51594348\t51594673\t.\t1000\t.\t285.08728\t-1.00000\t2.81358\t157 + chr19\t58305120\t58305436\t.\t1000\t.\t276.01356\t-1.00000\t2.81358\t157 + chr19\t42268592\t42268941\t.\t1000\t.\t273.11506\t-1.00000\t2.81358\t169 + chr19\t3435154\t3435451\t.\t1000\t.\t269.73702\t-1.00000\t2.81358\t150 + chr19\t48330068\t48330370\t.\t1000\t.\t255.71094\t-1.00000\t2.81358\t137 + chr19\t42244689\t42245003\t.\t1000\t.\t240.17506\t-1.00000\t2.81358\t170 + chr19\t1905131\t1905439\t.\t1000\t.\t237.90307\t-1.00000\t2.81358\t158 + chr19\t5790508\t5790874\t.\t1000\t.\t236.56185\t-1.00000\t2.81358\t149 + chr19\t45863142\t45863440\t.\t1000\t.\t233.67825\t-1.00000\t2.81358\t152 + chr19\t48965841\t48966136\t.\t1000\t.\t228.21747\t-1.00000\t2.81358\t123 + chr19\t35931527\t35931855\t.\t1000\t.\t224.56783\t-1.00000\t2.81358\t162 + chr19\t17859570\t17859874\t.\t1000\t.\t219.19062\t-1.00000\t2.81358\t154 + chr19\t37370886\t37371148\t.\t1000\t.\t217.35743\t-1.00000\t2.81358\t135 + chr19\t54115242\t54115538\t.\t1000\t.\t214.96402\t-1.00000\t2.81358\t143 + chr19\t55117644\t55117949\t.\t1000\t.\t213.61897\t-1.00000\t2.81358\t146 + chr19\t51108329\t51108614\t.\t1000\t.\t209.34755\t-1.00000\t2.81358\t150 + chr19\t50511149\t50511433\t.\t1000\t.\t205.82889\t-1.00000\t2.81358\t147 + chr19\t37906990\t37907270\t.\t1000\t.\t205.64162\t-1.00000\t2.81358\t148 + chr19\t48510522\t48510819\t.\t1000\t.\t200.42169\t-1.00000\t2.81358\t177 + chr19\t35748226\t35748488\t.\t1000\t.\t200.13529\t-1.00000\t2.81358\t132 + chr19\t55179080\t55179352\t.\t1000\t.\t187.11389\t-1.00000\t2.81358\t109 + chr19\t48419336\t48419577\t.\t1000\t.\t187.01974\t-1.00000\t2.81358\t118 + chr19\t50333480\t50333725\t.\t1000\t.\t185.52626\t-1.00000\t2.81358\t144 + chr19\t44113205\t44113454\t.\t1000\t.\t183.85428\t-1.00000\t2.81358\t110 + chr19\t42242558\t42243316\t.\t1000\t.\t180.35394\t-1.00000\t2.81358\t214 + chr19\t48170386\t48170706\t.\t1000\t.\t177.39634\t-1.00000\t2.81358\t166 + chr19\t19320523\t19320797\t.\t1000\t.\t174.41392\t-1.00000\t2.81358\t123 + chr19\t58326854\t58327102\t.\t1000\t.\t173.45270\t-1.00000\t2.81358\t97 + chr19\t48720969\t48721291\t.\t1000\t.\t171.36445\t-1.00000\t2.81358\t169 + chr19\t47048722\t47048972\t.\t1000\t.\t161.24254\t-1.00000\t2.81358\t119 + chr19\t7535569\t7535795\t.\t1000\t.\t160.93606\t-1.00000\t2.81358\t125 + chr19\t48858677\t48858918\t.\t1000\t.\t160.93521\t-1.00000\t2.81358\t121 + chr19\t488937\t489158\t.\t1000\t.\t158.96900\t-1.00000\t2.81358\t101 + chr19\t507842\t508053\t.\t1000\t.\t155.77461\t-1.00000\t2.81358\t77 + chr19\t53520836\t53521080\t.\t1000\t.\t151.48704\t-1.00000\t2.81358\t70 + chr19\t35717452\t35717709\t.\t1000\t.\t150.26848\t-1.00000\t2.81358\t97 + chr19\t1241581\t1241818\t.\t1000\t.\t149.96248\t-1.00000\t2.81358\t112 + chr19\t48745296\t48745515\t.\t1000\t.\t148.51024\t-1.00000\t2.81358\t96 + chr19\t48806704\t48806913\t.\t1000\t.\t148.08436\t-1.00000\t2.81358\t104 + chr19\t57435122\t57435365\t.\t1000\t.\t146.44667\t-1.00000\t2.81358\t111 + chr19\t37078275\t37078495\t.\t1000\t.\t146.21790\t-1.00000\t2.81358\t79 + chr19\t45730870\t45731101\t.\t1000\t.\t145.88752\t-1.00000\t2.81358\t128 + chr19\t54102675\t54102907\t.\t1000\t.\t139.84459\t-1.00000\t2.81358\t102 + chr19\t6737875\t6738067\t.\t1000\t.\t132.40421\t-1.00000\t2.81358\t77 + chr19\t38899656\t38899822\t.\t1000\t.\t129.29770\t-1.00000\t2.81358\t90 + chr19\t42242558\t42243316\t.\t1000\t.\t128.36802\t-1.00000\t2.81358\t413 + chr19\t48913230\t48913409\t.\t1000\t.\t126.43502\t-1.00000\t2.81358\t81 + chr19\t18919358\t18919548\t.\t1000\t.\t126.00146\t-1.00000\t2.81358\t144 + chr19\t45405424\t45405609\t.\t1000\t.\t125.25889\t-1.00000\t2.81358\t96 + chr19\t56314963\t56315158\t.\t1000\t.\t122.81174\t-1.00000\t2.81358\t98 + chr19\t48747172\t48747345\t.\t1000\t.\t118.55249\t-1.00000\t2.81358\t101 + chr19\t44164903\t44165079\t.\t1000\t.\t117.65573\t-1.00000\t2.81358\t81 + chr19\t54178603\t54178756\t.\t1000\t.\t117.22456\t-1.00000\t2.81358\t86 + chr19\t13774310\t13774476\t.\t1000\t.\t115.47046\t-1.00000\t2.81358\t91 + chr19\t50148238\t50148399\t.\t1000\t.\t115.35625\t-1.00000\t2.81358\t97 + chr19\t1021263\t1021382\t.\t1000\t.\t113.93038\t-1.00000\t2.81358\t56 + chr19\t44304983\t44305165\t.\t1000\t.\t113.23610\t-1.00000\t2.81358\t95 + chr19\t40443214\t40443369\t.\t1000\t.\t111.95033\t-1.00000\t2.81358\t68 + chr19\t55305567\t55305738\t.\t1000\t.\t111.20584\t-1.00000\t2.81358\t86 + chr19\t41959366\t41959487\t.\t1000\t.\t107.57536\t-1.00000\t2.81358\t54 + chr19\t36214649\t36215049\t.\t1000\t.\t107.03591\t-1.00000\t2.81358\t200 + chr19\t27793924\t27794031\t.\t1000\t.\t102.60328\t-1.00000\t2.81358\t13 + chr19\t48403720\t48403880\t.\t1000\t.\t102.48856\t-1.00000\t2.81358\t69 + chr19\t45523878\t45523997\t.\t1000\t.\t96.55733\t-1.00000\t2.81358\t36 + chr19\t48724838\t48725238\t.\t1000\t.\t95.72960\t-1.00000\t2.81358\t200 + chr19\t893145\t893545\t.\t1000\t.\t93.19867\t-1.00000\t2.81358\t200 + chr19\t50025777\t50026177\t.\t1000\t.\t91.84583\t-1.00000\t2.81358\t200 + chr19\t39970929\t39971329\t.\t1000\t.\t91.48053\t-1.00000\t2.81358\t200 + chr19\t43983890\t43984290\t.\t1000\t.\t90.72639\t-1.00000\t2.81358\t200 + chr19\t14006486\t14006886\t.\t1000\t.\t90.57168\t-1.00000\t2.81358\t200 + chr19\t44002682\t44003082\t.\t1000\t.\t89.92041\t-1.00000\t2.81358\t200 + chr19\t44212258\t44212658\t.\t1000\t.\t88.66694\t-1.00000\t2.81358\t200 + chr19\t1407210\t1407610\t.\t1000\t.\t88.47138\t-1.00000\t2.81358\t200 + chr19\t36687319\t36687719\t.\t1000\t.\t87.33389\t-1.00000\t2.81358\t200 + chr19\t37779419\t37779819\t.\t1000\t.\t87.14007\t-1.00000\t2.81358\t200 + chr19\t2819645\t2820045\t.\t1000\t.\t86.17229\t-1.00000\t2.81358\t200 + chr19\t48881717\t48882117\t.\t1000\t.\t84.75368\t-1.00000\t2.81358\t200 + chr19\t57499604\t57500004\t.\t1000\t.\t83.32365\t-1.00000\t2.81358\t200 + chr19\t2427455\t2427855\t.\t1000\t.\t82.93602\t-1.00000\t2.81358\t200 + chr19\t44094067\t44094467\t.\t1000\t.\t82.35716\t-1.00000\t2.81358\t200 + chr19\t3185477\t3185877\t.\t1000\t.\t78.47321\t-1.00000\t2.81358\t200 + chr19\t34733808\t34734208\t.\t1000\t.\t78.28330\t-1.00000\t2.81358\t200 + chr19\t49659756\t49660156\t.\t1000\t.\t78.07098\t-1.00000\t2.81358\t200 + chr19\t56404097\t56404497\t.\t1000\t.\t77.26443\t-1.00000\t2.81358\t200 + chr19\t44051671\t44052071\t.\t1000\t.\t76.16833\t-1.00000\t2.81358\t200 + chr19\t3761509\t3761909\t.\t1000\t.\t76.11213\t-1.00000\t2.81358\t200 + chr19\t37594588\t37594988\t.\t1000\t.\t74.98405\t-1.00000\t2.81358\t200 + chr19\t44890367\t44890767\t.\t1000\t.\t74.66094\t-1.00000\t2.81358\t200 + chr19\t2456836\t2457236\t.\t1000\t.\t74.35048\t-1.00000\t2.81358\t200 + chr19\t36772816\t36773216\t.\t1000\t.\t73.63910\t-1.00000\t2.81358\t200 + chr19\t17309209\t17309609\t.\t1000\t.\t72.28816\t-1.00000\t2.81358\t200 + chr19\t39824489\t39824889\t.\t1000\t.\t71.84375\t-1.00000\t2.81358\t200 + chr19\t55197534\t55197934\t.\t1000\t.\t70.20724\t-1.00000\t2.81358\t200 + chr19\t43935116\t43935516\t.\t1000\t.\t69.27371\t-1.00000\t2.81358\t200 + chr19\t14081248\t14081648\t.\t1000\t.\t69.09479\t-1.00000\t2.81358\t200 + chr19\t13905967\t13906367\t.\t1000\t.\t68.92781\t-1.00000\t2.81358\t200 + chr19\t12734473\t12734873\t.\t1000\t.\t67.32264\t-1.00000\t2.81358\t200 + chr19\t58451363\t58451763\t.\t1000\t.\t66.22261\t-1.00000\t2.81358\t200 + chr19\t48619183\t48619583\t.\t1000\t.\t66.08801\t-1.00000\t2.81358\t200 + chr19\t9140140\t9140540\t.\t1000\t.\t65.97811\t-1.00000\t2.81358\t200 + chr19\t40578511\t40578911\t.\t1000\t.\t65.96479\t-1.00000\t2.81358\t200 + chr19\t45885993\t45886393\t.\t1000\t.\t64.26800\t-1.00000\t2.81358\t200 + chr19\t57916486\t57916886\t.\t1000\t.\t63.85278\t-1.00000\t2.81358\t200 + chr19\t17419757\t17420157\t.\t1000\t.\t63.40265\t-1.00000\t2.81358\t200 + chr19\t45478665\t45479065\t.\t992\t.\t63.33409\t-1.00000\t2.81358\t200 + chr19\t48445586\t48445986\t.\t1000\t.\t62.80010\t-1.00000\t2.81358\t200 + chr19\t55476311\t55476711\t.\t1000\t.\t62.38110\t-1.00000\t2.81358\t200 + chr19\t57389575\t57389975\t.\t1000\t.\t62.31647\t-1.00000\t2.81358\t200 + chr19\t35745334\t35745734\t.\t1000\t.\t61.87060\t-1.00000\t2.81358\t200 + chr19\t7522275\t7522675\t.\t1000\t.\t61.22784\t-1.00000\t2.81358\t200 + chr19\t17267192\t17267592\t.\t1000\t.\t60.99079\t-1.00000\t2.81358\t200 + chr19\t57578772\t57579172\t.\t1000\t.\t60.95181\t-1.00000\t2.81358\t200 + chr19\t37467247\t37467647\t.\t1000\t.\t59.87729\t-1.00000\t2.81358\t200 + chr19\t15379716\t15380116\t.\t1000\t.\t59.35730\t-1.00000\t2.81358\t200 + chr19\t57632905\t57633305\t.\t1000\t.\t59.06843\t-1.00000\t2.81358\t200 + chr19\t19138389\t19138789\t.\t1000\t.\t58.75341\t-1.00000\t2.81358\t200 + chr19\t57599631\t57600031\t.\t1000\t.\t58.50362\t-1.00000\t2.81358\t200 + chr19\t5790508\t5790874\t.\t1000\t.\t58.35500\t-1.00000\t2.81358\t350 + chr19\t48901044\t48901444\t.\t1000\t.\t58.08165\t-1.00000\t2.81358\t200 + chr19\t34773087\t34773487\t.\t1000\t.\t58.02783\t-1.00000\t2.81358\t200 + chr19\t58183172\t58183572\t.\t1000\t.\t57.45060\t-1.00000\t2.81358\t200 + chr19\t39391011\t39391411\t.\t1000\t.\t57.01562\t-1.00000\t2.81358\t200 + chr19\t37217898\t37218298\t.\t1000\t.\t56.48620\t-1.00000\t2.81358\t200 + chr19\t57814770\t57815170\t.\t1000\t.\t56.22962\t-1.00000\t2.81358\t200 + chr19\t57487478\t57487878\t.\t1000\t.\t56.14193\t-1.00000\t2.81358\t200 + chr19\t4065823\t4066223\t.\t908\t.\t55.49507\t-1.00000\t2.81358\t200 + chr19\t57410866\t57411266\t.\t1000\t.\t55.20359\t-1.00000\t2.81358\t200 + chr19\t12806315\t12806715\t.\t1000\t.\t53.39509\t-1.00000\t2.81358\t200 + chr19\t6361334\t6361734\t.\t1000\t.\t53.18996\t-1.00000\t2.81358\t200 + chr19\t43951019\t43951419\t.\t1000\t.\t53.00573\t-1.00000\t2.81358\t200 + chr19\t36139780\t36140180\t.\t1000\t.\t52.90951\t-1.00000\t2.81358\t200 + chr19\t43619289\t43619689\t.\t1000\t.\t52.22919\t-1.00000\t2.81358\t200 + chr19\t58002639\t58003039\t.\t1000\t.\t51.91411\t-1.00000\t2.81358\t200 + chr19\t55319762\t55320162\t.\t1000\t.\t51.66523\t-1.00000\t2.81358\t200 + chr19\t57363140\t57363540\t.\t1000\t.\t51.36521\t-1.00000\t2.81358\t200 + chr19\t10717236\t10717636\t.\t1000\t.\t51.21546\t-1.00000\t2.81358\t200 + chr19\t43827056\t43827456\t.\t1000\t.\t50.66903\t-1.00000\t2.81358\t200 + chr19\t57849536\t57849936\t.\t1000\t.\t50.64209\t-1.00000\t2.81358\t200 + chr19\t48899879\t48900279\t.\t1000\t.\t50.45484\t-1.00000\t2.81358\t200 + chr19\t57746542\t57746942\t.\t1000\t.\t50.25506\t-1.00000\t2.81358\t200 + chr19\t37334377\t37334777\t.\t1000\t.\t49.12592\t-1.00000\t2.81358\t200 + chr19\t36573127\t36573527\t.\t1000\t.\t49.09784\t-1.00000\t2.81358\t200 + chr19\t58380863\t58381263\t.\t1000\t.\t49.07948\t-1.00000\t2.81358\t200 + chr19\t57280136\t57280536\t.\t1000\t.\t49.07291\t-1.00000\t2.81358\t200 + chr19\t58278718\t58279118\t.\t1000\t.\t48.94790\t-1.00000\t2.81358\t200 + chr19\t3557560\t3557960\t.\t1000\t.\t48.94230\t-1.00000\t2.81358\t200 + chr19\t48976189\t48976589\t.\t1000\t.\t48.78468\t-1.00000\t2.81358\t200 + chr19\t57350955\t57351355\t.\t1000\t.\t48.71255\t-1.00000\t2.81358\t200 + chr19\t57477474\t57477874\t.\t1000\t.\t48.47266\t-1.00000\t2.81358\t200 + chr19\t8321236\t8321636\t.\t1000\t.\t48.12625\t-1.00000\t2.81358\t200 + chr19\t57527065\t57527465\t.\t928\t.\t47.89792\t-1.00000\t2.81358\t200 + chr19\t36127760\t36128160\t.\t1000\t.\t47.77917\t-1.00000\t2.81358\t200 + chr19\t35758149\t35758549\t.\t1000\t.\t47.41582\t-1.00000\t2.81358\t200 + chr19\t16628053\t16628453\t.\t1000\t.\t47.41524\t-1.00000\t2.81358\t200 + chr19\t58475862\t58476262\t.\t1000\t.\t47.08225\t-1.00000\t2.81358\t200 + chr19\t45927671\t45928071\t.\t1000\t.\t46.93741\t-1.00000\t2.81358\t200 + chr19\t57613931\t57614331\t.\t1000\t.\t46.12554\t-1.00000\t2.81358\t200 + chr19\t57769372\t57769772\t.\t1000\t.\t46.07219\t-1.00000\t2.81358\t200 + chr19\t10879164\t10879564\t.\t953\t.\t46.04999\t-1.00000\t2.81358\t200 + chr19\t58466726\t58467126\t.\t1000\t.\t45.88625\t-1.00000\t2.81358\t200 + chr19\t35545388\t35545788\t.\t1000\t.\t45.08691\t-1.00000\t2.81358\t200 + chr19\t3762454\t3762854\t.\t1000\t.\t44.19240\t-1.00000\t2.81358\t200 + chr19\t41884105\t41884505\t.\t1000\t.\t43.96979\t-1.00000\t2.81358\t200 + chr19\t10119770\t10120170\t.\t1000\t.\t43.91503\t-1.00000\t2.81358\t200 + chr19\t39996821\t39997221\t.\t612\t.\t43.74713\t-1.00000\t2.81358\t200 + chr19\t57240360\t57240760\t.\t1000\t.\t43.68973\t-1.00000\t2.81358\t200 + chr19\t44025094\t44025494\t.\t1000\t.\t43.04144\t-1.00000\t2.81358\t200 + chr19\t6603981\t6604381\t.\t1000\t.\t42.78101\t-1.00000\t2.81358\t200 + chr19\t49453364\t49453764\t.\t1000\t.\t42.67408\t-1.00000\t2.81358\t200 + chr19\t57559697\t57560097\t.\t1000\t.\t42.33430\t-1.00000\t2.81358\t200 + chr19\t2461961\t2462361\t.\t1000\t.\t41.85114\t-1.00000\t2.81358\t200 + chr19\t36915953\t36916353\t.\t898\t.\t40.89735\t-1.00000\t2.81358\t200 + chr19\t55304226\t55304626\t.\t1000\t.\t40.63412\t-1.00000\t2.81358\t200 + chr19\t45507222\t45507622\t.\t1000\t.\t40.63249\t-1.00000\t2.81358\t200 + chr19\t38224108\t38224508\t.\t1000\t.\t40.19406\t-1.00000\t2.81358\t200 + chr19\t36489511\t36489911\t.\t1000\t.\t39.96116\t-1.00000\t2.81358\t200 + chr19\t55599917\t55600317\t.\t1000\t.\t39.86050\t-1.00000\t2.81358\t200 + chr19\t49850498\t49850898\t.\t1000\t.\t39.76331\t-1.00000\t2.81358\t200 + chr19\t58440133\t58440533\t.\t1000\t.\t39.44347\t-1.00000\t2.81358\t200 + chr19\t44500321\t44500721\t.\t1000\t.\t39.26136\t-1.00000\t2.81358\t200 + chr19\t34677356\t34677756\t.\t1000\t.\t39.23012\t-1.00000\t2.81358\t200 + chr19\t1848379\t1848779\t.\t1000\t.\t38.32981\t-1.00000\t2.81358\t200 + chr19\t40056037\t40056437\t.\t1000\t.\t37.16416\t-1.00000\t2.81358\t200 + chr19\t247002\t247402\t.\t1000\t.\t36.99421\t-1.00000\t2.81358\t200 + chr19\t5690061\t5690461\t.\t1000\t.\t36.55475\t-1.00000\t2.81358\t200 + chr19\t3185738\t3185883\t.\t1000\t.\t36.51140\t-1.00000\t2.81358\t138 + chr19\t49331580\t49331980\t.\t1000\t.\t35.83604\t-1.00000\t2.81358\t200 + chr19\t58408390\t58408790\t.\t960\t.\t35.42556\t-1.00000\t2.81358\t200 + chr19\t44071894\t44072294\t.\t1000\t.\t35.38928\t-1.00000\t2.81358\t200 + chr19\t1095344\t1095744\t.\t1000\t.\t35.16188\t-1.00000\t2.81358\t200 + chr19\t36838251\t36838651\t.\t1000\t.\t34.03633\t-1.00000\t2.81358\t200 + chr19\t34172182\t34172582\t.\t632\t.\t33.74442\t-1.00000\t2.81358\t200 + chr19\t45886637\t45887037\t.\t968\t.\t33.11518\t-1.00000\t2.81358\t200 + chr19\t42242558\t42243316\t.\t1000\t.\t32.92736\t-1.00000\t2.81358\t615 + chr19\t49527543\t49527943\t.\t817\t.\t32.91150\t-1.00000\t2.81358\t200 + chr19\t4180100\t4180500\t.\t1000\t.\t32.19349\t-1.00000\t2.81358\t200 + chr19\t54115393\t54115793\t.\t1000\t.\t32.18435\t-1.00000\t2.81358\t200 + chr19\t3505930\t3506330\t.\t1000\t.\t31.58782\t-1.00000\t2.81358\t200 + chr19\t58575176\t58575576\t.\t844\t.\t31.41297\t-1.00000\t2.81358\t200 + chr19\t17305596\t17305996\t.\t918\t.\t30.58403\t-1.00000\t2.81358\t200 + chr19\t12723837\t12724237\t.\t1000\t.\t29.71396\t-1.00000\t2.81358\t200 + chr19\t49665715\t49666115\t.\t856\t.\t29.30877\t-1.00000\t2.81358\t200 + chr19\t50476285\t50476685\t.\t1000\t.\t29.11791\t-1.00000\t2.81358\t200 + chr19\t7551354\t7551754\t.\t945\t.\t28.45736\t-1.00000\t2.81358\t200 + chr19\t58572934\t58573334\t.\t1000\t.\t28.04094\t-1.00000\t2.81358\t200 + chr19\t36214848\t36215248\t.\t1000\t.\t27.99601\t-1.00000\t2.81358\t200 + chr19\t4815502\t4815902\t.\t937\t.\t27.90546\t-1.00000\t2.81358\t200 + chr19\t40190980\t40191380\t.\t563\t.\t27.17056\t-1.00000\t2.81358\t200 + chr19\t48986923\t48987323\t.\t1000\t.\t27.17040\t-1.00000\t2.81358\t200 + chr19\t12938292\t12938692\t.\t831\t.\t25.84793\t-1.00000\t2.81358\t200 + chr19\t51986659\t51987059\t.\t888\t.\t25.52105\t-1.00000\t2.81358\t200 + chr19\t1275192\t1275592\t.\t878\t.\t25.40850\t-1.00000\t2.81358\t200 + chr19\t35758348\t35758748\t.\t867\t.\t25.17319\t-1.00000\t2.81358\t200 + chr19\t34134379\t34134779\t.\t1000\t.\t24.96747\t-1.00000\t2.81358\t200 + chr19\t56393122\t56393522\t.\t999\t.\t24.36847\t-1.00000\t2.81358\t200 + chr19\t48983485\t48983885\t.\t802\t.\t23.64726\t-1.00000\t2.81358\t200 + chr19\t20052113\t20052513\t.\t758\t.\t22.50222\t-1.00000\t2.81358\t200 + chr19\t1490283\t1490683\t.\t653\t.\t21.27492\t-1.00000\t2.81358\t200 + chr19\t56594997\t56595397\t.\t675\t.\t21.17665\t-1.00000\t2.81358\t200 + chr19\t18522447\t18522847\t.\t726\t.\t20.20797\t-1.00000\t2.81358\t200 + chr19\t57583835\t57584235\t.\t578\t.\t19.67557\t-1.00000\t2.81358\t200 + chr19\t58155032\t58155432\t.\t594\t.\t19.32396\t-1.00000\t2.81358\t200 + chr19\t58513929\t58514329\t.\t549\t.\t17.88403\t-1.00000\t2.81358\t200 + chr19\t10416662\t10417062\t.\t773\t.\t15.41429\t-1.00000\t2.81358\t200 + chr19\t44890566\t44890966\t.\t1000\t.\t13.96397\t-1.00000\t2.81358\t200 + chr19\t35748357\t35748757\t.\t1000\t.\t13.17552\t-1.00000\t2.81358\t200 + chr19\t56140813\t56141283\t.\t1000\t.\t12.10988\t-1.00000\t2.35218\t425 + chr19\t1021318\t1021718\t.\t788\t.\t7.91767\t-1.00000\t1.76691\t200 + chr19\t45886839\t45887239\t.\t976\t.\t6.89523\t-1.00000\t1.40964\t200 + chr19\t19320645\t19321045\t.\t984\t.\t6.62785\t-1.00000\t1.41457\t200 + chr19\t57814975\t57815375\t.\t1000\t.\t6.52472\t-1.00000\t1.39562\t200 + chr19\t50476489\t50476889\t.\t1000\t.\t5.67951\t-1.00000\t1.31517\t200 + chr19\t58573135\t58573535\t.\t1000\t.\t5.25639\t-1.00000\t1.24967\t200 + chr19\t7522476\t7522876\t.\t1000\t.\t4.96091\t-1.00000\t0.30027\t200 + chr19\t2457038\t2457438\t.\t1000\t.\t4.16791\t-1.00000\t0.36851\t200 + chr19\t14006685\t14007085\t.\t1000\t.\t3.88800\t-1.00000\t0.23810\t200 + chr19\t16628257\t16628657\t.\t1000\t.\t3.49157\t-1.00000\t0.45179\t200 + chr19\t41959428\t41959828\t.\t1000\t.\t3.34029\t-1.00000\t0.46689\t200 + chr19\t56595196\t56595596\t.\t699\t.\t2.93000\t-1.00000\t0.49925\t200 +""") + +MD5_HASH_IDR_PEAK_UNSTARCHED = 'd9fce2322c5328e57fa00156d1608c47' + + def test_bed_clip(tmp_path): chrsz = tmp_path / 'chrsz' chrsz.write_text(CHRSZ_HG38) @@ -82,3 +348,21 @@ def test_bed_clip(tmp_path): with gzip.open(str(out_bed), 'rb') as fp: assert fp.read().decode() == 'chrM\t0\t16569\n' + +@pytest.mark.integration +def test_starch_and_unstarch(tmp_path): + """Cannot use md5hash of output starch file since it includes timestamp. + So unstarch it and calculate md5 hash. + This is actually an integration test of starch/unstarch. + Two functions are tested together: + - peak_to_starch(): cannot control starch's timestamp inclusion. + - starch_to_bed_gz(): this function gzips with -n (excluding timestamp). + """ + peak = tmp_path / 'idr_peak.gz' + peak.write_text(IDR_PEAK_FILE_CONTENTS) + + starch = peak_to_starch(peak, tmp_path) + bed_gz = starch_to_bed_gz(starch, tmp_path) + + with open(bed_gz, 'rb') as fp: + assert hashlib.md5(fp.read()).hexdigest() == MD5_HASH_IDR_PEAK_UNSTARCHED diff --git a/src/encode_lib_genomic.py b/src/encode_lib_genomic.py index cdc6969f..f3f78ff3 100755 --- a/src/encode_lib_genomic.py +++ b/src/encode_lib_genomic.py @@ -10,9 +10,17 @@ import subprocess from encode_lib_common import ( - get_num_lines, get_peak_type, human_readable_number, - rm_f, run_shell_cmd, strip_ext, strip_ext_bam, - strip_ext_peak, strip_ext_ta) + get_num_lines, + get_peak_type, + human_readable_number, + rm_f, + run_shell_cmd, + strip_ext, + strip_ext_bam, + strip_ext_peak, + strip_ext_ta, + strip_ext_gz, +) # https://github.com/samtools/samtools/blob/1.9/bam_sort.c#L70 @@ -392,6 +400,41 @@ def peak_to_hammock(peak, out_dir): return (hammock_gz, hammock_gz_tbi) +def peak_to_starch(peak, out_dir): + """Convert peak (BED) into starch. + Required softwares: + BEDOPS (tested with v2.4.39): sort-bed, starch + """ + prefix = os.path.join( + out_dir, os.path.basename(strip_ext_gz(peak)) + ) + starch = '{}.starch'.format(prefix) + run_shell_cmd( + 'zcat -f {peak} | sort-bed - | starch - > {starch}'.format( + peak=peak, + starch=starch, + ) + ) + return starch + +def starch_to_bed_gz(starch, out_dir): + """Convert starch into gzipped BED. + Required softwares: + BEDOPS (tested with v2.4.39): unstarch + """ + prefix = os.path.join( + out_dir, os.path.basename(strip_ext(starch)) + ) + bed_gz = '{}.bed.gz'.format(prefix) + run_shell_cmd( + 'unstarch {starch} | gzip -nc > {bed_gz}'.format( + starch=starch, + bed_gz=bed_gz, + ) + ) + return bed_gz + + def peak_to_bigbed(peak, peak_type, chrsz, out_dir): prefix = os.path.join(out_dir, os.path.basename(strip_ext(peak))) diff --git a/src/encode_task_idr.py b/src/encode_task_idr.py index 59e6d0c6..fd723aa9 100755 --- a/src/encode_task_idr.py +++ b/src/encode_task_idr.py @@ -8,9 +8,19 @@ import argparse import math from encode_lib_common import ( - assert_file_not_empty, log, ls_l, mkdir_p, rm_f, run_shell_cmd) + assert_file_not_empty, + log, + ls_l, + mkdir_p, + rm_f, + run_shell_cmd +) from encode_lib_genomic import ( - peak_to_bigbed, peak_to_hammock, bed_clip) + peak_to_bigbed, + peak_to_hammock, + bed_clip, + peak_to_starch, +) from encode_lib_blacklist_filter import blacklist_filter from encode_lib_frip import frip, frip_shifted @@ -165,6 +175,9 @@ def main(): peak_to_bigbed(bfilt_idr_peak, args.peak_type, args.chrsz, args.out_dir) + log.info('Converting peak to starch...') + peak_to_starch(bfilt_idr_peak, args.out_dir) + log.info('Converting peak to hammock...') peak_to_hammock(bfilt_idr_peak, args.out_dir) diff --git a/src/encode_task_overlap.py b/src/encode_task_overlap.py index d535c762..7ebacd4f 100755 --- a/src/encode_task_overlap.py +++ b/src/encode_task_overlap.py @@ -7,8 +7,19 @@ import os import argparse from encode_lib_common import ( - assert_file_not_empty, gunzip, log, ls_l, mkdir_p, rm_f, run_shell_cmd) -from encode_lib_genomic import peak_to_bigbed, peak_to_hammock + assert_file_not_empty, + gunzip, + log, + ls_l, + mkdir_p, + rm_f, + run_shell_cmd, +) +from encode_lib_genomic import ( + peak_to_bigbed, + peak_to_hammock, + peak_to_starch, +) from encode_lib_blacklist_filter import blacklist_filter from encode_lib_frip import frip, frip_shifted @@ -137,6 +148,9 @@ def main(): peak_to_bigbed(bfilt_overlap_peak, args.peak_type, args.chrsz, args.out_dir) + log.info('Converting peak to starch...') + peak_to_starch(bfilt_overlap_peak, args.out_dir) + log.info('Converting peak to hammock...') peak_to_hammock(bfilt_overlap_peak, args.out_dir) diff --git a/src/encode_task_post_call_peak_atac.py b/src/encode_task_post_call_peak_atac.py index 4a137dd6..eca330b5 100755 --- a/src/encode_task_post_call_peak_atac.py +++ b/src/encode_task_post_call_peak_atac.py @@ -5,9 +5,18 @@ import sys import argparse from encode_lib_common import ( - assert_file_not_empty, log, ls_l, mkdir_p) + assert_file_not_empty, + log, + ls_l, + mkdir_p, +) from encode_lib_genomic import ( - peak_to_bigbed, peak_to_hammock, get_region_size_metrics, get_num_peaks) + peak_to_bigbed, + peak_to_hammock, + get_region_size_metrics, + get_num_peaks, + peak_to_starch, +) from encode_lib_blacklist_filter import blacklist_filter from encode_lib_frip import frip @@ -66,6 +75,9 @@ def main(): peak_to_bigbed(bfilt_peak, args.peak_type, args.chrsz, args.out_dir) + log.info('Converting peak to starch...') + peak_to_starch(bfilt_peak, args.out_dir) + log.info('Converting peak to hammock...') peak_to_hammock(bfilt_peak, args.out_dir) diff --git a/src/encode_task_post_call_peak_chip.py b/src/encode_task_post_call_peak_chip.py index 9bb25563..2eb60f49 100755 --- a/src/encode_task_post_call_peak_chip.py +++ b/src/encode_task_post_call_peak_chip.py @@ -6,9 +6,18 @@ import os import argparse from encode_lib_common import ( - assert_file_not_empty, log, ls_l, mkdir_p) + assert_file_not_empty, + log, + ls_l, + mkdir_p, +) from encode_lib_genomic import ( -peak_to_bigbed, peak_to_hammock, get_region_size_metrics, get_num_peaks) + peak_to_bigbed, + peak_to_hammock, + get_region_size_metrics, + get_num_peaks, + peak_to_starch, +) from encode_lib_blacklist_filter import blacklist_filter from encode_lib_frip import frip_shifted @@ -68,6 +77,9 @@ def main(): peak_to_bigbed(bfilt_peak, args.peak_type, args.chrsz, args.out_dir) + log.info('Converting peak to starch...') + peak_to_starch(bfilt_peak, args.out_dir) + log.info('Converting peak to hammock...') peak_to_hammock(bfilt_peak, args.out_dir) diff --git a/src/encode_task_reproducibility.py b/src/encode_task_reproducibility.py index e080cfcb..ce10f7da 100755 --- a/src/encode_task_reproducibility.py +++ b/src/encode_task_reproducibility.py @@ -7,11 +7,20 @@ import os import argparse from encode_lib_common import ( - copy_f_to_f, get_num_lines, infer_n_from_nC2, - infer_pair_label_from_idx, log, mkdir_p) + copy_f_to_f, + get_num_lines, + infer_n_from_nC2, + infer_pair_label_from_idx, + log, + mkdir_p, +) from encode_lib_genomic import ( - peak_to_bigbed, peak_to_hammock, get_region_size_metrics, - get_num_peaks) + peak_to_bigbed, + peak_to_hammock, + get_region_size_metrics, + get_num_peaks, + peak_to_starch, +) def parse_arguments(): @@ -131,6 +140,10 @@ def main(): peak_to_bigbed(conservative_peak_file, args.peak_type, args.chrsz, args.out_dir) + log.info('Converting peak to starch...') + peak_to_starch(optimal_peak_file, args.out_dir) + peak_to_starch(conservative_peak_file, args.out_dir) + log.info('Converting peak to hammock...') peak_to_hammock(optimal_peak_file, args.out_dir)