Source code for sequana.modules_report.joint_calling
# coding: utf-8
#
# This file is part of Sequana software
#
# Copyright (c) 2016 - Sequana Development Team
#
# File author(s):
# Dimitri Desvillechabrol <dimitri.desvillechabrol@pasteur.fr>,
# <d.desvillechabrol@gmail.com>
#
# Distributed under the terms of the 3-clause BSD license.
# The full license is in the LICENSE file, distributed with this software.
#
# website: https://github.com/sequana/sequana
# documentation: http://sequana.readthedocs.io
#
##############################################################################
"""Module to write joint calling report"""
from sequana.modules_report.base_module import SequanaBaseModule
from sequana.utils.datatables_js import DataTable
[docs]
class JointCallingModule(SequanaBaseModule):
"""Write HTML report of variant calling. This class takes a csv file
generated by sequana_variant_filter.
"""
def __init__(self, data):
""".. rubric:: constructor
:param data: a CSV filename created by ``sequana.freebayes_vcf_filter``
or a :class:`freebayes_vcf_filter.Filtered_freebayes` object.
"""
super().__init__(template_fn="joint_calling.html")
self.title = "Joint Calling Report"
self.vcf = data
self.table_html, self.table_options = self.create_datatable()
self.create_html("joint_calling.html")
[docs]
def create_datatable(self):
"""Variants detected section."""
datatable = DataTable(self.vcf.df, "jc")
datatable.datatable.datatable_options = {
"scrollX": "true",
"pageLength": 30,
"scrollCollapse": "true",
"dom": "Bfrtip",
"buttons": ["copy", "csv"],
}
for i, s in enumerate(self.vcf.vcf.samples):
datatable.datatable.set_tooltips_to_column("info_{0}".format(i), s)
options = datatable.datatable._create_datatable_option()
html_tab = datatable._create_hidden_csv(float_format="%.3f")
html_tab += datatable._create_html_table(style="width: 100%;")
return html_tab, options