def run_filter(vrn_file, align_bam, ref_file, data, items):
    """Filter and annotate somatic VCFs with damage/bias artifacts on low frequency variants.

    Moves damage estimation to INFO field, instead of leaving in FILTER.
    """
    if not should_filter(items) or not vcfutils.vcf_has_variants(vrn_file):
        return data
    else:
        raw_file = "%s-damage.vcf" % utils.splitext_plus(vrn_file)[0]
        out_plot_files = ["%s%s" % (utils.splitext_plus(raw_file)[0], ext)
                          for ext in ["_seq_bias_simplified.pdf", "_pcr_bias_simplified.pdf"]]
        if not utils.file_uptodate(raw_file, vrn_file) and not utils.file_uptodate(raw_file + ".gz", vrn_file):
            with file_transaction(items[0], raw_file) as tx_out_file:
                # Does not apply --qcSummary plotting due to slow runtimes
                cmd = ["dkfzbiasfilter.py", "--filterCycles", "1", "--passOnly",
                       "--tempFolder", os.path.dirname(tx_out_file),
                       vrn_file, align_bam, ref_file, tx_out_file]
                do.run(cmd, "Filter low frequency variants for DNA damage and strand bias")
                for out_plot in out_plot_files:
                    tx_plot_file = os.path.join("%s_qcSummary" % utils.splitext_plus(tx_out_file)[0], "plots",
                                                os.path.basename(out_plot))
                    if utils.file_exists(tx_plot_file):
                        shutil.move(tx_plot_file, out_plot)
        raw_file = vcfutils.bgzip_and_index(raw_file, items[0]["config"])
        data["vrn_file"] = _filter_to_info(raw_file, items[0])
        out_plot_files = [x for x in out_plot_files if utils.file_exists(x)]
        data["damage_plots"] = out_plot_files
        return data
def run_filter ( vrn_file , align_bam , ref_file , data , items ) : if not should_filter ( items ) or not vcfutils . vcf_has_variants ( vrn_file ) : return data else : raw_file = "%s-damage.vcf" % utils . splitext_plus ( vrn_file ) [ 0 ] out_plot_files = [ "%s%s" % ( utils . splitext_plus ( raw_file ) [ 0 ] , ext ) for ext in [ "_seq_bias_simplified.pdf" , "_pcr_bias_simplified.pdf" ] ] if not utils . file_uptodate ( raw_file , vrn_file ) and not utils . file_uptodate ( raw_file + ".gz" , vrn_file ) : with file_transaction ( items [ 0 ] , raw_file ) as tx_out_file : cmd = [ "dkfzbiasfilter.py" , "--filterCycles" , "1" , "--passOnly" , "--tempFolder" , os . path . dirname ( tx_out_file ) , vrn_file , align_bam , ref_file , tx_out_file ] do . run ( cmd , "Filter low frequency variants for DNA damage and strand bias" ) for out_plot in out_plot_files : tx_plot_file = os . path . join ( "%s_qcSummary" % utils . splitext_plus ( tx_out_file ) [ 0 ] , "plots" , os . path . basename ( out_plot ) ) if utils . file_exists ( tx_plot_file ) : shutil . move ( tx_plot_file , out_plot ) raw_file = vcfutils . bgzip_and_index ( raw_file , items [ 0 ] [ "config" ] ) data [ "vrn_file" ] = _filter_to_info ( raw_file , items [ 0 ] ) out_plot_files = [ x for x in out_plot_files if utils . file_exists ( x ) ] data [ "damage_plots" ] = out_plot_files return data
Filter and annotate somatic VCFs with damage/bias artifacts on low frequency variants.

    Moves damage estimation to INFO field, instead of leaving in FILTER.