Skip to content

Module overhang.reports

View Source
import os

# import matplotlib.pyplot as plt

# import pandas

import tatapov

from pdf_reports import (

    add_css_class,

    dataframe_to_html,

    pug_to_html,

    style_table_rows,

    write_report,

)

import pdf_reports.tools as pdf_tools

from .tools import subset_data_for_overhang, plot_data, enzyme_tatapov_lookup

from .version import __version__

THIS_PATH = os.path.dirname(os.path.realpath(__file__))

ASSETS_PATH = os.path.join(THIS_PATH, "report_assets")

REPORT_TEMPLATE = os.path.join(ASSETS_PATH, "overhang_report.pug")

SET_REPORT_TEMPLATE = os.path.join(ASSETS_PATH, "overhangset_report.pug")

STYLESHEET = os.path.join(ASSETS_PATH, "report_style.css")

def end_pug_to_html(template, **context):

    defaults = {

        "sidebar_text": "EGF's compendium of overhangs (version %s)" % (__version__),

    }

    for k in defaults:

        if k not in context:

            context[k] = defaults[k]

    return pug_to_html(template, **context)

def write_pdf_report(target, overhangs, enzyme="Esp3I"):

    """Write an overhang compendium.

    **Parameters**

    **target**

    > Path for PDF file (`str`).

    **overhangs**

    > List of `Overhang` instances (`list`).

    **enzyme**

    > Enzyme used for assembly (`str`). Options: `"BsaI"`, `"BsmBI"`, `"Esp3I"` or

    `"BbsI"`.

    """

    # Prepare data for the plots:

    data = tatapov.annealing_data["37C"][enzyme_tatapov_lookup[enzyme]]

    for overhang in overhangs:

        overhang.is_usable = overhang.is_good()

        overhang.gc_content_percent = int(overhang.gc_content * 100)  # to display as %

        if overhang.gc_content < 0.25 or 0.75 < overhang.gc_content:  # none or all GC

            overhang.has_extreme_gc = True

        else:

            overhang.has_extreme_gc = False

        # Prepare the plotting data:

        subset_data = subset_data_for_overhang(data, overhang)

        # Make the plot:

        overhang.tatapov_figure, _ = plot_data(subset_data)

        # Convert the plot for PDF:

        overhang.figure_data = pdf_tools.figure_data(overhang.tatapov_figure, fmt="svg")

    html = end_pug_to_html(

        REPORT_TEMPLATE,

        overhangs=overhangs,

        number_of_overhangs=len(overhangs),

        enzyme=enzyme,

    )

    write_report(html, target, extra_stylesheets=(STYLESHEET,))

def write_overhangset_report(target, overhangset):

    """Write a report on an overhang set.

    **Parameters**

    **target**

    > Path for PDF file (`str`).

    **overhangset**

    > An `OverhangSet` instance.

    """

    # Prepare data for the plots:

    data = tatapov.annealing_data["37C"][enzyme_tatapov_lookup[overhangset.enzyme]]

    overhangset.inspect_overhangs()

    height = overhangset.ax.figure.get_size_inches()[1]

    if height > 10:

        height = 10  # to fit on the page

    overhangset.figure_data = pdf_tools.figure_data(

        overhangset.ax, fmt="svg", size=[7, height]

    )

    for overhang in overhangset.overhangs:

        overhang.is_usable = overhang.is_good()

        overhang.gc_content_percent = int(overhang.gc_content * 100)  # to display as %

        if overhang.gc_content < 0.25 or 0.75 < overhang.gc_content:  # none or all GC

            overhang.has_extreme_gc = True

        else:

            overhang.has_extreme_gc = False

        # Prepare the plotting data:

        subset_data = subset_data_for_overhang(data, overhang)

        # Make the plot:

        overhang.tatapov_figure, _ = plot_data(subset_data)

        # Convert the plot for PDF:

        overhang.figure_data = pdf_tools.figure_data(overhang.tatapov_figure, fmt="svg")

    html = end_pug_to_html(

        SET_REPORT_TEMPLATE,

        overhangset=overhangset,

        number_of_overhangs=len(overhangset.overhangs),

        # Report overhang pairs with 1 (less than 2) difference:

        similar_overhangs=overhangset.find_similar_overhangs(difference_threshold=2),

    )

    write_report(html, target, extra_stylesheets=(STYLESHEET,))

Variables

ASSETS_PATH
REPORT_TEMPLATE
SET_REPORT_TEMPLATE
STYLESHEET
THIS_PATH
enzyme_tatapov_lookup

Functions

end_pug_to_html

def end_pug_to_html(
    template,
    **context
)
View Source
def end_pug_to_html(template, **context):

    defaults = {

        "sidebar_text": "EGF's compendium of overhangs (version %s)" % (__version__),

    }

    for k in defaults:

        if k not in context:

            context[k] = defaults[k]

    return pug_to_html(template, **context)

write_overhangset_report

def write_overhangset_report(
    target,
    overhangset
)

Write a report on an overhang set.

Parameters

target

Path for PDF file (str).

overhangset

An OverhangSet instance.

View Source
def write_overhangset_report(target, overhangset):

    """Write a report on an overhang set.

    **Parameters**

    **target**

    > Path for PDF file (`str`).

    **overhangset**

    > An `OverhangSet` instance.

    """

    # Prepare data for the plots:

    data = tatapov.annealing_data["37C"][enzyme_tatapov_lookup[overhangset.enzyme]]

    overhangset.inspect_overhangs()

    height = overhangset.ax.figure.get_size_inches()[1]

    if height > 10:

        height = 10  # to fit on the page

    overhangset.figure_data = pdf_tools.figure_data(

        overhangset.ax, fmt="svg", size=[7, height]

    )

    for overhang in overhangset.overhangs:

        overhang.is_usable = overhang.is_good()

        overhang.gc_content_percent = int(overhang.gc_content * 100)  # to display as %

        if overhang.gc_content < 0.25 or 0.75 < overhang.gc_content:  # none or all GC

            overhang.has_extreme_gc = True

        else:

            overhang.has_extreme_gc = False

        # Prepare the plotting data:

        subset_data = subset_data_for_overhang(data, overhang)

        # Make the plot:

        overhang.tatapov_figure, _ = plot_data(subset_data)

        # Convert the plot for PDF:

        overhang.figure_data = pdf_tools.figure_data(overhang.tatapov_figure, fmt="svg")

    html = end_pug_to_html(

        SET_REPORT_TEMPLATE,

        overhangset=overhangset,

        number_of_overhangs=len(overhangset.overhangs),

        # Report overhang pairs with 1 (less than 2) difference:

        similar_overhangs=overhangset.find_similar_overhangs(difference_threshold=2),

    )

    write_report(html, target, extra_stylesheets=(STYLESHEET,))

write_pdf_report

def write_pdf_report(
    target,
    overhangs,
    enzyme='Esp3I'
)

Write an overhang compendium.

Parameters

target

Path for PDF file (str).

overhangs

List of Overhang instances (list).

enzyme

Enzyme used for assembly (str). Options: "BsaI", "BsmBI", "Esp3I" or "BbsI".

View Source
def write_pdf_report(target, overhangs, enzyme="Esp3I"):

    """Write an overhang compendium.

    **Parameters**

    **target**

    > Path for PDF file (`str`).

    **overhangs**

    > List of `Overhang` instances (`list`).

    **enzyme**

    > Enzyme used for assembly (`str`). Options: `"BsaI"`, `"BsmBI"`, `"Esp3I"` or

    `"BbsI"`.

    """

    # Prepare data for the plots:

    data = tatapov.annealing_data["37C"][enzyme_tatapov_lookup[enzyme]]

    for overhang in overhangs:

        overhang.is_usable = overhang.is_good()

        overhang.gc_content_percent = int(overhang.gc_content * 100)  # to display as %

        if overhang.gc_content < 0.25 or 0.75 < overhang.gc_content:  # none or all GC

            overhang.has_extreme_gc = True

        else:

            overhang.has_extreme_gc = False

        # Prepare the plotting data:

        subset_data = subset_data_for_overhang(data, overhang)

        # Make the plot:

        overhang.tatapov_figure, _ = plot_data(subset_data)

        # Convert the plot for PDF:

        overhang.figure_data = pdf_tools.figure_data(overhang.tatapov_figure, fmt="svg")

    html = end_pug_to_html(

        REPORT_TEMPLATE,

        overhangs=overhangs,

        number_of_overhangs=len(overhangs),

        enzyme=enzyme,

    )

    write_report(html, target, extra_stylesheets=(STYLESHEET,))