Source code for sequana.modules_report.trf

# -*- coding: utf-8 -*-
#
#  This file is part of Sequana software
#
#  Copyright (c) 2016 - Sequana Development Team
#
#  File author(s):
#      Thomas Cokelaer <thomas.cokelaer@pasteur.fr>
#      Dimitri Desvillechabrol <dimitri.desvillechabrol@pasteur.fr>,
#          <d.desvillechabrol@gmail.com>
#      Rachel Legendre <rachel.legendre@pasteur.fr>
#
#  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
#
##############################################################################
"""Report dedicated to BAM file

.. autosummary::

    TRFModule

"""
import os

from sequana import TRF
from sequana.lazy import pandas as pd
from sequana.lazy import pylab
from sequana.modules_report.base_module import SequanaBaseModule
from sequana.utils.datatables_js import DataTable
from sequana.utils.df2html import df2html

__all__ = ["TRFModule"]


[docs] class TRFModule(SequanaBaseModule): """Report dedicated to TRF file""" def __init__(self, trf_input, output_filename=None): super().__init__() self.trf = TRF(trf_input) self.title = "TRF Report" self.create_report_content() self.create_html(output_filename)
[docs] def create_report_content(self): self.sections = list() self.add_info() self.add_table() self.add_images_section()
[docs] def add_info(self): html = "<br>".join(self.trf.__repr__().split("\n")) self.sections.append({"name": "Information", "anchor": "info", "content": html})
[docs] def add_table(self): datatable = DataTable(self.trf.df, "result", index=True) datatable.datatable.datatable_options = { "scrollX": "300px", "pageLength": 15, "scrollCollapse": "true", "dom": "tBifp", "paging": "true", "buttons": ["copy", "csv"], } js = datatable.create_javascript_function() html_tab = datatable.create_datatable(float_format="%.3g") html = "" html += "{} {}".format(html_tab, js) self.sections.append({"name": "TRF results", "anchor": "results", "content": html})
[docs] def add_images_section(self): style = "width:65%" import pylab pylab.ioff() def plotter1(filename): pylab.clf() self.trf.hist_entropy() pylab.savefig(filename) html1 = self.create_embedded_png(plotter1, "filename", style=style) def plotter2(filename): pylab.clf() self.trf.hist_period_size() pylab.savefig(filename) html2 = self.create_embedded_png(plotter2, "filename", style=style) self.sections.append({"name": "Image", "anchor": "table", "content": html1 + html2})