Source code for sequana.modules_report.fastqc

# 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>
#
#  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 coverage report"""
import glob
import io
import os

import colorlog

from sequana.lazy import pandas as pd
from sequana.lazy import pylab
from sequana.modules_report.base_module import SequanaBaseModule

logger = colorlog.getLogger(__name__)


from sequana.utils.datatables_js import DataTable


[docs] class FastQCModule(SequanaBaseModule): """Write HTML report for fastqc. Searches for _fastqc.html files """ def __init__(self, output_filename="fastqc.html", pattern="*/*_fastqc.html"): """ :param input: :param pattern: we use a glob to search for the relevant files """ super().__init__() self.title = "FastQC" self.pattern = pattern self.create_report_content() self.create_html(output_filename)
[docs] def create_report_content(self): self.sections = list() self.add_main_section()
[docs] def add_main_section(self): links = glob.glob("{}".format(self.pattern)) names = [filename.rsplit("/", 1)[1].split(".html")[0] for filename in links] df = pd.DataFrame({"names": names, "links": [link.split(os.sep, 1)[1] for link in links]}) df.sort_values(by="names") datatable = DataTable(df, "fastqc", index=False) datatable.datatable.set_links_to_column("links", "names") datatable.datatable.datatable_options = { "scrollX": "300px", "pageLength": 30, "scrollCollapse": "true", "dom": "rtpB", "paging": "false", "buttons": ["copy", "csv"], } js = datatable.create_javascript_function() html_tab = datatable.create_datatable() html = "{} {}".format(html_tab, js) self.sections.append( { "name": "FastQC report(s)", "anchor": "fastqc", "content": "<p> Here below are link(s) to original FastQC report. " "Please click on one of the links to jump to the main " "report. {} </p>".format(html), } )