def atacseq_summary(config, input, output, Cutadapt, Qualimap, MarkDuplicates, InsertMetrics, AlignmentMetrics): """Make atacseq summary""" # Dictionary of figures d = {} Cutadapt.read_aggregate_data() d.update({'cutadapt': {'fig': Cutadapt.plot('cutadapt')[0]}}) Qualimap.read_aggregate_data() d.update({'qualimap': {'fig': {'globals': Qualimap.plot("Globals")[0], 'coverage_per_contig': Qualimap.plot("Coverage_per_contig")[0]}}}) InsertMetrics.read_aggregate_data() plist = [InsertMetrics.plot('metrics')[0]] + [x for sublist in InsertMetrics.plot("hist")[0].children for x in sublist] gp = gridplot([plist[i:i+3] for i in range(0, len(plist), 3)]) d.update({'picard': {'InsertMetrics': {'atacseq' : {'fig': gp}}}}) MarkDuplicates.read_aggregate_data() d['picard'].update({'DuplicationMetrics': {'atacseq': {'fig': gridplot([[MarkDuplicates.plot('metrics')[0], MarkDuplicates.plot('hist')[0]]])}}}) d.update({'rulegraph' : {'fig' : input.rulegraph, 'uri': data_uri(input.rulegraph), 'target' : 'atacseq_all'}}) # Write the resulting html tp = Env.get_template('workflow_atacseq_qc.html') with open(output.html, "w") as fh: fh.write(static_html(tp, template_variables=d, css_raw=css_files))
def scrnaseq_qc(config, input, output, results=None, rsem=None, rpkmforgenes=None, **kwargs): """Do QC of scrnaseq""" # Collect results - subset by samples if applicable results.read_aggregate_data() results.filter_aggregate_data('alignrseqc', 'SM', config["samples"]) taptool_url = None if not config['scrnaseq.workflow']['report']['annotation_url'] is None: taptool_url = config['scrnaseq.workflow']['report']['annotation_url'] + "@gene_id" # Brennecke args # brennecke_args = {'plot_height':600, 'plot_width': 800, 'alpha': # 0.3, 'taptool_url': config['scrnaseq.workflow']['report']['annotation_url'] + "@gene_id"} # Alignment stats d = {'align': {'fig': results.plot('alignrseqc')[0]['fig'], 'table': results.plot('alignrseqc')[0]['table']}} # rsem plots if rsem.run: d.update({'rsem': plot_pca(rsem.targets['pca'][0], config['scrnaseq.workflow']['metadata'], rsem.targets['pca'][0].replace(".pca.csv", ".pcaobj.pickle"), taptool_url= taptool_url)}) # # FIXME: Instead of re use list # # d['rsem'].update({'brennecke': scrnaseq_brennecke_plot(infile=input.rsemgenes, spikein_re=re.compile("^ERCC"), # # index=["SM", "gene_id", "transcript_id(s)", "gene_name"], # # **brennecke_args)}) # rpkmforgenes plots if rpkmforgenes.run: d.update({'rpkmforgenes': plot_pca(rpkmforgenes.targets['pca'][0], config['scrnaseq.workflow']['metadata'], rpkmforgenes.targets['pca'][0].replace(".pca.csv", ".pcaobj.pickle"), taptool_url= taptool_url)}) d.update({'version' : all_versions(), 'config' : {'uri' : data_uri(input.globalconf), 'file' : input.globalconf}}) d.update({'rulegraph': {'fig': input.rulegraph, 'uri': data_uri(input.rulegraph), 'target': 'scrnaseq_all'}}) tp = Env.get_template('workflow_scrnaseq_qc.html') with open(output.html, "w") as fh: fh.write(static_html(tp, template_variables=d, css_raw=bootstrap_css_files, js_raw=bootstrap_js_files))