Example #1
0
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))
Example #2
0
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))