Skip to content
This repository has been archived by the owner on Apr 21, 2022. It is now read-only.

Commit

Permalink
Merge pull request #32 from a-slide/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
a-slide authored Jul 13, 2020
2 parents 12b68cf + 9d28b4a commit 6cf6e5b
Show file tree
Hide file tree
Showing 166 changed files with 717 additions and 1,059 deletions.
4 changes: 2 additions & 2 deletions deploy_anaconda.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ conda config --set always_yes yes --set changeps1 no --set anaconda_upload no
conda update -q conda

echo "Install packages needed for package build and upload"
conda install -q python=3.6 conda-build anaconda-client ripgrep conda-verify
conda install -q python=3.7 conda-build anaconda-client ripgrep conda-verify

echo "compile package from setup.py"
python setup.py sdist

echo "Build noarch package..."
conda build meta.yaml --python 3.6 --numpy 1.1 --output-folder conda_build -c bioconda -c conda-forge
conda build meta.yaml --python 3.7 --numpy 1.1 --output-folder conda_build -c bioconda -c conda-forge -c plotly

echo "Deploying to Anaconda.org..."
anaconda -v -t $1 upload conda_build/**/*.tar.bz2
Expand Down
663 changes: 147 additions & 516 deletions docs/Comp_Report/API_usage.ipynb

Large diffs are not rendered by default.

25 changes: 12 additions & 13 deletions docs/Comp_Report/CLI_usage.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2020-07-09T13:26:07.327464Z",
"start_time": "2020-07-09T13:26:07.033194Z"
"end_time": "2020-07-13T10:25:45.753266Z",
"start_time": "2020-07-13T10:25:45.490831Z"
},
"init_cell": true
},
Expand Down Expand Up @@ -61,8 +61,8 @@
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2020-07-09T13:22:45.143253Z",
"start_time": "2020-07-09T13:22:43.827719Z"
"end_time": "2020-07-13T10:25:49.221115Z",
"start_time": "2020-07-13T10:25:47.958971Z"
}
},
"outputs": [
Expand Down Expand Up @@ -165,8 +165,8 @@
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2020-07-09T13:23:00.396019Z",
"start_time": "2020-07-09T13:22:57.799296Z"
"end_time": "2020-07-13T10:25:55.324118Z",
"start_time": "2020-07-13T10:25:52.892417Z"
},
"scrolled": false
},
Expand All @@ -178,8 +178,8 @@
"\u001b[01;34m## Checking options and input files ##\u001b[0m\n",
"\u001b[37m\t[DEBUG]: Options summary\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tPackage name: pycoMeth\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tPackage version: 0.4.7\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tTimestamp: 2020-07-09 14:22:59.200640\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tPackage version: 0.4.8\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tTimestamp: 2020-07-13 12:25:54.286588\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tmethcomp_fn: ./data/Yeast_CGI_meth_comp.tsv.gz\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tgff3_fn: ./data/yeast.gff3\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tref_fasta_fn: ./data/yeast.fa\u001b[0m\n",
Expand All @@ -196,7 +196,7 @@
"\u001b[37m\t[DEBUG]: \tprogress: False\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \tkwargs\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \t\tsubcommands: Comp_Report\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \t\tfunc: <function Comp_Report at 0x7f26aebcf050>\u001b[0m\n",
"\u001b[37m\t[DEBUG]: \t\tfunc: <function Comp_Report at 0x7f67c71279e0>\u001b[0m\n",
"\u001b[01;34m## Loading and preparing data ##\u001b[0m\n",
"\u001b[32m\tLoading Methcomp data from TSV file\u001b[0m\n",
"\u001b[32m\tLoading transcripts info from GFF file\u001b[0m\n",
Expand Down Expand Up @@ -240,11 +240,11 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2020-07-09T13:26:40.196255Z",
"start_time": "2020-07-09T13:26:10.371755Z"
"end_time": "2020-07-13T10:26:40.115493Z",
"start_time": "2020-07-13T10:26:12.814818Z"
},
"scrolled": false
},
Expand All @@ -264,7 +264,6 @@
"\u001b[32m\tComputing source md5\u001b[0m\n",
"\u001b[01;34m## Parsing methcomp data ##\u001b[0m\n",
"\u001b[32m\tIterating over significant intervals\u001b[0m\n",
"[10219:0709/142616.540247:ERROR:buffer_manager.cc(488)] [.DisplayCompositor]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command\n",
"\u001b[32m\tGenerating summary report\u001b[0m\n",
"(pycoMeth) "
]
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions docs/Comp_Report/medaka_html/pycoMeth_summary_report.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/Comp_Report/medaka_html/static_plots/all_catplot.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/Comp_Report/medaka_html/static_plots/all_heatmap.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/Comp_Report/medaka_html/static_plots/all_ideogram.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/Comp_Report/yeast_html/pycoMeth_summary_report.html

Large diffs are not rendered by default.

14 changes: 3 additions & 11 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Create a clean virtual environment (optional but recommended)

Ideally, before installation, create a clean **python3.6+** virtual environment to deploy the package.
Ideally, before installation, create a clean **python3.7+** virtual environment to deploy the package.
Earlier version of Python3 should also work but **Python 2 is not supported**.
For example one can use conda or virtualenvwrapper.

Expand Down Expand Up @@ -37,16 +37,9 @@ You might also want to install [Nanopolish](https://github.com/jts/nanopolish) i
* `pyfaidx>=0.5.8`
* `tqdm>=4.45.0`
* `colorlog>=4.1.0`
* `kaleido` *New library being developed by the plotly team for static image export*

The correct versions of packages are installed together with the software when using pip

in addition if you want to enable static images export you will also need the following dependencies:

* `plotly-orca==1.2.1`
* `psutil>=5.7.0`
* `requests>=2.24.0`

Those dependencies will only be installed with conda as `orca` is not a python package.
The correct versions of packages are installed together with the software when using pip or conda

## Option 1: Installation with pip from pypi

Expand All @@ -64,7 +57,6 @@ pip install --index-url https://test.pypi.org/simple/ pycoMeth -U

## Option 2: Installation with conda from Anaconda cloud

This option will also install `orca` which is required for static images export

```bash
# First installation
Expand Down
6 changes: 2 additions & 4 deletions meta.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% set version = "0.4.8" %}
{% set version = "0.4.13" %}
{% set name = "pycoMeth" %}

package:
Expand Down Expand Up @@ -31,9 +31,7 @@ requirements:
- tqdm>=4.45.0
- colorlog>=4.1.0
- nbformat>=4.2.0
- plotly-orca=1.3.1
- psutil>=5.7.0
- requests>=2.24.0
- python-kaleido

test:
imports:
Expand Down
54 changes: 36 additions & 18 deletions pycoMeth/Comp_Report.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ def Comp_Report (
mkdir (os.path.join(outdir, reports_outdir), exist_ok=True)
mkdir (os.path.join(outdir, tables_outdir), exist_ok=True)
if export_static_plots:
kaleido = Kaleido()
plot_outdir = "static_plots"
mkdir (os.path.join(outdir, plot_outdir), exist_ok=True)

Expand Down Expand Up @@ -207,13 +208,16 @@ def Comp_Report (
table_out_path = os.path.join(outdir, tables_outdir, top_dict[idx]["bn"]+".tsv")
transcript_df.to_csv(table_out_path, sep="\t", index=False)

# Try to export static plots if orca is installed
# Try to export static plots if required
if export_static_plots:
try:
heatmap_fig.write_image(os.path.join(outdir, plot_outdir, top_dict[idx]["bn"]+"_heatmap.svg"), width=1400)
ridgeplot_fig.write_image(os.path.join(outdir, plot_outdir, top_dict[idx]["bn"]+"_ridgeplot.svg"), width=1400)
except Exception:
pass
kaleido.export_plotly_svg (
fig = heatmap_fig,
fn = os.path.join(outdir, plot_outdir, top_dict[idx]["bn"]+"_heatmap.svg"),
width = 1400)
kaleido.export_plotly_svg (
fig = ridgeplot_fig,
fn = os.path.join(outdir, plot_outdir, top_dict[idx]["bn"]+"_ridgeplot.svg"),
width = 1400)

# Convert to DataFrame
all_cpg_df = pd.DataFrame.from_dict(all_cpg_d)
Expand Down Expand Up @@ -256,15 +260,24 @@ def Comp_Report (
top_df = top_df.drop(columns=["detailled report"])
top_df.to_csv(table_out_path, sep="\t", index=False)

# Try to export static plots if orca is installed
# Try to export static plots if required
if export_static_plots:
try:
all_heatmap_fig.write_image(os.path.join(outdir, plot_outdir, "all_heatmap.svg"), width=1400)
all_ridgeplot_fig.write_image(os.path.join(outdir, plot_outdir, "all_ridgeplot.svg"), width=1400)
catplot_fig.write_image(os.path.join(outdir, plot_outdir, "all_catplot.svg"), width=1400)
ideogram_fig.write_image(os.path.join(outdir, plot_outdir, "all_ideogram.svg"), width=1400)
except Exception:
pass
kaleido.export_plotly_svg (
fig=all_heatmap_fig,
fn=os.path.join(outdir, plot_outdir, "all_heatmap.svg"),
width=1400)
kaleido.export_plotly_svg (
fig=all_ridgeplot_fig,
fn=os.path.join(outdir, plot_outdir, "all_ridgeplot.svg"),
width=1400)
kaleido.export_plotly_svg (
fig=catplot_fig,
fn=os.path.join(outdir, plot_outdir, "all_catplot.svg"),
width=1400)
kaleido.export_plotly_svg (
fig=ideogram_fig,
fn=os.path.join(outdir, plot_outdir, "all_ideogram.svg"),
width=1400)

#~~~~~~~~~~~~~~~~~~~~~~~~HTML generating functions~~~~~~~~~~~~~~~~~~~~~~~~#

Expand Down Expand Up @@ -491,7 +504,8 @@ def cpg_heatmap (
lim_llr:float = 10,
min_diff_llr:float = 1,
fig_width:int=None,
fig_height:int=None):
fig_height:int=None,
column_widths=[0.95, 0.05]):
"""
Plot the values per CpG as a heatmap
"""
Expand All @@ -507,7 +521,7 @@ def cpg_heatmap (
rows=1,
cols=2,
shared_yaxes=True,
column_widths=[0.95, 0.05],
column_widths=column_widths,
specs=[[{"type": "heatmap"},{"type": "scatter"}]])

# Plot dendogramm
Expand All @@ -525,7 +539,11 @@ def cpg_heatmap (

# Define colorscale
offset = min_diff_llr/lim_llr*0.5
colorscale = colorscale=[[0.0, unmethylated_color],[0.5-offset, ambiguous_color], [0.5+offset, ambiguous_color],[1.0, methylated_color]]
colorscale = [
[0.0, unmethylated_color],
[0.5-offset, ambiguous_color],
[0.5+offset, ambiguous_color],
[1.0, methylated_color]]

# plot heatmap
heatmap = go.Heatmap(name="heatmap", x=df.columns, y=df.index, z=df.values, zmin=-lim_llr, zmax=lim_llr, zmid=0, colorscale=colorscale, colorbar_title="Median LLR")
Expand All @@ -536,7 +554,7 @@ def cpg_heatmap (
dict1 = {'showlegend':False, 'hovermode':'closest', "plot_bgcolor":'rgba(0,0,0,0)',"width":fig_width, "height":fig_height, "margin":{"t":50,"b":50}},
xaxis2 = {"fixedrange":True, 'showgrid':False, 'showline':False, "showticklabels":False,'zeroline':False,'ticks':""},
yaxis2 = {"fixedrange":True, 'showgrid':False, 'showline':False, "showticklabels":False,'zeroline':False,'ticks':"", "automargin":True},
xaxis = {"fixedrange":False, "domain":[0, 0.95], "showticklabels":False, "title":"CpG positions"},
xaxis = {"fixedrange":False, "domain":[0, column_widths[0]], "showticklabels":False, "title":"CpG positions"},
yaxis = {"fixedrange":True, "domain":[0, 1], "ticks":"outside", "automargin":True})

return fig
Expand Down
2 changes: 1 addition & 1 deletion pycoMeth/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-

# Define self package variable
__version__ = "0.4.8"
__version__ = "0.4.13"
__description__ = 'DNA methylation analysis downstream to Nanopolish for Oxford Nanopore DNA sequencing datasets'
47 changes: 33 additions & 14 deletions pycoMeth/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@
# Third party imports
import colorlog

# Optional static export deps
try:
from kaleido.scopes.plotly import PlotlyScope
from IPython.core.display import SVG, display
STATIC_EXPORT=True
except (ModuleNotFoundError, ImportError) as E:
print("Cannot import dependencies required for static image export")
STATIC_EXPORT=False
pass

#~~~~~~~~~~~~~~FUNCTIONS~~~~~~~~~~~~~~#
def opt_summary (local_opt):
"""Simplifiy option dict creation"""
Expand Down Expand Up @@ -367,21 +377,30 @@ def log_list (l, logger, header="", indent="\t"):
for i in l:
logger("{}*{}".format(indent, i))

def static_display (fig, width=None, height=None):
"""
Function to render a plotly figure in SVG inside jupyter
Requires jupyter and Orca to be installed
"""
# if not orca_running():
# raise ImportError ("plotly-orca is required for static image export")

# function specific imports
from tempfile import NamedTemporaryFile
from IPython.core.display import display, SVG

with NamedTemporaryFile(suffix=".svg") as temp_svg:
fig.write_image(temp_svg.name, width=width, height=height)
display(SVG(temp_svg.name))
class Kaleido:
def __init__ (self):
# Init scopes
if not STATIC_EXPORT:
raise ImportError ("Static export is not possible due to missing dependencies")
self.plotly_scope = PlotlyScope()

def render_plotly_svg (self, fig, width=None, height=None):
"""
Function to render a plotly figure in SVG inside jupyter
"""
if STATIC_EXPORT:
svg_fig = self.plotly_scope.transform(fig, format="svg", width=width, height=height)
return SVG(svg_fig)

def export_plotly_svg (self, fig, fn, width=None, height=None):
"""
Function to export a plotly figure to SVG
"""
if STATIC_EXPORT:
svg_fig = self.plotly_scope.transform(fig, format="svg", width=width, height=height)
with open (fn, mode="wb") as fp:
fp.write(svg_fig)

#~~~~~~~~~~~~~~CUSTOM EXCEPTION AND WARN CLASSES~~~~~~~~~~~~~~#
class pycoMethError (Exception):
Expand Down
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

# Define package info
name = "pycoMeth"
version = "0.4.8"
version = "0.4.13"
description = "DNA methylation analysis downstream to Nanopolish for Oxford Nanopore DNA sequencing datasets"
with open("README.md", "r") as fh:
long_description = fh.read()
Expand Down Expand Up @@ -38,7 +38,8 @@
"pyfaidx>=0.5.8",
"tqdm>=4.45.0",
"colorlog>=4.1.0",
"nbformat>=4.2.0"],
"nbformat>=4.2.0",
"kaleido"],
packages = [name],
package_dir = {name: name},
package_data = {name: ['templates/*']},
Expand Down

0 comments on commit 6cf6e5b

Please sign in to comment.