diff --git a/docker/Dockerfile b/docker/Dockerfile index ccdb6d4b053430dd68cdfecf1f920ab06fade9fb..c80203158859a30424a20b203691c5c72e7b7d68 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -24,6 +24,7 @@ RUN apt-get update \ && apt-get install -yq bioperl=1.6.923-1 tabix=0.2.6-2 zlib1g zlib1g-dev samtools gnuplot python3 \ && apt-get install -yq r-base r-base-dev \ && apt-get install -yq libncurses5 libncurses5-dev sudo libatlas-base-dev python2.7 gfortran python-dev \ + && apt-get install -yq python-matplotlib \ && update-alternatives --set java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java diff --git a/lib/imp.html b/lib/imp.html index a0f4041dabdccf4d1ea6755a94e51e4e365658b5..c47f137d2eefa15422e70b13d4dd5eced40a6379 100644 --- a/lib/imp.html +++ b/lib/imp.html @@ -68,7 +68,7 @@ <div class="tab-content"> - + <!-- RAW STATISTICS --> <div role="tabpanel" class="tab-pane fade" id="raw"> <section id="raw-section" class="row"> <h2><small>Raw data statistics</small></h2> @@ -89,12 +89,11 @@ <div class="row"> <iframe id="ifr-raw-stat" src="Analysis/stats/MG/MG.R1.fq_fastqc.html" style="position: absolute; width: 100%;height: 100%; border: none"></iframe> </div> - </section> </div> - <!-- STATISTICS --> + <!-- PREPROCESS STATISTICS --> <div role="tabpanel" class="tab-pane fade active" id="preprocess"> <section id="preprocess-section" class="row"> <h2><small>Preprocessed data statistics</small></h2> @@ -121,8 +120,9 @@ <div class="row"> <iframe id="ifr-preprocess-stat" src="Analysis/stats/MG/MG.R1_preprocessed_fastqc.html" style="position: absolute; width: 100%;height: 100%; border: none"></iframe> </div> - </section> + + <!-- FILTERING --> <section id="filtering-section" class="row"> <div class="row"> @@ -132,8 +132,26 @@ </section> </div> <!-- ASSEMBLY --> + <div role="tabpanel" class="tab-pane fade" id="assembly"> <section id="assembly-section" class="row"> + <div id="but-assembly" class="row btn-group" data-toggle="buttons" name="assembly-data"> + <label class="btn btn-primary active"> + <input id="but-assembly1" type="radio" value="Analysis/stats/MT/MT.SE_preprocessed_fastqc.html" class="btn btn-default" name="assembly-data" checked>Quast + </label> + <label class="btn btn-primary"> + <input id="but-assembly2" type="radio" value="Analysis/results/IMP-vizbin_length.png" class="btn btn-default" name="assembly-data">Vizbin length + </label> + <label class="btn btn-primary"> + <input id="but-assembly3" type="radio" value="Analysis/results/IMP-vizbin_length_GC.png" class="btn btn-default" name="assembly-data">Vizbin GC + </label> + </div> + <div class="row"> + <div class="row" id="assembly-wrapper"></div> + </div> + + + <!-- <div role="tabpanel" class="tab-pane fade" id="assembly"> <h2><small>Assembly </small></h2> <div class="row"> <div class="col-sm-3 col-md-3"></div> @@ -143,7 +161,7 @@ <div class="row"> <div id="carousel-assembly-wrapper"></div> - </div> + </div> --> </section> </div> @@ -219,12 +237,6 @@ <section class="row"> <section id="impstatistics-section"> <h2><small>Statistics </small></h2> - <div id="imp-stats-alert" class="row" style="display: none;"> - <div class="alert alert-warning alert-dismissible" role="alert"> - <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> - <strong>Warning!</strong> You don't have any statistics about the run. Next time don't forget to use Snakemake with the <kbd>--stats stats.json</kbd> option. - </div> - </div> <div id="imp-stats" class="row"> <div id="basic-info"></div> <div id="time-charts-mean"></div> diff --git a/lib/imp.js b/lib/imp.js index df1017c1b9564ae4bb40ea3dbac2eb40e5c2581d..a87dd2a0473ad4c8f7fbae24c6c933b3c0b44af7 100644 --- a/lib/imp.js +++ b/lib/imp.js @@ -269,10 +269,19 @@ $('#but-annot').on('change', function(){ }); -renderSimpleCarousel('carousel-assembly', 'Analysis/results', [ - 'IMP-vizbin_length.png', - 'IMP-vizbin_length_GC.png' -]); +$('#but-assembly').on('change', function(){ + var val = $('input[name="assembly-data"]:checked').val(); + if(val.endsWith('png')){ + $("#assembly-wrapper").replaceWith("<div id='assembly-wrapper' class='row'><img class='img-responsive' src='" + val + "'/></div>"); + } else { + $("#assembly-wrapper").replaceWith("<div id='assembly-wrapper' class='row'><iframe style='position: absolute; width: 100%;height: 100%; border: none' src='" + val + "'></iframe></div>"); + } +}); + +// renderSimpleCarousel('carousel-assembly', 'Analysis/results', [ +// 'IMP-vizbin_length.png', +// 'IMP-vizbin_length_GC.png' +// ]); renderSimpleCarousel('carousel-mapping', 'Analysis/results', [ 'IMP-reads_density.png', diff --git a/rules/Preprocessing/MG.rules b/rules/Preprocessing/MG.rules index d74f2b3defb462a5391bfb1781e54c9eb4164415..d46af75528ecc83c3ee08416320fba5a66feb166 100644 --- a/rules/Preprocessing/MG.rules +++ b/rules/Preprocessing/MG.rules @@ -11,32 +11,18 @@ rule PREPROCESSING_MG_GET_FILES: prepare_input_files(input, 'MG') -rule PREPROCESSING_MG_DEDUPLICATE: - log: - P_LOG - input: - expand('{dir}/{raw}', raw=['MG.R1.fq', 'MG.R2.fq'], dir=P_OUT) - output: - expand('{dir}/{uniq}', uniq=['MG.R1.uniq.fq', 'MG.R2.uniq.fq'], dir=P_OUT) - benchmark: - "%s/benchmarks/PREPROCESSING_MG_DEDUPLICATE.json" % P_OUT - shell: - """ - fastuniq -i <(echo -e "{input[0]}\\n{input[1]}") -o {output[0]} -p {output[1]} >> {log} 2>&1 - """ - rule PREPROCESSING_MG_TRIM: log: P_LOG input: - expand('{dir}/{uniq}', uniq=['MG.R1.uniq.fq', 'MG.R2.uniq.fq'], dir=P_OUT), + expand('{dir}/{uniq}', uniq=['MG.R1.fq', 'MG.R2.fq'], dir=P_OUT), DBPATH + "/adapters/adapters.done" output: expand('{dir}/{trim}', trim=[ - 'MG.R1.uniq.trimmed.fq', - 'MG.SE1.uniq.trimmed.fq', - 'MG.R2.uniq.trimmed.fq', - 'MG.SE2.uniq.trimmed.fq'], dir=P_OUT) + 'MG.R1.trimmed.fq', + 'MG.SE1.trimmed.fq', + 'MG.R2.trimmed.fq', + 'MG.SE2.trimmed.fq'], dir=P_OUT) shell: """ java -jar {config[trimmomatic][jarfile]} PE -threads {THREADS} {input[0]} {input[1]} {output} \ @@ -56,10 +42,10 @@ rule PREPROCESSING_MG_CAT_TRIMMED_SE: P_LOG input: expand('{dir}/{trim}', trim=[ - 'MG.SE1.uniq.trimmed.fq', - 'MG.SE2.uniq.trimmed.fq'], dir=P_OUT) + 'MG.SE1.trimmed.fq', + 'MG.SE2.trimmed.fq'], dir=P_OUT) output: - expand('{dir}/{cat}', cat='MG.SE.uniq.trimmed.fq', dir=P_OUT) + expand('{dir}/{cat}', cat='MG.SE.trimmed.fq', dir=P_OUT) shell: "cat {input[0]} {input[1]} > {output}" benchmark: @@ -70,18 +56,18 @@ rule PREPROCESSING_MG_FILTER_HG: P_LOG input: expand('{dir}/{trim}', trim=[ - 'MG.R1.uniq.trimmed.fq', - 'MG.R2.uniq.trimmed.fq', - 'MG.SE.uniq.trimmed.fq'], dir=P_OUT), + 'MG.R1.trimmed.fq', + 'MG.R2.trimmed.fq', + 'MG.SE.trimmed.fq'], dir=P_OUT), '{dir}/{ref}.fa'.format(dir=DBPATH + "/human", ref=config['human_filtering']['filter']), expand( "{p}/human/{filter}.{ext}", filter=config["human_filtering"]["filter"], ext=['fa', 'fa.amb', 'fa.ann', 'fa.bwt', 'fa.pac', 'fa.sa'], p=DBPATH) output: expand('{dir}/{filter}', filter=expand([ - 'MG.R1.uniq.trimmed.{f}.fq', - 'MG.R2.uniq.trimmed.{f}.fq', - 'MG.SE.uniq.trimmed.{f}.fq'], f=config['human_filtering']['filter']), dir=P_OUT) + 'MG.R1.trimmed.{f}.fq', + 'MG.R2.trimmed.{f}.fq', + 'MG.SE.trimmed.{f}.fq'], f=config['human_filtering']['filter']), dir=P_OUT) benchmark: "%s/benchmarks/PREPROCESSING_MG_FILTER_HG.json" % P_OUT shell: diff --git a/rules/Preprocessing/master.rules b/rules/Preprocessing/master.rules index 36ca9cdf046ba4aec0ef2d3e4a7b58513c9414e2..8d3003a209e93beb71f0cbafe70d4aa2b97d5d6e 100644 --- a/rules/Preprocessing/master.rules +++ b/rules/Preprocessing/master.rules @@ -28,12 +28,12 @@ def preprocessing_output_files(): def preprocessed_mg(target, dir=P_OUT): if config['preprocessing_filtering']: # with human filtering ON - return '{dir}/MG.{target}.uniq.trimmed.{f}.fq'.format( + return '{dir}/MG.{target}.trimmed.{f}.fq'.format( f=config['human_filtering']['filter'], dir=dir, target=target) # with human filtering OFF - return '{dir}/MG.{target}.uniq.trimmed.fq'.format(dir=dir, target=target) + return '{dir}/MG.{target}.trimmed.fq'.format(dir=dir, target=target) def preprocessed_mt(target, dir=P_OUT):