From f587a63ba268841ef3998f8cfbe6705d21fd5f94 Mon Sep 17 00:00:00 2001 From: shitohana <43905117+shitohana@users.noreply.github.com> Date: Fri, 29 Dec 2023 15:32:47 +0300 Subject: [PATCH] Plotly (#8) * Clusters added into master (#6) * flank regions fix * new labels * draw to cluster * __init__.py Clustering added BismarkPlot.py Clustering done and confidence bands console_metagene.py confidence bands added index.rst new classes and methods added in documentation * documentation fix * documentation fix * v1.2.2 release * v1.2.2 release * v1.2.3 release * v1.2.3 release * v1.3 * console_chrs.py fixed path BismarkPlot.py Genome.__trim_genes take flank length anyway LinePlot added all contexts support * console_metagene.py empty genome check * BismarkPlot.py cpu check console_metagene.py and console_chrs.py file_format fix * v1.3.0a * BismarkPlot.py fix cpu_count console fix dpi, plot types * v1.3.0a1 * v1.3.0b0 * v1.3.1 * Update README.md * Update README.md * Update README.md * add_flank_lines for heatmap into method added Modules class fix for neat_TSS intersection mode added genes IDs into genome * v1.3.2a * v1.3.2pr * v1.3.2rc0 * v1.3.2 * 1. main file split into parts 2. added different summary stats 3. started adding plotly * 1. main file split into parts 2. added different summary stats * custom labels * plotly wip * added seq_reader * - major cleanup - Moved to ArrowReaders.py - Added PlotBase to Base.py - Added more constructors to Metagene - Added schema check for Metagene * some fixes... more are coming 4 sure * P_CG and A LOT of documentation * first merge to main --- .github/workflows/publish.yaml | 16 +- README.md | 200 ++- docs/_binom.rst | 14 + docs/_genome.rst | 41 + docs/_metagene.rst | 14 + docs/_plots.rst | 16 + docs/_templates/autosummary/module.rst | 6 - docs/_templates/class.rst | 25 + docs/_templates/class_native.rst | 29 + docs/_templates/method.rst | 4 + docs/_templates/module.rst | 6 - docs/conf.py | 24 +- docs/images/boxplot/bp_ara_bradi_mpl.png | Bin 0 -> 11787 bytes docs/images/boxplot/bp_ara_bradi_plotly.png | Bin 0 -> 24117 bytes .../boxplot/bp_ara_bradi_plotly_nofilter.png | Bin 0 -> 26682 bytes docs/images/boxplot/vp_ara_bradi_mpl.png | Bin 0 -> 18045 bytes docs/images/boxplot/vp_ara_bradi_plotly.png | Bin 0 -> 33241 bytes docs/images/heatmap/ara_bradi_mpl.png | Bin 0 -> 91972 bytes docs/images/heatmap/ara_bradi_plotly.png | Bin 0 -> 100364 bytes docs/images/heatmap/ara_mpl.png | Bin 0 -> 67312 bytes docs/images/heatmap/ara_plotly.png | Bin 0 -> 119433 bytes docs/images/lineplot/ara_NO_major_labels.png | Bin 0 -> 30140 bytes docs/images/lineplot/ara_NO_minor_labels.png | Bin 0 -> 28073 bytes docs/images/lineplot/ara_bradi_mpl.png | Bin 0 -> 41185 bytes docs/images/lineplot/ara_bradi_plotly.png | Bin 0 -> 42775 bytes docs/images/lineplot/ara_custom_label.png | Bin 0 -> 33508 bytes docs/images/lineplot/ara_major_labels.png | Bin 0 -> 28482 bytes docs/images/lineplot/ara_minor_labels.png | Bin 0 -> 30783 bytes docs/images/lineplot/ara_multi_mpl.png | Bin 0 -> 41010 bytes docs/images/lineplot/ara_multi_plotly.png | Bin 0 -> 82950 bytes docs/images/lineplot/lp_ara_mpl.png | Bin 0 -> 33858 bytes docs/index.rst | 22 +- docs/markdowns/test.md | 128 ++ docs/requirements.txt | 2 + pyproject.toml | 20 +- src/bismarkplot/ArrowReaders.py | 122 ++ src/bismarkplot/Base.py | 226 +++ src/bismarkplot/Binom.py | 538 ++++++ src/bismarkplot/BismarkPlot.py | 1499 ----------------- src/bismarkplot/ChrLevels.py | 300 ++++ src/bismarkplot/Clusters.py | 294 ++++ src/bismarkplot/GenomeClass.py | 567 +++++++ src/bismarkplot/MetageneClasses.py | 1466 ++++++++++++++++ src/bismarkplot/Plots.py | 692 ++++++++ src/bismarkplot/SeqMapper.py | 460 +++++ src/bismarkplot/__init__.py | 8 +- src/bismarkplot/console_chrs.py | 26 +- src/bismarkplot/console_metagene.py | 78 +- src/bismarkplot/utils.py | 110 ++ 49 files changed, 5306 insertions(+), 1647 deletions(-) create mode 100644 docs/_binom.rst create mode 100644 docs/_genome.rst create mode 100644 docs/_metagene.rst create mode 100644 docs/_plots.rst delete mode 100644 docs/_templates/autosummary/module.rst create mode 100644 docs/_templates/class.rst create mode 100644 docs/_templates/class_native.rst create mode 100644 docs/_templates/method.rst delete mode 100644 docs/_templates/module.rst create mode 100644 docs/images/boxplot/bp_ara_bradi_mpl.png create mode 100644 docs/images/boxplot/bp_ara_bradi_plotly.png create mode 100644 docs/images/boxplot/bp_ara_bradi_plotly_nofilter.png create mode 100644 docs/images/boxplot/vp_ara_bradi_mpl.png create mode 100644 docs/images/boxplot/vp_ara_bradi_plotly.png create mode 100644 docs/images/heatmap/ara_bradi_mpl.png create mode 100644 docs/images/heatmap/ara_bradi_plotly.png create mode 100644 docs/images/heatmap/ara_mpl.png create mode 100644 docs/images/heatmap/ara_plotly.png create mode 100644 docs/images/lineplot/ara_NO_major_labels.png create mode 100644 docs/images/lineplot/ara_NO_minor_labels.png create mode 100644 docs/images/lineplot/ara_bradi_mpl.png create mode 100644 docs/images/lineplot/ara_bradi_plotly.png create mode 100644 docs/images/lineplot/ara_custom_label.png create mode 100644 docs/images/lineplot/ara_major_labels.png create mode 100644 docs/images/lineplot/ara_minor_labels.png create mode 100644 docs/images/lineplot/ara_multi_mpl.png create mode 100644 docs/images/lineplot/ara_multi_plotly.png create mode 100644 docs/images/lineplot/lp_ara_mpl.png create mode 100644 docs/markdowns/test.md create mode 100644 src/bismarkplot/ArrowReaders.py create mode 100644 src/bismarkplot/Base.py create mode 100644 src/bismarkplot/Binom.py delete mode 100644 src/bismarkplot/BismarkPlot.py create mode 100644 src/bismarkplot/ChrLevels.py create mode 100644 src/bismarkplot/Clusters.py create mode 100644 src/bismarkplot/GenomeClass.py create mode 100644 src/bismarkplot/MetageneClasses.py create mode 100644 src/bismarkplot/Plots.py create mode 100644 src/bismarkplot/SeqMapper.py create mode 100644 src/bismarkplot/utils.py diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index e1f1d36..ce89bc4 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,8 +1,6 @@ name: Publish to PyPI and TestPyPI -on: - push: - branches: [master] # branch to trigger deployment +on: push jobs: build-n-publish: @@ -24,12 +22,12 @@ jobs: run: >- python -m build - - name: Publish distribution 📦 to Test PyPI - if: startsWith(github.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@release/v1 - with: - password: ${{ secrets.TEST_PYPI_API_TOKEN }} - repository-url: https://test.pypi.org/legacy/ +# - name: Publish distribution 📦 to Test PyPI +# if: startsWith(github.ref, 'refs/tags') +# uses: pypa/gh-action-pypi-publish@release/v1 +# with: +# password: ${{ secrets.TEST_PYPI_API_TOKEN }} +# repository-url: https://test.pypi.org/legacy/ - name: Publish distribution 📦 to PyPI if: startsWith(github.ref, 'refs/tags') uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/README.md b/README.md index 9bac9db..aa19e8d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # BismarkPlot -Comprehensive tool for visualizing genome-wide cytosine data. + +Analytical framework for BS-seq data comparison and visualization. See the docs: https://shitohana.github.io/BismarkPlot @@ -15,15 +16,14 @@ pip install bismarkplot You can use ```bismarkplot``` either as python library or directly from console after installing it. Console options: -- *bismarkplot-metagene* - methylation density visualizing tool. -- *bismarkplot-chrs* - chromosome methylation levels visualizing tool. +- `bismarkplot-metagene` - methylation density visualizing tool. +- `bismarkplot-chrs` - chromosome methylation levels visualizing tool. ### bismarkplot-metagene ```commandline -usage: BismarkPlot. [-h] [-o OUT] [-g GENOME] [-r {gene,exon,tss,tes}] [-b BATCH] [-c CORES] [-f FLENGTH] [-u UWINDOWS] [-d DWINDOWS] [-m MLENGTH] - [-w GWINDOWS] [--line] [--heatmap] [--box] [--violin] [-S SMOOTH] [-L LABELS [LABELS ...]] [-C CONFIDENCE] [-H H] [-V V] [--dpi DPI] - [-F {png,pdf,svg}] +usage: BismarkPlot. [-h] [-o NAME] [--dir DIR] [-g GENOME] [-r {gene,exon,tss,tes}] [-b BATCH] [-c CORES] [-f FLENGTH] [-u UWINDOWS] [-d DWINDOWS] [-m MLENGTH] [-w GWINDOWS] [--line] [--heatmap] + [--box] [--violin] [-S SMOOTH] [-L LABELS [LABELS ...]] [-C CONFIDENCE] [-H VRESOLUTION] [-V HRESOLUTION] [--dpi DPI] [-F {png,pdf,svg}] filename [filename ...] Metagene visualizing tool. @@ -33,7 +33,8 @@ positional arguments: optional arguments: -h, --help show this help message and exit - -o OUT, --out OUT output base name (default: /Users/shitohana/Desktop/PycharmProjects/BismarkPlot) + -o NAME, --out NAME output base name (default: plot) + --dir DIR output dir (default: /Users/shitohana/PycharmProjects/BismarkPlot_test) -g GENOME, --genome GENOME path to GFF genome file (default: None) -r {gene,exon,tss,tes}, --region {gene,exon,tss,tes} @@ -62,8 +63,8 @@ optional arguments: labels for plots (default: None) -C CONFIDENCE, --confidence CONFIDENCE probability for confidence bands for line-plot. 0 if disabled (default: 0) - -H H vertical resolution for heat-map (default: 100) - -V V vertical resolution for heat-map (default: 100) + -H VRESOLUTION vertical resolution for heat-map (default: 100) + -V HRESOLUTION vertical resolution for heat-map (default: 100) --dpi DPI dpi of output plot (default: 200) -F {png,pdf,svg}, --format {png,pdf,svg} format of output plots (default: pdf) @@ -80,25 +81,27 @@ bismarkplot-metagene -g path/to/genome.gff -r gene -f 2000 -m 4000 -u 500 -d 50 ### bismarkplot-chrs ```commandline -usage: BismarkPlot [-h] [-o DIR] [-b N] [-c CORES] [-w N] [-m N] [-S FLOAT] [-F {png,pdf,svg}] path/to/txt [path/to/txt ...] +usage: BismarkPlot [-h] [-o NAME] [-d DIR] [-b N] [-c CORES] [-w N] [-m N] [-S FLOAT] [-F {png,pdf,svg}] [--dpi DPI] path/to/txt Chromosome methylation levels visualization. positional arguments: path/to/txt path to bismark methylation_extractor file -options: +optional arguments: -h, --help show this help message and exit - -o DIR, --out DIR output base name (default: current/path) + -o NAME, --out NAME output base name (default: plot) + -d DIR, --dir DIR output dir (default: /Users/shitohana/PycharmProjects/BismarkPlot_test) -b N, --batch N number of rows to be read from bismark file by batch (default: 1000000) -c CORES, --cores CORES number of cores to use (default: None) - -w N, --wlength N number of windows for genes (default: 100000) + -w N, --wlength N number of windows for chromosome (default: 100000) -m N, --mlength N minimum chromosome length (default: 1000000) -S FLOAT, --smooth FLOAT windows for smoothing (0 - no smoothing, 1 - straight line (default: 50) - -F {png,pdf,svg}, --format {png,pdf,svg} + -F {png,pdf,svg}, --fmt {png,pdf,svg} format of output plots (default: pdf) + --dpi DPI dpi of output plot (default: 200) ``` Example: @@ -120,36 +123,110 @@ Below we will show the basic BismarkPlot workflow. ### Single sample ```python +import src.bismarkplot.Genome import bismarkplot + # Firstly, we need to read the regions annotation (e.g. reference genome .gff) -genome = bismarkplot.Genome.from_gff("path/to/genome.gff") +genome = src.bismarkplot.genome.Genome.from_gff("path/to/genome.gff") # Next we need to filter regions of interest from the genome genes = genome.gene_body(min_length=4000, flank_length=2000) # Now we need to calculate metagene data -metagene = bismarkplot.Metagene.from_file( - file = "path/to/CX_report.txt", - genome=genes, # filtered regions - upstream_windows = 500, - gene_windows = 1000, - downstream_windows = 500, - batch_size= 10**7 # number of lines to be read simultaneously +metagene = bismarkplot.Metagene.from_bismark( + file="path/to/CX_report.txt", + genome=genes, # filtered regions + up_windows=500, + body_windows=1000, + down_windows=500, + batch_size=10 ** 7 # number of lines to be read simultaneously ) # Our metagene contains all methylation contexts and both strands, so we need to filter it (as in dplyr) -filtered = metagene.filter(context = "CG", strand = "+") +filtered = metagene.filter(context="CG", strand="+") # We are ready to plot -lp = filtered.line_plot() # line plot data -lp.draw().savefig("path/to/lp.pdf") # matplotlib.Figure +lp = filtered.line_plot() # line plot data +lp.draw_mpl().savefig("path/to/lp.pdf") # matplotlib.Figure hm = filtered.heat_map(ncol=200, nrow=200) -hm.draw().savefig("path/to/hm.pdf") # matplotlib.Figure +hm.draw_mpl().savefig("path/to/hm.pdf") # matplotlib.Figure ``` -Output: +Output for _Brachypodium distachyon_:

- - + + +

+ +If metagene is not filtered by context, **all available contexts will be plotted**: + +```python +filtered_by_strand = metagene.filter(strand == "+") +lp = filtered_by_strand.line_plot() +lp.draw_mpl() +``` + +Output for _Brachypodium distachyon_: + +

+ +

+ +**Confidence bands** can be visualized via setting the `confidence` parameter in `LinePlot.draw()` + +```python +lp.draw_mpl(confidence=.95) +``` + +Output for _Brachypodium distachyon_: + +

+ +

+ +### Heat-map clusterisation + +Genes can be clustered to minimize distances between them before plotting heat-map. This can be useful for capturing +overall methylation patterns in sample. _This operation is very time consuming. It is advised to set small number of +windows (< 50)_. + +```python +metagene = bismarkplot.Metagene.from_bismark( + file="path/to/CX_report.txt", + genome=genes, # filtered regions + up_windows=5, body_windows=10, down_windows=5, +) +clustered = metagene.clustering( + count_threshold=5, # Minimum counts per window + dist_method="euclidean", # See scipy.spatial.distance.pdist + clust_method="average" # See scipy.cluster.hierarchy.linkage +) + +# Heatmap with optimized distances between genes will be drawn +clustered.draw_mpl().savefig("path/to/clustered_hm.pdf") +``` +Output for _Brachypodium distachyon_ - CHG + +

+ +

+ +### Genes dynamicTreeCut + +To shrink clustered heat-map and capture main patterns genes can be split into modules using +[dynamicTreeCut algorithm](https://github.com/kylessmith/dynamicTreeCut/tree/master) by Peter Langfelder and Bin Zhang. +Then genes can be plotted as heat-map as previous example: + +```python +# Parameters are the same as for cutreeHybrid (see dynamicTreeCut) +modules = clustered.modules(deepSplit=1) + +modules.draw_mpl().savefig("path/to/modules_hm.pdf") +``` + +Output for _Brachypodium distachyon_ - CHG + +

+

### Smoothing the line plot @@ -158,12 +235,12 @@ Smoothing is very useful, when input signal is very weak (e.g. mammalian non-CpG ```python # mouse CHG methylation example -filtered = metagene.filter(context = "CHG", strand = "+") -lp.draw(smooth = 0).savefig("path/to/lp.pdf") # no smooth -lp.draw(smooth = 50).savefig("path/to/lp.pdf") # smoothed with window length = 50 +filtered = metagene.filter(context="CHG", strand="+") +lp.draw_mpl(smooth=0).savefig("path/to/lp.pdf") # no smooth +lp.draw_mpl(smooth=50).savefig("path/to/lp.pdf") # smoothed with window length = 50 ``` -Output: +Output for _Mus musculus_:

@@ -190,7 +267,7 @@ trimmed.violin_plot().savefig(...) merged = filtered.merge() ``` -Output: +Output for _Brachypodium distachyon_:

@@ -205,17 +282,19 @@ Output: ```python # For analyzing samples with different reference genomes, we need to initialize several genomes instances +import src.bismarkplot.Genome + genome_filenames = ["arabidopsis.gff", "brachypodium.gff", "cucumis.gff", "mus.gff"] reports_filenames = ["arabidopsis.txt", "brachypodium.txt", "cucumis.txt", "mus.txt"] genomes = [ - bismarkplot.Genome.from_gff(file).gene_body(...) for file in genome_filenames + src.bismarkplot.genome.Genome.from_gff(file).gene_body(...) for file in genome_filenames ] # Now we read reports metagenes = [] for report, genome in zip(reports_filenames, genomes): - metagene = bismarkplot.Metagene(report, genome = genome, ...) + metagene = bismarkplot.Metagene(report, genome=genome, ...) metagenes.append(metagene) # Initialize MetageneFiles @@ -240,26 +319,29 @@ Output: Other genomic regions from .gff can be analyzed too with ```.exon``` or ```.near_tss/.near_tes``` option for ```bismarkplot.Genome``` ```python +import src.bismarkplot.Genome + exons = [ - bismarkplot.Genome.from_gff(file).exon(min_length=100) for file in genome_filenames + src.bismarkplot.genome.Genome.from_gff(file).exon(min_length=100) for file in genome_filenames ] metagenes = [] for report, exon in zip(reports_filenames, exons): - metagene = bismarkplot.Metagene(report, genome = exon, - upstream_windows = 0, # !!! - downstream_windows = 0, # !!! + metagene = bismarkplot.Metagene(report, genome=exon, + upstream_windows=0, # !!! + downstream_windows=0, # !!! ...) metagenes.append(metagene) # OR tss = [ - bismarkplot.Genome.from_gff(file).near_tss(min_length = 2000, flank_length = 2000) for file in genome_filenames + src.bismarkplot.genome.Genome.from_gff(file).near_tss(min_length=2000, flank_length=2000) for file in + genome_filenames ] metagenes = [] for report, t in zip(reports_filenames, tss): - metagene = bismarkplot.Metagene(report, genome = t, - upstream_windows = 1000,# same number of windows - gene_windows = 1000, # same number of windows - downstream_windows = 0, # !!! + metagene = bismarkplot.Metagene(report, genome=t, + upstream_windows=1000, # same number of windows + gene_windows=1000, # same number of windows + downstream_windows=0, # !!! ...) metagenes.append(metagene) ``` @@ -281,29 +363,31 @@ TSS output: BismarkPlot allows user to visualize chromosome methylation levels across full genome ```python +import src.bismarkplot.ChrLevels import bismarkplot -chr = bismarkplot.ChrLevels.from_file( + +chr = src.bismarkplot.levels.ChrLevels.from_file( "path/to/CX_report.txt", - window_length=10**5, # window length in bp - batch_size=10**7, - chr_min_length = 10**6, # minimum chr length in bp + window_length=10 ** 5, # window length in bp + batch_size=10 ** 7, + chr_min_length=10 ** 6, # minimum chr length in bp ) fig, axes = plt.subplots() for context in ["CG", "CHG", "CHH"]: - chr.filter(strand="+", context=context).draw( - (fig, axes), # to plot contexts on same axes - smooth=10, # window number for smoothing - label=context # labels for lines - ) + chr.filter(strand="+", context=context).draw_mpl( + (fig, axes), # to plot contexts on same axes + smooth=10, # window number for smoothing + label=context # labels for lines + ) -fig.savefig(f"chrom.pdf", dpi = 200) +fig.savefig(f"chrom.pdf", dpi=200) ``` -Output for Arabidopsis t.: +Output for _Arabidopsis thaliana_: -Output for Brachypodium d.: +Output for _Brachypodium distachyon_: - \ No newline at end of file + diff --git a/docs/_binom.rst b/docs/_binom.rst new file mode 100644 index 0000000..27b0d1a --- /dev/null +++ b/docs/_binom.rst @@ -0,0 +1,14 @@ +Binomial +======== + +Methods for calculating P-value for cytosine residues or genomic regions. + +.. currentmodule:: bismarkplot + +.. autosummary:: + :nosignatures: + :toctree: _Binom + :template: class.rst + + RegionStat + BinomialData \ No newline at end of file diff --git a/docs/_genome.rst b/docs/_genome.rst new file mode 100644 index 0000000..a30a7d2 --- /dev/null +++ b/docs/_genome.rst @@ -0,0 +1,41 @@ +Genome +====== + +Genome class + +.. currentmodule:: bismarkplot + +.. class:: Genome + + .. rubric:: Methods + + .. autosummary:: + :nosignatures: + :toctree: _Genome/_method + :template: method.rst + + ~Genome.all + + + ~Genome.cds + + + ~Genome.exon + + + ~Genome.from_custom + + + ~Genome.from_gff + + + ~Genome.gene_body + + + ~Genome.near_TES + + + ~Genome.near_TSS + + + ~Genome.other diff --git a/docs/_metagene.rst b/docs/_metagene.rst new file mode 100644 index 0000000..a24ccb1 --- /dev/null +++ b/docs/_metagene.rst @@ -0,0 +1,14 @@ +Metagene +======== + +Metagene calculation and plotting related methods. + +.. currentmodule:: bismarkplot + +.. autosummary:: + :nosignatures: + :toctree: _Metagene + :template: class.rst + + Metagene + MetageneFiles diff --git a/docs/_plots.rst b/docs/_plots.rst new file mode 100644 index 0000000..98e004a --- /dev/null +++ b/docs/_plots.rst @@ -0,0 +1,16 @@ +Plots +===== + +Reference for plotting classes. + +.. currentmodule:: bismarkplot + +.. autosummary:: + :nosignatures: + :toctree: _Plots + :template: class.rst + + LinePlot + LinePlotFiles + HeatMap + HeatMapFiles \ No newline at end of file diff --git a/docs/_templates/autosummary/module.rst b/docs/_templates/autosummary/module.rst deleted file mode 100644 index 6c4a104..0000000 --- a/docs/_templates/autosummary/module.rst +++ /dev/null @@ -1,6 +0,0 @@ -{{ name }} -{{ underline }} - -.. autoclass:: {{ fullname }} - :special-members: __init__ - :members: \ No newline at end of file diff --git a/docs/_templates/class.rst b/docs/_templates/class.rst new file mode 100644 index 0000000..d0b26c8 --- /dev/null +++ b/docs/_templates/class.rst @@ -0,0 +1,25 @@ +{{ fullname }} +{{ underline }} + +.. currentmodule:: {{ module }} + +.. class:: {{ objname }} + + {% block methods %} + + {% if methods %} + .. rubric:: {{ _('Methods') }} + + .. autosummary:: + :nosignatures: + :toctree: _method + :template: method.rst + {% for item in methods %} + {% if item != "__init__" %} + {%- if item not in inherited_members %} + ~{{ name }}.{{ item }} + {% endif %} + {% endif %} + {%- endfor %} + {% endif %} + {% endblock %} diff --git a/docs/_templates/class_native.rst b/docs/_templates/class_native.rst new file mode 100644 index 0000000..0f7d6f3 --- /dev/null +++ b/docs/_templates/class_native.rst @@ -0,0 +1,29 @@ +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +.. autoclass:: {{ objname }} + + {% block methods %} + .. automethod:: __init__ + + {% if methods %} + .. rubric:: {{ _('Methods') }} + + .. autosummary:: + {% for item in methods %} + ~{{ name }}.{{ item }} + {%- endfor %} + {% endif %} + {% endblock %} + + {% block attributes %} + {% if attributes %} + .. rubric:: {{ _('Attributes') }} + + .. autosummary:: + {% for item in attributes %} + ~{{ name }}.{{ item }} + {%- endfor %} + {% endif %} + {% endblock %} diff --git a/docs/_templates/method.rst b/docs/_templates/method.rst new file mode 100644 index 0000000..205c26f --- /dev/null +++ b/docs/_templates/method.rst @@ -0,0 +1,4 @@ +{{ fullname }} +{{ underline }} + +.. automethod:: {{ fullname }} \ No newline at end of file diff --git a/docs/_templates/module.rst b/docs/_templates/module.rst deleted file mode 100644 index 6c4a104..0000000 --- a/docs/_templates/module.rst +++ /dev/null @@ -1,6 +0,0 @@ -{{ name }} -{{ underline }} - -.. autoclass:: {{ fullname }} - :special-members: __init__ - :members: \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py index 1985e0d..d4ab189 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,29 +1,35 @@ +import os +import sys + project = 'BismarkPlot' copyright = '2023, shitohana' author = 'shitohana' -release = '1.2' -import os -import sys +release = '1.4.1' sys.path.insert(0, os.path.abspath('../src')) sys.path.insert(0, os.path.abspath('../src/bismarkplot')) sys.path.append(os.path.abspath('.')) - extensions = [ + # TODO add myst_parser to dependencies + 'myst_parser', + 'sphinx.ext.intersphinx', 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', - 'sphinx_autodoc_typehints' + 'sphinx.ext.napoleon' ] templates_path = ['_templates'] -autodoc_mock_imports = ['polars', 'matplotlib', 'numpy', 'scipy', 'pandas', 'pyarrow', 'pyreadr', 'dynamicTreeCut'] +autodoc_mock_imports = ['polars', 'matplotlib', 'numpy', 'scipy', 'pandas', 'pyarrow', 'pyreadr', 'dynamicTreeCut', 'plotly', 'numba', 'pathlib'] autodoc_default_options = { 'members': True, - # 'exclude-members': '__init__' + 'exclude-members': '__init__' } autosummary_generate = True +autodoc_member_order = 'bysource' add_module_names = False -html_short_title = 'BismarkPlot' +html_short_title = 'BismarkPlot Documentation' + +html_theme = 'sphinx_rtd_theme' +html_show_sourcelink = False -html_theme = 'sphinx_book_theme' diff --git a/docs/images/boxplot/bp_ara_bradi_mpl.png b/docs/images/boxplot/bp_ara_bradi_mpl.png new file mode 100644 index 0000000000000000000000000000000000000000..e404674a455b56117a243ebe16b6f20c9924a51f GIT binary patch literal 11787 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 HH^28U+~kYI literal 0 HcmV?d00001 diff --git a/docs/images/boxplot/bp_ara_bradi_plotly.png b/docs/images/boxplot/bp_ara_bradi_plotly.png new file mode 100644 index 0000000000000000000000000000000000000000..24d2bf3ab1081fce11c4763630be754a5693edbf GIT binary patch literal 24117 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 literal 0 HcmV?d00001 diff --git a/docs/images/boxplot/bp_ara_bradi_plotly_nofilter.png b/docs/images/boxplot/bp_ara_bradi_plotly_nofilter.png new file mode 100644 index 0000000000000000000000000000000000000000..6d525ebd1345f149585d6a2b03c3d9c7e2befe49 GIT binary patch literal 26682 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 KjnQXa?))2b_|16$ literal 0 HcmV?d00001 diff --git a/docs/images/boxplot/vp_ara_bradi_mpl.png b/docs/images/boxplot/vp_ara_bradi_mpl.png new file mode 100644 index 0000000000000000000000000000000000000000..733ebdba29f1fa99b0c761bb20e564d7dca37a47 GIT binary patch literal 18045 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 XLaV0k0Q|-P1W~wi?{>bl@ss}nxn$`M literal 0 HcmV?d00001 diff --git a/docs/images/boxplot/vp_ara_bradi_plotly.png b/docs/images/boxplot/vp_ara_bradi_plotly.png new file mode 100644 index 0000000000000000000000000000000000000000..ab67eac4a931548e5e2fb403096edef5637365f6 GIT binary patch literal 33241 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

Gv{QcBOLMd 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 literal 0 HcmV?d00001 diff --git a/docs/images/heatmap/ara_bradi_plotly.png b/docs/images/heatmap/ara_bradi_plotly.png new file mode 100644 index 0000000000000000000000000000000000000000..7197dbc9d90a0cd4d6cc5afc550647f419b3112a GIT binary patch literal 100364 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 QgaH0zC6zu_iyH;~AHo;xIRF3v literal 0 HcmV?d00001 diff --git a/docs/images/heatmap/ara_mpl.png b/docs/images/heatmap/ara_mpl.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad22f8333b1a231d331d2e6f33cfaf00f943f45 GIT binary patch literal 67312 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 LMakT|dawTvq4V&) literal 0 HcmV?d00001 diff --git a/docs/images/heatmap/ara_plotly.png b/docs/images/heatmap/ara_plotly.png new file mode 100644 index 0000000000000000000000000000000000000000..d0cdb540291b33de6eeb73168ba58809414861fa GIT binary patch literal 119433 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 kf024ZmE;B=`m0L2 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

VxQyON4JOpOCNE-(!@C7=rHbp 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 ShVBA>*Yu387GHkw^uGYe1acPu literal 0 HcmV?d00001 diff --git a/docs/images/lineplot/ara_NO_major_labels.png b/docs/images/lineplot/ara_NO_major_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b042941b1ddd9b3a00e676a7911d836933df93 GIT binary patch literal 30140 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%0Dj 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 Zk?r@7g41$EkiOwZU)PYDp>6H=zW|98;Mf2F literal 0 HcmV?d00001 diff --git a/docs/images/lineplot/ara_NO_minor_labels.png b/docs/images/lineplot/ara_NO_minor_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..9caa2c277f44c392a2bed44f24da2f8a633590b6 GIT binary patch literal 28073 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 literal 0 HcmV?d00001 diff --git a/docs/images/lineplot/ara_bradi_plotly.png b/docs/images/lineplot/ara_bradi_plotly.png new file mode 100644 index 0000000000000000000000000000000000000000..8802f460a5dac6e74e7e3b91affe4edd88494295 GIT binary patch literal 42775 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%0DDY(fYQ9w_Q&xnV5&^3P`z4VXg3GsObg!qI*Gudo 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 a7Bpv-2lD62s#qxawO7xGo}*(E^gjT=5L4y= literal 0 HcmV?d00001 diff --git a/docs/images/lineplot/ara_minor_labels.png b/docs/images/lineplot/ara_minor_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..aafffccadf05eec6610e9ac5159157d4738a8b38 GIT binary patch literal 30783 zcmeFZ^;cDG^e?(8>F(|jkyJXQQv_5(kQNX@x=~QNTR=esrKCZ+J0&EgQzS*{zH`6d zbMLr!+<)Nwa2)SD3>b^Gp7lI)eroP8Elp*792y)10)elpqM(C7p!y>aD2rG(;9u^J z%&x+3Vy=q%t`8loTs_R3pCRs>xjNc8xY|88XL5h$?DE{(ncU|Hgh!#Og6t#Dw4FH*--m~1n0rI2 z(_bX!5?qtz)Ki~5Krz4};1#{6sKpmv)416x3Wt+_Yhk7v_cu5gx6_|;>}^@YG6`KL1q(t9lM z>sC8@EbTb5!S&p9X#-s`nSKow7rcdOZ0^x1a7WQ zmP~PMY^-Hrfe|Oj?I=h9WjpBN!q=wqNq##M3riM5Pj9bm^Xtnm1o9*r2%pxUKdJA{ zFvdniM0AYA8vS+^zc`w4K=@M&S>4Njq((;^cW5T@rTCGao_xVLjdXVrF=>l&4gdDm z@^Tw`ES{@4Jslk#;@hSDUO-6RpE7zK5B>dv+go%e9LRlRzKy~rC@4#W=OSNpI>R29 zI7JXv*M%P2(?f=X5lleO?M9`b8?_Ug_u{_|#^bMs2|7^O!ao14u` zOeRlenE(IhBwoYJj9ItXC~SCGD{tHuUco@R1f_)gHb0%qzg5*)$9DX^{r!L^MM_#) zM8!>Kwig%sLq?~w@yo$ z)ZaSg{hOIir9oZux|>=&H)b-uYSuscFkzua(}|%fD=W9}jEs!v*SX%@+}td+`zdJT zHvafzDTHxa%6+lrjeeCKwGYB46uH(n$#6Qly42`z^bUJ;J3ESgraRWa4k!q~@p-8B z=@C|q$E9jsBF@G6<{N#gf}r%GwTZ&5TXrG;^o)(8ZyQ!E22mQ@BwsvTgePS5yC8n{ z?Ab}T%+<(-SIXisveslt@4b*iVYp^S5pN8=rXRBR$oQ-lR%b>3aoUsOfxToza&b(n zTRYmPDl--psnOv=`6sIO88Qwj$)wwl=g#Zz-@hNk6;8!(dM~#-O~#J_K}1dcyk_V3 z$mg2n@LPD3%~xkHj9wj%OGQq33qYw8ESnAYo;^NP)d=6~Xf6(KqYNqkRHbdIk%IY^ z_6a|0A7#O7sSr2J3V!BU(wOU5|Cr;Pm5};w`IX_rQb(5p25hg#CzCPQD!1|#6Ekqn zY9$tHy+$0XDuVigUtAVyKT*A1{MyGPL*`FT5-C5|z0o2IA8}U+&pp$Q?rt;$Y@y-l z>FLk=`Vt)e3QAV@4YfwHVXKBTNnt2g;?F<5Lr1_(D=EZxmbLP+K^%wh=}*RD0`89W zN6YUX5U$i6A6bM>kTXPcj|o>Uzt2RW`n?`mUS}2PC6@W=D~g5Q4m!eSZijed3$Lgi zjUYSOtYd#BQ-^!6D@tB~v#X@Uq-wRWkv`Z<%xts|J6_VkLs3ED9uYblJG+|~9s)Xt z#XyPx0#W%SYHx3E9zzXzU^F)DUf+$jOk8PPNN66M;wE==vzht!I&Xs9WKQe`p)Y9+ zP#^?dbjR0~7CwUO)e;12<} zo0@&-l+bG{eF`V$Q2yMec~e*}KHzIX7%X{AE3Gd{S8>C@*cIj3Z``&f2_CEbiOOEpnz`s;zilBehNfs z-TYGvv;XcR(9nd#AxEB~mUcp!$hU7%J-xil zIzow&_k@C&eCk0@Kqu;-Z1S4Adfxk1Uw?n*hz$`fZ9fK6Bb3$99(0_qG<&PTLMhV2 zw4*nSjsGlUqt{Hcwv0C!b{h-bL41~%blkEIDO(Icn<_Pzd@ISzTPw>(E+Zq;uskH}18MQN&=keL~>Byxiswe?gN?(Ea8A-CLAm7@|f#E6Zn^l2!75%nL0N2dFg?VP` z8Y;nXBF0BfJ# zrdHh-Evyr}UKLN#e8&~#kiE4fo_u*hacEnVILsmFA&u8X6X4>;v@M+}hGMGQ!i-)7vHcfei&mK}kzzG_dhzwx_%Cx3NsunR_yn7p{NM zJEWWGX;=2kmct$M<+B)w&{1B$e%;g4b5Hl(+TpLG#DaobzOUBiX!+RxyGZGVt27y^ z!DVzp6@>Ez2;}^l-?%)&OJ5~DK zZP+X?x{<&_Qc`kpX^Gj5Y7A3ByCd^JaDZkNGb!q{DVvv?GBW(k>cX+j*&F32L6~^A z7}VsPN8AE0XGQbdKS?{YeWvTYd!LHZYCcSLAW=Nc*g}GB^Zn`T zr|c~8Z^qAs1X?DkNm(Vc39=`Db)1;#Ib*}asnX*Rr&1yN9K+YI4y{lYF6#pM2LupV-VDJ+&F%5^xA@9?PT(npO%s&sAJ> zeMzpl_DGFhv!s-s#4QSr5H_He3Z{Y}^_yQ?{i@i^j+kUT>-9BvDxaghB3fI2n=AbB z4OckqU}($==@w9=#?Uf$hWz`K!mLXKGKv=J zx3O*8C8ba;h278H&n5^8)%fpiiHwU>oB!nu(bk=eq%2`XmoV&~v%3n8dn1};7=-pb z`@e-~ksDS}c&fr%*gBs`;_JafnflC)2;Fqw9N;;TaR6 zm{`l4C4+=ND6r4-h06s&J^*Miz6{Bc#U-MhFBkRC#8rwWsR9>@kv#0@Mv1;na>mX@nq25;IqElkapXl zRauWC(1!&Y4Ija?4^L5h+*QWz4g#n+i%9$D?d!xvTOEnrW+;L$pV%BR&hB^5kZ&>S z^S7yVqsWWC8~N?bEUd^bc0k$8M%FT@`=;BPFjkzb_dD$}p^qVZlX(1XH!cNB1?ahv z8o8rp=SMqJO|K-XKMBga-7h-%WkZlduowLKeT8M(j-7ym4MMnMJ#~DL30~?`c&V1C z`1trXHjA;TV&1=UE4cEXx5?`rC5w~&OrhQhNc(qVTUDSWp8x;e0tfYNUzL!j79hsL za({zSv?{SN74d5Dv3s@}>{@DUFXSRa{YCgE>(HOdC@68Ac~(<;;<@52Ub)FH8eIl?Nm;(h>6wC2|Ucvc*BIX!`q+C zm&|3(60fHCRH)eZ72zXcoPqG8ByqZ*?@3oe8gH`a+1kX3ld){FN8CrOEH9UucjC~A zyJA7}2DX7~HIVYAuCC6#d(LY;or{Z$-^kc&jXaEnLwy-|m9;f53qR$My_&+q2m%ux z+W$(_QqRP;>}#8mu&H-84DBt*RjZg{(KD>Fd+zb-`}@0lM@L4J7*CdKw=|;VoiyX?8u-rWEGh{on zDwFc}d;It@2Ex(9;rhn)TCz#o=qPEx4g5CJ2a<2j&b)87v9g5OMGncwhM@f-MDCah z{#Ty}3BDv{J51t>5l3CBpZNNz2Lk59SaBNZF94XW`=ZB zH-iseZ*MOW<%>%`c=(X?{rmTLlfWMCGe{7p4%WW4_4Q*R?B@)TB|^_{7r_ zUTy-L3E8K4USpli`~2z5x&NW`#U$^+*5qMY67+gBgw8{WV)yF~(g&Zue(iIF#}V*u zu%x!Nwbgp~kQFL?5S%l*@7&!`giK4!orj;gSE(tS)-EczXG7B=fs3#6RAFk7DHa;l zlE_@0u)6=5kBW_rRhQ$nRA!DbQDPDkMJv(<96Kn;zEk}!4L*>`I9Q0otx1c)G%nxE&eEIdwcDK7FQRiC#UNf?9pkV z8n>CNaR6$k^kxl72}%y*BZx8{-n3^@7_*=_AJ-%6gTNxS=vGv&|R7G<>Mm=a^ zj^QDur#gMO!RERZ;RDXQnwEN|)AtymUS%JwHwD_rcScDwQzM z0bD2~&^6e|;h?~>sKY^7G?Kkr_3?I_A0^(KqWA?rAB#t!5}WVcL}PWs!-$P_LR^Te z7%Man6M#nC-W|N#bcJ(67`3=zKc$*7nbQ*mnL-fyZ39XxYn$mW%?CPY99-OGI+4VUX0ida0!mKl+<&lgQ3N-LSaU-Kpd!+)(vgQ<3+oNUBIY zWG^0ZC9P?6VTMZDCglW(<9-pH6}uoOw1J+i^q%65kpUb@X&(foUrGzy+MRE|9a#!= z;CX)w?#;!9^5_B(AG-9Vc;exsu`y)7puyZXgrR9myNjz~X@&eLoo9A_H;_Q8s;pJZ zaYiITiwhkHBTLa25C`BYj^zAt*s!hgN;_VXBP-}!A!1kJetVQi1xe-cN!W(XQ40f-c6vv1Wu4`O_!06dHE zxTA^elnr^a|I-seaNxRiD* zg|{CET)5_?r~g={ex;beYtP+vg$w681lpw$TSNd-sYCAH3O$2`NYGN9lz#%n&qqQ0iuq3tUwl(g^*GY>J8-nY; z@1aa0fKim>D>RYS1Pyrr?Jj+}8CTjQm(~V48J&^Gy~vvwn+H>#O&$4Vo@a>@OQzn` z#nhX8Zd_w;_#KqF(3$?{VExYpcrM8@2%&}iA}~YcQnsaKN1fe{GkC&@yhW6EZrfRqx%$u{NeVkPG1 zl7b7%z0rNdku?1>jK>FoB=#B~gz=r6oTe&YQ08c+hf^AR%5Ij1)+v@uu1u9#h`Mi6 z0SJvlZs^$uXg=g2ertA~pJ>rhL^))o?jehFZx$v$Cnx5Uq6x>#bdUMgpB2_i8ynaN zQO`Z5U*A83_+4(9=me>Z*=KQOefre0Cq%6WNY0&ueC29`7+`<$C#OFXR6B%#(A%L+5=VF8VJHZQ zkSB87_{=ok$gcDQo0Px8*j)oQf8`hkMQ3M0q*!or;^})ZqU?EjIBDkKKnP?30FsD) zy?fCZwEB+C_fP&_{*{~+U?%&h$#Z2#U>-0R`@|@s@5~Bzca}_CCsAoc1TNqbDLPR{ zg!((4*0KDDWgdTwK~abQYU=9L=vjz+TgnP?kTrVTl=q6CQUHYpanD@#ZdZ_(8XZ3I zQ>F-p7Tm5V+7OHG=+^Jw@!Ny(+doSAq+AfkwKgS^0LLQw)k&WHi=|@}8yXArU1V*9 z7e&%CF`?UVJny4l>&!k;Xb|9cwV#3P`hOR$uPAXTc8^ewmnsb zl$Npy5<=Nr1?y2CQ|w4S&z6+Gc6Q~#HEBk_I1xPUuj$oXeBn|J~?F32|sf;F-6w)UUTw2 zi9ZbiiV+k`nIQ~sGcp*PE{_cJ6e~W>tP{;9s0(fVFOgUB-7Ym#cF)^{(w|y!A;LVL{IQ6dIm$hCR zIf++)9r_r9EWhQdAi9d{JedguJrg=w%|R=hq4pK8sL3O=^pCw%adgNAVleYjA6*vF zH8kDCU`xR4#la`%IUSPIz^h6ANUzI>)}=$<<&f{k)qg$|n-1uB4srBy7cSIvD@~MLje`(_<+9N zLHS{qB_g6-4Yo){7T*>-k`{LLcTC*eIJfkQwLz!Q4R5$lRr->DbLDv$nj%6GZ=K1vk+x+Z#Y>ElKRI@LMswRaSqF%mak`)Xh zq)kvAy-@y4y?*P(MB$t2YLRG0nP}Anj?AxLaWY<6@MLk6}_dbOLsAfbUH-l9I0`;DX3Kl5R z9~q>ozJ4vbO02J!KrDi7Wb^!a>%qn-em5Q!KjO`sH&AU&L$FQ%<91iSZx$2_&;9z9 z#YI!}>*tKb!@qEQlD^OUE?zlPJrdrLcwN!A={S_kxpzDiv$CE<3aCuDZ~uuXOAqb!=ZLps`T`+@)By2@-%$nfuJCeNL! z-`>8(0neX#+Ru0)@3JtB!b$rdCPJ1W8Y!H9+fM%Y0x z7wUtTq5&Hvon|0mf7?8mlU4?p_a}O7k#QlT4V2VbiMtK`E3b^U_ZE|gPuMdN&)Hwq zo7HEJY#pkosN9p2Lp?a#z0Me6{7Uo0k)s6Xv-}*0W05@Y-mUlVXCR)aOW4_sES((_ zEJnL^^RJE1)%^V|e`4uy<0vO_x%0a!)!{P1Y}pYPpqgxgBugb-`4)$Uzc-9u9X`G| z7<~Y}>^8^!_knwRjyzB6$f{?ZaeaM#dC$|JZSV=(PX|i*9DOormJyCWK0H)(aS`Ia zb!+Ajm4ckSb#k)0-6enAHg7zKk>PN3Y6awRR75;Z!QUSxs-BAgib>oNz6i#W+75_ZF0-rDog^s`FMn-7T`&3Rcgh8lD0IZ^1m`9*p^>TfT{c zj-aKbHS)VWoT_nRb#`%af+oMx%b5|VThLiKX&eC^#C=N=d?cj85F>LH3je^u#`b0I zl2s|vzo_W8`}UMs&22F;>YqP}W=u(prA2RzDbg^Cv@y|$+!NF| z-1xHsqG?3yRd=qrWvImNQ$G^*NxJs^X13+|Lr$lmL7Khcy{&J5-W>!M zNNY-o*vdZ9kg_(gMR$SvCqxb`Ek$Cgxqk&{g6DaT*;JaAKYTOZflKSJK-Ag&HSBFo z-mXN3gKvHfob=~9>Sdl9M8%Q+WFHnpue~3LEF@`JUN-l=I$hUq^uDX3qr>m9Yvg-4 zu7|9_x0@$4ygUrex*wj3|`F(UY%^(DGjml!wF0H{MjG+do+X>pOI$oNTvM8@y( zO9KhJl>DCNd~)+>seAU>>6o(H>2St}n07V#RerXorIO#QfB>0$mDGz+FmHWdciUX7 z_~jC3JPiAejiFCe(1|w6QbSI881_q7N^|}3a%SEYU|tTQ)m;Q;63KcB;z(cDfPVLC z8Jz_8YniVzmHFAzv;O$c(>HLly8ev!AY8yhWfRv#U;;e{D$>TI_Z`jv>agm(Vnp-!8U$}+{tl_84eM!E$&+`LSJxf&B9xYe*IJw-9pYF zK0xCZa|uq=ZSQw}Wm-5v{wPg@D%$};Oz-k?$}svT802Bgi#X7Q0~wVPk72^{^gTlG zoGdcU&%S0L{2q!v{LZoQ;04J9T@RS3I8Ms2SawM`tB=Mk^qd83KRgk5v=v_RhbCa? z$eO9LhGI!ta|#5V`uOlN_YE!(ptcTQ%z0N4UC%q-Kswe-&41YMcd4Sgf=e_8PzpJeMXgrirFY=F@ z&K;H>dcvX54!H0N~DErFU;apMvro1_;TxfxxA zG8c~8_DzuR=zoGRw?~(~_obwwckoX^S-XfIV*qEv5lwHAh&Ffy}=`i9rd)eu9Vf{kzs^Tt0c367wE3#fW?f<^_ z?e_slb)KS6jkH+{3JH#jWx~G2KerzLOi^CI#pk^L`qzu^Na(m;)abbqoLS?p??1K_8%C$e*N)Ff-&Tdm>6U79 z5S;x@UYqPM7<4CRHUu}$Y8TT#gfI`NU$tjq*FHYk^(2_3dvpSvg`4)t;+HDf`xdwd zERL6@h=z;m*3!$%i1|0)bdbfWMl7$?#+AvA47Heco{;9e-(+Ble&XnKj@aM;@lpB} z4WzTY&CSj0(?yX6pxw{6{)pF9D)&KS-Lrqeb$mafB@pYu#eN9-fZsJD7_-jYD1~$P zBZ<}F!fy;&|A2sv>e_OJW_F6UpMy8_@OOVUa0n7If3(le2fa<>9pZ_a#B7>YXi3bk z#m+5rM_Bs&_KhlFIPJ@cm?hgW2k}n|WzwRw_&9$n5D#6rQs5{WI;|N!{BE0L5xdpZ)!j1=&9`MO$C8%bygcz*L-%bEq4ya~ zUc8)p4w_fj*DcKUxi}xkA8QgRy1`Cn48g`IC=ws2T_EE`8OHx5|l7t+H;s&Y+_ zm`rBx^xZLxIZA??flQGMjXa#c{u-ypf?@-jqOsQ<6u2NEX$Z5|J> z+b>7YKI{;=Tfe)H)mmf`;3(QiXEqplCGtd^ZK$DaJq4AwH8C z9hgqf^<9|IOcw4=Z2rOw&kFta?GECerRA57k(8LR_hl2 z-v<&d{~-Fc7V2;%O~D#)`&j*3k{lL=lv@N=OM_v|o~GV@qF>psLpg9cPE96}n5nHz4)Pf*(=SSP4n$>%K86FK^Y` z6uyo`yhl~~;?n331{ivNa9TRYKL{V*It(u7^KNV!#Z8de7lIn`A~{;_r6Ss{kp~{e zV|<+u1wo38r_bF+F$xVr^=8yeUzlL&7*9s}If$a^VH$2Iv|0q35yd^H|!#s+tH=8bJJlknFskFbvTuiF~OUNL`+R^clfMBlp>W?#0k5<|Y9 zw|;z)_s5bg@9tNXmJY`vUQU0*#--%#h@=)GqN9rhV@;iop1QqVh(#O1Ay6hvJ^s0a zVj8Gyt<+}xOiUhPrl{b=3S4L;S8-;eL&)KF@dUNo?T*nAODTWnmm%PtoGkn`k`xyr zskm_p(xSmlgGwC8wXCi}gc@1V!0SP?DOm4NWO}!feH!4jnlb7)l;~I}6CZTmEdBh4 zx9KaWccKy!?LU8}V&4~8O`K$H{6df*if-j5r=gFlRlHML-b7tpB8Cc9IYrm|<6Q>J zdCPG$q@1_%>w|+5WU>1C`uKg0><}%$O^F#8c%57=HRgHUYy7;?8`8#4)?=_mp#}kf z?Z_kQzwNC?Kl7>y9l+9x0nx-JXrfsS#nhm84Nn<%UzLTRU(r9WbfePtSy%AiqN`gn|91xN2#)dcu(Hg?N^(JZom#f>|Q@9yti_m&yiTYB2 zH_gOTL8@H6#l6pP?*@+ zG3woSMdE4P_y2t%bt&#H)G0 zt|X2+GcBX4_S!D~5)ZW}BNqlKmPS(JN+0*x?nMmhYH4e0=H+rR z6P51)>+>BEpf_PrxcePB=Nz9DIhX%rFe+=ieI8?ui@SSg zYp-vD4YHa7TrEglRF3&0LEdvaMT4gmW0@%(khx*m^~Ihyxq}*jDq5YoDzEE;Xm4-- zyPEI-sXRea_)U@hc{ve8CNmV`v`ujTId+6pN46|KAhh^7{aN2{o$4KS8584OA9@r2*;eaJqcYKm`4=Znm*tMGt#rA|%*>oV&xwWl zV|4VK|Gj!aadEKHXIXHejf|!u%y2j>ZaMCEhX4;DW#nN%36i_&g&BjquU}CSAoFsF z(x;rBF(_cxELH|V3@C_gVk)cMpR;-~sTp5*bCAl}Cd6=v0=W>~#~v}Ap-dFD$)vAe z_ZMRFv$D!>5~)}PW7I7%Rz(q73KRsWmmTVSjciV?Y}pbV!KSCH{73*~y}|9G&|m%D}`9htTaTxk%k3{l9CQ7ItrmN^_wf{L0BUNKy&e2;VK#$ z3g+fno$soC=R+FFGI7F8(BtZp47RI>g04ZM_Dsa1ozmib^5a)-Bp@bx{#Mg;VLFX} zj9O#Xegm2HOyM_^tH-W~U^w!I`32+AfPx^wC&(IUy$K$COm21%k|aar7aow`)KXDG zotsf>eRMa)@9%NU(HGX{ufz`XqIlf22Cq6uDp?Df2jk;OJbg@Ng|zhax|0&o5h=uL z0SG-G->MAU;DM2*F%nQj(n=k%FES&{?`IGQKx^=27O-0>5O6Lvx%G)x?NS^DcWfO$(259n```J=+D0xEg zt~YX`@ixi;x6lImo})MQ?)4d4F+Gich_wQAs1f#F+pwJozNS#{s#paCh>MDfJYjj` zQc^;}U}oaw)!f`u;eh=TNw2EtxtS|8b=JZ*=eFURbvhaee<}d^4_4T8vX8#UIQk2otk_Nz#0IM2pNg?JdeiQVGZ* ze~4Woj-;F09YE`)7yBzVw&SW0>}!Ykn`pj0|D!F)3$V#Q5y4zdd5(GlC=^7ot-Q0C2fb9lFe2%&`mF*U>tK9J%F@D2n> zRgEzh)k`^Z5AdN#LNojhm2AH&Gi^rAO7S0hDTJhEx}R*h-ySQ2IM?3%_x7@jh!xN6 zbM%Hf(^4J^To?z4q!k(56GGv1;f~YSiu#`nTl~$U4`_p{`=bWB#6;VdQVSp@}-~6mMh)n=c63u(?uEF8!N32nr3iTDX5(IMn00DqcAY=xcsvQ zx7|NC0cWLM>^eq#VrUNKGzs5kd?V_|hXu-=(waKrnL+ZUjau#UlYgqNVr&l(9y`;| zPQ-+SNTKD3zT+`4*FW@u#YK)wfOiqktq@=PBIJgtwGK9N%Al-um#3LY2m%U_8o?Ba z!dboG+Dx4I&H!>G#^b2q$F0uCbAOGdxG{``?%V?(nD@gf_Tp-90=|q4h-aP-Q* zFGBtDgNOqIkhZ-MWyYndnU@JH3h`pHM0**{_+4cK&XQM`&kLW5!$%gJkH` z)KtXFn5d{u5cSwXLkD2Sf&@BU*HWZ&;e5u;=R9C4F*BoJV`Idk`_CSLkULPApm zRzbsfLX_*Dpq@vc?ys+aJ<|yT7$^wkXgXOnHJqmFE1$5>tS+USXRRvSd94x6Y3&~U z-OlD!9gwET%E?c{W^#+D9YZzpW1~HNj9+6Rmj^+K!<0gA#QH#LKw=`e85?bW6>`8sjRv)Ii&pTzzcK*@NK|7C=@>ZnffRa>KzZmcQ2i>SKPE1 z7k7@7Zem!3yVqx=tnk-INP<|^P9nCkL z__rB@p?91wdYuH5VQ{u7cxDfB|M3e=>-|U%4vkdQ#WvN}CVpAFMsad}-rm)9LoK^} zF6g)O_sAo~`wwp&5 z<^TRTykevP!U-N+OCFI3G=3qn-@E>xYd1>Al+7#+>w;*UVcm&1DN|BO^_ug4=7q5}br4is#{m7i1XXZE77oRdXK1eKq7U_KhF{sg+` zpnH{0h(#$FArDy_%?c97Td1{TdN=tD3dYMVF{$TfnP2a@>a0{;rs{;4lY^hdJT^)U zx(V{0zPLGj5aG`C@&_SUWuT-hkLYzib3bzd`d*aCd<*n~=z#$Z_(t5UD(&T}GTD6{-P0B5?(PeEsQt!TaM{I)M+nXgIOVn9)f40~4 zA2)5R$#^LCQW~eC)XHw&TM(x6Ul}!5+;Uo1=hxT@2M7T7CP-uO9mRJgN+i;~xUNnd zk6I8NDMcSnnk*~{R9Jm)+Z->zpB%R(FficuP$vI{|F`?B{inXP7@nH$Uy(2&uW>}n zoJ^ixTVs0c6P65gevp_)G0z}+8>bD7x?!hk2CfXv-2!;@Q-;sF1xs7~;ky&axRNiZ z9rXzj0#OdXIGiL4=%jgVJ?p0cGNhKlFaaB7pM^xtk7*9er15=qd;>Z_k_gZ|N&zUP zNq7(-i0J8~y!L;kej!-govUBk*}(^@tC22FJ|uGu(*}}}SCVXm5K-snYQZp}>l1vA zny1CZZ{C5`J~UyetRs+f@aKcGgk|lwmjqKz#Wi~C{JIj*jBg;QX#0k4l=GCUAs#+_ zC;-!qt7~hJ5F$a8LZB9g3oril^I_rQ3QfB}0vQ*|tdyLb95Qu_41=Ud`3OV9n0j9R zb8IXyCx@f`5W*LqJLPi#&Qrt?w2{hiFy%JPmrf6p4Ov7TUIX5UHP#8~w#J8eo1n|( z><%)R4`o9%&-+N=S)qH4OeGm;;M?OI5v&EfVPFCf0+NR5($+9iPRHdAY&ch}Y;5RA z4x*j0)kW*j(craDL`oX)qNI`HgRp%YXbWXN$Ge)0$V4y@gmy(3F}=$n*ytsHxnx?< zam?uqInL#6Q9bmesJB7R`IBe0m9ND53v6QV5Wr?#_r>N=bUfrUV1Rc383E6=B)#dP zlS2sA0_qN|sS!<(_OP+x0+t!~{{8fZzyry@=wH8n#Y=`Vkp z`TGPo=8zsZJ0_Lp9Yw-V0@F(%5(C(Xv_i2d zzXw071cpRs-6o$RqjNB$3V{mO-$d{DOrl}KJ)Nk9aWkO44pX>-Kx_W~{o6A*sAO+{ zo8i@gHZt#?nwkoMEzIKDUo?RsAr`*|QaL=Iv2j|+OCd{pv`gcHL*g_W<;15l#hA=D z#n2xq?qw1YE!r*=pbt|;Tj`o=`3E;nTgF)?A({>+3}Lgi!v)Q(tuZAeBqAAQ7+?Yw z36uG@jKDl;habG;oP_Xs%5OCJ1LVC;W)yFHYc6c-P0Y@_YT4|Ew_{3T^w}0q2ezwW>5|arr%) zFQQ=hNciP!D4+lsQ$#`BAfO9{RCT}fWa7<-b!o?CkW^vlR{iAwnPrH{E6YAcySP)h zyI@$Kpw7=bKFE>qK zZGf59DcBi`p98)SbQj*O`t2xLj~Y{UflI9|BjR)Mj%)5tl!XB~!hg#22oe7*UJ}Lk zcV@_*-}SMdqpNENti#w^SxMv36GlbFcbYKr29plklHKT~)ypp2BeP$-Q?!l}WB=OB z(QAQz34sOCujf~vH}$Q=LkKl>np!T-Y7|wFkw-NyXGxft9wWmpq9z*YH{&gSL!U(YT=1jXEiBfn>tLJ*+0Am z#=p~+el$VsTKqWoVzzp+yFO-VaWMf@=p-hVa!ZurBP!ZoZy_AJmX(I7~0~ZsYt`WD-sprRj0*-5h-mw`gNiQ&T2# z=Z-1FNJtbE-o2bgFw$ww#U(2yKbr^s!plu0x^G|upI?Uf16FMTVF zSvou7Uu#qAL-)t@Al0U;r}r6xIuI{}Y~c9#c(A&nA_j684>C*n?QFQNbEODG3jmHN zcTLEbLY^xtizQ+KXV=o59UUcfqx;Oy()Wo+2m_~o@ruBB$@u2VcRVU`Zu1V2ANY*sdPVU7;^4932<#(d7q?a#u8@>loxQZ-;M1S#K( zH)1_wto#m{F{G0ae|X)~*2{vDCg~;UUv=qSWVS5X+n+~72tf|=eD=!Ue@2hjI0ha= zcw80ZZjIBIzq(qamj>Wl(mZih*=n!y;;EqH&PENWDPlGd1+Rq?9i#GgZAnRqvb($R z`wt&x=42plbhC{GS46Uh98}bh(f$;Kad5@yW1H~^h!7`G&km8l9iAAS)wAEX(Zzu1 z74lk=P|4ZZ*=sJ3X8rW43dRto%Aes*6hDm! z4aGwGA`twcuzM7W34W~M#n-16YCS~?@R)W<<=(W+xTKqFfd}z*(q6?4eK*K-MVv8- z%5loQ*XL_pIE{UF?!xf9T&5Ni7Z+9pC12OAl7_dB3t)Ja!Ju>`a~Ec;sU0du%1AycYRUNY+wR~F}6yd_Mo52lw!p!${{#}o#F;x+4ceF?@Z z0wH;MFbbIoil&Qy>M$x$Xi%Xvz1XuH1s?c2p{_Z~DINCJ%G-#rJ$J~{mpg*{I8&CL zJi*-4?rK=^Sfq-nHt&Xd)FYygD!b5Hc#RvT_V%GG#3m&Lefh$Me&YrVJw0se>7hZo z>bd8Fv4+|)uU`^KNyl)7bMZNBsk(Z2RQH%I2F|L1AN>ZO(myur^u=~&l{VAoF9doD z?$=JqGXxK;^yJ9i=u`M}++yDHaKOaG#AB3B>t#HI$qRdl;RDyLd|dcE4dlc$Xgv2y zCTUsk{9HmM+Pnp+1X$=V$;QSvQ~K>gx`p~-)>QC7l*B;1*9XDq{X6p|<2m?Wsr)46 z?z_?43Z4>6kWMeAop`Y6Xt~vf8r%E;2U6DMB+MMf*lBS0F~?S>a)G&uM^mJ33jfge zKth-kkB*8zYs(|@pi|?6kpzSKQbgb_|NN3bZ?WZWQZEjP>wd#{q`bo@#Agwi+B2Z~ z5wSa6slG`Ril-D*v(n%G6PV;%PIXyVE`Ym0#aMi65P@e(p}D003TTkA0n8*PnJSw1 zZc`ui1CvJEh+B)8dc%8c2^IlPj|>kpxlvhmDg|9g6AojonevRMHgGGPI$;uRN>Kh< zd-e|b_`6dHI&Xt1=&cmbX+S4%<|y#k>t^($gA^|EgCSt?nA}7ygMb7M*UhY`@KL_i z7vx1`Hc_mORB_AH&z@i}LY)NzFi?x{$R@!p?lEc#q>n0JOlE!iMg~4oD{^iLknHEu z*vg-Ie?T9#Zn{OR*w*eb%uCy?ITd0zwLbxhrIx)??m_6S*y66PeF9ctPyzbLYEprc)}0Riw!Wc8K?ZCxlPQ$%FFp zxFQT2Tr+j2iHZt9AR#A4M?nf}MqMwN=AMUy2=#p$jYw%-GAWk>D0V&2-Hl1gq0s^e zC{v3I#>D(*Ue@CS1fFX2sUBO3!=PQ++c;YnFr^!Wz140}mY6h08-by4ITX7}J zk0pbvkvxtzmG17zUxWw6AIq^)L^nmjO5Qy~Q&CaT6GBPEz$Rd3@Dn5%05Z!dDcyh* zTRbljb-9k#91udu@3ZP?cY2C)ReuQteuq9CH9qdj2&FfJj1)#;06uhF(0@uF?a zYFqz|*CKF3Z3BZaD5IfSHmkqCJOs1yp;!`CJE2Cr|HO9`7}A(~`7qfwB)jrHB#|S^ z%r1O5w%EMrTV(c+j+9{fpevewW<$W(*cb-Kf4ArL&?ugXv(}bcOZkHi4lDoz0h$e_ zTK12WOjQmTQv=0~^=*wF_n{PgR>k`#hfq!5R!7XS$232ZXeb?yz-BVI1@#TWw;Sv+ z@TO#CWnU5D8&rVoeR6Z&Re~_(^GTZ8)C@OquX!!on|sGHYOSuEC=H1L8`)rP2gVQ& zDq2QExj}7-rk5zS=q4beq%`@qd|WXkoxsIiE)1%~U)jg3Uug{&&0%m=v>ayT!XOth zRf@QyisS@xQEB1c9XINa&wN9E^b5QnrS1v;zdAebc&^|7-@mPhvWt?fsjSG}Z=#7x ziR>aFo0Od`qeW#z<3mIVDcLI}BZN>!!)TCXa~@Zp@421d@BDGj?VSE8x885Bd0p3Y zJRbL}VKil-+b*pZ-Ba=_uU@~Nfj@nrnR(Q?qA9l&$(#fQ&e@3OteQs}N6`Qh|D0JA z6n=-f`()|I9S@4{b7a*fFYkW0AKgU33*$6I%5UoYOb6A2SE0U&T3PJzhmYA@{jkFQ z=&_E7;0L;^Y!=lo$G=BmD@SMNx?F<{({a z$p5R~6)k?6?=(OEFt1uveC^0k4Cn&vIurRt9$3*9=cnZt99IrL5tqJNT`u-m!<&)& zuzbd|BW&09cP{drD6EE2DM?gwK<$}j79&^81syg-rw>^`=iF&5Z$gv#@2DpO-m2=tgJ=j5E#MHZK_ z&`qcJZvQWO7wEf;!Zq5{m&!X!_U_0n98GT~(?h|qR5HVDee2^-)g5Tex6yoSd=^}E zn%~er$4(zl$(@oYaU$yG&FHUY2rI2d-rhr~`Ys2_#Nj;*Z}&)?-K&6sbLddW&713^ zyZ*+L5c*it$|7hrZbBb;PiV`-YZWPl)iuEmnNHkHe}+wH^=-G}wai6@di83aP9Fz* z`-Ocyk2fC z_t;U<^nL*DUFw|DliP|Ws(4N`WG;d3yXK=lgp?Qj(jw56fi~Wvw~jU?Q8S=DDl-AI&m^Ny*?cf{6@}m_EG=)>wjU6kxnp@j0TU62A^ye+x%oR)-3O(II?QIRzR*oBNCU1gQGc#9_I-bvj zHF_JY=gv84pG^x`QvCD1XEP)Omn6gjx7H>;Wv?;1%iRg7>&iV0`D8}!%q06 zMM`6CMZABm!T8S`dgd$pAu5f-%Uku~g8;hI8j#~tU{_|AESt%wX-$xGGw8mJ*T*R8 zq5Ixq%&-xsD$On@uoO~C4l#derW#T&9M~8h5b3`efwI~L~EnCZFH73ExORi=4q^m&iUY%o@}Ko;)+zm6M%$3>0S19G8DhMZ$nf;maMm%k?(F8d zs{XWkWap`Yeg1N}0*$`;R31bq-1IcdbDibm!*}9DA78XMH9(;xC%&r8F=j7EQ$*_}%#A@RAqX=z%i(R; zboOOze$6p3biqVC=uID*OkLgE*uOXPYv}neWilN5_>f*ot%S2^4~?P!_S004AY_yz za~~_l=xwY?VE5dP)&{y~`uw_Sir2f1rH-By%|2a4rM%|}5#aC`85)9a>+@GyWz)%9 zv6{Bq@_oE55Jh->e;C{@1<;BOdtIU47 z0%`XqPA)DhJMR%;hJ1;E4^HAiZF?Mc_#czKSG@LK;TyzF#21?K_IbC3+eRr$`>rA( zC^)7qMjYmDM>IyjYe=k+M9m|(Jj3X}G;4>7>vpqZcGIWM-(A;TLMeHOj7Nl?-mQKx z5Rh7X`SRjfGxs-g@byc*duSStl3=tib7WwVfCfdcFgR3*vF#P$2JCz_cuZxqsv8nI zF40Ss7CgMbwYP%3aC0<0JEh%0&iVPsCdZzl)sc~r5wWp#s?)t8{r#5h@77OiL%=`> zJ57?B-}8Z8mvlo=QXPU!Th~t_e-#wAFl1EEX6*gBayt|4f0DcFa=%&cU$X+A3#N!f zky++xx6xlL-JxE`wm+|U-OXAl!0N}#pRmwi%`}q->JGhT;FhSCkr?%_4<0>Yr}PgE zwf*oC6cnuX<3H`-pmpfbl>uK*&%#z4(b*`N!&56D2Scjr$DS}TG9|)#^6J35$CX&_ z+V8=~4lao9X(uif<*vRVE#=1dhb~E5{W&#zGUnw~+cvr`RHn%z#sl0qH~lm2;zfEQ zJwO%n`hNZjWY(H@T6raoKQtbV&t#jLcGWc+xOblN#sn>{ZDXcV*C&_tzDVqQJv_SC z0!7~J*01gmVY z%I1zY>YYu@*WRjQ?{vDZ%b>|_c>zOr^^SfN28Ih9ceS)awF9nFXVgY#s z+;n<^cJKCzc0W0?jeT^a{dC?705y0%F4Ok}bJCYs^wqa=G^Amuo1QK07@pjT0x>G# z4#lYn2|*AY6ql5UN=dP^sf<%n1D4K#Imr8}0t+wEa>_Yuutn7|rT?~(h;ZH*eM@pm z(?jc0Ss6Z2?OuQ`?zX80U12%X^0EHL6+)hS;6VNUlhjDEw521_VL(R{X}1jD z&WsBawdsyxYY$r-PJ5DW65g1vw0+fpnNvpWOA#8`P~=4(CfWw<^eUwH4iDU%)HWIK z5L(%;YlpXc@@{h7RleSrgSWRipXJ1r&lut~cFKGUUPZ$h^y9W(3^0L;_@!)&iq-pI z`__6MH*jhbPFUeGoOh+@uxml2*EOOvY9Ei zFfucIUFPt-`13avUAxyDBm@j@`SJxJOxSPtYf7s!Uducy=V{-?4E>{1@%LzL6Eci* zG*c3%MDo4J0YdxcZFSk4#T2Pl!j&tYp~`CV!yHHqIc){_-)+G+J5@(3GqEe`RAn0QyNzF z;k!^;RPdjPtE|>%0O3dczHY^xkR5{&nXAv^1P%oV+C|@@^FjF%EQyQ0N^ps`o;=jE zWn#oh6iER?aAh??t8X`93Rir&}%mBzmZ<%K0}~1>duKoJPzW z(dG5Q=7zLqh1wZq=r0e;pmwqErn%8(SFyT;L*{WLLt^nj8Y006+y$izu(t{>{-;bXiKh#3Cg1WknMT(TD)IZrKrP2ZoTtrM$@_XR~ZeTUw zf<)npZPJ{{=*Y+5owG-H`RW*ikf4OE6f$H(K6%q~M+J%o>^hcaN&i4o!C@!}T1&gO za4P>aWfUk_@JNY^{A4LZM`eK#&d5wQJmDp0(q5bpGdUsVDK{-7$)mSSK{neRd-8~- z2h;0vT$(5V3##0sC(F*$%FB)+>*D4O$gky>$4@hJsjLoAA?tNT7-fq%p6Ft$8;7GVe zzQvNB3LY2pCO{BI?s*oAyd8VX$i z^G(|J#NHm^gm!X+S$OtT-o4SF6<@cOAC$=x1p&aqn(*M-OK*F+2O0?{z0ryX8393# z4JW+uBH4A)LK)@;-CK|pwMfvkk9c%F_Y|jCq8Ded?V3@jcY?R~J(0Kd>*y|+EQM~r zm5d{8c*Gc=nTP~l^7u*&0Nba__EXQB5)ppP?5r^!vU$B zbZX%;s^jF_JMe9aZRuv0Qzoh?AxaBZLE9G*p||4i!63wH^4g_$WkRI_PPa#fOuTCd z7cS!1im=R1gy@-xhe|?)1O$HVDHy!GS8999wUU7NBMBJTm%04cv#-;{v1R-v8Sebc z)Qc3I(?*8)Ct0%6<_RNw7KUkmKg-8T!?jM+ly*zAaQ|Y~J^Obfz$Whgdmfu`9_utC z5=FO-!ei74eK1d?vPH0zVwep#G)9bi zN<7Ha)0eo3=$)6LOAo00`+3!rctc~x6my6MDHU10d)j3St+g&Dl0li!h!NRsWO&4psdrvaiO8LXhx z$Yf|Pt-rhW$UvgSQ)|HLE<0*oL;D-u(PArG%QSWQ1Ol4|tm;I*m!6n6xj9?jThNs< z-Q~V|CtdSqM}>Oo%g`t9S0D-yJLfO*%--HUK8K&Pfu9_A^ye5oUufVrnbXW#=qi?} zCxmCOn6GRy-m1TfO8vVm$LKlTp<R#YktND}ES&uP!N#Q#!D=5k zo#CBtmm70g91m3UGZzt&Q8!klUq#uvb?f-_^lk)*Yj+&K`0d-b1947>uRT3IOITVh zR*!oIX`PH4tSfUe|0vj8jV{5vCDFMQXn&JaQtq*a=v~JJZBX@CAX&TpSRkr;L^;s);v6xEPk_AP<+DKK$PXTDtKPVI z^FMK-o7|;=HvUIB7z#6lDnZ@S$xRwmYT~IWca+ULI@X}@w;Nct@ab&gDIZmfjcPOm zHVfi!t$%pZ4<~tP5=2s7tgVf4fh71*`{&H?$kydNXB^KXA?)?*D}X%1qOcRytCp)N zfv*aDk|kyRB>QvkT7SAK-wz+;rT_^M_jJSy=ck>&eJH(UTFK#A@qnvhx4=1iXhjHH z8=MB0KF?0gtiyx%Z#iF9l9h2!_3|CQ#W!cmJCk^k7Hu3WgTT5^%{sORaJotHkK@AbcOF1XnV{pt6lP~XU27M~E z-OpH+aU3b?btU?IOXOL4FSBJw+!s8y2~r*jUC$1PjL4kFHO9ZZ8myY)va1}x|6phq zs-Z%2@ie&cO%X)?Ut}&wFgVDF&P9Tm{Y^zZ@Z5ma2t5<-`jt&Yx1>Cqngb`fhUl5E+zSx;XM=-jK5dDXkR z-4f|CV)23M4NC_mr=W2|bpd19{?jhp!TM?U-FTbuXWu3YM6 zjU4`qd{0lPbcTXZ)5PgYYtz;!5#sWm7!W`w{e1wH>M@HM^hOJCWt57b0+~B0lT@#b zK#*B=Uu3_Nas`D>7Ba@$usD`@OaA%M$8vDDDe0+c9M3XrLU9M6q9`=v05q!=q^8We zD}OR}q4ErE&=BFu%*l~mP*LmUQobA&A9IJw|o`LKOBI$tz7_7 z>^?`W;>~Wa_^|kOW=~!?r@)f!zrX5NgBAR)XYLN;X0Ipn*kfrc0fVh;p!?_@az~4K z@L3v{t9H)XxTY9cYY)7am&ny5U3tF(8p%gH9@|w{gdVw6Jk=)3oe{F-PrE)K(=IOr%{8>25ghmYqk zOos*O7}i|h8Je_od;}dF!=3jme6W89jM1zbbd1 zf7{xXG3K)T0l^Fa!Ye)sye9a+wBGg6r|C+CnUW`WdpuJ*gS$uKN5LENHG+9g%5iB2 zKHFI3ymLA4tfTtwTXPK*v0ENE*GzV@RuNc}lsZmBH?|}S<%FXXg?~D%X zvG{N~=HQ=`Q1Wx|8OPMa9gKV-;^kekzTQ9{OU5TyZqY@zpWE$Gfct%-Z(;*Q0~Jtz z#gsU^FS=H5zTc6m=+uddkKBIX==b;t#ALRdfV%O2P}^1m`7uky1B)yDU=YLX%l_}OF~V$r|bU@756LwbqMFTNV87v|BwBV866|ak=HKMH(DqSbo-{reNxn z;PQv^Cm7Y^zq?OV=R7MeKK7e0@m{&wnTloYNxPBd@as!+`)ZG$Uy^v#RFFt^+K9qn zz^x@4kmz#)y?Ic5QMTQo5GJUL|J(Oo78EmGBwu-jaQW}wm?{7B)&IG7i40$5Wu*^P zrAnm%udZ(O=?`L@+b$p?;(i_U5j24X1wW2R2Mbw3#Ok+}Yl?qUV0#vHRw{qGY>1`m z&K=Q(#YNY#hfg6CEbnuLC{MMXt@(twiH)kLD$Xvg@_I2y&Q z&lz7)q5dglSwZRQ?iPm41NMMjBV#2Sf`vTJokJ8tp%C0?UCcVVOS*J+c6QX=yPxje zvvO7teHax}2F#E<39mr61~QIucR9{B5{JkC^q3&5#e6jLG??hVtLiC8&W;Qt)nv4eu!*F z0mjFDK-D0pyHchmBiOt0qS6ryi#URr$AN3&g|!U~4TI)?mJ3dPf&as%epUUB;{{9% z3=CZ`ryf6k+-3gz(;*ajs^+G~XbPN;%G%Ve+LxxrPuiKBoSct5MvMSM8^kAQDFl@! z-{-+){P1`v;g6u}SWg_qIGSb4ZOzLsmej?;<6T&IBmc1<;z2DpxBP)!n>TL;hm20X z*M-j9XMll-|AU2uVA6r-a_5HWZ%>*BLBp>hNG~MEcs&WGE;BQ8xUJJ>2b^ot{tG_j z6l!@asQdPSw))aq{`KC)PlkC#dPEUsTOT#SJ1iV)E=?ttKft{ zgT=(eBx6ey6hIkF8Y;fOGY66^0v3;O(`z=qe$Az0$o&y;xz;yt_B%Q_$ZVMGvWbg? zxF>83W?k;Q=c5n2nn|uYft^1}27C<+;%86|=gSR1XCp)R4#(58A0?tPwj4-RF#(x2 zv>1GsRxsCokB_r2Fa8XO_AUM3Q%*7DKALB~!$J0Dv~&6L(tItcu+4S}YllTNt4zii z4y8A}Nme}cturs}n5k*cz#`Amu5H`4)!@yFOifMA04c@?rN0PBPs4^%{pU`*zKj zW&2Ou_h>H#{KIu>w4+by&$XlG9NJo1t2!@Dq-J%F=^(zIP+y*n8(2aY!Vu%l!f)!@ zmMEU(+~cOEwV)52h>3}jeNj)xPHvwoqT`H|loVc0&Z_b=ES18R&$ojP0irz`nv}p0 zMz$)1r;i^$4zs~1U`2VQI-HF!_J-_fPPAAClF+yVdb)f3(maanD7yQWe7%X*0ufeQ zZOD7^i&-FG!If;FleEj}=D;7QTB_hxz~ik1oi~#7!JEU5`uX{}{`qEt+VlO_HiWEq z`SNA8$cCHOu3Z~=`q94{ySwxc4|fe6TD^J*D;&w9 zG(%Qc4c0^!f4*)?v>X&C!BlizQK9{ z13sGgsgYxs*!#0lAU&yT$)=-#A*lmy z0Q5=odoMK>`4pMDxLb&>aCJTG981*T}u-Ded+o)ktgL5G&Yz8;&#q1(yW@@{?r zw}hxPJYrc6@l$~5Eb8+M79!%pCK?Jct)};xRrnphm)_w3D8Yx3#X9G3+?9Gf;?%9&Wgw8yIJLRVzGpELspkehLa#hCJ6ouHYPco+yMR2* zA>3<*~1bbnQcclPy7hgPRiat zE}G}bi(SF(t_6Oy{=bb#8IypJloVJO2QwT7q{tZIAH zP9%BzkoO2Xe9+u8>JIs+_mhEaH884wv+`C`A-D@piAI6@-BN zO(vxVYG0c>8Cf^@JS!Ku%$IdEJ^q56ynHl50IvC|vCVb$_0foH!d|Bx{RgeBy&HBp zCi%>aTe*HL^RuQ>FZvLt=a0Oc9B#i07ix%1OU3<5%nUqA(LnwWh70=JE1X(hTFkg~ z>C((-c3u=FOfKlvPPYQqx=&9}YQyB$BNdRotw~8ve*cg;Rpng%@TX5=n72c$jf^fA z`!D*!Z*55MA2D<1M;xaH5VY-3n;X6}2z5}+@82F1h%*Nficrs=KQFy?t3J1mA-1_H zn?e6B66`|GojZ5dLN^|1Qy0TAKmAj(sGxvX?f_>k=7HAw`rR9(ECc_ZFFMQQh@{pZ zjYx73Mg_6aDPPyBiz^2a^3`C^ktj6Y2cdAUC2pdyj_*9i|9UzlRxmKE%UvF`Smp$S zw+7_2h^(xvLAYCLvFFfUvnQwa3zk`rxn>=y0G0Rbbm|cU1EF2AvJn|w^4}jlIZ}ar z*{pqhiWQ)}kd~K!dg1~P@0jZ3y+m`)6DLm8LdF?|fO>5nOe@l2Vm0IEXU4YmV`Vtu z;pWB(`}-LMMoKH>!9>hm`{|SI1mZ-_HO!$tSYq!ir0OZ{qhuZ8`LIFh`M39luU*Vc zOm2_|7m4*C12kG6gsaiWcfL0PS+td0aK`b6Yw2idYZ4KABXGwIQH#rt#tw5av9W6d zu<4Z7^m5^+taKkT4B9wk>ztowURXzqKh% z-2!P#25PJ1T>(nB@chn22taDYbBncp|N6ywWZN}fUfwMdCi&FH#zt9(nBPzfT$lic za1Fv8D$GT#4GsDmON@+iQGK%2S=VArtNC|tTlV3%sxD2V_^2tydSb< z>O1Ss-#5?WNxSe%pS&Z7vpWW{dqWLwZS^AmwZ>VjH{wdl%F%eAcyu1`pt%5pS1qLP zM);()i_4=K1na*C<+a^}BQm!9u?iPO8j8)FfXPQz_W!ekq-je4Ni(74k|pp=OJC0ae=&WV4hCTwV*L7T|pf!5dBxMmUg!(nqL8$6?c}sIA4c z#{gx2#b3IND+EvEY_ODa@bH9#z$>h(%8&F*yJYC?+qcB{=m=;KktZXVBN=Pkf=mP& zzo=~3zJrsO=xaU4j2lx``S^CB%)B^Hwosx}U|+J8i27FZ?Xs*4W`NA2ZeezkgNuuf z!nAtz_wg41c7fi899ePu3j|sMhs8NBj-LPWkf8#bgabk7z%7WE=7J5q*A}s-UuGH6A zBqJ3)7V4>yDDhm43l~&?muzWi2}B~G#eQ+G+K*V}9~!>CO2o)aE(hQW1UE$uLx`!I zyic&x4^R1CQJ3T}+)W;(i5uP(A0Gu;Iyx(xwq3VQq8MiHL0WvJ#XJQ^_w@c90Mw6QP&yT;^PI%T{sRb?Ggs!e{SRH|w%Ip{0c4W!|CC0j3& z&;#!XIPj~rA7PtLapRl{oU!zociV|U@F#dm;a}GSZ$++<&$*Ze!;ly~C6sj8=^cBE zIWVS@ke`vN1@_q_5R^@RDO74HnSS>0)05d}ivQ35Rt@{V6wChK{(DLA=ds`ZhF*)0 QDfpwWbAXzwWf}ZG0C_vu7ytkO literal 0 HcmV?d00001 diff --git a/docs/images/lineplot/ara_multi_mpl.png b/docs/images/lineplot/ara_multi_mpl.png new file mode 100644 index 0000000000000000000000000000000000000000..3b21539925e643cdb9dc32dd2f6d185a6f5a0271 GIT binary patch literal 41010 zcmeFZWmr|=*C%`cQA7y^=@0`@X(S|7T1qUsq`Nzn5)e>PIwS;2uB;T4 zSGBq2<>f_2ON1<}J~fYs9AUapo|nVUye13D;%G6uUp$LmJB6C_mPmo=*oz=4{-TwP z(!(hq>M(vM&S%e_jaqf^FYY&3b>^vSE^RKXoD^{0~?4P@vncE+U- zkAJ-@CN3_n-}3k04c;v-F0N~AG@=wD5KYI(yHYyVF0bw)Vq(GwA5d#&zD*(hT|*${ zNS=(NBag4IFC&qAKtRA_PEJmK0X5!*`T3h9B!dNJ&x>&2C#UQE(MSYc`7V1rn-P9) zPxS;>MDov{Kk#<9Z{L2pLLafzi8X5;Yt}>T(>`5eoIZ|hg>$M< z?BV)w{-cos6Ror3y-}M1RjEkMfX|;lTaAxv1@VjO=;-t?a&Zm#8vHwk!(u+BXpbY? z5`XcJe;*egAFudGLsOHctE(${EG9IRSWQjMgi^WaNwmy> zwaITfw^G9Al9m+MT{*a_sPmB8sh`=|U(qlwYp{hYlvqDN)*lrf9!??P9Hv?8Z4mXU zh__r#cA~;1Kaj>#EO_SSrx2S#^v&!>Dy``{-+Q#QuT)jrkk#_L^++L4{|2%HY)4G^ z4ktZeN#W`KEk77<$@yyhiR&*2tQYn8l;Z9%u<&^y!t1i&>Z&a&k8+ zFU~faIy&g+=|923=jwOeX$T;{QuQda?4w%d!k^TPc(~iE1hkv|%4P;pO4fvp7YZ$2 z3(xf%$AX0X>z}*23fS1#z?CH{Dk|#g>NGeb^8=^9@flJ))l2>J=MG%Ax%tHsCPT#F znk^B70;(!eB6xJaRt(E-e!VfSc1q*o{EX!K0Nc?LQY-)O!fO8K<45%M@&mP3uU>6#Z{MMz`Op+hmutQB3iT~G z*Z~fPtmD{gS^hrb(}oEF0VX=SE73BIu=9rJaqLk`m+l}nIk~B+Nwe+q@<*JTxi-8e`jDNjEn!aqsJ+@+)Uo= zyA{;M6QT@D&1*N|!o?FEh(pdfxv(&hS0)xjB^4{6TB|(`oe_IV+p#?61I86YN}(d( z(+KAVH-0MjrU${{cIH&5mJCHvPczSuuF(hzpJDn(kF=(0y!cL5bKCqXXFhs(j0k?` zzK^t)cuK{!cYhe(dLDVAnIDa|M8@!{ouV;xsJ7>;X7VSyP*6{}$u}{bmu^(@v7eF} zV6NO=X0*j69LPIyeSPoiKH)K9U zo;u=ExwBF39%J!LPi4axJ6G^*Np{q-g|RK9{QP+3^mM1AEyQMR_{T=&Ma57~f>;on zVejvE8E_-n;iI+KYwZiVpDZ$fW<>3Vb+wKBKniw_gR8MsADsxb%@`G)J5+Lei-Vh<8Q}d z<5$TNr&eczLrQr+%=X=CsgF;m5?!3XZCzzHbKB! zQDpc1^KH)p$Cmi$!!Vq5L*Jek`ug+)v{D-VX^Nw;3F%a?D9Fjt44{=@AzP-VDMn>S zyXUOlhp5L$CNrs#MvdmwrEcOX%N3UL1?%0CU>_}GY>EPSB4jZdMH+QQ?R&Z;7#4J~@gDU+lw)Sm(8c*|w zrM2zruk!UHxop&O7nr1rzuPsG3%Nf*O@6PRuvm&)Qi-vBvU06ISTUsOONTehT5XxqtpV z{P^+X@3gdgEG#cqxNAhLdyRsGSB(EoRGIjj&16>xS!flKAHkM67TXi^2{hFlYd2JW z^5corx#{+U*cHNF-;HEfx8?;IoxZPcN6U9jX=!C=z5La`s{L7TQ*s{gi(ivqDFAtz`7AuKP_E z^ujFwj%%8B9r=a4uWSDOLbJGM`N;t}Z=ZI8td?R5Laj?YXREa5slrlizH{DhjKgOP zPCyXPta#gvX^iRoKnu~(B$eif1f#4$MkTQu&-H~7EN%WRfkVvq!0rrv^JCGqEN+If z${m;a)fk~?CLj90dg8B1@qECV(zY#)7V#%SW6`X+R7mdnJc?XIj{B91XST0aexRl3 z*z?jUz3rK`wdF8l>eXZS9|P&V+&`@TbKjURKXGalj$}jEZNy*uomk=dQ1aG;>Vh{5*XI>a8zA9;Pmx zG#_+5Nwo6cIVt&5{CXi?sBt+VH9znU&!_*s_oeWhYg<~fWmX(7OJq7Nrz9_q6q@Dg zynXwYZ>x@Acd-kDnwq+%riSFPK0b5VCi>jm+}fro5ADBhxX|>zFl+noi-!9FJv_}% zu5M%B;eQ;>D56~S$A9N?Hc`w2Iy#>lcSZ3jC|doQE5tL^%CnTx8I+Zcam zmYSCK`5IG^I~<(z^Mguu09e4jd+Jh0HAHV#r zHWB0nTDBjH><1G)og)12+vr(Z!Cq+PsaLHJUar}Mza0XWT-}_BTtWwogFQV z&w(x0?cBj=!i)O@vM(%RY=5lAyS;Hs*NO^diDjvXJ?4L15!s!`ko@q9|JZcDmx<5o z9K7-J-)9F-3okycIW_dP&wpQyJ>R7>EuIU}ZBcVOvvEB?S|CzC07U*iTj3DyM9Rg* zCG~(V;$O#a7Yg|0?eXJEc)wOezg)X=@=qCO?kS-fmzp8@iXfkN0>bd|UGAP3Qc6=0 zkBcxiF26kZNjb3J^DkG7%Zsu(jZwJ0B+}CzJXsW^NJ?pkZNQ{RG_o zwz#h8Ux8S)<&_L!K+{+q%x1%Ud!?|{nhP7d{H~)BW&MN8qIj2X3*4rnPQX+4D=5-I z8`KOE$~8+>n$EjPM%L_kl^~46i0EL{VVx4Oy&i4y@ z)UMFC2Uw%uh{sW2AYvf$?`IVze?^GtGd;MI*WLgubJ3r(GFd{BEbU>yu-+1q?fy1iaF- zAJFg~JGC!oS#IPw$v*UZr(PLxJM-uM=OLzwu?t4o42N$vTp6_k*7H<9GwS}|ElLLM z8jUc!Rqp&Z^~jDZr2>;r>p$prm^>KmPCG2kSg~>DpIgCIJpC|?{`+TE<@?HhIe1$(|K&jTzZC4v&)wHER-NyABwS&)s+Afa-KTYG+0Q99XGh`T+J8}Y z8vkR_y|2j`CUI3}%Ev>{++@HgKk%-n`5gl^!gw6O`>}oB#cDW=8HfE;v)Ne;Z*$p} z-biTwo9rZD^6;FB>X3!Yrc`3)`&z2HwqOCVS@QV2E5>@W1%2HTBK`!EUcW3FNYV87 z>)o;S8Y|htZ1cM}1a92Jq($4@FH(16V5%@=?QxXaDN^2*po zyn}23ixUlTy}IzvA@(a?CcbLP3m3ibc3Bih+vHp+JpqgB z<;#~K{{l~2CD)h#XliHY}^N>|zD+ai5h zUybY|;+uV0+BU<}=%eRR<3AUl89x~P2$h}3&s_7#lPA|nSlo45Lbia}n=;%8Q}*gv#JJqb3e zIPwMnJ3TW~3&r073g^;rzEKZPf@r||x#k~jY6or?2X19M?YwK0@>p?kX?_fMT<-F& zMpd+T^QZCd6*yuWVvA!*b@Bw7%l-G=EqZuZ$+UEhlc{|7RmIVKq;BRK$T)>#wvlZe`sZE7;A#!mYs^ZIg39rb5dU3cQGo5*}RdhSEk5_N zs;EV|QTU?y@)aDj_Ky|GtZ?h~-UzC7R4%9G&*sInscBraYS_!k$$`_pySv+yfwXXU zUAtR)B_wCjuD$P91^l z$bQ*e?|Na=&lA{7LBlA_;~wQJlRPu+=^q}<>Z4}mxHW!wAVbDI z^41y%T`61S%Dno(`pMaL4)YRKKQQ3vm6Q=gJuw;KMDf_Ie{R#|Ob8+Xv_Ia4clyg@)v8^)@|Z9a)gNufKq z9QDMCR#x!LI&$IG^Ss!Bg0jm`Lpzzs=q&KE&$Iu5^A`2Sfs@Mlg}Z`Qnx|fRu5sqr z)Cscx&sNF;!0Ne>5VG5kfU@H)vISxZyM{&?%ryT62Qm@29BDjJOARu_Ui4m&i_yA;@>B(vj zzzqp0cay3$IuBK?ohb`YZwS4d){A|B%Z0${?@H+jkIW2Gcf%(juxef?FDt{ke%;uX zVEPTHswo*6{XE{>9zpB^v{e*U>HMZpJ4SrB{ii3iE~G`YFt6nh>r*a#pXKfqh3ceS zU_1rIWIoP^DqgQ6<}*20;4jJ0ZFoEw=JmJavvk|YoLyXw&Nkd+0m6~;J3fXEAB=l@ zEwMHRJ%&~5a;(cfDF_MoZ{KzY1do8@&8@Aest*{>`$KwC5s!VdvRII*imB)C-@mutY2$K$ zFWJ&|xaiSxYUVKO4{kX))6Re@Qqt12dwaM?S1qq+tO{Wtu?HU<)#>?eGh-* zX?~Zo028Doncbea*h9A0{1}^k6`6yt3zGYUlt1;X5cT6cRYLPJXGdBkPZ=;i2mLuA z)adZe04{X~&!=o&32dpFfyI`XSBOAIN4Za!g|D=|^=k-TB40c|6hzvMwf+zgx5B$pY>9whSB8q1`}N-XAsK8y| zT(?>8UGl@7pMqMQEv@J#_u+>OCG&SL+1~M}ehOt;L_`F2czn$1^5F*KYeFx$il3h! z7A|gxqKJ&pKPAkx5FjfV${UZG$<6uk_C)K&D;4$DFN-vEfgstFmy!Npd9lJxIlhI?QpgiZ zHO2o}X6KQeAg&D$B`Yhdu&C(!e5L%rnRimO!OBEuYZ7o5!al*OKcr>e;+h4yC@WnI zKl}OQ%gc?IIgfJl1G{MeFg?)q?2(|uhi}ZiV~06@+3Z+!7tULwIF8KR(>b(sEi4+P z|6IuG=QIjdYT9gn0D1lDiz$t{XaDExMawMEZj>4~=^s3MF#Bd+!)h=u@Q$ZGCPFMJ z{o?5<{_ynnvOdcT`aVgRhWkj&DA15n1gi@hwo}*TR$X@8+*Yn5iXTr z|GoF;o2UF|>kk2d+`X`}d%-OSQR9 zS`OHs=;XlFx;qEsR_TX6jA_EB#hMr^ z1_ZjCje<01z14kQu-%6hGE9NqZS zcy1LNg%$ee@Ma(gchT@|wGg1BRv*jF+>2oZnLu{m`FVM|8uA@P2;MVyYSfEeB<&Bz z-@p&(u`gKSPwvq-)3#`T|L-Z>1}0FmcBa#(jtb+j1#lt^!eQd&UpWc(J_uD{{GwL% zJP*yI`lrpMpllj93}AnVR{6YK2vEFx#a9=_$Vws+xy~i)h`BHD40;gOO2Twf2rY+kJE0!&`X%B{;n3I=a+;caNdT4h6K9>a|HQoonXJ7ioVjgiRy8UYN+<}SgUaRFPM&1xFgX( zXZ&!mZhw01pT0q1fjuQKWsSEY6Oiu>^gIzLL!Fs8vj&Z)vIC;)m7lF8H6nzaSTt`D z)I;{kU^Gy8r(aSm+H}v~_DubfAcr-@xoxx^3A&!kon!s)qEWs>8uJOh)N&>%^H91$Osac~9A6GGgkQ(UlY^(l}CBGUOQL7I|5=`)EE=|@jx|iCnAwV8X zF44~a!K>v<6>)EF%aqz4eRG~p*1 z)GMO862x{^b2|(vB|p8h;HEGh&hwRyF1$|$o=i;Fe_nhSAS-L7KzQZ1+5OG!FHiUGwsq_?uci}7OIa%!E4KqS-!8- z^Nfs$sG-K|nt`!#Vo6EFeaR5~8#m%CnggfCe;sTe*tqEdK|Eb=oaoXw>*e`|uV=j= zYxmx2Ff8g0@m^`}J_9^NMk`-*^O=SKZCzb9?Z5b7rZtpqRJ0&|V^9zt^b}GVvdLs6YLJ_ShmzYn|R);gw)U_|=1ixnJ#j@mIAgpg{=s%Wwz}9LP z`ff(}uS^SJeefrA|M1~M*k=Pj;<4t>zu150_w$&P2A!T_p;9x|+h)HvSp()EcB%xAY9r4DYs&b_LtNBmr@PN% znLF(RP@-qwE##D17edL|v}ck-QE@pRnsb^A3yX_mfxA2d;tQD63M&e08OjP=YE*k{ zseu{OASZC^M1nSpwppm@cK7ciEHD-&6Vz&w1`k{QRC4Q3KhN_5-E@=v=ms%&FZI&zCbNmHkkp723!~}h4%x4y7Zx3iJB33c!0o6-J&enYin)CE z=75S74ulJo#Ek7`zBP2+O}p|aD9yTg-&J56F*lNuWK5Jo@V``5{r-?9P(qekyZrqO zK4auHE_QCmEGe3PG&rK~Pv3*;ExbZcsaBpIldT@0vuzg~zFB$odw-}Qr9=@)C_Tyy zi08QTj`Zp2>EUKAp2OsaD~sK~t^szP`6kJvIhdtccD6sF)M#usU{f9lyxw`7SXz1Q z-Mns_j`rx^VDC&=A6gXH!uEh`K8cr?Qw`%HDfMj}1Q#E`%ezg@^9zd}Me9#X^j zMmcqfXgHv3m=AF%mBel`HQdLp0;hO;Z$Nzq!Vv!~qFTJlnEkS~f)Ry6Q_9qL>D?@G zoTB$X1BD8NZu5kyQgEp_BTkj{2JgqAQoWts;p92xcmg1Xw9*lE z;8wGcTnA&tNRaZ_m&^!<_`XV_4dK+iwYMn88ViM2>XyUpA7j^#z60W`C|bRSNJ{X} z-jspw*A5nLVrsm3LkJwX;eB?N@ems*=MntWq@+z?;M=|%K`0k&!aD%w|Na$El8Jty ztE-!9LqU%3++`BXnZE$_vic5X%#P3PzLe&1#Oye|d)pH&)W1KHlodbnr! zG~XI$=|$)lCMb+DmSrg8pzI@_ZHqAFA1#P6Hcq{lH2i98wfJoAMA63j7W;AA)65<# zlTago-`dJuoXM+Bc1xz?L+62?GZ*Jo;!&VhuGhc}m0w4MLm97|$uuG7gs_wFP>ydoMJ!a-0r~}(&2WwJXHkH14laJ5ym()KW zI$tVeDD&cQFtVQxr90%F(Gr+Ac|z=Lfo8{0;qfdM_dUpf-+MzJm%D;@Ok#a`oYe04 zov?Z^^F`#gAYxP%EuW<7XK~~mIT6I)f9Lb#R`H`n>OS=q`WoMx=r@1o_R00XOtK*? z++T0Ei(D71oO1A6_EWI3#zB!|b87UG7W3^{qPm58d=G;3O#4T7#xsR1%vWlZ!}Cpu zNPm$ol=H_?Mo-_lUlvdQ{rmU4A@`2@`g#DkIiR>Om2Ex;)x`JHr%7-xW`Iv!)&Nds zz0x0mlxOS3PIgnU3H^Tlyba%W6^Lc<=uay1OcRFyJX@E}KYK0#6=|gwl=XY{Dtl*d z6E7#ToqQWgAMTJA9IeafRz)E%y3$te_^yAYz`eq2yNdb=PRimQ(-wcr8ei@{X~pot zt;|5jAFL8ud4YGM?&UHBr!J_rH4+FWnQ2dOj>w7$;4<1?OQ@iz-zd4j&8==tRaP@` zT#tM(VLo>tk2ts!vS$?rM^3!sGh>t++he^OpLPTfsP@!1P9l=~1u%a{-%_XA+kRpu zDY>?HwAQRL{|R7~3D1a_j?R5lTwEN=c)W}>wXbv=Y->;4wz}6EMyD#>sYq=!LqVIxwpMyHQYO3xmJb@s(cc%t)G9@s z`6n=Z6hxCC6eCNf$MW!@AJFyJrpXYgX=qSSmVtnbVQy>k%~i@)P%#W0ok3!jRay`v zIIjhpdUG~{4vmC@|1ePypAo3)`-Qydvhp>P@!|7#J==D6Wi6$=5TFO(N?Lu2d|)v|4wq+&my0Al}(Z42le)yf|?JiCiVZa>+n_GuosTR*0gen26BEV3gVsB=YUPJ- zT}zJXoC7KbZ}GBowa#w!1@S&8#{XkdKhn9f`}q^^kE!+R;L!jo1d6DZ_5hP1Qc5f$j9EGN0Q#}V?4cc>4h@xJE}{QJrc2; zygODlp{YY}OZC`j#et?jfA8F<$MjI6q)i4x z#+GmcaqnuPK0j$~3KLrR(!R<((V_Dol+|jsHMqd)*(fG#ln1h>+n1P4oxj2kl&g?~ zB+$3%a+TPwC>JlcV#fVAa z)}#ks4s01tv+>sS!trJ#($|ME*aK`DNUWk$tRRD;9yD}8( zUTyl&N)<20qmbY)$@4#QCH%4Xxa+w4|c5Id&@1GCB@x>=w@FcedyHv{;6 zZ=-;mS;9VIxi|84&^dk;WrU@RC`XQOY&GFkgm2@3tG60ALWO+z5M|S9Z8nRAXuItO za=rDhj?T+PatWdw%I6Sg1&CgV+H8K5`Ey{Uc==DNzOk`(jptPa!h@F1b&@-kgyUSc zprtmlP1a#zAGjbU5Cos2UCD0vnxB`xgp3X@ah>WEe72xNaWySaiRLe8=;sJGxOf=M5CIyRfcjKO0~PtV7X)!OondjvdmBn}FdI96 zP%>h4xqF)>RaPFD3{REy5#kG5iLUuK(3RqY=ECydT>?z2h7+Q&7$cv`c@ zz@PX1M1HhmI+ciEhC0E9qU$oDh~}c6(2-EApt(_pa(-Y!3jZ&sBHId{#DPzPH_F)8 zDfhpxPxUco=A>v4Tt&Oe$39I8=!zur@&0vXD;M1Qt~3z~t!hz#v7bMYKLf$MTCIAG z?T@FkYv~||JF%+u4QiKNxgHzGnzJ(dF8|S?6Pb#l-D?G>rq^D-N=C7mOg#q4LFcKg zg(#FKf;sa0_3BrWdX^IDSPUBjBZ)>YJ$>;KyK?rd#-(L_rsQZKo7M~mR1}}f0>T@g z#wp_uF=QUDL;B*q_Nh3?yK&=jY>5iImMO8;m9A&@5VZCU44e<-UDp^ZfuQS6y$8@D zoleFigEpyv9mSMSDpHYc;$L}$$9BH5C3UKM2bhAyN|;IWlzA3-hDa8&b_$HUks(;I z^RH|dW?}>Vm_KSjh+*FHZ{yNuwAdC&cf!J*ziC^Z0;52 zWNK!`3pF(=YS%*=ka1P)r@X8;#-rWNR@4cJhzu!ZqY|J5S%?hZLQ$kYY4&(Tb+7Qx zjO&g(p;uHCg{7rsV*L)oTjf7PswI)nSUo`G99B>!cF%C7;32%Sv1T6x3M-__66J-N z=T+Ez$h*xn#(N$3SXZw)dhT`dBrR5{{6Sq}Aq!A(nETNh%^P}GEYN%=fNL9Uv@c)2 zRQ0C3RxB_M@4r#6*u7+ptnWDa1r^d;QC6r4%0rnIg&NE==UF|-`Q6B7Ls^RvQ{&6J znh3n}c?%J51s7|MM}cWbDvZNs6>xcM<@KX$kPIC5CZMXG!>*cvz(f_ecTJMa<-!mp z3*z4=fpmz9?T`-N>1M4`Bf)}(e(OtMckiFhqHKvadch=Rh19&$fw80a9^Zl@uIC8^ z#%klZK{M&*@uQ_u-J?g@?N_{>xmWYL_zjxEn>TgH#UY|W`o!`cfOlu`tY&9tH+Oqv zcOWT|Yrpk=++l$-J;86MlQ*8rXlEd2H7jr4Pkk(Jl6F62Z4S@n{HG0J7jB^4c2jCo z54Xe#FQ`y((hd$PD-A~ZXoe#t129OasbvifANC~6EPfh4!Bf%J;b@`TVO4*eP2pE;%Rg`F5EC)n!Wp6af^f2E;-VOrM)5t0q8>x zCqK~f9b{cVS~DnNRtiy$mef?G5qj^fPbrd@3ke!dLSy}4lhS32L%2yqOzj$HsO&6V-KQHTk}xzM6Z8Oc64!ewujU8Se!QRJ!e=k!ya2j^Qj-Nr%ZuGLfZjM`x(+VMdjYlFom0_4E?x zu^&8m08yYg#SQh`At^XRmpz=7w;v-K^u^ipwybB&%my+>G;@nc=5Oc{06=-q{ye`*HYV(!_!Igt&Ar78=tl6z%={Xho~e0nf?D zYDM=eJG8;RNPN5ACRr-HTPDRbwFs=iQ>tuh8jFv!Y`Np^hSXD&x480I^`S$JjrePXK znRSiftF?$UR24)eAAuFLOo$bRP0~NZxYaDBHok zdi5&m6pAE+VveWRHDWf4Y2owTWI=-{8GQriZTorZs1EPbf^d$fd6^KUM4R=H!(Yh6 z-Hug{gdMdIo^L}0{*u&+fHYVoQ6X?qOiWB^%*oTEo#OprBSa|*;@id|=Q8c(j_&Mk z8#B8+X=ZdT`p$s}k=$rvapQ_I6lS#PdRF#6lX3U~mNXF94@(_>mFFcM`!@;CZK^mh z2y<~Y@U{}A4^b&1A{7;^aKEUvkP}WZTmmZ z?BOj(^-gnJ)8nd5Z1dpkUj}4h80vy;kpW$_Y`ghU@m2#lDVHh5uV25UqPTCkrz;nJ z3kgZG;EBs`N(ojppF?-_IzZQtkUDGL$V~iM@bgzFHt{R7R6Xbhz$trR!O&>Sed#CY z3pcRXHmdlJoqK(rkXjWLwB&NBJk@t!WUN6$Up zG)rq!_V3f2gSa#lN)_R>%AH1ZQaCK14~=65v6~ zLZXG*ei99*8%tiNll;@>+XeraL4!MRf)GD_5en~0cV-WFv}03Eh06&laqgH9NDQdn zUr8oMi`BhO{C0w7UiQ%>o931yB?tZdbSD-q%&p!TWW8Zy_2=BduxC&w2OD}v+jE4s zZbd)l+Jwj^SHP>Q^0r{T55CRux3ev)yPWfLzhY@zrpMg+Hav`QeBPt zohxJqAym!n@`jXRpK_-G;0c~@;l;S@E1sV&2pUm}6orGsh-40SzQ+DSSZy)tQ~Jg*Up6e}G_W~*2Q zNL^=ckC8Le7GA{)SzrQlnA;0*|HaS|H7bVW*wb0TPj?!<7risu5uG}XPaN80<;pql zkqeP&6Tk|ijAHM4e_|N+D@y5-NI-(S0hnz1MX5(qlXw(qe1DUJ1?oFylOa3uKHfQD zll3@@$t}8HPH7D?LKt6&?ogI{I$5T?t}-w%K=R{h%7uZDJkn(2pcXl+I9czZ4>!L; z@Qrp;Hq$MK&FSmn_&De+yu8XQST${9eG5z#;};xAErRJ0(+wM^Qaw;UAsbqF;;Pz3 z>A!)}*xO4*tWE9!a~*@~<&<7fl%iju3g#>hAtphxCweUM*O;@$rC56hhS+G>*$E=s zK#QJ29P`2B(sY#=$0ugSE*?i$7K|vHw1y~c;e>$b@nc#xN)G%kS6V^bH&mTGFZ=-) zI9D84!4`QW=PIYvcw;&W!M5`9jV6U--kF)q{EoYmkUm6>I&GBm9gJF$B@?XI{N~#3 z-ApElW{HsJto+#4RiS9gdXuVmkwKVUBq zx|`TgxVlX`rP)3LfUuEgf*pqm2cOz$m9@ZZq8+9aH~05Vl>}^86)H}*C2@kU+G+KY zA5{umh(Q7sAZMBCK{`D)DJdy*%%AixO4mnz7&8otf04)kmkJjt@&%DH`Ifth1qDD* z@ZdD0x=A1v8J#0dlZPA|$U!znnpHGm6039?tNfzkcQl`LH;N^~&!B@m0n!dZ(}IAZ z0cGP1NVG2&CfiNB5?&X1gR=k%S6y6@Zp%@_#{jT_%w6OS&Ir~!ex0)s6B84VI&2sI zfjlLt{_CjV@Vk2NJ4qEHH(Yl^ z(I0tO{{=iexy_(};8JjZ0p1q3w6zt#adt4F2Tqt${Y}%>mPrxdj|{D9zikMEEEDIk zIQq$WFl~XInBP?uDnb9E7?NV~Ef~^J-lsS!QRdl?#XsRz|MLEDv>opuPyG=QoImIW_#`w<;&z9P=#X(X!C>mz_jCS{`sGmP!8jgN zE(qOfn#m9Bky10E0$&0Aq6CQ9M%DaMLNOOjq9e1lZMq5anQ9DbWno}UK_b1y9j$wo zslDyDryNR3nLB;V>5|hQ)%&H3s)ZU*xGjh8~aus`A|#F+<9f+7Y-X$=6JMJl^I)AQBiek7w9? z)@880mTBe!r137+V;FiA!%FTfL#2UezE|?$gXN^J)y~-51nYXLg>%kAFefu=&ygQy zJIqQp3?7m_q)&TvkN>eM=>0hLm~~r1`*`$zmTCjTPjD$21WmY#7_K9}@iJf9} z*<%#op9NW$+)?;x5z`qD46I52`1MD+vVO&y2VA>hH0)21LUD}m0@ni`!gAqT(q)xY;LzOTh-!lJ!Xt#)4?ux+?$5c z2A$zN10`WXO5rp&26(&-{AJ(44H`BU#PvxqAgisb6At3RQ9+o=bhJv}(ZkPks7JE6zgN~N}p7*}FOYYm}h z0L^&jAsnAjTs+d&%F7+ZAvTaVBmgQA;E2`H;+~nLkIJ_8r1=F(y1UVFQ0N*&=>m0K z&X0G7y>kO=Ax4>`tk3o8am)w222u!($Yk^aO-IUOzi?hlsp$-@rz=l)RdQ7uUGG z2lOBdNHbc&S5K*(*|_}-jv9y?xx@V(f)}l`O~J^lJoI>YbR16SK-Hn{ag?fBHrj5XCpgi`$H>rj< zmk6fKcDry*k_vyWs7MM^=29_y;VviptOnhQxx?>Zg5KqLR}%&>lT{bMG^Y_1tX$eZ zT8NF^P{udaFyGZ^CTr$aaCiwueEYfISt4dKj3^ZqvzX;$76S_Ip#U03TldHli6^zu z2rHWxr{>Mf%pjI*hZ8RWos2fjk27Y>%*}~d?-t{+-yVH^@%J3^Dckkq%t-FgkTSWJ z{x{>#v^Xhmw;KzLPv}X5$LrR+$94l&QxyYoj>t(!`0>lze+|FzG{+7)Pges;AF7Wv zjMtW~m-u&gcM}bmK{y1aNrt40sKI!Wx2f=h&h@(MWt>eE?#$sTj>{dLj5ijpW!Keq zu~w=J;!PrSz?#iUwI;?$&|c>1Vs$V^vv0Z|y4fX0oeiVdF)+9EE<*(=dCC;Vj`OYI zAdhp5C2IMdlt4ZRWJ5#~PEW8V8SyK)u|O?WBwN%kCw!$7hP5Ea0Q4KuuKNmGpIeorD?VPn_@%HTx!Vjho zYq&ms-MZ^w*I0_o;2vbH%ZwDLW$JBCR!bl7*9T5hM#N+gP_{q@&$;MC2=^^z{Ogy= zkm5R`@=^9LnAY14mXVIH-Hwt?W*3)`pyA_-N=r-Y`L_}p8XCEg=IR$Ei|U7DE(olW z8OxAKz6*r`{GpwQmfq;c!{kl$Ek9*Fqt0)&f4!L)SQ@Gv?Ie>aI5A^x)b$P|>q#zrKx5KdMP=N`# z4<3X^lDv^&YXsAQ&IrR6&2ypZGD=EhFh{KKVMnXdw;R)wQrNd6InFFIk_2P>z(htz zRVZ*xGSm&tTC756w07ep#fjlwae+7m!!T+)qx*stMMjIV7!372lk;ddn0Q`<5o$P6 zF&CoD?R>~0%eQq2(xVGD$HqNL(kjkd_0mB>>ZM#J!;i;ZPfU>HGlVMO(cR|c4B47# z+&QScpk!vw+;OF@ae>*IE{?=Uf^(;JMTr(NLrL-U(&~IL2MCZtUN>JkJdz_6CQxRr z!_EJAR$aoCk5#@lc|_sUVj23CBCOT@H`+p;8O`Vi$+LW@ARG`Yi8q_5SSU{i-kHzc zQyVYh-|j>muSF8e7js}&A?uNjW|mOcZ!y|_>ap{{j6U?p&8x=-do{5sFF^5@BDhIT ztsG@F?8UtgCOthbg~v$dm1aw5!86N^)9~n*8x4%7=PTbga1`66MOqnmyvGtnclhb> zscpIF0L)sZYKKZ)(DERJ3qllcsX!@O>EIRqvquQK z&_s?!(O)V}Y~Ma>&#QD64A>Wi>0`4(7X-oaU^5gST1uCCv=^u)3Dpl;A)(b=h7P#`)4t9WQ}RE18`^$db>5M2G6 z(rgfV2FMADpdFBJVOu(8^!_0qpcz1ih60Hm5UOBru zWeS&XZEk+wohU)U@Aw^NEznu4=A|Ijj{Ke$acSv3?zqL@*Bvoj?wn-h+AlbmNhbF= z)E&Bw_!nS6*md}gd-|W=69E>3=0>6F5 zcqqqxgLgki$avHcqS zI41_?YuXYo{rbC+w}}PtG()BM8)yR`Iy=?zDqwIR#%cWt6x$R{wyCQyBOaHP@uj(; zd1n~*;q2Vp*U->`xW@cZwKCQD^IIlNthaBtg9F>XY_niVVahbhFo3!iH1!JeC;SqW zzP>&>#>|wIYGY2LFXHy!W@-h%Uv*O(L2`}bW#KRrWH(ss?!W8@a8$nG1p!=ca}>KO zmmin?1v|94FCXMEIvynBuOkqkg{ky2??zcLgkwR>ghe+U<2m2-5ricqOrP<^Wr9|f zFixNRL0J=IKvI-a-Zhx_1jANO6%~`-vF|MU{%L&A{3YU=KA=R0$19n^5fO-?3KXSb zWF!)1lD~w6G{CQQNkSfF_%5xZ&%r!|O?Y=xl=Zk(Tu973?0Tedp6C6Vt(xUzMBNh6 zgvm1`P^QfieT4bk8pYIijhmZ04032W(Bxqn=i1Xk(=l;L$sX?TO~ThbN!x`SZV3=i zfE*W$uB44FtAJw&8I5J$#KoT=XAG*9mA4hds)kDgJ*s{0lRqTjY0d$QL^V)sr3Yh0 zX*SoVK7ay*fs8*sxz+oTvYvO5;!fjleQMtizJRqh(tJJ|q~{+Q!N~G%(03yxuLZ!% z&YRU&j!q^n0%K#T0c-vbzWy?-%JpmGg(sa75`wf+N{BQQ2?6rCUj*1x4u& zX-Vl4M5Ls<47xktG1vdu$Gbo64{NPsAqj`$g=JOgNHlS&{dYE2Pu15<-;T2` zvjJ*hP2aHA`+@ogiKFzP_400Nw#Dz)u7bLp3pi@?RMPx@I3sLrZ9j?o)?vR1Vv`5G zEgWyd{`_y>3z#}mQs_{xqXr`L`lCd-ol%n{BKi* zQ+ueT{f)>6PEo?COCp~o5uD7!h%PPt2PgQy7-P3(Aje5v5SywT%MhJ{!Uz$Lc?$ynp+h&FhM%dh2s+I;qf&|Dtd+s&=ghI~X+5s~Qi!&%R_u2^V zq4uWYB|PFG&_H3Qyz>2XRvDEkQaJPD^!xxKTqp)Cw8ABe=)K%;sEIR<>qkkW#h=|bypcN&v1fe$zOuR4|qnBTg8 z{$v&rfysQjz2$$E^!xX7)DbLL)GDLc9;o_AK9IBND?tpyow2diC^1GB^&6`M+zEi= zJtzwjkHWnHcn05=;LVQX3EzTd*TQ1*H`)^MpQ*pZAa^2Nr27?O9qeQeuk~^#+Mij% zxUuD^n=S1(BPJf>`LwMG1q3+i zbVDT$^*(ndFmO#`@ckcyS{?%^-|F!)UN-SOn~^jEXL|DDSq3lNLtS8K-Ur%bJm3DXimKG_b{A!LW9 z6NCjIH|Rfp#UZ25NApwWOtxnAOT-*~=qK|}D49D-*qF#Y=A?EmyAh*{JC@@~0A-8n zCanbs>>b*frIL%l=7a#{l+)xo#wH}~UQqFXvJad|kT7F1Cy(6VML-=LN@}P)2|^lw zn!_4FdA6W4*oUU;Tx|A@L*~k;j5korhHcc=riJAQVs2i`qQH1pB+8R(dWcUCGKo4%{Vk;W3)PsT_o;7*^ zNQKIgMWB_dITe7=9E|PY9CK`cE>(L2Rn&yQ8h{hEC_Qo}KK#4IRq1vonA`-vY*MQ;m32Hvz4&5MWx4}JncQYP;V0EYkqV~<1`XQj^ z)oeAO0{;Ju-O^zeAZea3oZLlhbVavkS2FLe?!qd+CWb)kmaW7mk(6YD zri53XPnG;nhgO3va;u8}Ss1O=L zu@BZmxz=ehEu(_#%!^PId;QiDQ$z-2wyfotuz2?hdX5u-9s8YO1QK z4L&0XE)?~Pd|#Q2s}pxU8NJfyY3I(8(^#w_1RqQ0+cu>hQngsUU1$%~-~=56>(8N> zn`g)dY?5`m{(357D-HqS_gVGP>XyarW51^s>%h*XRj7@|WBrSn5L?|(L$%iRpbdu!ezBj=H zSd51yXk53f{G00!u0O)$IA9-#a1-|kQiFMj;@cqsJDJ(?16vD|@;j=J-xpRv#A9^> zN+sw65?`8uGay_ArGE%l^6iS4zjG|duf>lfpsfl7N`?J3SiLD3{;lnQ2%U~QESStO z`Ww_@1CTYqsR$^P6;VgYzjoG6_5Leqh7i#KF>ZrG0k;PA{Q#@!1MkJ(c>4=L!=Wm0 zV8w?$YR>n_u;L$u?1H2J84VN|j*pMQMy-3e<#;hH)wbuMhc?btlmyfj;bMq8_L08f z(yicsx&E6XXu`yy3)TsoUKKP6sPifv(GlTnHJxz-k|qO`_^1T>zmU6l*5UtZe5d;> zC@mG6*cEKX+mMZb4w@E~%aN%(Xayq8cc|@8O`T28#VnVBL4nJ&`RBJdMj7)X)C{_G)Bh|d%fAI6j0`{dIKsnW458TRaN*k?pe0b(-z#c!g^dK^RD0?aDlS%6 zZzqJ9krLhXCa04IV+%;tC9@iL;`w|*ZhD``CLOyw$jO)cpvnrKCX9UJvo&jopCSc7Vuy#2DJ$w^FXI0uU-X zh)@`SX%*7OUuZJ54Mq!%Wg>RZKbWWPCqw?5@Rw{J*Qp1bqSX+f%%iGIrKJ+qp1!_f zusy_Lze)67FYf}>n_XRZaz`qZkE=f44g)>Sx3?6)Fj&lP{W;Ux|5c)A`(7KD3*O4> zCyo$@_Qj}wd| zeALgO&m(Oj-JpZnFc01&Fopvr_UTqP8H}q`zf zjv2a(*h^$CffLI_VUV)etnw2ipNM6OL4_qS4l4te5cC1wzjnczin!&2+C??lpyDaethjtVZ4APOWOp-}s8c`bCM&C^e4juO5Ses=MEm2-g}WD|>f zjcFR@1-Axh$1Bf4HvnlI=0^;EMYf=|7jMu}ha~93x47;PikN{#uksB5Lu%notgO>#UX=u{0CJ)rYuSvJy|zE8v5jfW$OmSU@^`^K~u}r zvt$7vY@wzUEwVnz_$&>D)gN15Nb(lcQzYNLdk4e~0iih`J~);7w>+4I@HyY!< zj|YV;6uOx7xbE=0L1-W#pcB&fYXF8#av}s6#{L%qPZO7PoH*6T%Eu| zkB0^TNKh9+{x^zzJH++VC=A$f3+22FHBJm(DXAb}8P{$op4e?43C+O>BjIu?K;LG# zI>teXeBk8HsKR<4Wo-SxMR(NZynE}@x>7UKrZ_a@M~cMuJmVQQU=sP z(>IM4fShj5%&eWZKy(M{!2R%b)K<}_2ab7wSSUpk>(D*Q8@vCaN5&b!Gwze%kcadlL_1g zzamSJEfl`DLE$?e?SFn75-~YAo;;u$YIdntif0#TApdTd&iofXSD}Wh4Hx7T^L!|XCEbvQhuhO`|S_PLFo&? zK_S3iK$*h8=716xe+7w2RTLX$I%NO?ECVhCYi_^xAaDRhC;I;d4)uRU^?Qi!nW^qG zihtaG1(B{W8(6gw@%-^9LMe<3=2N!15#S|yzbv4X1kr=>)v3;pA3w&yUucz&N_-!&MZjPn`BzkcDB?gHrj!)9;E?G7<>j_;#l*VXjX{Eb z(shc6=I&-`@&K^Uo4D#y#|b||?XMLez5uQCN!1CE=z!Ni7RM?TJPNC^A>{GOY2uAq zYrfmBk~6PQ4z0L!;B>f$p*yKe&_lX_(ww5c^k=@%FYu%4$M9Z zG^l@sU6x6JP4joNeha{+<=#gQ=NA`MQS35tO{BhPP!3EPeADYa0J>735hrcde+HY; zV1}9GFaouz&nkM6-HZ16x>63v@9-s6+~QhAG>==2M&OB%RwG|`tA{K__z9e}$BM`1 zaiY$~ArJq>{&cOl$5_tG3duCf1i@O{$~1&%QXJgQ_*5t`HJpDYJ1=z(<|y0%;d(bp zUa`;~nscC1OA8>+wD02o9nHtT%w)%3+Z*HKw}29J5Q&sk3)~#U3=U1liv+0nTih23 z#6c0zX~X--lx=MH-Wxrvf&G-~pqH2>{2O|{nO49E6=}~O2PmeMn=)(1$^qfl6BsX`qglEBE64iljDzLiEmuE7os`!$ z{@?r%b(roV?TJ#gZ0^GU_i?Df|L2zBf?Hjvt6b?&Md5Ru3iJWG^*b|x{|`YE2+;!p z@Xhc-Mv<>cEPElog`;m#1-BRG|2V3mUTRlU*k^%nXdjvIl@PevGNSLAFQt-0Q%%L5 zf`Z+36bTs4_qPS)0Nn^cARt3WLSetdbD3r$0fcLt=PSy^S(S-^6)6yx@{w%#-(y43 zNc-A9cH9p@GFH}CqJI#K|7GIHIBN_)58BoQD1H3TZfg9uZU}aEo7O6cDEPpOC|f53B+B83KU0Yr{i^y0F4o2e4#-;b;Z6 z-_u8jpwfWbyM}_;kE#O&=L~%>ul|kK;Q@5<;kGRj_`z;JcINm}<5?ngsM8Qs2C>RDNge~#u@ww}a*dX+IKc-<4QGC?*S zE$wVY_a`3EvlakwaM*N%6EW0~{SN@04RPzL{Q(N);2N)iLTeY`#{Bm2ndxeuS#CRqqX@B)FS10%H&Si2Xr^Ii?a~h zpc_2l-BSQ1b0pyfP|7p^WBIAUcozJI`ZYZ{)80XWpSs9Ef~9-EOT^t#G7`8@6la4? zo=EYLGrP~u#*LpzLMo73qkKvT`sFJGcH_eeS}Chmz*;)aKIn~>W-@qhfWdB{;)}H$ zX>u62>T}?HDHyg+RPI~V>xKM`wSZrh@e8yc;qq6fAmmk2MToY|Vu!f&RM{I!qoNx<6E;QxRnm?iPA zu9wFhq)UVfeW^7OVBJdq_p?BogTv^Zqt|lnQi8`b&2J`R%XBKQ%>O=Znjn|6FyRG8 zk%tl2<>@S;oY2DrJQ5Ou!N&QXq zeTi4}I#MqE)mI`2XEbM8JK=HeGh_-NS@_t!NWdnP_!n+tArZ#*zej2&UH+y$ayGGA zse5ZLU2}LgKWQ{uj5M1}NDOz0m4;-vw_nPZ?P3WxJTmm#=o;|-(Ov4#i1D{Cz_nty z%aHpOMvv)U=;}4eywJX-jJw46Zs(_yy)R8Bk4Q$A8s<(vK@Fm!+|Mj&>z|AKn!%^Esrh0ZV+OXDP}(e{EEssd(!S9qzX>rH!lwQi&A!Ry(v zmhH1dV}GG@ap5}Z!@f`v4U^+Wk`MSVS)~oB75$XBcKy72jWnZ2tNK=4Y|uP2{e%i? zK1`PrUiy-ryC>>Nx+N8*YCB*+wEt zf;a&=diK=b%rp%cBa2Q$II0@i;@s2MPDIoD4+gd@aODw=Mq-Bbhf2EV!XGad7B1!) z3b@_J=UoEvX(F61@?uVIbNUcop4FSFEYFWJFj?z*pEE0490nF%VHnR5air-u3i)5N zHcM$LJPz=Pc=d?fKL<$jpMjhJXLpypzwd3-88aC~g3yDP_sdEXNv6mhgeboL?epV& zy>r*P$6{i7wFI25s{(HQERv_@s_|&%dCTeBdjzZ37;~d1KV>p&`1(u~+U(%i5E$56 z#4jV&8Xr0CEXCB*vo;f{&7|yV_diu+sI|_O$z&@F3UB0F<7xJ5+MTnNr!gb0ur)+&| zwLriAS_At0Tlb8ks(<1gZ9~9M}CVitxr64eNF+$&yM4+%CjbD$Wcoi&5cO&TD=45>WW2Ao!iC_Kraf&yWGUl zX_ISSp|IW6DBaLlZ>9_x^YeMJgR|M{b{k1=C z<&wehCbK2?DnF0?;@13b&HVRA+t;-8_rCat43Jl4$zJI*8d&%UbFjHRc#?)W*7r)K zG$eUsU}ah*V{*gorkg-nUmekzswlSfnPR(J_9-spB!q813>is{Lz@gPJE@Fxl)c0m(JQSWZJq zLa1Z1;@c0O3N}bQYNXsc?H}IRC!{wntPx8g;`Yb58{HD(-fye1FuM>h6mKRv6Ypk^ z0+KDBFFilL0c()u??J6^F-+2^!mDAu8w&oRcckh~<|U=lepEIJY-N^Lm3$gMcapY^irt@ypW@dGo5YML!L@ z<100OrlXo}oQKHOAe57ZV^R8ac>8<+Xoub+l5mU$k)FTG*GnJ>;o;-k)Uhxp8#@jT z?cxXQE94vx{m8jjxJP`ok6D!Bs+@$oM}%QjliC7lGzzjMyK|$e=Mp}?RtSceKL?!V za~sw{g~Ij6Ka{E&@El1FpugBiR;?t+qTVzrJR~yOCD;6ucEB2y79ytZ+tIzCY!84k z5ZNx@m?%XFPe|GtpP+fXPE5QBQea8Np9Nj2dw}NT;VGL?a#0m;Zr_J5I~Ur`9VR?H05v)#T2b)3 zm`D>Brvc17swD>ywugkiI3{f>;JUv!7lsZtwGn8`M4VMIRhamEmCB3vAJpC02K00W zXn$6HUT5?llpT;!?Z{OHDsy~0=_)TbF`F{S@I&sCp&TKr-%5Y17&8TVPhRFAFF((q zBQX>`r7!B&g1%0CTj^#CA+hBB&25z*G*X&8(gP!py@aFlSxw~=PFb~Mr?F7NNNV~2 zKoin{zgKicYxqUh)JTS&IkKYYt*G^{`f45N%4slYfvQd^-l}Vv7d7prakA=#v_l+A zYcm&wX>v)1IJMx#K8)X37)`CI?mi55vV_AC=mO9k!Ki0d6yh76QAhH5cep@F#l=LV zVV3yrOVe>Nr#ZJ}ajcS4VuKxST3!5?mdWSH1%7&8eBChZ`s317T3{ImOeN%3gjBXX zD<`p1^?t)pEF%9x^~=!h3(J50Fj}Hb@3$v6*)t*0!*lHQ=41&ttI7_!4kF%E9gh7W zoiW)r9_e#kySnE6udpZY-s_Hx=90XjhiPjqrW*R_WT7oBD;sC@4^ZJ~Wym1mjSFh= z`bS)tqLB}l6o3N6GfXY4_i}i}*)3ty0xEcyu7k}3DH&80QZAAo>ddZ21B_+%?&Y{~ z{N4)im3Td2Y#+%XiZD&dnCm5Z_q&1iExI`llNmSpW{7mNq+tOv)K}4wy%&AXN%u<7 z$8)c=RDqVL`HWI=HgDFUIf>D|@ia%&m-krVpQ0sT^}LnD}2fVFkGdPd*#J4Av8t&21l`wz1V+;C_6Q=w!-t&^W_{ zjlE0R9;Z`!%Qn3l6W>kpDG|SRs+WZAtSUiE%yS4my>5HpNacn5`8GAt)+q-~Uo&yk zl#|9)deu-|w#nuCJSg#&Dy@yOvak}35F)oXaJ#SfNOU1BrbgEH9#X91P-2hv$Sh5L z%w4ztwCheEDo4;$$O|+YYg zB5nBT^r%o+!`^VJX8X5&(nTv9`4_)a*NII>|B5RUtNegIvf&Lj!jRvw0hzNB6pi$Y zIMutMFC!fDk&Mk&WV@GCTO}ZwMl)(2ifEOzLltLyIJ6EI^bFbQvQhdH`trs}zNW1@b8I zi9I}E>g;q3uq~60F449VEQmxggl<@L>DcUyt=*)$BCcX77D%b=bKy!Rv6u8)3li2R zHDt^!^)gi4vQ;_7a0EoGi24Szx@ut`Q$wlGoCrk#&8`p+aOc0={jx3SvG==-?Q31n z$iEB9pyg%d2SigrGr4YWzn?!8)6!2asNOxOd(`NlWKmAS4aO#>zHjMMBL(4t{`skk z-7|>B67iMF$6yA6R1y>>)G5MsT1h2#MZYHw`qhC<0)z>Kll1Ae2ZG1s4Wd&SJ*S45wD!kRZCv5WlEWi^87@-?(tl#^Fu5YANk`q1`_Gv{xI-cpyjo zc9^+QJZYCw1sdd8R6&|B;^uc~>vNvb&p<^!(^e%R6;`eDE{6!M>QJfbhMj@`viEJm zONpw`ViE^b7sI|_WgMMG;);;ZSuJ#petvuEm=1Ta8nxORcw)8q>JK~DB4%%5_gJ=FGgdb?o~zUY`TOw1>Nw#4 zPSg+{X(KUCTzuP(%@EcGW(^@S^sV z2LVkIzDyv&EJz-}G$>sQzJL3qr?@JWOB~04-46T`-mFGY$WoKcD5PXO>wmE9Dd3V+ zM3io~t5&*F{9Vg?ulm`%JLsHHwFiX+Jf1nUr#*rr$s=qhhF~3st zS(QHUO3F)p7yuPRvP$>kb|8K1gjkSM^=F@t{>?~B2Ny?I$v?glpZhm1v0qZxj%~?;dpy^w|}w~t$YO~ zVJBO(<5s1VM^sLKe(}MPo%)sG0dIDcb{<#ZJ)F6+(a1428Jt@%`TK^~Y;^ZA_v=a~ z_@BUtrKjI73uz77R?Wd#n7_gEM{65TJ0bFNt+f9v*fv%kw>M>OS`$uwe|5f^$u!bu z4jM4}i;la3dEr;;dY#GOE$S&~=-$O-BUMd(C>gL%3H|oaSc3!F4hF7{cxMtxnwjK+ zNcyseOqY41)Nnqu=Bw%Dk+zwk`Y)WAKV%~#j2V?+@>4){E2{2WN`F8jPi&PUgWGRj z(UK^XzNIwJkl}ih$sh{#Mf$ssUFXNw-|MlFw!Jhj4LapL*e@knWd0A|>Xt>!arfEN zaw~ebdQfXic`%=S)_JNn^M>N=E>u|;$zd>NUei2t%{<+902cAWr^BCt$y%Cu2J)^- zk)zf@PEX)-1}UGNNsW+xB~lGL{LqNsREJe(OoS(0seC)A=N)XO)g&`CgcjrVl55OT zE_OtsoSrxTO5j5FbL9{`?#FXr|7k`#jPg4Vk5naA+)?SvC?k(%`0VA6Z;x7uiKY7P z9_-{^1q{+~r(v-&*n?JS5p`L`9mGNHSFaMEQHMz3T5@#1cE6|YJ#BpT37O_NqP8qf zv5y@S1z5_*(6?hydl5T7Fa7W$A6@{GNcI&MLwix{>dM>-0n>&0V_JNe2;mY;9n?_A zlA!@Uc`F;Ud?T)52?lwa2rbd^CH=t%LF~(9j6pG#`a0l#ii^Lvs~e^f3pm~X=&T^u zSPc~LhT=(!I)R0ReIVXK-`m5MD~G_$8J^3hR9-^MDsv%&>rm88mVx)CpbqF;+`d@9 zJL5M^j%rqy*3&Xd6sHuWYU2{0xysjwXrz~5I-KK&%ndz*X)MeKwN1qEQ#*1k0d@7E zuy30!3yAv6c_;Q|mw8*kXM(G52)A#wOoer)cWtV&msXfmaA*pRmx<7h)8czl93Y1E z*N303lWPk&Rc5BXMRHIkVT8}T8rf`lrg2p@NpUl2v#@95t(0QAQ1^l#bLbiAre$Y; z&*Oj^Jc)Z4@XG<%g(<6#XeDH^I232H{o2t1XUk;yN|b$);4+qH zlX{!LebcZ1kt{c6M?mWve0d7g&CJkNkW7}YeYc064QJz?uG3% z&giV$^XV>;v~TdKKNU%_1HtgdUHst$Y4Z}j?XiS{c68Z;pf4EnG(<*dP|0!Qh&L}h zO7Xo&oWURU+9q<@bkol&f5bIDP;kX&c{WSyrhC9!SA?ly>UWo61)mCbuvet;;4wG@-Pqh4Be%WWBp|QPTOE z+>f<#4*XZMtUij^ZRfo*m>#B8qWKPGY6dfpJyWpirCWQf7~w?&{^41L*-Q5L5#4-; zN)fKBHw_V9ndpsg2o9Ns=OPjwM#H;#K5QyT6?IYAWjA2P`?>#9q?e1Nk*t_VPSx{- zVKp_&jNHLT_F31u@S4jXH4^zd-j3A9IT-!hczOO4d`d*?T}C9!_RM0)7!nDx3_l|f za4dX5y3rS8*A0f$Jn7Hpj#XTz=>4`5i|Lirw<0#R;RfP83{f!ABs ziK}Eu67hrUTeXStq({nouoVNtO8!;OX{eJQXs6^+a^QTB>O8X9dB#&9#zx?lzlP2B z&?H$8_XE9VxKOEN*jnjdb@D1JJf&AL&#NBamB94=_s|sEC5e#Lc>MJKx^YppPwG1& z;csavVJ-)aXR`TNrjkW^lJ6}F#6D+veU9ey54xSi=%1vgc_N$tG+Kc=rzv`|(FRSk zR>9Y?70=0vOSout?N;6A6PiM0x*<05>)3@?mfN=FpPK33@+LMbJF3rlo4r4sjhHp5 z30Sl`xnlbws!6YAd}Bh|{yvd1gu5-GxIc)bp5*GSkCK1B@<%IQC1GQA3|lE|5~`Q& z4bJ>qf<*sHvoLV8OtbKtMjJ_0%!~1nTMw**^jrilYLfqa^sLJ1!q<<}8yI^p-B}aU zyfn6WBpk=E->7y$O}V9UL_t+(@pd!k(&5FryOyJ-e+`sF|A?#_G|l8n{*Ya5(p$-1 z8emM3?kJsH-J41Qbv*s#>J9ehFR4#^Ds;b=ew^m566o!EZlyhc{E^Tll86!7JpSe} zCd8(Df1rJn(@oxnlYESS(R`R}-k!N_F5JYJ?@?nEc2deJcGBrnhha0GW!wV+GU{bn z%>Zb^Wc2Zx7oiuOS0hoDQRqyDs%80*RfUG;$m8N~hqh{e%+!yT%-igS%?6}vn{TiN z(lf-NHO_v;C`Z!bA83mjb?L3b-v-r>tQvcXb$0&e*vwUIxCG4+{hj+XkHfdw1b(IQ zNbuEZ_`}Fd%{u}&*1*2V(BppYhctu!2;nEygwli-vk|h(oY$LRsbfiCU?xh z&a#Trzv(zajo(y^k8#PLjV#?SNtO3_|r%gl`nUsc? zgRA|cqllfr;mi*8JW9qS%R-5sPMiD(Mb+=_zMa&gksv`D;$EuRs1=Nlq$TM;On8xVEcw&9Ns*w}?9DQ*+LzwKvSb;=BdWTu_ZHYpxsgsx;ghE*hr^RyDv9@ZJ5#N*GLW#ZU$kl|jA-pa8gr@Avxzs=n`cS}_W2KV^ z{L2yZd$oIab>f5mLs*6~{45rwecll5vvPOf1jdDPWFYm_`WI)gIH&YGa+6;~c+t5V zCjZ#DkzKh;z9ZtlJ$}>l-xZ@{xSq>zhk#wXFa|;aESo~Qe1`KB?x5DIJY|tQ;bG!~ zstS|-qt#G{$6xd~W!!Z1TctFHDRVx~TFz1Dl>gPWHEAgydXJNClHgUx&rFSs)=){> z{6x^&ZBwe4H8!!aRI~bHn3B2ii9L1EouKIhn>Ag9KhSn5!WxB@@0-mmnf{S-HoKDxf!(L9 z>gf}?f@Yeh3V!z21kVb&UWSf+j*b*38IrsBrK%6l{P5#v%Aan9r&p%-s`~qSNLlX( zLbPXe#-)_`;!LYsahdtWi%i`%mwO+(p$W#|^*e|h#Djag1j9S;NBMXE?sAIjd53YU zp*488I(l_tRUO~V^W7GvUB#K-A#Odz|NgX?(i?_R@c5euaURzXNXkSK%bo?*W*-ln zf?}U8g3BKURkFvN%FT7q19&QGCL?{!`3K+KfAurS@W?ER1KK-9~*LnPhKFEhnrO>@KPkvQ&6n z>J=L$_PMKaesAj?#6Qy{KB!zescyjQ&lxMst5$i=Q&8NMDf>3lh*d+|HluP>>Z$#0 z^D1r0M&+k@8uxVWFApnd77;RdZ2o zoNI!j0+E9F95ngXl?z+u9bI;SgNDs?V1;pfEF!u)U}O`1K)P%%RjPAjTfs3bIGLYc z^G;t|&fzH?Y{PdTimKueCdaB!QyDL>P)upNz}*wluq@Zma%3sZeARAVMSG_-FTXAp z_I8UvdgFT-eipaiX3m@Q&YSU?@U9kEm#NQ~Natb1J&aD92&;J#JyMdNg0+FK9g0z? z$S^4!(L#WJ?IufB*Df*v!DIwl#J%L(zB2E8hw9`(-FOpU-R%E zdHDIJ^2{BTJPgOIg=`{6%l4^kHl~h*AXQ^z@Y#~Ny6B9+ByIeNo^Fa(TizP6X;tC3 zkI~(dc4b0%8BK)pL@dbfNw9WD3gT2z(zr&txgZY?Tq$X^lU_I1kow=tn%tTFYgHFA zoj+#Azsy6uuOwj{XB1k~9RN=#VK5-!iHboPF?^KFvA4(t^2H7Z>WQ#asP&6wiN2h| zy5m!EfXh(S_jl62GzZ?d&O!9j+smC@E-hRkXCLx_-q0T>&N^te#PRAwZwEJ{v#;(JYgrgpt08ZaVDyXtfYC$d!2;MrKPISZ9(egIFg{W ziN`e`B~MwghlIqBi$XlF(*?q8hn_FWq-4L_^J<9yeDbV6>8TMds2H#H%{F*&FX)5z z*1d&{(rUFKlcm-jL)84AWnH<(i3#G8pdqS#WNP9s42gTUuZ~TLVU~H?sUwXZowSf< zifN5L^>p4b5`XIck<{9>!9@uYjbvf&Y!bQvR3aM-9nLbGQwl^Hl8%}$V{@oa9`Kfn zCLBarU!}I$7qx!wy9+UhS-FT4JARYJZJ3Kjtgc?o6&tOVRif-A4jne`>Fg%FpBs66 zdqeoDr)irLbGZEbwCj;oCJ=)Ean*LcDV;@MY9<7MusCZwH6P?#{CafD2X(m%52KEv z&NsYQt(t}MKuH7(i@eP+ljhykBHaz5h6rpIBqUv`dS)5fol@3Hw{yBe^zRf~XG44q z@lUsDlS?>Wc0*s=>l7@0y`t%OgZ>T|QPRs_A_`%1s0>+Uh%oD zGb_e*>HMm3_TqAY%i(SdzJLibxKy@u2=?iFN+IaOWa9=4n?*7e5BemNBh^A_wq7!#b_7NEg96v!AW z7$Ve*j>OO&vdXG!eY?c3!-C^My>le^>?J#VrX5k0d(OuA_%k9|``~Mb_f2`1lV%Ga zmfjv8lW8eGTC^2}v=ySwtf7a2T69f|9;r)>f)vC5Y-sF<`6u%$#;wXyJ@bhxVC76e zt5AzpE4}o;85Q|Y+p$Vx%1U%2hDn??@Ki4_HN>p_MSgJQX@gOoXmu1R3@nSll9hi> z=U3x4Iy}p+HpHr-$l4M^HMm`vElOh2jS*fAN+G$62gklxiGFN%SBFz`kaWk15yzg? zQ3vt@B)`q1@-+0PKHn_r3ORLBok_pE{6x5VRo|R|7x%Dhr?8hI-gt|Hmd5DM&-VP| zPuGG@3&rf(FM6}(ut+}K3`t9f{dJSzQ?S;#;~ptI+uZ#(f36;}R#+eK{^;rHJN9P{ zV*Br%U%#>5einyae&WRPvWCvw-H76$IO}z3UuSlF7>qFUGr!Ef?cHp7Q4~`?IXoNs zN}Tmwn-40%6GN6+H!UT<(;H>ryj}XG$=afLsrb3L#X;bN-N2HW;Jlf7*P=SPtEw$S z++?Q3K;gIO(}hw>4v3t+!jbdqvAbSTAI2*3TICx@l*>v#IZ5zYlU@>TK4+co4_B3V zIb<+kkwxFAEC+u)Q;wcDm`jNnsV%3$kr6%d7=C6BiD)K2#begMNiWKEGgj7dntOrt zE+!R)?S{krFlg~giR6i0^do`=nZcgP=mupSg7)_y%)}?oN-WWl34S5T_0e5e&?U@dNRe0~K zZza`X+N1gf)|&dqc2{$=DRQ!|ss4zoJ_KJ2Ax{8inX;rg4QD1rr4+GAM_GPGftn5Z z!@x*N4$4S2`T~y?xS&mOh1Y}S%64bvs2r@uzO`Qg*QBb-lX zX6U!x3b#E-d$}p{Q}n3m=<8GupSx%2;XfIzpqH#3Aa15L6ToQ7ENTUYW>glC8j+BjIC^O4<8 ztQ!7xvfbbF>=xz2XLmaTJ3rJZe!IobZ@WFzKb31vQ+0j~q5YTZET&i;t>6=t9{Q#b zf7azc=B7J0<;xWb>-75tAc{F%_RU&d-r|%_>qy9_t$_akHs+jMv>VgZ@gNSG;yB$_glg9fAGU`wgHcg zEzd3QX{8nE=4>MeA%N=oZ)w71MwI9Mup*OuBlFs{J>+4rHi5ZbF{Mq_P2dgNx!)|% z#0PJ8<15q+73JMuRcL_+6c!m748C?~S{GGW$v-?cW(H1>5TeKf6ZoraDyf(V=%6Ca zDL6UzG=iFtAvD7EXFgfW^0JktmX>MvJC<7KC2SD7ycY95tn}mwD(`wIBW3)q?r4a& zGnGr6hN0+QcS8T~`B^*{MthEW)O@_j2wv3h zP*Z35<7RWXsC?MrSkSe-8Hs(gHHS0s#c_KrpUV3X9u3{##hl<@whj@r_1AzJLjJa|`sWxq z8jG8?OqKmx+n6e=xo7Ntf0WN3+4<@4f0uq=89|L26cL1M0Y4eD)$f3!p7Fi>H9Gm4 z<&7RoLJyilpGIGr!^1yjGvN&ArvJNfAMBX_uV*rD_BK4c9gMu*(xI(XW-1Y6lD8?Y zUw;jX>Z&{aKYqNH%J8_mx2$x)>Fl_4Rcg=&f30+&s%eFxms;<`sK3Z*Ok^HZB1~6h?yBt3KLLa1(nk zA9Y31VGMj-Dm!R0v#`L1CJdm)$A)PVq+KX5e0N#Z&re+D7O9Pm4Iv%=8rrcE6Mk5>~TGRR0~JKqM|yXk?9U#>m`}5XVlhG!9|mG z>esp4LAi=edJ_e<_x9SM_b(u4?|?^1V(8C(R**$QOM6VjbgeT+cXu}x;6OpHPe@Dc zZIB{DXaw$B#Aqt~N$Z@tKRm?l)(EbQ#;!ot{rh64sxb^(F+FhQiXwYB%* z^VOxL19>h%pz*Nz@}RVPdO8`Nr`7)QAY7*$AcHX_9Z}t34I91QBL;v9#}39V7!KwZ z7S~DD9zDYL^z@9?yvw4Zq5=r8Vk0|(8{Ew9?(Sd8%F-_{&NN=U;1v)Q#GlK{&W-{6 zpgr^=kC$iZe$JZ+A|U}Gp`p)Oh2IAUV`*t=ttP&h8|t|ikEz*$?wkDj^0H29Z zOq|R)spuQpXfLKix`ZKAp`i>ZX^Mn@Ds=5-S#Jm9TsBM|)APT7El$^rujBIV`R`*E{A@CdAc{5waqjbl@}P8$0ti%DN!|K|N? zL8^1m=t~)<*iiTd;My}|Vn|R=p*0X^sAkTOBf@`UQs5@M6LjuMWEU-Cn8<%YH4ZV?M*g%3t?enfFA48v|vJGipenLjD8T06e15!> z*Hn_6ob0sFhJ~W_&_z`MPX(51v4fKexx&K2c9f&3_UqTy*;#sEa=_&T78i3Vr#^Ud zujv?l&S&o$?1i@#_gZln7&$lyV19RigTeV1)zwu50)7*ks*WagEq)6xH)%yr7W1a0r>Fl24>>U@2@L`K5i2XJ z78n;`unq!q@I&qd=>p9~7&GXI_z$Q#ie9KwO1U~+X-&p_9WRPj!z#q(IEI!G%jDuSs~vD5+Kvey|vYlFH4xUObQE|o}RXX9uZ#UrN+%oO1>~NWMqCXE$t0dBmhs9 z5us^lSgb=&ORESth>`!E+zNmdMmYcj!-mk*)0=d-fQgP70IfXfZ*D=~dOSqIh)sqa z7)XDwtV}qh{B$}dWL!h7rJP(`!Tk^y$ru{a!Ai0Ku_Yi`+Pk`Nfb$2P#~$TvneXlG zkzJOQmUe;v7MRnHlH3Ud?ZBdRI@vWhZCGEo!^FmJ>+Z&T@s$?#Ap6aw7p|_s@87@Q zo){b?ot>S9q2y%_{~z7RO)twD$8_%=aRRrY6pX3gFGQe$cQj0^C0OSX2w2WgQ&re) zoeGwcR}iN{XL))sR;q~6k3NHb(Zb$`oPDWc;c#(`oScNDq@=Ze7f5)L5EK(YU*iY{ zDk@x}l7m3&s6t3adK7l%deF z%YiWStuUEez*Uee(3C3BTpcM^Wmi>KM@PU^?1YQV7_@@!IsvdI2L%N&N=Pt3Z=>OHw`%Ts|lfVB!u28`xr{VKNvdm*_;-k6?T#=?LFAt zMMq@JG4c_6#ROn2-d;8QB&C1Hk_Wphctd$HR_G|vNbqY+t#Py1-DtUz+ zkR=!W>__|^K!?geH#49|1OkpZtGryTbkH(m!7AYqFNfBE}NC>rx&do8P9FO2)=H=y0 zoqPa(d3=OE)ARFj{rvnMtEl)tr!Af` zNY9x8OovYr^9d}NxcKu+RgCFF0#N@fi{ z;H8A9Z+~OzhE9or^^nQh%?Zcm3rbjkbQ?VGL+{G@&CMuy8sLX{Kmaebtg=$Z*Y`rY zYv=F~JAkOmR3-W`^J`ts&OjXEboBx!7#5AL{ve|b`}WMk%d4%k6T7dk&+8~cP)KNL ze`UyiH8MI{PFtIjmyZwJ&7a-1!^EzT-n5%@%?z+{KwoHd&ASvZf7OhPxP6Ra#{`{l zhIp{lE7%~+Aavy6;|m0s8gz|w`v3KHtx-*0S@eqnK|qm5BnUDAqJXp@MNw1)5is%^ z0v4(T4APO8yljQ~KzZ1J5QVg+LLVSTXhq~<8NmuQ1c_EjK}s_q11kY!Dj15QRB8>g zug+RCKW53|2V`Y^x%uw-_SxsGd-fjhG9Mcszj|%H-W4PYhC;;LrK`eo&vO^?kt@xv z>Z#OYGZv98X*4W6`F>PcAb+qqRov8MN(d%=nxc%#wp@yc9zHohkqy;Z#Ja`-4Z9$@)rgFY3<(R%EB4edgMxyXuKNrqB~B-AVxpw+^Q7U{Lj?r|+4=eOnoF0`l@eN|{9t-|4u?$)3vFy|aYUPT zEpj-;17v|HK|qeSF-_&&KQN#IXCrq`QNPC!#It{JFc$eHEhEDZg0hgmRNpETdHl;D z%f!a@D?n`zOhj+Dx90$L;%^ohHD$fXP#qZx>OtbSMve68-3MzS1f{CvkBsaEO|YfY z>7V*njj2>yfl1P*fc~}nx|n!d^7lCj^+kLPmG|I?KgUK`0>%ZZ!wn8TJ^k|i)V7s3 zjgY|!&l?U>exJhIo%EaERK5rG^De{db4TYjFW2IPe&}iuTgV}VU)s^}u%~jHbORYq zhIXbfFK^)vw(;S|on{VBPE(bJy$y9x;QeKCS;w6_g@}`fkg+nA9oo5m4PpY74M(9+ zTnMqZcW~HIZ&9j%Ce(ekG2bJr_^|GUwisO1r|)&0mze0kWXTd!C<_n|i6h_Eic@$W zL7qIA`V|sSj5|b;iOPbsaPr>Np)KJN5&CL7qkDjjct{zuMgBkH_TlQkA{k4clc`j9 zcXuI&-8-pM-R1^Ql9$eHa2Li>ZcC-PnC*?n=1MyPPy^bE{Cz_&p3yP13Y?pp)AD-m zc`v$E?NRWgA-U5az{lt5{;*(0*v-z)%Iazzc+RZ($X@VF7kDo_w>57XavT;LO=Zl< zrF$0a6Er&2)YbW+JO$-^42de{MoV-F*rZIaEdpQ{PD~`i*;ucCYB^k*AyaCi4Ou$fNJw=1WkzhVfQ6I;6-!I*a7KyFcy z{=V+=Q$0N)(2q8OPDiO*^78%3$uS8Da8=cfZ2g#9I`zl1NhaJv@Ur!1Ka#o`Iw$(s znw3g8UIbQbSpgvy#!qh0tX&X~hE#2>0hh}yx%;5u>Qxyme$!^ggH$j2`gR(azoSLw zmLsF02y(%gp&02cYt>|-i|p7*6MU0;UQA35dTH1>Lb*{#*rAW6XX6d*LbrhWzZAdu zqBCw2Oc3ySey_`_23~uv+i1eycSEE^_0!jzP+LpjfdSJa2IMy;Pi2Co;TYUP44mAS z%Y9)Dh~bX`563)gZw}es!)tAFcVCua`~`F>XT_!rbEvK0aFK#bP5f zGkRE9n1Jcx&Fn^rhM2@-N~54vWd=KFg5zi>rD^`0bL!-Rq*aAFu#ZzpwR-U<-qu|v z@z?g(252bBz<@dMC+ds!2nPoepdP*7a>Z%0k9J|djgajn(4#^)TDeCZJ-V4xW)MAw z(ouVNw;|AL$f~}qtZX<=$k77JSI_)S&^Y@lkcFs=!PBQlikzi=O%GC*0h-Y}u=G3@ z$@~qh%pSzLxw$!{dgp4FB*k0s0OMh)fZ_N|E8~+|%THBzZ1``^KEp6GgF3QbYPrB= zcC$*W#6^+Ra{W5goAn51MIK5AM}U3_dtF^zY&v^RD@G@C;0rml583%)Fpu8GW%%S-0Rg}wjGODq)S*T wB;Ok^y|EkmKP^SlE{yf#<6$BfeA8t#hVhXxRTsuSw4v~`!#CKc&YPF}Z{E8iG5`Po literal 0 HcmV?d00001 diff --git a/docs/images/lineplot/ara_multi_plotly.png b/docs/images/lineplot/ara_multi_plotly.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7e2cfa588f862e71fb6a9ce19706b494c626fd GIT binary patch literal 82950 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 y8g{yTSsU*2A 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 R(nkb->MC0Bvh$|*{{>I34ekH{ literal 0 HcmV?d00001 diff --git a/docs/images/lineplot/lp_ara_mpl.png b/docs/images/lineplot/lp_ara_mpl.png new file mode 100644 index 0000000000000000000000000000000000000000..aca959163f7099db4b7f199cb5641c9d04aeceff GIT binary patch literal 33858 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 literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index f1bbbec..c50b2b9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -2,18 +2,18 @@ Welcome to BismarkPlot's documentation! ======================================= This page gives an overview of all public objects, functions and methods. + .. toctree:: + :caption: Tutorials + + markdowns/test -.. autosummary:: - :toctree: _autosummary - :template: module.rst - BismarkPlot.Metagene - BismarkPlot.MetageneFiles - BismarkPlot.Genome - BismarkPlot.ChrLevels - BismarkPlot.Clustering +.. toctree:: + :caption: Reference + :maxdepth: 1 - BismarkPlot.BismarkBase - BismarkPlot.LinePlot - BismarkPlot.HeatMap + _metagene + _plots + _binom + _genome \ No newline at end of file diff --git a/docs/markdowns/test.md b/docs/markdowns/test.md new file mode 100644 index 0000000..d6eb183 --- /dev/null +++ b/docs/markdowns/test.md @@ -0,0 +1,128 @@ +# LinePlot Tutorial + +This tutorial will explain you how to calculate, visualize and configure line-plots. + +## Single metagene + +### Initialization + +```python +from bismarkplot import * + +# Firstly, we need to read the regions annotation (e.g. reference genome .gff) +genome = Genome.from_gff("path/to/genome.gff") +# Next we need to filter regions of interest from the genome +genes = genome.gene_body(min_length=0, flank_length=2000) + +# Now we need to calculate metagene data (e.g. from Bismark output) +metagene = bismarkplot.Metagene.from_bismark( + file="path/to/CX_report.txt", + genome=genes, # filtered regions + up_windows=500, + body_windows=1000, + down_windows=500 +) + +# Our metagene contains all methylation contexts and both strands, so we need to filter it +# (OPTIONAL for line-plot) +filtered = metagene.filter(context="CG", strand="+") + +# LinePlot now can be created +lp = filtered.line_plot() +``` + +### Basic usage + +The easiest way to get the plot is to call `.draw_mpl()` or `.draw_plotly()` methods to get matplotlib and Plotly +versions of plots respectively + +```python +figure = lp.draw_mpl() +figure.show() +``` + +![basic line-plot mpl](../images/lineplot/lp_ara_mpl.png) + +Or for Plotly version + +```python +figure = lp.draw_mpl() +figure.show() +``` + +#### No Metagene filtering + +If metagene was not filtered by context, line-plot for all contexts on the same figure will be created + +```python +lp = metagene.line_plot() # Metagene from previous example + +figure = lp.draw_mpl() +figure.show() +``` + +![multi line-plot mpl](../images/lineplot/ara_multi_mpl.png) + +And for plotly version + +```python +figure = lp.draw_mpl() +figure.show() +``` + +![multi line-plot plotly](../images/lineplot/ara_multi_plotly.png) + + +### Advanced configuration + +Examples for matplotlib version of plots will be shown, but Plotly version is identical. + +For all examples we use [metagene filtered by CG context](#initialization). + +#### `label` parameter + +Custom label can be set for line-plot using `label` parameter: + +```python +lp.draw_mpl(label="My custom label") +``` + +![line-plot mpl label](../images/lineplot/ara_custom_label.png) + +#### `minor_labels` parameter + +Labels for upstream, body and downstream regions can be changed to custom, but **exactly 3** need to be provided. + +Set ``[]`` to disable. + + +```python +lp.draw_mpl(minor_labels=["-2000kb", "Gene", "+2000kb"]) +``` + +![line-plot mpl label](../images/lineplot/ara_minor_labels.png) + +```python +lp.draw_mpl(minor_labels=[]) +``` + +![line-plot mpl label](../images/lineplot/ara_NO_minor_labels.png) + +#### `major_labels` parameter + +Labels for body region start and end (e.g. TSS, TES) can be changed to custom, but **exactly 2** need to be provided. + +Set ``[]`` to disable. + + +```python +lp.draw_mpl(major_labels=["Start", "End"], minor_labels=[]) +``` + +![line-plot mpl label](../images/lineplot/ara_major_labels.png) + +```python +lp.draw_mpl(major_labels=[], minor_labels=["-2000kb", "Gene", "+2000kb"]) +``` + +![line-plot mpl label](../images/lineplot/ara_NO_major_labels.png) \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt index 3f68a7f..38312e3 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -17,3 +17,5 @@ typing-extensions==4.5.0 tzdata==2023.3 sphinx_autodoc_typehints==1.23.0 sphinx_book_theme==1.0.1 +myst-parser==2.0.0 + diff --git a/pyproject.toml b/pyproject.toml index e84ff9f..13f1a7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,24 +4,28 @@ build-backend = "hatchling.build" [project] name = "bismarkplot" -version = "1.2.1" +version = "1.4.1" authors = [ { name="shitohana", email="kyudytskiy@gmail.com" }, ] -keywords = ['bismark', 'methylation', 'plot'] +keywords = ['bismark', 'methylation', 'plot', 'bs-seq'] license = {file = "LICENSE.txt"} dependencies = [ "matplotlib>=3.7.1", "numpy>=1.24.2", "pandas>=2.0.0", - "polars>=0.17.5", + "polars>=0.19.9", "scipy>=1.10.1", "pyarrow>=13.0.0", - "pyreadr>=0.4.9" + "pyreadr>=0.4.9", + "dynamicTreeCut>=0.1.1", + "plotly>=5.18.0", + "numba==0.58.1", + "biopython==1.81" ] -description = "Comprehensive tool for visualizing genome-wide cytosine data." +description = "Analytical framework for BS-seq data comparison and visualization" readme = "README.md" -requires-python = ">=3.7" +requires-python = ">=3.9" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", @@ -35,8 +39,8 @@ Documentation = "https://shitohana.github.io/BismarkPlot/" "Bug Tracker" = "https://github.com/shitohana/BismarkPlot/issues" [tool.hatch.build] -exclude = ["/venv", "/dist", "/test"] +exclude = ["/venv", "/dist", "/test", "/docs"] [project.scripts] bismarkplot-metagene = "bismarkplot.console_metagene:main" -bismarkplot-chrs = "bismarkplot.console_chrlevels:main" \ No newline at end of file +bismarkplot-chrs = "bismarkplot.console_chrs:main" \ No newline at end of file diff --git a/src/bismarkplot/ArrowReaders.py b/src/bismarkplot/ArrowReaders.py new file mode 100644 index 0000000..83853a3 --- /dev/null +++ b/src/bismarkplot/ArrowReaders.py @@ -0,0 +1,122 @@ +from __future__ import annotations + +from pathlib import Path + +import pyarrow as pa +import pyarrow.csv as pcsv +import pyarrow.parquet as pq + + +class CsvReader(object): + def __init__(self, + file: str | Path, + options: CsvOptions, + memory_pool: pa.MemoryPool = None): + + self.reader = pcsv.open_csv(file, + options.read_options, + options.parse_options, + options.convert_options, + memory_pool) + + self.__current_batch = self.reader.read_next_batch() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.reader.close() + + def __iter__(self): + return self + + def __next__(self) -> pa.RecordBatch: + return self.next() + + def next(self) -> pa.RecordBatch: + old_batch = self.__current_batch + self.__current_batch = self.reader.read_next_batch() + + if self.__current_batch.num_rows != 0: + return old_batch + raise StopIteration() + + +class ParquetReader(object): + def __init__(self, + file: str | Path, + use_cols: list = None, + use_threads: bool = True): + self.pq_file = pq.ParquetFile(file) + self.__current_group = 0 + + self.__use_cols = use_cols + self.__use_threads = use_threads + + def __iter__(self): + return self + + def __next__(self) -> pa.Table: + return self.next() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.pq_file.close() + + def next(self) -> pa.Table: + old_group = self.__current_group + if old_group < self.pq_file.num_row_groups: + self.__current_group += 1 + return self.pq_file.read_row_group(old_group, columns=self.__use_cols, use_threads=self.__use_threads) + raise StopIteration() + + def __len__(self): + return self.pq_file.num_row_groups + + +class CsvOptions: + def __init__(self): + self.read_options = pcsv.ReadOptions() + self.parse_options = pcsv.ParseOptions() + self.convert_options = pcsv.ConvertOptions() + + +class BismarkOptions(CsvOptions): + def __init__(self, + use_threads: bool = True, + block_size: int = None): + super().__init__() + + schema = dict( + chr=pa.utf8(), + position=pa.uint64(), + strand=pa.utf8(), + count_m=pa.uint32(), + count_um=pa.uint32(), + context=pa.utf8(), + trinuc=pa.utf8() + ) + include_cols = ["chr", "position", "strand", "count_m", "count_um", "context"] + + self.read_options = pcsv.ReadOptions( + use_threads=use_threads, + block_size=block_size, + skip_rows=0, + skip_rows_after_names=0, + column_names=["chr", "position", "strand", "count_m", "count_um", "context", "trinuc"] + ) + + self.parse_options = pcsv.ParseOptions( + delimiter="\t", + quote_char=False, + escape_char=False + ) + + self.convert_options = pcsv.ConvertOptions( + column_types=schema, + strings_can_be_null=False, + include_columns=include_cols + ) + diff --git a/src/bismarkplot/Base.py b/src/bismarkplot/Base.py new file mode 100644 index 0000000..b08074e --- /dev/null +++ b/src/bismarkplot/Base.py @@ -0,0 +1,226 @@ +import gzip + +import polars as pl +from pyreadr import write_rds + +from .utils import remove_extension, prepare_labels +from matplotlib.axes import Axes +import plotly.graph_objects as go + + +class BismarkBase: + """ + Base class for :class:`Metagene` and plots. + """ + + def __init__(self, bismark_df: pl.DataFrame, **kwargs): + """ + Base class for Bismark data. + + :param bismark_df: pl.DataFrame with cytosine methylation status. + :param upstream_windows: Number of upstream windows. Required. + :param gene_windows: Number of gene windows. Required. + :param downstream_windows: Number of downstream windows. Required. + :param strand: Strand if filtered. + :param context: Methylation context if filtered. + :param plot_data: Data for plotting. + """ + self.bismark: pl.DataFrame = bismark_df + + self.upstream_windows: int = kwargs.get("upstream_windows") + self.downstream_windows: int = kwargs.get("downstream_windows") + self.gene_windows: int = kwargs.get("gene_windows") + self.plot_data: pl.DataFrame = kwargs.get("plot_data") + self.context: str = kwargs.get("context") + self.strand: str = kwargs.get("strand") + + @property + def metadata(self) -> dict: + """ + :return: Bismark metadata in dict + """ + return { + "upstream_windows": self.upstream_windows, + "downstream_windows": self.downstream_windows, + "gene_windows": self.gene_windows, + "plot_data": self.plot_data, + "context": self.context, + "strand": self.strand + } + + def save_rds(self, filename, compress: bool = False): + """ + Save Metagene in Rds. + + :param filename: Path for file. + :param compress: Whether to compress to gzip or not. + """ + write_rds(filename, self.bismark.to_pandas(), + compress="gzip" if compress else None) + + def save_tsv(self, filename, compress=False): + """ + Save Metagene in TSV. + + :param filename: Path for file. + :param compress: Whether to compress to gzip or not. + """ + if compress: + with gzip.open(filename + ".gz", "wb") as file: + # noinspection PyTypeChecker + self.bismark.write_csv(file, separator="\t") + else: + self.bismark.write_csv(filename, separator="\t") + + @property + def total_windows(self): + return self.upstream_windows + self.downstream_windows + self.gene_windows + + @property + def tick_positions(self): + return dict( + up_mid=self.upstream_windows / 2, + body_start=self.upstream_windows, + body_mid=self.total_windows / 2, + body_end=self.gene_windows + self.upstream_windows, + down_mid=self.total_windows - (self.downstream_windows / 2) + ) + + def __len__(self): + return len(self.bismark) + + +class BismarkFilesBase: + def __init__(self, samples, labels: list[str] = None): + self.samples = self.__check_metadata( + samples if isinstance(samples, list) else [samples]) + if samples is None: + raise Exception("Flank or gene windows number does not match!") + self.labels = [str(v) for v in list( + range(len(samples)))] if labels is None else labels + if len(self.labels) != len(self.samples): + raise Exception("Labels length doesn't match samples number") + + def save_rds(self, base_filename, compress: bool = False, merge: bool = False): + """ + Save Metagene in Rds. + + Parameters + ---------- + base_filename + Base path for file (final path will be ``base_filename+label.rds``). + compress + Whether to compress to gzip or not. + merge + Do samples need to be merged into single :class:`Metagene` before saving. + """ + if merge: + merged = pl.concat( + [sample.bismark.lazy().with_columns(pl.lit(label)) + for sample, label in zip(self.samples, self.labels)] + ) + write_rds(base_filename, merged.to_pandas(), + compress="gzip" if compress else None) + if not merge: + for sample, label in zip(self.samples, self.labels): + sample.save_rds( + f"{remove_extension(base_filename)}_{label}.rds", compress="gzip" if compress else None) + + def save_tsv(self, base_filename, compress: bool = False, merge: bool = False): + """ + Save Metagenes in TSV. + + Parameters + ---------- + base_filename + Base path for file (final path will be ``base_filename+label.tsv``). + compress + Whether to compress to gzip or not. + merge + Do samples need to be merged into single :class:`Metagene` before saving. + """ + if merge: + merged = pl.concat( + [sample.bismark.lazy().with_columns(pl.lit(label)) + for sample, label in zip(self.samples, self.labels)] + ) + if compress: + with gzip.open(base_filename + ".gz", "wb") as file: + # noinspection PyTypeChecker + merged.write_csv(file, separator="\t") + else: + merged.write_csv(base_filename, separator="\t") + if not merge: + for sample, label in zip(self.samples, self.labels): + sample.save_tsv( + f"{remove_extension(base_filename)}_{label}.tsv", compress=compress) + + @staticmethod + def __check_metadata(samples: list[BismarkBase]): + upstream_check = set([sample.metadata["upstream_windows"] + for sample in samples]) + downstream_check = set( + [sample.metadata["downstream_windows"] for sample in samples]) + gene_check = set([sample.metadata["gene_windows"] + for sample in samples]) + + if len(upstream_check) == len(gene_check) == len(downstream_check) == 1: + return samples + else: + return None + + +class PlotBase(BismarkBase): + def flank_lines(self, axes: Axes, major_labels: list, minor_labels: list, show_border=True): + labels = prepare_labels(major_labels, minor_labels) + + if self.downstream_windows < 1: + labels["down_mid"], labels["body_end"] = [""] * 2 + + if self.upstream_windows < 1: + labels["up_mid"], labels["body_start"] = [""] * 2 + + ticks = self.tick_positions + + names = list(ticks.keys()) + x_ticks = [ticks[key] for key in names] + x_labels = [labels[key] for key in names] + + axes.set_xticks(x_ticks, labels=x_labels) + + if show_border: + for tick in [ticks["body_start"], ticks["body_end"]]: + axes.axvline(x=tick, linestyle='--', color='k', alpha=.3) + + return axes + + def flank_lines_plotly(self, figure: go.Figure, major_labels: list, minor_labels: list, show_border=True): + """ + Add flank lines to the given axis (for line plot) + """ + labels = prepare_labels(major_labels, minor_labels) + + if self.downstream_windows < 1: + labels["down_mid"], labels["body_end"] = [""] * 2 + + if self.upstream_windows < 1: + labels["up_mid"], labels["body_start"] = [""] * 2 + + ticks = self.tick_positions + + names = list(ticks.keys()) + x_ticks = [ticks[key] for key in names] + x_labels = [labels[key] for key in names] + + figure.update_layout( + xaxis=dict( + tickmode='array', + tickvals=x_ticks, + ticktext=x_labels) + ) + + if show_border: + for tick in [ticks["body_start"], ticks["body_end"]]: + figure.add_vline(x=tick, line_dash="dash", line_color="rgba(0,0,0,0.2)") + + return figure \ No newline at end of file diff --git a/src/bismarkplot/Binom.py b/src/bismarkplot/Binom.py new file mode 100644 index 0000000..b4ee10a --- /dev/null +++ b/src/bismarkplot/Binom.py @@ -0,0 +1,538 @@ +from __future__ import annotations + +import os +from pathlib import Path +from typing import Literal + +import polars as pl +import progress.bar +import pyarrow as pa +from pyarrow import parquet as pq +from scipy.stats import binom + +from .ArrowReaders import BismarkOptions, CsvReader, ParquetReader + + +class BinomialData: + """ + Calculates P-value for cytosine residues. + """ + def __init__(self, path: str | Path): + self.path = Path(path) + + @classmethod + def preprocess( + cls, + file: str | Path, + report_type: Literal["bismark"] = "bismark", + name: str | Path = None, + min_coverage: int = 2, + block_size_mb: int = 20, + use_threads: bool = True, + dir: str | Path = "./" + ): + """ + Method to preprocess BS-seq cytosine report data by calculating methylation P-value for every cytosine (assuming distribution is binomial) that passes `min_coverage` threshold. + + Parameters + ---------- + file + Path to cytosine report. + report_type + Type of report. Possible types: bismark. + name + Name with which preprocessed file will be saved. If not provided - input file name is being used. + min_coverage + Minimal coverage for cytosine. + block_size_mb + Block size for reading. (Block size ≠ amount of RAM used. Reader allocates approx. Block size * 20 memory for reading.) + use_threads + Do multi-threaded or single-threaded reading. If multi-threaded option is used, number of threads is defined by `multiprocessing.cpu_count()` + dir + Path to working dir, where file will be saved. + + Returns + ------- + BinomialData + Instance of Binom class. + """ + file = Path(file) + if not file.exists(): raise FileNotFoundError() + + block_size = (1024 ** 2) * block_size_mb + + metadata = dict( + cytosine_residues=0, + density_sum=0 + ) + + # Reading and calculating total stats + print("Reading from", file.absolute()) + + file_size = os.stat(file.absolute()).st_size + bar = cls.__bar("Reading cytosines", file_size) + + if report_type == "bismark": + options = BismarkOptions(use_threads=use_threads, block_size=block_size) + options.convert_options.include_columns = ["count_m", "count_um"] + + with CsvReader(file, options) as csv_reader: + for batch in csv_reader: + # Update metadata with total distribution stats + formatted = cls.__formatters["stats"][report_type](batch) + metadata["cytosine_residues"] += len(batch) + metadata["density_sum"] += formatted["density"].sum() + + bar.next(block_size) + bar.goto(file_size) + bar.finish() + + # Calculating total p_values + save_path = Path(dir) / ((file.stem if name is None else name) + ".parquet") + print("Writing p_values file into:", save_path.absolute()) + total_probability = metadata["density_sum"] / metadata["cytosine_residues"] + + with pq.ParquetWriter(save_path, cls.__schemas["arrow"]["p_value"]) as pq_writer: + with CsvReader(file, BismarkOptions(use_threads=use_threads, block_size=block_size)) as csv_reader: + bar = cls.__bar("Calculating p-values", file_size) + for batch in csv_reader: + # Calculate density for each cytosine despite its methylation context. + formatted = ( + cls.__formatters["p_value"][report_type](batch) + # Filter by coverage. + .filter(pl.col("total") >= min_coverage) + ) + # Binomial test for cytosine methylation + cdf = 1 - binom.cdf(formatted["count_m"] - 1, formatted["total"], total_probability) + # Write to p_valued file + p_valued = ( + formatted.with_columns(pl.lit(cdf).cast(pl.Float64).alias("p_value")) + .select(cls.__schemas["arrow"]["p_value"].names) + .cast(cls.__schemas["polars"]["p_value"]) + ) + pq_writer.write( + p_valued + .to_arrow() + .cast(cls.__schemas["arrow"]["p_value"]) + ) + bar.next(block_size) + bar.goto(file_size) + bar.finish() + print("Done") + + print(f"\nTotal cytosine residues: {metadata['cytosine_residues']}.\nAverage proportion of methylated reads to total reads for cytosine residue: {metadata['density_sum'] / metadata['cytosine_residues']}") + + return cls(save_path) + + def region_pvalue( + self, + genome: pl.DataFrame, + methylation_pvalue: float = .05, + use_threads: bool = True, + save: bool = False, + save_path: str = None + ): + """ + Map cytosines with provided annotation and calculate region methylation P-value (assuming distribution is binomial). + + Parameters + ---------- + genome + DataFrame with annotation (e.g. from `Genome` class) + methylation_pvalue + P-value of cytosine methylation for it to be considered methylated. + use_threads + Do multi-threaded or single-threaded reading. If multi-threaded option is used, number of threads is defined by `multiprocessing.cpu_count()` + save + Does processed file need to be saved as BED-like TSV with gene methylation stats. + save_path + Path, where file needs to be saved (If save option is set True). + + Returns + ------- + RegionStat + Instance of RegionStat class. + + Examples + -------- + If there no preprocessed file: + + >>> import bismarkplot as bp + >>> report_path = "/path/to/report.txt" + >>> genome_path = "/path/to/genome.gff" + >>> c_binom = bp.BinomialData.preprocess(report_path, report_type="bismark") + + >>> genome = bp.Genome.from_gff(genome_path).gene_body() + >>> region_stats = c_binom.region_pvalue(genome) + >>> region_stats + shape: (3, 11) + ┌─────────┬────────┬─────────┬───────┬───────┬────────┬────────┬────────┬────────┬────────┬────────┐ + │ chr ┆ strand ┆ id ┆ start ┆ end ┆ p_valu ┆ p_valu ┆ p_valu ┆ total ┆ total ┆ total │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ e_cont ┆ e_cont ┆ e_cont ┆ contex ┆ contex ┆ contex │ + │ cat ┆ cat ┆ str ┆ u64 ┆ u64 ┆ ext_CG ┆ ext_CH ┆ ext_CH ┆ t_CG ┆ t_CHG ┆ t_CHH │ + │ ┆ ┆ ┆ ┆ ┆ --- ┆ G ┆ H ┆ --- ┆ --- ┆ --- │ + │ ┆ ┆ ┆ ┆ ┆ f64 ┆ --- ┆ --- ┆ i64 ┆ i64 ┆ i64 │ + │ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ ┆ ┆ │ + ╞═════════╪════════╪═════════╪═══════╪═══════╪════════╪════════╪════════╪════════╪════════╪════════╡ + │ NC_0030 ┆ + ┆ gene-AT ┆ 3631 ┆ 5899 ┆ 1.0 ┆ 1.0 ┆ 1.0 ┆ 60 ┆ 82 ┆ 251 │ + │ 70.9 ┆ ┆ 1G01010 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │ + │ NC_0030 ┆ - ┆ gene-AT ┆ 6788 ┆ 9130 ┆ 0.9992 ┆ 1.0 ┆ 1.0 ┆ 31 ┆ 55 ┆ 295 │ + │ 70.9 ┆ ┆ 1G01020 ┆ ┆ ┆ 65 ┆ ┆ ┆ ┆ ┆ │ + │ NC_0030 ┆ + ┆ gene-AT ┆ 11101 ┆ 11372 ┆ 1.0 ┆ 1.0 ┆ 1.0 ┆ 1 ┆ 8 ┆ 43 │ + │ 70.9 ┆ ┆ 1G03987 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │ + └─────────┴────────┴─────────┴───────┴───────┴────────┴────────┴────────┴────────┴────────┴────────┘ + + If preprocessed file exists: + + >>> preprocessed_path = "/path/to/preprocessed.parquet" + >>> c_binom = bp.BinomialData(preprocessed_path) + >>> region_stats = c_binom.region_pvalue(genome) + """ + + # Format genome + pl.enable_string_cache() + genome = genome.cast({k: v for k, v in self.__schemas["polars"]["p_value"].items() if k in genome.columns}) + + metadata = pl.DataFrame(schema={"context": self.__schemas["polars"]["p_value"]["context"], + "methylated": pl.Int64, + "total": pl.Int64}) + + gene_stats = None + + print("From", self.path) + with ParquetReader(self.path, use_threads=use_threads) as pq_reader: + bar = self.__bar("Reading p_values", max=len(pq_reader)) + + for batch in pq_reader: + methyl = ( + pl.from_arrow(batch) + .with_columns( + (pl.col("p_value") <= methylation_pvalue).alias("methylated").cast(pl.Boolean) + ) + .drop("p_value") + ) + + metadata = metadata.extend( + methyl.group_by("context").agg([ + pl.col("methylated").sum().cast(pl.Int64), + pl.count("position").alias("total").cast(pl.Int64) + ]) + ) + + mapped = ( + methyl.lazy() + .join_asof(genome.lazy(), + left_on="position", right_on="start", + strategy="backward", + by=["chr", "strand"]) + .filter(pl.col("position") <= pl.col("end")) + .filter(pl.col("start").is_not_nan()) + .group_by(["chr", "strand", "start", "end", "id", "context"], maintain_order=True) + .agg([ + pl.col("methylated").sum().cast(pl.Int64), + pl.count("position").alias("total").cast(pl.Int64) + ]) + .collect() + ) + + if gene_stats is None: gene_stats = mapped + else: gene_stats.extend(mapped) + + bar.next() + bar.finish() + + metadata = metadata.group_by("context").agg([pl.sum("methylated"), pl.sum("total")]) + + result = pl.DataFrame(schema=gene_stats.schema | {"p_value": pl.Float64}) + for row in metadata.iter_rows(named=True): + filtered = gene_stats.filter(pl.col("context") == row["context"]) + total_probability = row["methylated"] / row["total"] + + cdf = 1 - binom.cdf(filtered["methylated"] - 1, filtered["total"], total_probability) + result.extend( + filtered.with_columns(pl.lit(cdf, pl.Float64).alias("p_value")) + ) + + print(f"{row['context']}\tTotal sites: {row['total']}, methylated: {row['methylated']}\t({round(total_probability * 100, 2)}%)") + result = result.select(["chr", "start", "end", "id", "p_value", "strand", "context", "total"]) + + if save: + if save_path is not None: + save_path = Path(save_path) + else: + save_path = self.path.parent / (self.path.stem + "_genes.tsv") + if save_path.suffix == "": + save_path = save_path.with_suffix(".tsv") + + result.write_csv(save_path.absolute(), has_header=False, separator="\t") + + print("Saved into:", save_path) + + return RegionStat.from_expanded(result) + + __formatters = { + "stats": { + "bismark": lambda batch: + ( + pl.from_arrow(batch).lazy() + .with_columns([ + (pl.col("count_m") / (pl.col("count_m") + pl.col("count_um"))) + .cast(pl.Float64) + .alias("density") + ]) + .filter(pl.col("density").is_not_nan()) + ).collect() + }, + "p_value": { + "bismark": lambda batch: + ( + pl.from_arrow(batch).lazy() + .with_columns([ + (pl.col("count_m") + pl.col("count_um")).cast(pl.Int32).alias("total"), + pl.col("count_m").cast(pl.Int32), + ]) + ).collect() + } + } + + __schemas = { + "polars": { + "p_value": dict( + chr=pl.Categorical, + strand=pl.Categorical, + position=pl.UInt64, + context=pl.Categorical, + p_value=pl.Float64 + ) + }, + "arrow": { + "p_value": pa.schema([ + ("chr", pa.dictionary(pa.int16(), pa.utf8())), + ("strand", pa.dictionary(pa.int8(), pa.utf8())), + ("position", pa.uint64()), + ("context", pa.dictionary(pa.int8(), pa.utf8())), + ("p_value", pa.float64()), + ]) + } + + } + + @staticmethod + def __bar(name, max): + suffix = "%(percent).1f%%" + return progress.bar.Bar(name, suffix=suffix, max=max) + + +# TODO add CSV init support +class RegionStat: + """ + Class for manipulation with region P-value data. + + Attributes + ---------- + region_stats : polars.DataFrame + Region stats DataFrame + """ + def __init__(self, region_stats: pl.DataFrame = None): + """ + Class for manipulation with region P-value data. + + Warnings + -------- + Do not call this method directly. + + Parameters + ---------- + region_stats : polars.DataFrame + Region stats DataFrame + """ + + self.region_stats = region_stats + + @classmethod + def from_expanded(cls, df: pl.DataFrame): + """ + Generate Instance of RegionStat class from DataFrame with context column expanded (e.g. output of `Binom.gene_pvalue()` function) + + Parameters + ---------- + df + DataFrame with context column expanded + + Returns + ------- + RegionStat + Instance of RegionStat class + """ + gene_stats = ( + df + .filter(df.select(["chr", "strand", "start", "end", "context"]).is_duplicated().not_()) + .pivot(values=["p_value", "total"], + columns="context", + index=list(set(df.columns) - set(["p_value", "context", "total"]))) + ) + return cls(gene_stats) + + def filter( + self, + context: Literal["CG", "CHG", "CHH"] = None, + op: Literal["<=", "<", ">", ">="] = None, + p_value: float = .05, + min_n: int = 0 + ): + """ + Filter RegionStat class by P-value of methylation in selected context or minimal region counts. + + E.g. :math:`P_{CG}\leq0.05` or :math:`N_{CG}\geq20` + + Minimal counts are compared only with :math:`\geq` operation. + + Parameters + ---------- + context + Methylation context (CG, CHG, CHH). + op + Comparative operation (<=, <, >, >=). + p_value + P-value for operation. + min_n + Minimal counts for cytosines methylated in selected context. + + Returns + ------- + RegionStat + Filtered class. + + Examples + -------- + >>> region_stats = BinomialData("./A_thaliana.parquet").region_pvalue(genome) + >>> region_stats + shape: (3, 11) + ┌─────────┬────────┬─────────┬───────┬───────┬────────┬────────┬────────┬────────┬────────┬────────┐ + │ chr ┆ strand ┆ id ┆ start ┆ end ┆ p_valu ┆ p_valu ┆ p_valu ┆ total_ ┆ total_ ┆ total_ │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ e_cont ┆ e_cont ┆ e_cont ┆ contex ┆ contex ┆ contex │ + │ cat ┆ cat ┆ str ┆ u64 ┆ u64 ┆ ext_CG ┆ ext_CH ┆ ext_CH ┆ t_CG ┆ t_CHG ┆ t_CHH │ + │ ┆ ┆ ┆ ┆ ┆ --- ┆ G ┆ H ┆ --- ┆ --- ┆ --- │ + │ ┆ ┆ ┆ ┆ ┆ f64 ┆ --- ┆ --- ┆ i64 ┆ i64 ┆ i64 │ + │ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ ┆ ┆ │ + ╞═════════╪════════╪═════════╪═══════╪═══════╪════════╪════════╪════════╪════════╪════════╪════════╡ + │ NC_0030 ┆ + ┆ gene-AT ┆ 3631 ┆ 5899 ┆ 1.0 ┆ 1.0 ┆ 1.0 ┆ 60 ┆ 82 ┆ 251 │ + │ 70.9 ┆ ┆ 1G01010 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │ + │ NC_0030 ┆ - ┆ gene-AT ┆ 6788 ┆ 9130 ┆ 0.9992 ┆ 1.0 ┆ 1.0 ┆ 31 ┆ 55 ┆ 295 │ + │ 70.9 ┆ ┆ 1G01020 ┆ ┆ ┆ 65 ┆ ┆ ┆ ┆ ┆ │ + │ NC_0030 ┆ + ┆ gene-AT ┆ 11101 ┆ 11372 ┆ 1.0 ┆ 1.0 ┆ 1.0 ┆ 1 ┆ 8 ┆ 43 │ + │ 70.9 ┆ ┆ 1G03987 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │ + └─────────┴────────┴─────────┴───────┴───────┴────────┴────────┴────────┴────────┴────────┴────────┘ + >>> region_stats.filter("CG", "<", 0.05, 20) + shape: (3, 11) + ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ + │ chr ┆ strand ┆ id ┆ start ┆ end ┆ p_valu ┆ p_valu ┆ p_valu ┆ total_ ┆ total_ ┆ total_ │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ e_cont ┆ e_cont ┆ e_cont ┆ contex ┆ contex ┆ contex │ + │ cat ┆ cat ┆ str ┆ u64 ┆ u64 ┆ ext_CG ┆ ext_CH ┆ ext_CH ┆ t_CG ┆ t_CHG ┆ t_CHH │ + │ ┆ ┆ ┆ ┆ ┆ --- ┆ G ┆ H ┆ --- ┆ --- ┆ --- │ + │ ┆ ┆ ┆ ┆ ┆ f64 ┆ --- ┆ --- ┆ i64 ┆ i64 ┆ i64 │ + │ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ ┆ ┆ │ + ╞════════╪════════╪════════╪════════╪════════╪════════╪════════╪════════╪════════╪════════╪════════╡ + │ NC_003 ┆ + ┆ gene-A ┆ 23121 ┆ 31227 ┆ 9.9920 ┆ 1.0 ┆ 1.0 ┆ 123 ┆ 171 ┆ 604 │ + │ 070.9 ┆ ┆ T1G010 ┆ ┆ ┆ e-16 ┆ ┆ ┆ ┆ ┆ │ + │ ┆ ┆ 40 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │ + │ NC_003 ┆ - ┆ gene-A ┆ 121067 ┆ 130577 ┆ 0.0048 ┆ 1.0 ┆ 1.0 ┆ 233 ┆ 338 ┆ 1169 │ + │ 070.9 ┆ ┆ T1G013 ┆ ┆ ┆ 71 ┆ ┆ ┆ ┆ ┆ │ + │ ┆ ┆ 20 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │ + │ NC_003 ┆ - ┆ gene-A ┆ 192634 ┆ 193670 ┆ 0.0005 ┆ 0.2612 ┆ 0.9915 ┆ 20 ┆ 22 ┆ 143 │ + │ 070.9 ┆ ┆ T1G015 ┆ ┆ ┆ 71 ┆ 87 ┆ 5 ┆ ┆ ┆ │ + │ ┆ ┆ 30 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │ + └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ + """ + if context is not None and op is not None: + if op == "<": + expr = pl.col(f"p_value_context_{context}") < p_value + elif op == "<=": + expr = pl.col(f"p_value_context_{context}") <= p_value + elif op == ">=": + expr = pl.col(f"p_value_context_{context}") >= p_value + else: + expr = pl.col(f"p_value_context_{context}") > p_value + else: + expr = True + + return self.__class__( + self.region_stats + .filter(expr) + .filter(pl.col(f"total_context_{context}") >= min_n) + ) + + def save(self, path: str | Path): + """ + Save regions as BED-like file. + + Parameters + ---------- + path + Path where file needs to be saved. + """ + path = Path(path) + + ( + self.region_stats + .select(["chr", "start", "end", "id", "strand"]) + .write_csv(path, has_header=False, separator="\t") + ) + + def categorise( + self, + context: Literal["CG", "CHG", "CHH"] = None, + p_value: float = .05, + min_n: int = 0 + ) -> tuple[RegionStat, RegionStat, RegionStat]: + """ + Categorise regions as BM (Body Methylation), IM (Intermediate Methylated) and UM (Undermethylated) according + to `Takuno and Gaut `_ + + E.g. for CG: :math:`P_{CG}<0.05, P_{CG}\geq0.05, P_{CG}\geq0.05\ and\ N_{CG}\geq20` + + Parameters + ---------- + context + Methylation context (CG, CHG, CHH). + p_value + P-value for operation. + min_n + Minimal counts for cytosines methylated in selected context. + + Returns + ------- + tuple[RegionStat, RegionStat, RegionStat] + BM, IM, UM :class:`RegionStat` + """ + pass + + other_contexts = list({"CG", "CHG", "CHH"} - set(context)) + bm = ( + self.filter(context, "<", p_value, min_n) + .filter(other_contexts[0], ">=", 1 - p_value) + .filter(other_contexts[1], ">=", 1 - p_value) + ) + im = ( + self.filter(context, ">=", p_value, min_n) + .filter(context, "<", 1 - p_value, min_n) + .filter(other_contexts[0], ">=", 1 - p_value) + .filter(other_contexts[1], ">=", 1 - p_value) + ) + um = ( + self.filter(context, ">=", p_value, 1 - min_n) + .filter(other_contexts[0], ">=", 1 - p_value) + .filter(other_contexts[1], ">=", 1 - p_value) + ) + + return bm, im, um + + def __len__(self): + return len(self.region_stats) + + def __repr__(self): + return self.region_stats.__repr__() + + def __str__(self): + return self.region_stats.__str__() + diff --git a/src/bismarkplot/BismarkPlot.py b/src/bismarkplot/BismarkPlot.py deleted file mode 100644 index 856165b..0000000 --- a/src/bismarkplot/BismarkPlot.py +++ /dev/null @@ -1,1499 +0,0 @@ -import gzip -import re -from functools import cache -from multiprocessing import cpu_count -from os.path import getsize - -import polars as pl - -import numpy as np - -import matplotlib.pyplot as plt -from matplotlib import colormaps -from matplotlib.axes import Axes -from matplotlib.figure import Figure - -from scipy.signal import savgol_filter -from scipy.spatial.distance import pdist -from scipy.cluster.hierarchy import linkage, leaves_list -from scipy import stats - -from pandas import DataFrame as pdDataFrame -from pyreadr import write_rds - -from dynamicTreeCut import cutreeHybrid - - -def remove_extension(path): - re.sub("\.[^./]+$", "", path) - - -def approx_batch_num(path, batch_size, check_lines=10000): - size = getsize(path) - - length = 0 - with open(path, "rb") as file: - for _ in range(check_lines): - length += len(file.readline()) - - return round(np.ceil(size / (length / check_lines * batch_size))) - - -class Genome: - def __init__(self, genome: pl.LazyFrame): - """ - Class for storing and manipulating genome DataFrame. - - Genome Dataframe columns: - - +------+--------+-------+-------+----------+------------+ - | chr | strand | start | end | upstream | downstream | - +======+========+=======+=======+==========+============+ - | Utf8 | Utf8 | Int32 | Int32 | Int32 | Int32 | - +------+--------+-------+-------+----------+------------+ - - :param genome: :class:`pl.LazyFrame` with genome data. - """ - self.genome = genome - - @classmethod - def from_gff(cls, file: str): - """ - Constructor with parameters for default gff file. - - :param file: path to genome.gff. - """ - comment_char = '#' - has_header = False - - genes = pl.scan_csv( - file, - comment_char=comment_char, - has_header=has_header, - separator='\t', - new_columns=['chr', 'source', 'type', 'start', - 'end', 'score', 'strand', 'frame', 'attribute'], - dtypes={'start': pl.Int32, 'end': pl.Int32, 'chr': pl.Utf8} - ).select(['chr', 'type', 'start', 'end', 'strand']) - - print(f"Genome read from {file}") - return cls(genes) - - def gene_body(self, min_length: int = 4000, flank_length: int = 2000) -> pl.DataFrame: - """ - Filter type == gene from gff. - - :param min_length: minimal length of genes. - :param flank_length: length of the flanking region. - :return: :class:`pl.LazyFrame` with genes and their flanking regions. - """ - genes = self.__filter_genes( - self.genome, 'gene', min_length, flank_length) - genes = self.__trim_genes(genes, flank_length).collect() - return self.__check_empty(genes) - - def exon(self, min_length: int = 100) -> pl.DataFrame: - """ - Filter type == exon from gff. - - :param min_length: minimal length of exons. - :return: :class:`pl.LazyFrame` with exons. - """ - flank_length = 0 - genes = self.__filter_genes( - self.genome, 'exon', min_length, flank_length) - genes = self.__trim_genes(genes, flank_length).collect() - return self.__check_empty(genes) - - def cds(self, min_length: int = 100) -> pl.DataFrame: - """ - Filter type == CDS from gff. - - :param min_length: minimal length of CDS. - :return: :class:`pl.LazyFrame` with CDS. - """ - flank_length = 0 - genes = self.__filter_genes( - self.genome, 'CDS', min_length, flank_length) - genes = self.__trim_genes(genes, flank_length).collect() - return self.__check_empty(genes) - - def near_TSS(self, min_length: int = 4000, flank_length: int = 2000): - """ - Get region near TSS - upstream and same length from TSS. - - :param min_length: minimal length of genes. - :param flank_length: length of the flanking region. - :return: :class:`pl.LazyFrame` with genes and their flanking regions. - """ - upstream_length = ( - # when before length is enough - # we set upstream length to specified - pl.when(pl.col('upstream') >= flank_length).then(flank_length) - # when genes are intersecting (current start < previous end) - # we don't take this as upstream region - .when(pl.col('upstream') < 0).then(0) - # when length between genes is not enough for full specified length - # we divide it into half - .otherwise((pl.col('upstream') - (pl.col('upstream') % 2)) // 2) - ) - - gene_type = "gene" - genes = self.__filter_genes( - self.genome, gene_type, min_length, flank_length) - genes = ( - genes - .groupby(['chr', 'strand'], maintain_order=True).agg([ - pl.col('start'), - # upstream shift - (pl.col('start').shift(-1) - pl.col('end')).shift(1) - .fill_null(flank_length) - .alias('upstream') - ]) - .explode(['start', 'upstream']) - .with_columns([ - (pl.col('start') - upstream_length).alias('upstream'), - (pl.col("start") + flank_length).alias("end") - ]) - .with_columns(pl.col("end").alias("downstream")) - ).collect() - - return self.__check_empty(genes) - - def near_TES(self, min_length: int = 4000, flank_length: int = 2000): - """ - Get region near TES - downstream and same length from TES. - - :param min_length: minimal length of genes. - :param flank_length: length of the flanking region. - :return: :class:`pl.LazyFrame` with genes and their flanking regions. - """ - - downstream_length = ( - # when before length is enough - # we set upstream length to specified - pl.when(pl.col('downstream') >= flank_length).then(flank_length) - # when genes are intersecting (current start < previous end) - # we don't take this as upstream region - .when(pl.col('downstream') < 0).then(0) - # when length between genes is not enough for full specified length - # we divide it into half - .otherwise((pl.col('downstream') - pl.col('downstream') % 2) // 2) - ) - - gene_type = "gene" - genes = self.__filter_genes( - self.genome, gene_type, min_length, flank_length) - genes = ( - genes - .groupby(['chr', 'strand'], maintain_order=True).agg([ - pl.col('end'), - # downstream shift - (pl.col('start').shift(-1) - pl.col('end')) - .fill_null(flank_length) - .alias('downstream') - ]) - .explode(['end', 'downstream']) - .with_columns([ - (pl.col('end') + downstream_length).alias('downstream'), - (pl.col("end") - flank_length).alias("start") - ]) - .with_columns(pl.col("start").alias("upstream")) - ).collect() - - return self.__check_empty(genes) - - def other(self, gene_type: str, min_length: int = 1000, flank_length: int = 100) -> pl.DataFrame: - """ - Filter by selected type. - - :param gene_type: selected type from gff. Cases need to match. - :param min_length: minimal length of genes. - :param flank_length: length of the flanking region. - :return: :class:`pl.LazyFrame` with genes and their flanking regions. - """ - genes = self.__filter_genes( - self.genome, gene_type, min_length, flank_length) - genes = self.__trim_genes(genes, flank_length).collect() - return self.__check_empty(genes) - - @staticmethod - def __filter_genes(genes, gene_type, min_length, flank_length): - genes = genes.filter(pl.col('type') == gene_type).drop('type') - - # filter genes, which start < flank_length - if flank_length > 0: - genes = genes.filter(pl.col('start') > flank_length) - # filter genes which don't pass length threshold - if min_length > 0: - genes = genes.filter((pl.col('end') - pl.col('start')) > min_length) - - return genes - - @staticmethod - def __trim_genes(genes, flank_length) -> pl.LazyFrame: - # upstream shift - # calculates length to previous gene on same chr_strand - length_before = (pl.col('start').shift(-1) - pl.col('end')).shift(1).fill_null(flank_length) - # downstream shift - # calculates length to next gene on same chr_strand - length_after = (pl.col('start').shift(-1) - pl.col('end')).fill_null(flank_length) - - upstream_length = ( - # when before length is enough - # we set upstream length to specified - pl.when(pl.col('upstream') >= flank_length).then(flank_length) - # when genes are intersecting (current start < previous end) - # we don't take this as upstream region - .when(pl.col('upstream') < 0).then(0) - # when length between genes is not enough for full specified length - # we divide it into half - .otherwise((pl.col('upstream') - (pl.col('upstream') % 2)) // 2) - ) - - downstream_length = ( - # when before length is enough - # we set upstream length to specified - pl.when(pl.col('downstream') >= flank_length).then(flank_length) - # when genes are intersecting (current start < previous end) - # we don't take this as upstream region - .when(pl.col('downstream') < 0).then(0) - # when length between genes is not enough for full specified length - # we divide it into half - .otherwise((pl.col('downstream') - pl.col('downstream') % 2) // 2) - ) - - return ( - genes - .groupby(['chr', 'strand'], maintain_order=True).agg([ - pl.col('start'), - pl.col('end'), - length_before.alias('upstream'), - length_after.alias('downstream') - ]) - .explode(['start', 'end', 'upstream', 'downstream']) - .with_columns([ - # calculates length of region - (pl.col('start') - upstream_length).alias('upstream'), - # calculates length of region - (pl.col('end') + downstream_length).alias('downstream') - ]) - ) - - @staticmethod - def __check_empty(genes): - if len(genes) > 0: - return genes - else: - raise Exception( - "Genome DataFrame is empty. Are you sure input file is valid?") - - -class BismarkBase: - """ - Base class for :class:`Metagene` and plots. - """ - - def __init__(self, bismark_df: pl.DataFrame, **kwargs): - """ - Base class for Bismark data. - - DataFrame Structure: - - +-----------------+-------------+---------------------+----------------------+------------------+----------------+-----------------------------------------+ - | chr | strand | context | gene | fragment | sum | count | - +=================+=============+=====================+======================+==================+================+=========================================+ - | Categorical | Categorical | Categorical | Categorical | Int32 | Int32 | Int32 | - +-----------------+-------------+---------------------+----------------------+------------------+----------------+-----------------------------------------+ - | chromosome name | strand | methylation context | position of cytosine | fragment in gene | sum methylated | count of all cytosines in this position | - +-----------------+-------------+---------------------+----------------------+------------------+----------------+-----------------------------------------+ - - - :param bismark_df: pl.DataFrame with cytosine methylation status. - :param upstream_windows: Number of upstream windows. Required. - :param gene_windows: Number of gene windows. Required. - :param downstream_windows: Number of downstream windows. Required. - :param strand: Strand if filtered. - :param context: Methylation context if filtered. - :param plot_data: Data for plotting. - """ - self.bismark: pl.DataFrame = bismark_df - - self.upstream_windows: int = kwargs.get("upstream_windows") - self.downstream_windows: int = kwargs.get("downstream_windows") - self.gene_windows: int = kwargs.get("gene_windows") - self.plot_data: pl.DataFrame = kwargs.get("plot_data") - self.context: str = kwargs.get("context") - self.strand: str = kwargs.get("strand") - - @property - def metadata(self) -> dict: - """ - :return: Bismark metadata in dict - """ - return { - "upstream_windows": self.upstream_windows, - "downstream_windows": self.downstream_windows, - "gene_windows": self.gene_windows, - "plot_data": self.plot_data, - "context": self.context, - "strand": self.strand - } - - def save_rds(self, filename, compress: bool = False): - """ - Save Bismark DataFrame in Rds. - - :param filename: Path for file. - :param compress: Whether to compress to gzip or not. - """ - write_rds(filename, self.bismark.to_pandas(), - compress="gzip" if compress else None) - - def save_tsv(self, filename, compress=False): - """ - Save Bismark DataFrame in TSV. - - :param filename: Path for file. - :param compress: Whether to compress to gzip or not. - """ - if compress: - with gzip.open(filename + ".gz", "wb") as file: - # noinspection PyTypeChecker - self.bismark.write_csv(file, separator="\t") - else: - self.bismark.write_csv(filename, separator="\t") - - @property - def total_windows(self): - return self.upstream_windows + self.downstream_windows + self.gene_windows - - def __len__(self): - return len(self.bismark) - - -class Clustering(BismarkBase): - """ - Class for clustering genes within sample - """ - - def __init__(self, bismark_df: pl.DataFrame, count_threshold=5, dist_method="euclidean", clust_method="average", **kwargs): - """ - :param bismark_df: :class:polars.DataFrame with genes data - :param count_threshold: Minimum counts per fragment - :param dist_method: Method for evaluating distance - :param clust_method: Method for hierarchical clustering - """ - super().__init__(bismark_df, **kwargs) - - grouped = ( - self.bismark.lazy() - .with_columns((pl.col("sum") / pl.col("count")).alias("density")) - .group_by(["chr", "strand", "gene", "context"]) - .agg([pl.col("density"), - pl.col("fragment"), - pl.sum("count").alias("gene_count"), - pl.count("fragment").alias("count")]) - ).collect() - - print(f"Starting with:\t{len(grouped)}") - - by_count = grouped.filter(pl.col("gene_count") > (count_threshold * pl.col("count"))) - - print(f"Left after count theshold filtration:\t{len(by_count)}") - - by_count = by_count.filter(pl.col("count") == self.total_windows) - - print(f"Left after empty windows filtration:\t{len(by_count)}") - - by_count = by_count.explode(["density", "fragment"]).drop(["gene_count", "count"]).fill_nan(0) - - unpivot = by_count.pivot( - index=["chr", "strand", "gene"], - values="density", - columns="fragment", - aggregate_function="sum" - ).select( - ["chr", "strand", "gene"] + list(map(str, range(self.total_windows))) - ).with_columns( - pl.col("gene").alias("label") - ) - - self.gene_labels = unpivot.with_columns(pl.col("label").cast(pl.Utf8))["label"].to_numpy() - self.matrix = unpivot[list(map(str, range(self.total_windows)))].to_numpy() - self.matrix = self.matrix[~np.isnan(self.matrix).any(axis=1), :] - - # dist matrix - print("Distances calculation") - self.dist = pdist(self.matrix, metric=dist_method) - # linkage matrix - print("Linkage calculation and minimizing distances") - self.linkage = linkage(self.dist, method=clust_method, optimal_ordering=True) - - self.order = leaves_list(self.linkage) - - self.tree = None - - @cache - def dynamicTreeCut(self, **kwargs) -> dict: - """ - Method for asigning genes into modules with dynamic tree cut algorithm. - - :param kwargs: all arguements for dynamicTreeCut - - :return: tree dictionary - """ - print("WARNING: dynamicTreeCut can take very long time to run") - return cutreeHybrid(self.linkage, self.dist, **kwargs) - - def draw( - self, - fig_axes: tuple = None, - title: str = None - ) -> Figure: - """ - Draws heat-map on given :class:`matplotlib.Axes` or makes them itself. - - :param fig_axes: Tuple with (fig, axes) from :meth:`matplotlib.plt.subplots`. - :param title: Title of the plot. - :return: - """ - if fig_axes is None: - plt.clf() - fig, axes = plt.subplots() - else: - fig, axes = fig_axes - - vmin = 0 - vmax = np.max(np.array(self.plot_data)) - - image = axes.imshow( - self.matrix[self.order, :], - interpolation="nearest", aspect='auto', - cmap=colormaps['cividis'], - vmin=vmin, vmax=vmax - ) - axes.set_title(title) - axes.set_xlabel('Position') - axes.set_ylabel('') - self.__add_flank_lines(axes) - axes.set_yticks([]) - plt.colorbar(image, ax=axes, label='Methylation density') - - return fig - - def __add_flank_lines(self, axes: plt.Axes): - """ - Add flank lines to the given axis (for line plot) - """ - x_ticks = [] - x_labels = [] - if self.upstream_windows > 0: - x_ticks.append(self.upstream_windows - .5) - x_labels.append('TSS') - if self.downstream_windows > 0: - x_ticks.append(self.gene_windows + self.upstream_windows - .5) - x_labels.append('TES') - - if x_ticks and x_labels: - axes.set_xticks(x_ticks) - axes.set_xticklabels(x_labels) - for tick in x_ticks: - axes.axvline(x=tick, linestyle='--', color='k', alpha=.3) - - -class ChrLevels: - def __init__(self, df: pl.DataFrame) -> None: - self.bismark = df - self.plot_data = ( - df - .sort(["chr", "window"]) - .with_row_count("fragment") - .group_by(["chr", "fragment"], maintain_order=True) - .agg([pl.sum("sum"), pl.sum("count")]) - .with_columns((pl.col("sum") / pl.col("count")).alias("density")) - ) - - @classmethod - def from_file( - cls, - file: str, - chr_min_length = 10**6, - window_length: int = 10**6, - batch_size: int = 10 ** 6, - cpu: int = cpu_count() - ): - """ - Initialize ChrLevels with CX_report file - - :param file: Path to file - :param chr_min_length: Minimum length of chromosome to be analyzed - :param window_length: Length of windows in bp - :param cpu: How many cores to use. Uses every physical core by default - :param batch_size: Number of rows to read by one CPU core - """ - bismark = pl.read_csv_batched( - file, - separator='\t', has_header=False, - new_columns=['chr', 'position', 'strand', - 'count_m', 'count_um', 'context'], - columns=[0, 1, 2, 3, 4, 5], - batch_size=batch_size, - n_threads=cpu - ) - read_approx = approx_batch_num(file, batch_size) - read_batches = 0 - - total = None - - batches = bismark.next_batches(cpu) - print(f"Reading from {file}") - while batches: - for df in batches: - df = ( - df.lazy() - .filter((pl.col('count_m') + pl.col('count_um') != 0)) - .group_by(["strand", "chr"]) - .agg([ - pl.col("context"), - (pl.col("position") / window_length).floor().alias("window").cast(pl.Int32), - ((pl.col('count_m')) / (pl.col('count_m') + pl.col('count_um'))).alias('density').cast(pl.Float32), - (pl.max("position") - pl.min("position")).alias("length") - ]) - .filter(pl.col("length") > chr_min_length) - .explode(["context", "window", "density"]) - .group_by(by=['chr', 'strand', 'context', 'window']) - .agg([ - pl.sum('density').alias('sum'), - pl.count('density').alias('count') - ]) - .drop_nulls(subset=['sum']) - ).collect() - if total is None and len(df) == 0: - raise Exception( - "Error reading Bismark file. Check format or genome. No joins on first batch.") - elif total is None: - total = df - else: - total = total.extend(df) - - read_batches += 1 - print( - f"\tRead {read_batches}/{read_approx} batch | Total size - {round(total.estimated_size('mb'), 1)}Mb RAM", end="\r") - batches = bismark.next_batches(cpu) - print("DONE") - - return cls(total) - - def save_plot_rds(self, path, compress: bool = False): - """ - Saves plot data in a rds DataFrame with columns: - - +----------+---------+ - | fragment | density | - +==========+=========+ - | Int | Float | - +----------+---------+ - """ - write_rds(path, self.plot_data.to_pandas(), - compress="gzip" if compress else None) - - def filter(self, context: str = None, strand: str = None, chr: str = None): - """ - :param context: Methylation context (CG, CHG, CHH) to filter (only one). - :param strand: Strand to filter (+ or -). - :param chr: Chromosome name to filter. - :return: Filtered :class:`Bismark`. - """ - context_filter = self.bismark["context"] == context if context is not None else True - strand_filter = self.bismark["strand"] == strand if strand is not None else True - chr_filter = self.bismark["chr"] == chr if chr is not None else True - - if context_filter is None and strand_filter is None and chr_filter is None: - return self - else: - return self.__class__(self.bismark.filter(context_filter & strand_filter & chr_filter)) - - def draw( - self, - fig_axes: tuple = None, - smooth: int = 10, - label: str = None, - linewidth: float = 1.0, - linestyle: str = '-', - ) -> Figure: - - if fig_axes is None: - fig, axes = plt.subplots() - else: - fig, axes = fig_axes - - ticks_data = self.plot_data.group_by("chr", maintain_order = True).agg(pl.min("fragment")) - - x_lines = ticks_data["fragment"].to_numpy() - x_lines = np.append(x_lines, self.plot_data["fragment"].max()) - - x_ticks = (x_lines[1:] + x_lines[:-1]) // 2 - - # get middle ticks - - x_labels = ticks_data["chr"].to_list() - - data = self.plot_data["density"].to_numpy() - - polyorder = 3 - window = smooth if smooth > polyorder else polyorder + 1 - - if smooth: - data = savgol_filter(data, window, 3, mode='nearest') - - x = np.arange(len(data)) - data = data * 100 # convert to percents - axes.plot(x, data, label=label, - linestyle=linestyle, linewidth=linewidth) - - axes.set_xticks(x_ticks) - axes.set_xticklabels(x_labels) - - axes.legend() - axes.set_ylabel('Methylation density, %') - axes.set_xlabel('Position') - - for tick in x_lines: - axes.axvline(x=tick, linestyle='--', color='k', alpha=.1) - - fig.set_size_inches(12, 5) - - return fig - - -class Metagene(BismarkBase): - """ - Stores metagene coverage2cytosine data. - """ - @classmethod - def from_file( - cls, - file: str, - genome: pl.DataFrame, - upstream_windows: int = 0, - gene_windows: int = 2000, - downstream_windows: int = 0, - batch_size: int = 10 ** 6, - cpu: int = cpu_count() - ): - """ - Constructor from Bismark coverage2cytosine output. - - :param cpu: How many cores to use. Uses every physical core by default - :param file: Path to bismark genomeWide report - :param genome: polars.Dataframe with gene ranges - :param upstream_windows: Number of windows flank regions to split - :param downstream_windows: Number of windows flank regions to split - :param gene_windows: Number of windows gene regions to split - :param batch_size: Number of rows to read by one CPU core - """ - if upstream_windows < 1: - upstream_windows = 0 - if downstream_windows < 1: - downstream_windows = 0 - if gene_windows < 1: - gene_windows = 0 - - bismark_df = cls.__read_bismark_batches(file, genome, - upstream_windows, gene_windows, downstream_windows, - batch_size, cpu) - - return cls(bismark_df, - upstream_windows=upstream_windows, - gene_windows=gene_windows, - downstream_windows=downstream_windows) - - @staticmethod - def __read_bismark_batches( - file: str, - genome: pl.DataFrame, - upstream_windows: int = 500, - gene_windows: int = 2000, - downstream_windows: int = 500, - batch_size: int = 10 ** 7, - cpu: int = cpu_count() - ) -> pl.DataFrame: - # enable string cache for categorical comparison - pl.enable_string_cache(True) - - # POLARS EXPRESSIONS - # cast genome columns to type to join - gene_columns = [ - pl.col('strand').cast(pl.Categorical), - pl.col('chr').cast(pl.Categorical) - ] - # cast report columns to optimized type - df_columns = [ - pl.col('position').cast(pl.Int32), - pl.col('chr').cast(pl.Categorical), - pl.col('strand').cast(pl.Categorical), - pl.col('context').cast(pl.Categorical), - # density for CURRENT cytosine - ((pl.col('count_m')) / (pl.col('count_m') + pl.col('count_um'))).alias('density') - ] - - # upstream region position check - upstream_region = pl.col('position') < pl.col('start') - # body region position check - body_region = (pl.col('start') <= pl.col('position')) & (pl.col('position') <= pl.col('end')) - # downstream region position check - downstream_region = (pl.col('position') > pl.col('end')) - - upstream_fragment = (( - (pl.col('position') - pl.col('upstream')) / (pl.col('start') - pl.col('upstream')) - ) * upstream_windows).floor() - - # fragment even for position == end needs to be rounded by floor - # so 1e-10 is added (position is always < end) - body_fragment = (( - (pl.col('position') - pl.col('start')) / (pl.col('end') - pl.col('start') + 1e-10) - ) * gene_windows).floor() + upstream_windows - - downstream_fragment = (( - (pl.col('position') - pl.col('end')) / (pl.col('downstream') - pl.col('end') + 1e-10) - ) * downstream_windows).floor() + upstream_windows + gene_windows - - # batch approximation - read_approx = approx_batch_num(file, batch_size) - read_batches = 0 - - # output dataframe - total = None - # initialize batched reader - bismark = pl.read_csv_batched( - file, - separator='\t', has_header=False, - new_columns=['chr', 'position', 'strand', - 'count_m', 'count_um', 'context'], - columns=[0, 1, 2, 3, 4, 5], - batch_size=batch_size, - n_threads=cpu - ) - batches = bismark.next_batches(cpu) - - def process_batch(df: pl.DataFrame): - return ( - df.lazy() - # filter empty rows - .filter((pl.col('count_m') + pl.col('count_um') != 0)) - # assign types - # calculate density for each cytosine - .with_columns(df_columns) - # drop redundant columns, because individual cytosine density has already been calculated - # individual counts do not matter because every cytosine is equal - .drop(['count_m', 'count_um']) - # sort by position for joining - .sort(['chr', 'strand', 'position']) - # join with nearest - .join_asof( - genome.lazy().with_columns(gene_columns), - left_on='position', right_on='upstream', by=['chr', 'strand'] - ) - # limit by end of region - .filter(pl.col('position') <= pl.col('downstream')) - # calculate fragment ids - .with_columns([ - pl.when(upstream_region).then(upstream_fragment) - .when(body_region).then(body_fragment) - .when(downstream_region).then(downstream_fragment) - .cast(pl.Int32).alias('fragment'), - pl.concat_str( - pl.col("chr"), - (pl.concat_str(pl.col("start"), pl.col("end"), separator="-")), - separator=":").alias("gene").cast(pl.Categorical) - ]) - # gather fragment stats - .groupby(by=['chr', 'strand', 'gene', 'context', 'fragment']) - .agg([ - pl.sum('density').alias('sum'), - pl.count('density').alias('count') - ]) - .drop_nulls(subset=['sum']) - ).collect() - - print(f"Reading from {file}") - while batches: - for df in batches: - df = process_batch(df) - if total is None and len(df) == 0: - raise Exception( - "Error reading Bismark file. Check format or genome. No joins on first batch.") - elif total is None: - total = df - else: - total = total.extend(df) - - read_batches += 1 - print( - f"\tRead {read_batches}/{read_approx} batch | Total size - {round(total.estimated_size('mb'), 1)}Mb RAM", - end="\r") - batches = bismark.next_batches(cpu) - print("DONE") - return total - - def filter(self, context: str = None, strand: str = None, chr: str = None): - """ - :param context: Methylation context (CG, CHG, CHH) to filter (only one). - :param strand: Strand to filter (+ or -). - :param chr: Chromosome name to filter. - :return: Filtered :class:`Bismark`. - """ - context_filter = self.bismark["context"] == context if context is not None else True - strand_filter = self.bismark["strand"] == strand if strand is not None else True - chr_filter = self.bismark["chr"] == chr if chr is not None else True - - metadata = self.metadata - metadata["context"] = context - metadata["strand"] = strand - - if context_filter is None and strand_filter is None and chr_filter is None: - return self - else: - return self.__class__(self.bismark.filter(context_filter & strand_filter & chr_filter), - **metadata) - - def resize(self, to_fragments: int = None): - """ - Modify DataFrame to fewer fragments. - - :param to_fragments: Number of final fragments. - :return: Resized :class:`Bismark`. - """ - if self.upstream_windows is not None and self.gene_windows is not None and self.downstream_windows is not None: - from_fragments = self.total_windows - else: - from_fragments = self.bismark["fragment"].max() + 1 - - if to_fragments is None or from_fragments <= to_fragments: - return self - - resized = ( - self.bismark.lazy() - .with_columns( - ((pl.col("fragment") / from_fragments) - * to_fragments).floor().cast(pl.Int32) - ) - .group_by( - by=['chr', 'strand', 'gene', 'context', 'fragment'] - ).agg([ - pl.sum('sum').alias('sum'), - pl.sum('count').alias('count') - ]) - ).collect() - - metadata = self.metadata - metadata["upstream_windows"] = metadata["upstream_windows"] // ( - from_fragments // to_fragments) - metadata["downstream_windows"] = metadata["downstream_windows"] // ( - from_fragments // to_fragments) - metadata["gene_windows"] = metadata["gene_windows"] // ( - from_fragments // to_fragments) - - return self.__class__(resized, **metadata) - - def trim_flank(self, upstream=True, downstream=True): - """ - Trim fragments - - :param upstream: Keep upstream region? - :param downstream: Keep downstream region? - :return: Trimmed :class:`Bismark`. - """ - trimmed = self.bismark.lazy() - metadata = self.metadata.copy() - if downstream: - trimmed = ( - trimmed - .filter(pl.col("fragment") < self.upstream_windows + self.gene_windows) - ) - metadata["downstream_windows"] = 0 - - if upstream: - trimmed = ( - trimmed - .filter(pl.col("fragment") > self.upstream_windows - 1) - .with_columns(pl.col("fragment") - self.upstream_windows) - ) - metadata["upstream_windows"] = 0 - - return self.__class__(trimmed.collect(), **metadata) - - def clustering(self, count_threshold = 5, dist_method="euclidean", clust_method="average"): - """ - Gives an order for genes in specified method. - - *WARNING* - experimental function. May be very slow! - - :param dist_method: Distance method to use. See :meth:`scipy.spatial.distance.pdist` - :param clust_method: Clustering method to use. See :meth:`scipy.cluster.hierarchy.linkage` - :return: List of indexes of ordered rows. - """ - - return Clustering(self.bismark, count_threshold, dist_method, clust_method, **self.metadata) - - def line_plot(self, resolution: int = None): - """ - :param resolution: Number of fragments to resize to. Keep None if not needed. - :return: :class:`LinePlot`. - """ - bismark = self.resize(resolution) - return LinePlot(bismark.bismark, **bismark.metadata) - - def heat_map(self, nrow: int = 100, ncol: int = 100): - """ - :param nrow: Number of fragments to resize to. Keep None if not needed. - :param ncol: Number of columns in the resulting heat-map. - :return: :class:`HeatMap`. - """ - bismark = self.resize(ncol) - return HeatMap(bismark.bismark, nrow, order=None, **bismark.metadata) - - -class LinePlot(BismarkBase): - def __init__(self, bismark_df: pl.DataFrame, **kwargs): - """ - Calculates plot data for line-plot. - """ - super().__init__(bismark_df, **kwargs) - - self.plot_data = self.bismark.group_by("fragment").agg([ - pl.col("sum"), pl.col("count"), - (pl.sum("sum") / pl.sum("count")).alias("density") - ]).sort("fragment") - - if self.strand == '-': - max_fragment = self.plot_data["fragment"].max() - self.plot_data = self.plot_data.with_columns( - (max_fragment - pl.col("fragment")).alias("fragment")) - - @staticmethod - def __interval(sum_density: list[int], sum_counts: list[int], alpha=.95): - """ - Evaluate confidence interval for point - - :param sum_density: Sums of methylated counts in fragment - :param sum_counts: Sums of all read cytosines in fragment - :param alpha: Probability for confidence band - """ - sum_density, sum_counts = np.array(sum_density), np.array(sum_counts) - average = sum_density.sum() / sum_counts.sum() - - normalized = np.divide(sum_density, sum_counts) - - variance = np.average((normalized - average) ** 2, weights=sum_counts) - - n = sum(sum_counts) - 1 - - i = stats.t.interval(alpha, df=n, loc=average, scale=np.sqrt(variance / n)) - - return {"lower": i[0], "upper": i[1]} - - def save_plot_rds(self, path, compress: bool = False): - """ - Saves plot data in a rds DataFrame with columns: - - +----------+---------+ - | fragment | density | - +==========+=========+ - | Int | Float | - +----------+---------+ - """ - df = self.bismark.group_by("fragment").agg( - (pl.sum("sum") / pl.sum("count")).alias("density") - ) - write_rds(path, df.to_pandas(), - compress="gzip" if compress else None) - - def draw( - self, - fig_axes: tuple = None, - smooth: int = 10, - label: str = None, - confidence = 0, - linewidth: float = 1.0, - linestyle: str = '-', - ) -> Figure: - """ - Draws line-plot on given :class:`matplotlib.Axes` or makes them itself. - - :param fig_axes: Tuple with (fig, axes) from :meth:`matplotlib.plt.subplots` - :param smooth: Window for SavGol filter. (see :meth:`scipy.signal.savgol`) - :param label: Label of the plot - :param confidence: Probability for confidence bands. 0 for disabled. - :param linewidth: See matplotlib documentation. - :param linestyle: See matplotlib documentation. - :return: - """ - if fig_axes is None: - fig, axes = plt.subplots() - else: - fig, axes = fig_axes - - if 0 < confidence < 1: - df = ( - self.plot_data - .with_columns( - pl.struct(["sum", "count"]).map_elements( - lambda x: self.__interval(x["sum"], x["count"], confidence) - ).alias("interval") - ) - .unnest("interval") - .select(["fragment", "lower", "density", "upper"]) - ) - else: - df = self.plot_data - - data = df["density"] - - polyorder = 3 - window = smooth if smooth > polyorder else polyorder + 1 - - if smooth: - data = savgol_filter(data, window, 3, mode='nearest') - - x = np.arange(len(data)) - data = data * 100 # convert to percents - - axes.plot(x, data, - label=label if label is not None else "_", - linestyle=linestyle, linewidth=linewidth) - - if 0 < confidence < 1: - upper = df["upper"].to_numpy() * 100 # convert to percents - lower = df["lower"].to_numpy() * 100 # convert to percents - - upper = savgol_filter(upper, window, 3, mode="nearest") if smooth else upper - lower = savgol_filter(lower, window, 3, mode="nearest") if smooth else lower - - axes.fill_between(x, lower, upper, alpha=.2) - - self.__add_flank_lines(axes) - - if label is not None: - axes.legend() - - axes.set_ylabel('Methylation density, %') - axes.set_xlabel('Position') - - return fig - - def __add_flank_lines(self, axes: plt.Axes): - """ - Add flank lines to the given axis (for line plot) - """ - x_ticks = [] - x_labels = [] - if self.upstream_windows > 0: - x_ticks.append(self.upstream_windows - 1) - x_labels.append('TSS') - if self.downstream_windows > 0: - x_ticks.append(self.gene_windows + self.upstream_windows) - x_labels.append('TES') - - axes.set_xticks(x_ticks) - axes.set_xticklabels(x_labels) - for tick in x_ticks: - axes.axvline(x=tick, linestyle='--', color='k', alpha=.3) - - -class HeatMap(BismarkBase): - def __init__(self, bismark_df: pl.DataFrame, nrow, order=None, **kwargs): - super().__init__(bismark_df, **kwargs) - - order = ( - self.bismark.lazy() - .groupby(['chr', 'strand', "gene"]) - .agg( - (pl.col('sum').sum() / pl.col('count').sum()).alias("order") - ) - ).collect()["order"] if order is None else order - - # sort by rows and add row numbers - hm_data = ( - self.bismark.lazy() - .groupby(['chr', 'strand', "gene"]) - .agg( - pl.col('fragment'), pl.col('sum'), pl.col('count') - ) - .with_columns( - pl.lit(order).alias("order") - ) - .sort('order', descending=True) - # add row count - .with_row_count(name='row') - # round row count - .with_columns( - (pl.col('row') / (pl.col('row').max() + 1) - * nrow).floor().alias('row').cast(pl.Int16) - ) - .explode(['fragment', 'sum', 'count']) - # calc sum count for row|fragment - .groupby(['row', 'fragment']) - .agg( - (pl.sum('sum') / pl.sum('count')).alias('density') - ) - ) - - # prepare full template - template = ( - pl.LazyFrame(data={"row": list(range(nrow))}) - .with_columns( - pl.lit([list(range(0, self.total_windows))]).alias("fragment") - ) - .explode("fragment") - .with_columns( - pl.col("fragment").cast(pl.Int32), - pl.col("row").cast(pl.Int16) - ) - ) - # join template with actual data - hm_data = ( - # template - template - # join with orig - .join( - hm_data, - on=['row', 'fragment'], - how='left' - ) - .fill_null(0) - .sort(['row', 'fragment']) - ).collect() - - # convert to matrix - self.plot_data = np.array( - hm_data.groupby('row', maintain_order=True).agg( - pl.col('density'))['density'].to_list(), - dtype=np.float32 - ) - - if self.strand == '-': - self.plot_data = np.fliplr(self.plot_data) - - def draw( - self, - fig_axes: tuple = None, - title: str = None, - vmin: float = None, vmax: float = None - ) -> Figure: - """ - Draws heat-map on given :class:`matplotlib.Axes` or makes them itself. - - :param fig_axes: Tuple with (fig, axes) from :meth:`matplotlib.plt.subplots`. - :param title: Title of the plot. - :param vmin: Minimum for colormap. - :param vmax: Maximum for colormap. - :return: - """ - if fig_axes is None: - plt.clf() - fig, axes = plt.subplots() - else: - fig, axes = fig_axes - - vmin = 0 if vmin is None else vmin - vmax = np.max(np.array(self.plot_data)) if vmax is None else vmax - - image = axes.imshow( - self.plot_data, interpolation="nearest", aspect='auto', cmap=colormaps['cividis'], vmin=vmin, vmax=vmax - ) - axes.set_title(title) - axes.set_xlabel('Position') - axes.set_ylabel('') - self.__add_flank_lines(axes) - axes.set_yticks([]) - plt.colorbar(image, ax=axes, label='Methylation density') - - return fig - - def save_plot_rds(self, path, compress: bool = False): - """ - Save heat-map data in a matrix (ncol:nrow) - """ - write_rds(path, pdDataFrame(self.plot_data), - compress="gzip" if compress else None) - - def __add_flank_lines(self, axes: plt.Axes): - """ - Add flank lines to the given axis (for line plot) - """ - x_ticks = [] - x_labels = [] - if self.upstream_windows > 0: - x_ticks.append(self.upstream_windows - .5) - x_labels.append('TSS') - if self.downstream_windows > 0: - x_ticks.append(self.gene_windows + self.upstream_windows - .5) - x_labels.append('TES') - - if x_ticks and x_labels: - axes.set_xticks(x_ticks) - axes.set_xticklabels(x_labels) - for tick in x_ticks: - axes.axvline(x=tick, linestyle='--', color='k', alpha=.3) - - -class BismarkFilesBase: - def __init__(self, samples, labels: list[str] = None): - self.samples = self.__check_metadata( - samples if isinstance(samples, list) else [samples]) - if samples is None: - raise Exception("Flank or gene windows number does not match!") - self.labels = [str(v) for v in list( - range(len(samples)))] if labels is None else labels - if len(self.labels) != len(self.samples): - raise Exception("Labels length doesn't match samples number") - - def save_rds(self, base_filename, compress: bool = False, merge: bool = False): - if merge: - merged = pl.concat( - [sample.bismark.lazy().with_columns(pl.lit(label)) - for sample, label in zip(self.samples, self.labels)] - ) - write_rds(base_filename, merged.to_pandas(), - compress="gzip" if compress else None) - if not merge: - for sample, label in zip(self.samples, self.labels): - sample.save_rds( - f"{remove_extension(base_filename)}_{label}.rds", compress="gzip" if compress else None) - - def save_tsv(self, base_filename, compress: bool = False, merge: bool = False): - if merge: - merged = pl.concat( - [sample.bismark.lazy().with_columns(pl.lit(label)) - for sample, label in zip(self.samples, self.labels)] - ) - if compress: - with gzip.open(base_filename + ".gz", "wb") as file: - # noinspection PyTypeChecker - merged.write_csv(file, separator="\t") - else: - merged.write_csv(base_filename, separator="\t") - if not merge: - for sample, label in zip(self.samples, self.labels): - sample.save_tsv( - f"{remove_extension(base_filename)}_{label}.rds", compress=compress) - - @staticmethod - def __check_metadata(samples: list[BismarkBase]): - upstream_check = set([sample.metadata["upstream_windows"] - for sample in samples]) - downstream_check = set( - [sample.metadata["downstream_windows"] for sample in samples]) - gene_check = set([sample.metadata["gene_windows"] - for sample in samples]) - - if len(upstream_check) == len(gene_check) == len(downstream_check) == 1: - return samples - else: - return None - - -class MetageneFiles(BismarkFilesBase): - """ - Stores and plots multiple Bismark data. - - If you want to compare Bismark data with different genomes, create this class with a list of :class:`Bismark` classes. - """ - @classmethod - def from_list( - cls, - filenames: list[str], - genome: pl.DataFrame, - labels: list[str] = None, - upstream_windows: int = 0, - gene_windows: int = 2000, - downstream_windows: int = 0, - batch_size: int = 10 ** 6, - cpu: int = cpu_count() - ): - """ - Constructor for BismarkFiles. See :meth:`Bismark.from_file` - - :param filenames: List of filenames of files - :param genome: Same genome file for Bismark files to be aligned to. - """ - samples = [Metagene.from_file(file, genome, upstream_windows, gene_windows, - downstream_windows, batch_size, cpu) for file in filenames] - return cls(samples, labels) - - def filter(self, context: str = None, strand: str = None, chr: str = None): - """ - :meth:`Bismark.filter` all BismarkFiles - """ - return self.__class__([sample.filter(context, strand, chr) for sample in self.samples], self.labels) - - def trim_flank(self, upstream=True, downstream=True): - """ - :meth:`Bismark.trim_flank` all BismarkFiles - """ - return self.__class__([sample.trim_flank(upstream, downstream) for sample in self.samples], self.labels) - - def resize(self, to_fragments: int): - """ - :meth:`Bismark.resize` all BismarkFiles - """ - return self.__class__([sample.resize(to_fragments) for sample in self.samples], self.labels) - - @pl.StringCache() - def merge(self): - """ - If data comes from replicates, this method allows to merge them into single DataFrame by grouping them by position. - """ - metadata = [sample.metadata for sample in self.samples] - upstream_windows = set([md.get("upstream_windows") for md in metadata]) - gene_windows = set([md.get("gene_windows") for md in metadata]) - downstream_windows = set( - [md.get("downstream_windows") for md in metadata]) - - if len(upstream_windows) == len(downstream_windows) == len(gene_windows) == 1: - merged = ( - pl.concat([sample.bismark for sample in self.samples]).lazy() - .group_by(["strand", "context", "chr", "gene", "fragment"]) - .agg([pl.sum("sum").alias("sum"), pl.sum("count").alias("count")]) - ).collect() - - return Metagene(merged, - upstream_windows=list(upstream_windows)[0], - downstream_windows=list(downstream_windows)[0], - gene_windows=list(gene_windows)[0]) - else: - raise Exception("Metadata for merge DataFrames does not match!") - - def line_plot(self, resolution: int = None): - """ - :class:`LinePlot` for all files. - """ - return LinePlotFiles([sample.line_plot(resolution) for sample in self.samples], self.labels) - - def heat_map(self, nrow: int = 100, ncol: int = None): - """ - :class:`HeatMap` for all files. - """ - return HeatMapFiles([sample.heat_map(nrow, ncol) for sample in self.samples], self.labels) - - def violin_plot(self, fig_axes: tuple = None): - """ - Draws violin plot for Bismark DataFrames. - :param fig_axes: see :meth:`LinePlot.__init__` - """ - data = LinePlotFiles([sample.line_plot() - for sample in self.samples], self.labels) - data = [sample.plot_data.sort( - "fragment")["density"].to_numpy() for sample in data.samples] - - if fig_axes is None: - plt.clf() - fig, axes = plt.subplots() - else: - fig, axes = fig_axes - - axes.violinplot(data, showmeans=False, showmedians=True) - axes.set_xticks(np.arange(1, len(self.labels) + 1), labels=self.labels) - axes.set_ylabel('Methylation density') - - return fig - - def box_plot(self, fig_axes: tuple = None, showfliers=False): - """ - Draws box plot for Bismark DataFrames. - :param fig_axes: see :meth:`LinePlot.__init__` - """ - data = LinePlotFiles([sample.line_plot() - for sample in self.samples], self.labels) - data = [sample.plot_data.sort( - "fragment")["density"].to_numpy() for sample in data.samples] - - if fig_axes is None: - plt.clf() - fig, axes = plt.subplots() - else: - fig, axes = fig_axes - - axes.boxplot(data, showfliers=showfliers) - axes.set_xticks(np.arange(1, len(self.labels) + 1), labels=self.labels) - axes.set_ylabel('Methylation density') - - return fig - - -class LinePlotFiles(BismarkFilesBase): - def draw( - self, - smooth: int = 10, - linewidth: float = 1.0, - linestyle: str = '-', - confidence=0 - ): - plt.clf() - fig, axes = plt.subplots() - for lp, label in zip(self.samples, self.labels): - assert isinstance(lp, LinePlot) - lp.draw((fig, axes), smooth, label, confidence, linewidth, linestyle) - - return fig - - def save_plot_rds(self, base_filename, compress: bool = False, merge: bool = False): - if merge: - merged = pl.concat( - [sample.plot_data.lazy().with_columns(pl.lit(label)) - for sample, label in zip(self.samples, self.labels)] - ) - write_rds(base_filename, merged.to_pandas(), - compress="gzip" if compress else None) - if not merge: - for sample, label in zip(self.samples, self.labels): - sample.save_plot_rds(f"{remove_extension(base_filename)}_{label}.rds", - compress="gzip" if compress else None) - - -class HeatMapFiles(BismarkFilesBase): - def draw( - self, - title: str = None - ): - plt.clf() - if len(self.samples) > 3: - subplots_y = 2 - else: - subplots_y = 1 - - subplots_x = (len(self.samples) + len(self.samples) % 2) // subplots_y - fig, axes = plt.subplots(subplots_y, subplots_x) - - if not isinstance(axes, np.ndarray): - axes = np.array([axes]) - - vmin = 0 - vmax = np.max(np.array([sample.plot_data for sample in self.samples])) - - for i in range(subplots_y): - for j in range(subplots_x): - number = i * subplots_x + j - if number > len(self.samples) - 1: - break - - if subplots_y > 1: - ax = axes[i, j] - else: - ax = axes[j] - assert isinstance(ax, Axes) - - hm = self.samples[number] - assert isinstance(hm, HeatMap) - hm.draw((fig, ax), self.labels[number], vmin, vmax) - - fig.suptitle(title, fontstyle='italic') - fig.set_size_inches(6 * subplots_x, 5 * subplots_y) - return fig - - def save_plot_rds(self, base_filename, compress: bool = False): - for sample, label in zip(self.samples, self.labels): - sample.save_plot_rds(f"{remove_extension(base_filename)}_{label}.rds", - compress="gzip" if compress else None) diff --git a/src/bismarkplot/ChrLevels.py b/src/bismarkplot/ChrLevels.py new file mode 100644 index 0000000..2e18062 --- /dev/null +++ b/src/bismarkplot/ChrLevels.py @@ -0,0 +1,300 @@ +from __future__ import annotations + +import os +from multiprocessing import cpu_count + +import numpy as np +import polars as pl +from matplotlib import pyplot as plt +from matplotlib.figure import Figure +from pyreadr import write_rds +from scipy.signal import savgol_filter +import pyarrow as pa +import plotly.graph_objects as go +from pathlib import Path + +from .utils import approx_batch_num, interval +from .ArrowReaders import CsvReader, BismarkOptions + + +class ChrLevels: + def __init__(self, df: pl.DataFrame) -> None: + self.bismark = df + + # delete this in future and change to calculation of plot data + # when plot is drawn + self.plot_data = self.__calculate_plot_data(df) + + @staticmethod + def __calculate_plot_data(df: pl.DataFrame): + return ( + df + .sort(["chr", "window"]) + .with_row_count("fragment") + .group_by(["chr", "fragment"], maintain_order=True) + .agg([pl.sum("sum"), pl.sum("count")]) + .with_columns((pl.col("sum") / pl.col("count")).alias("density")) + ) + + @classmethod + def from_file( + cls, + file: str | Path, + chr_min_length=10 ** 6, + window_length: int = 10 ** 6, + block_size_mb: int = 100, + use_threads: bool = True, + confidence: int = None + ): + """ + Initialize ChrLevels with CX_report file + + :param file: Path to file + :param chr_min_length: Minimum length of chromosome to be analyzed + :param window_length: Length of windows in bp + :param cpu: How many cores to use. Uses every physical core by default + :param batch_size: Number of rows to read by one CPU core + """ + PREPROCESS_COLS = [ + pl.col("context"), + (pl.col("position") / window_length).floor().alias("window").cast(pl.Int32), + ((pl.col('count_m')) / (pl.col('count_m') + pl.col('count_um'))).alias('density').cast(pl.Float32), + (pl.max("position") - pl.min("position")).alias("length") + ] + + DATA_COLS = [ + pl.sum('density').alias('sum'), + pl.count('density').alias('count') + ] + if confidence is not None: + DATA_COLS.append( + pl.struct(["sum", "count"]) + .map_elements(lambda x: interval(x["sum"], x["count"], confidence)) + .alias("interval") + ) + + file = Path(file) + + pool = pa.default_memory_pool() + block_size = (1024 ** 2) * block_size_mb + reader = CsvReader(file, BismarkOptions(use_threads=use_threads, block_size=block_size), memory_pool=pool) + pool.release_unused() + print("Reading Bismark report from", file.absolute()) + + file_size = os.stat(file).st_size + read_batches = 0 + + bismark_df = None + + print(f"Reading from {file}") + + pl.enable_string_cache() + for df in reader: + df = pl.from_arrow(df) + df = ( + df.lazy() + .filter((pl.col('count_m') + pl.col('count_um') != 0)) + .group_by(["strand", "chr"]) + .agg(PREPROCESS_COLS) + .filter(pl.col("length") > chr_min_length) + .explode(["context", "window", "density"]) + .group_by(by=['chr', 'strand', 'context', 'window']) + .agg(DATA_COLS) + .drop_nulls(subset=['sum']) + ).collect() + + if confidence is not None: + df = df.unnest("interval") + + if bismark_df is None: + bismark_df = df + else: + bismark_df = bismark_df.extend(df) + + read_batches += 1 + print( + "Read {read_mb}/{total_mb}Mb | Total RAM usage - {ram_usage}Mb".format( + read_mb=round(read_batches * block_size / 1024 ** 2, 1), + total_mb=round(file_size / 1024 ** 2, 1), + ram_usage=round(bismark_df.estimated_size('mb'), 1) + ), + end="\r" + ) + + print( + "Read {read_mb}/{total_mb}Mb | Total RAM usage - {ram_usage}Mb".format( + read_mb=round(file_size / 1024 ** 2, 1), + total_mb=round(file_size / 1024 ** 2, 1), + ram_usage=round(bismark_df.estimated_size('mb'), 1) + ), + end="\r" + ) + print("\nDONE") + + return cls(bismark_df) + + @staticmethod + def __process_batch( + chr_min_length=10 ** 6, + window_length: int = 10 ** 6, + confidence: int = None + + ): + PREPROCESS_COLS = [ + pl.col("context"), + (pl.col("position") / window_length).floor().alias("window").cast(pl.Int32), + ((pl.col('count_m')) / (pl.col('count_m') + pl.col('count_um'))).alias('density').cast(pl.Float32), + (pl.max("position") - pl.min("position")).alias("length") + ] + + DATA_COLS = [ + pl.sum('density').alias('sum'), + pl.count('density').alias('count') + ] + if confidence is not None: + DATA_COLS.append( + pl.struct(["sum", "count"]) + .map_elements(lambda x: interval(x["sum"], x["count"], confidence)) + .alias("interval") + ) + + def save_plot_rds(self, path, compress: bool = False): + """ + Saves plot data in a rds DataFrame with columns: + + +----------+---------+ + | fragment | density | + +==========+=========+ + | Int | Float | + +----------+---------+ + """ + write_rds(path, self.plot_data.to_pandas(), + compress="gzip" if compress else None) + + def filter(self, context: str = None, strand: str = None, chr: str = None): + """ + :param context: Methylation context (CG, CHG, CHH) to filter (only one). + :param strand: Strand to filter (+ or -). + :param chr: Chromosome name to filter. + :return: Filtered :class:`Bismark`. + """ + context_filter = self.bismark["context"] == context if context is not None else True + strand_filter = self.bismark["strand"] == strand if strand is not None else True + chr_filter = self.bismark["chr"] == chr if chr is not None else True + + if context_filter is None and strand_filter is None and chr_filter is None: + return self + else: + return self.__class__(self.bismark.filter(context_filter & strand_filter & chr_filter)) + + @property + def __ticks_data(self): + ticks_data = self.plot_data.group_by("chr", maintain_order=True).agg(pl.min("fragment")) + + x_lines = ticks_data["fragment"].to_numpy() + x_lines = np.append(x_lines, self.plot_data["fragment"].max()) + + x_ticks = (x_lines[1:] + x_lines[:-1]) // 2 + + # get middle ticks + + x_labels = ticks_data["chr"].to_list() + return x_ticks, x_labels, x_lines + + def __add_flank_lines(self, axes): + x_ticks, x_labels, x_lines = self.__ticks_data + + axes.set_xticks(x_ticks) + axes.set_xticklabels(x_labels) + + for tick in x_lines: + axes.axvline(x=tick, linestyle='--', color='k', alpha=.1) + + def __add_flank_lines_plotly(self, figure: go.Figure): + x_ticks, x_labels, x_lines = self.__ticks_data + + figure.update_layout( + xaxis = dict( + tickmode='array', + tickvals=x_ticks, + ticktext=x_labels) + ) + + for tick in x_lines: + figure.add_vline(x=tick, line_dash="dash", line_color="rgba(0,0,0,0.2)") + + def draw( + self, + fig_axes: tuple = None, + smooth: int = 10, + label: str = None, + linewidth: float = 1.0, + linestyle: str = '-' + ) -> Figure: + if fig_axes is None: + fig, axes = plt.subplots() + else: + fig, axes = fig_axes + + data = self.plot_data["density"].to_numpy() + + polyorder = 3 + window = smooth if smooth > polyorder else polyorder + 1 + + if smooth: + _, _, lines = self.__ticks_data + data_ranges = [data[lines[i]: lines[i + 1]] for i in range(len(lines) - 1)] + data_ranges = [savgol_filter(r, window, 3, mode='nearest') for r in data_ranges] + + data = np.concatenate(data_ranges) + + x = np.arange(len(data)) + data = data * 100 # convert to percents + axes.plot(x, data, label=label, + linestyle=linestyle, linewidth=linewidth) + + axes.legend() + axes.set_ylabel('Methylation density, %') + axes.set_xlabel('Position') + + self.__add_flank_lines(axes) + + fig.set_size_inches(12, 5) + + return fig + + def draw_plotly(self, + figure: tuple = None, + smooth: int = 10, + label: str = None + ): + if figure is None: + figure = go.Figure() + + data = self.plot_data["density"].to_numpy() + + polyorder = 3 + window = smooth if smooth > polyorder else polyorder + 1 + + if smooth: + _, _, lines = self.__ticks_data + data_ranges = [data[lines[i]: lines[i + 1]] for i in range(len(lines) - 1)] + data_ranges = [savgol_filter(r, window, 3, mode='nearest') for r in data_ranges] + + data = np.concatenate(data_ranges) + + x = np.arange(len(data)) + data = data * 100 # convert to percents + + trace = go.Scatter(x=x, y=data, mode="lines", name=label) + + figure.add_trace(trace) + + figure.update_layout( + xaxis_title="Position", + yaxis_title="Methylation density, %" + ) + + self.__add_flank_lines_plotly(figure) + + return figure diff --git a/src/bismarkplot/Clusters.py b/src/bismarkplot/Clusters.py new file mode 100644 index 0000000..f60610b --- /dev/null +++ b/src/bismarkplot/Clusters.py @@ -0,0 +1,294 @@ +import gzip +from collections import Counter +from functools import cache + +import numpy as np +import polars as pl +from dynamicTreeCut import cutreeHybrid +from matplotlib import pyplot as plt, colormaps +from matplotlib.figure import Figure +from pyreadr import write_rds +from scipy.cluster.hierarchy import linkage, leaves_list +from scipy.spatial.distance import pdist + +from .Base import BismarkBase +from .utils import prepare_labels, hm_flank_lines + + +class Clustering(BismarkBase): + """ + Class for clustering genes within sample + """ + + def __init__(self, bismark_df: pl.DataFrame, count_threshold=5, dist_method="euclidean", clust_method="average", **kwargs): + """ + :param bismark_df: :class:polars.DataFrame with genes data + :param count_threshold: Minimum counts per fragment + :param dist_method: Method for evaluating distance + :param clust_method: Method for hierarchical clustering + """ + super().__init__(bismark_df, **kwargs) + + if self.bismark["fragment"].max() > 50: + print(f"WARNING: too many windows ({self.bismark['fragment'].max() + 1}), clusterisation may take very long time") + + grouped = ( + self.bismark.lazy() + .with_columns((pl.col("sum") / pl.col("count")).alias("density")) + .group_by(["chr", "strand", "gene", "context"]) + .agg([pl.col("density"), + pl.col("fragment"), + pl.sum("count").alias("gene_count"), + pl.count("fragment").alias("count")]) + ).collect() + + print(f"Starting with:\t{len(grouped)}") + + by_count = grouped.filter(pl.col("gene_count") > (count_threshold * pl.col("count"))) + + print(f"Left after count theshold filtration:\t{len(by_count)}") + + by_count = by_count.filter(pl.col("count") == self.total_windows) + + print(f"Left after empty windows filtration:\t{len(by_count)}") + + if len(by_count) == 0: + print("All genes have empty windows, exiting") + raise ValueError("All genes have empty windows") + + by_count = by_count.explode(["density", "fragment"]).drop(["gene_count", "count"]).fill_nan(0) + + unpivot = by_count.pivot( + index=["chr", "strand", "gene"], + values="density", + columns="fragment", + aggregate_function="sum" + ).select( + ["chr", "strand", "gene"] + list(map(str, range(self.total_windows))) + ).with_columns( + pl.col("gene").alias("label") + ) + + self.gene_labels = unpivot.with_columns(pl.col("label").cast(pl.Utf8))["label"].to_numpy() + self.matrix = unpivot[list(map(str, range(self.total_windows)))].to_numpy() + + self.gene_labels = self.gene_labels[~np.isnan(self.matrix).any(axis=1)] + self.matrix = self.matrix[~np.isnan(self.matrix).any(axis=1), :] + + # dist matrix + print("Distances calculation") + self.dist = pdist(self.matrix, metric=dist_method) + # linkage matrix + print("Linkage calculation and minimizing distances") + self.linkage = linkage(self.dist, method=clust_method, optimal_ordering=True) + + self.order = leaves_list(self.linkage) + + def modules(self, **kwargs): + return Modules(self.gene_labels, self.matrix, self.linkage, self.dist, + windows={ + key: self.metadata[key] for key in ["upstream_windows", "gene_windows", "downstream_windows"] + }, + **kwargs) + + # TODO: rewrite save_rds, save_tsv + + def __add_flank_lines(self, axes, major_labels: list, minor_labels: list, show_border=True): + labels = prepare_labels(major_labels, minor_labels) + + if self.downstream_windows < 1: + labels["down_mid"], labels["body_end"] = [""] * 2 + + if self.upstream_windows < 1: + labels["up_mid"], labels["body_start"] = [""] * 2 + + x_ticks = self.tick_positions + x_labels = [labels[key] for key in x_ticks.keys()] + + axes.set_xticks(x_ticks, labels=x_labels) + + if show_border: + for tick in [x_ticks["body_start"], x_ticks["body_end"]]: + axes.axvline(x=tick, linestyle='--', color='k', alpha=.3) + + return axes + + def draw( + self, + fig_axes: tuple = None, + title: str = None, + color_scale="Viridis", + major_labels=["TSS", "TES"], + minor_labels=["Upstream", "Body", "Downstream"], + show_border=True + ) -> Figure: + """ + Draws heat-map on given :class:`matplotlib.Axes` or makes them itself. + + :param fig_axes: Tuple with (fig, axes) from :meth:`matplotlib.plt.subplots`. + :param title: Title of the plot. + :return: + """ + if fig_axes is None: + plt.clf() + fig, axes = plt.subplots() + else: + fig, axes = fig_axes + + vmin = 0 + vmax = np.max(np.array(self.plot_data)) + + image = axes.imshow( + self.matrix[self.order, :], + interpolation="nearest", aspect='auto', + cmap=colormaps[color_scale.lower()], + vmin=vmin, vmax=vmax + ) + axes.set_title(title) + axes.set_xlabel('Position') + axes.set_ylabel('') + + self.__add_flank_lines(axes, major_labels, minor_labels, show_border) + + axes.set_yticks([]) + plt.colorbar(image, ax=axes, label='Methylation density') + + return fig + + +class Modules: + """ + Class for module construction and visualization of clustered genes + """ + def __init__(self, labels: list, matrix: np.ndarray, linkage, distance, windows, **kwargs): + if not len(labels) == len(matrix): + raise ValueError("Length of labels and methylation matrix labels don't match") + + self.labels, self.matrix = labels, matrix + self.linkage, self.distance = linkage, distance + + self.__windows = windows + + self.tree = self.__dynamic_tree_cut(**kwargs) + + def recalculate(self, **kwargs): + """ + Recalculate tree with another params + + :param kwargs: any kwargs to cutreeHybrid from dynamicTreeCut + """ + self.tree = self.__dynamic_tree_cut(**kwargs) + + @cache + def __dynamic_tree_cut(self, **kwargs): + return cutreeHybrid(self.linkage, self.distance, **kwargs) + + @property + def __format__table(self) -> pl.DataFrame: + return pl.DataFrame( + {"gene_labels": list(self.labels)} | + {key: list(self.tree[key]) for key in ["labels", "cores", "smallLabels", "onBranch"]} + ) + + def save_rds(self, filename, compress: bool = False): + """ + Save module data in Rds. + + :param filename: Path for file. + :param compress: Whether to compress to gzip or not. + """ + write_rds(filename, self.__format__table.to_pandas(), + compress="gzip" if compress else None) + + def save_tsv(self, filename, compress=False): + """ + Save module data in TSV. + + :param filename: Path for file. + :param compress: Whether to compress to gzip or not. + """ + if compress: + with gzip.open(filename + ".gz", "wb") as file: + # noinspection PyTypeChecker + self.__format__table.write_csv(file, separator="\t") + else: + self.__format__table.write_csv(filename, separator="\t") + + def draw( + self, + fig_axes: tuple = None, + title: str = None, + show_labels=True, + show_size=False + ) -> Figure: + """ + Method for visualization of moduled genes. Every row of heat-map represents an average methylation + profile of genes of the module. + + :param fig_axes: tuple(Fig, Axes) to plot + :param title: Title of the plot + :param show_labels: Enable/disable module number labels + :param show_size: Enable/disable module size labels (in brackets) + """ + + me_matrix, me_labels = [], [] + label_stats = Counter(self.tree["labels"]) + + # iterate every label + for label in label_stats.keys(): + # select genes from module + module_genes = self.tree["labels"] == label + # append mean module pattern + me_matrix.append(self.matrix[module_genes, :].mean(axis=0)) + + me_labels.append(f"{label} ({label_stats[label]})" if show_size else str(label)) + + me_matrix, me_labels = np.stack(me_matrix), np.stack(me_labels) + # sort matrix to minimize distances between modules + order = leaves_list(linkage( + y=pdist(me_matrix, metric="euclidean"), + method="average", + optimal_ordering=True + )) + + me_matrix, me_labels = me_matrix[order, :], me_labels[order] + + if fig_axes is None: + plt.clf() + fig, axes = plt.subplots() + else: + fig, axes = fig_axes + + vmin = 0 + vmax = np.max(np.array(me_matrix)) + + image = axes.imshow( + me_matrix, + interpolation="nearest", aspect='auto', + cmap=colormaps['cividis'], + vmin=vmin, vmax=vmax + ) + + if show_labels: + axes.set_yticks(np.arange(.5, len(me_labels), 1)) + axes.set_yticklabels(me_labels) + else: + axes.set_yticks([]) + + axes.set_title(title) + axes.set_xlabel('Position') + axes.set_ylabel('Module') + # axes.yaxis.tick_right() + + hm_flank_lines( + axes, + self.__windows["upstream_windows"], + self.__windows["gene_windows"], + self.__windows["downstream_windows"], + ) + + plt.colorbar(image, ax=axes, label='Methylation density', + # orientation="horizontal", location="top" + ) + + return fig diff --git a/src/bismarkplot/GenomeClass.py b/src/bismarkplot/GenomeClass.py new file mode 100644 index 0000000..8cf57f0 --- /dev/null +++ b/src/bismarkplot/GenomeClass.py @@ -0,0 +1,567 @@ +from __future__ import annotations + +import polars as pl +from pathlib import Path +from .utils import MetageneSchema + + +class Genome: + """ + Storing and manipulating annotation data. + """ + + def __init__(self, genome: pl.LazyFrame): + """ + Constructor for :class:`Genome`. Shouldn't be called directly. + + Parameters + ---------- + genome + `polars.LazyFrame `_ + """ + self.genome = genome + + @classmethod + def from_custom(cls, + file: str | Path, + chr_col: int = 0, + start_col: int = 1, + end_col: int = 2, + id_col: int = None, + strand_col: int = 5, + type_col: int = None, + comment_char: str = "#", + has_header: bool = False): + """ + Create :class:`Genome` from custom tab separated file with genomic regions. + + Warnings + -------- + + Index for columns starts from 0! + + Parameters + ---------- + file + Path to file. + chr_col + Index of chromosome column. + start_col + Index of region start column. + end_col + Index of region end column. + id_col + Index of id column (if exists). + strand_col + Index of strand column. + type_col + Index of type column (if exists). + comment_char + Character for comments in file. + has_header + Does file have header. + + Returns + ------- + Instance of :class:`Genome` + """ + + if sum([val is None for val in [chr_col, strand_col, start_col, end_col]]) > 0: + raise Exception("All position columns need to be specified!") + + genes = ( + pl.scan_csv( + file, + comment_char=comment_char, + has_header=has_header, + separator='\t' + ) + ) + cols = genes.columns + select_cols = [ + pl.col(cols[chr_col]).alias("chr").cast(pl.Utf8), + pl.col(cols[type_col]).alias("type") if type_col is not None else pl.lit(None).alias("type"), + pl.col(cols[start_col]).alias("start").cast(MetageneSchema.position), + pl.col(cols[end_col]).alias("end").cast(MetageneSchema.position), + pl.col(cols[strand_col]).alias("strand"), + pl.col(cols[id_col]).alias("id") if id_col is not None else pl.lit("").alias("id"), + ] + + genes = genes.with_columns(select_cols).drop(cols) + + print(f"Genome read from {file}") + return cls(genes) + + @classmethod + def from_gff(cls, file: str | Path): + """ + Constructor for :class:`Genome` class from .gff file. + + Parameters + ---------- + file + Path to .gff file. + + Returns + ------- + Instance of :class:`Genome`. + """ + + id_regex = "^ID=([^;]+)" + + genome = cls.from_custom(file, + 0, 3, 4, 8, 6, 2, + "#", False) + + genome.genome = genome.genome.with_columns( + pl.col("id").str.extract(id_regex) + ) + return genome + + def all(self, min_length: int = 0, flank_length: int = 0) -> pl.DataFrame: + """ + Filter annotation and calculate positions of flanking regions. + + Parameters + ---------- + min_length + Region length threshold. + flank_length + Length of flanking regions. + + Returns + ------- + Return :class:`polars.DataFrame` for downstream usage. + + Examples + -------- + + >>> path = "/path/to/genome.gff" + >>> genome = genome.from_gff(path) + >>> genome.all(min_length = 0) + shape: (710_650, 7) + ┌─────────────┬────────┬────────┬────────┬──────────┬────────────┬─────────────────┐ + │ chr ┆ strand ┆ start ┆ end ┆ upstream ┆ downstream ┆ id │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ str ┆ str ┆ u64 ┆ u64 ┆ u64 ┆ u64 ┆ str │ + ╞═════════════╪════════╪════════╪════════╪══════════╪════════════╪═════════════════╡ + │ NC_003070.9 ┆ + ┆ 3631 ┆ 5899 ┆ 1631 ┆ 7899 ┆ gene-AT1G01010 │ + │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │ + │ NC_000932.1 ┆ + ┆ 153878 ┆ 154312 ┆ 151878 ┆ 156312 ┆ cds-NP_051123.1 │ + │ NC_000932.1 ┆ ? ┆ 69611 ┆ 140650 ┆ 67611 ┆ 142650 ┆ rna-ArthCp047 │ + └─────────────┴────────┴────────┴────────┴──────────┴────────────┴─────────────────┘ + """ + + genes = self.__filter_genes( + self.genome, None, min_length, flank_length) + genes = self.__trim_genes(genes, flank_length).collect() + return self.__check_empty(genes) + + def gene_body(self, min_length: int = 4000, flank_length: int = 2000) -> pl.DataFrame: + """ + Filter annotation by type == gene and calculate positions of flanking regions. + + Warnings + -------- + This method will have empty output, if type is not specified in input file. + + Parameters + ---------- + min_length + Region length threshold. + flank_length + Length of flanking regions. + + Returns + ------- + Return :class:`polars.DataFrame` for downstream usage. + + Examples + -------- + + >>> path = "/path/to/genome.gff" + >>> genome = genome.from_gff(path) + >>> genome.gene_body(min_length=2000, flank_length=2000) + shape: (14_644, 7) + ┌─────────────┬────────┬────────┬────────┬──────────┬────────────┬────────────────┐ + │ chr ┆ strand ┆ start ┆ end ┆ upstream ┆ downstream ┆ id │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ str ┆ str ┆ u64 ┆ u64 ┆ u64 ┆ u64 ┆ str │ + ╞═════════════╪════════╪════════╪════════╪══════════╪════════════╪════════════════╡ + │ NC_003070.9 ┆ + ┆ 3631 ┆ 5899 ┆ 1631 ┆ 7899 ┆ gene-AT1G01010 │ + │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │ + │ NC_000932.1 ┆ + ┆ 104691 ┆ 107500 ┆ 102691 ┆ 109500 ┆ gene-ArthCr087 │ + │ NC_000932.1 ┆ + ┆ 141485 ┆ 143708 ┆ 139485 ┆ 145708 ┆ gene-ArthCp086 │ + └─────────────┴────────┴────────┴────────┴──────────┴────────────┴────────────────┘ + + """ + genes = self.__filter_genes( + self.genome, 'gene', min_length, flank_length) + genes = self.__trim_genes(genes, flank_length).collect() + return self.__check_empty(genes) + + def exon(self, min_length: int = 100) -> pl.DataFrame: + """ + Filter annotation by type == exon and length threshold. + + Warnings + -------- + This method will have empty output, if type is not specified in input file. + + Parameters + ---------- + min_length + Region length threshold. + + Returns + ------- + Return :class:`polars.DataFrame` for downstream usage. + + Examples + -------- + + >>> path = "/path/to/genome.gff" + >>> genome = genome.from_gff(path) + >>> genome.exon(min_length=200) + shape: (132_822, 7) + ┌─────────────┬────────┬────────┬────────┬──────────┬────────────┬────────────────────┐ + │ chr ┆ strand ┆ start ┆ end ┆ upstream ┆ downstream ┆ id │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ str ┆ str ┆ u64 ┆ u64 ┆ u64 ┆ u64 ┆ str │ + ╞═════════════╪════════╪════════╪════════╪══════════╪════════════╪════════════════════╡ + │ NC_003070.9 ┆ + ┆ 3631 ┆ 3913 ┆ 3631 ┆ 3913 ┆ exon-NM_099983.2-1 │ + │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │ + │ NC_000932.1 ┆ + ┆ 152806 ┆ 153195 ┆ 152806 ┆ 153195 ┆ exon-ArthCp085-1 │ + │ NC_000932.1 ┆ + ┆ 153878 ┆ 154312 ┆ 153878 ┆ 154312 ┆ exon-ArthCp085-2 │ + └─────────────┴────────┴────────┴────────┴──────────┴────────────┴────────────────────┘ + """ + flank_length = 0 + genes = self.__filter_genes( + self.genome, 'exon', min_length, flank_length) + genes = self.__trim_genes(genes, flank_length).collect() + return self.__check_empty(genes) + + def cds(self, min_length: int = 100) -> pl.DataFrame: + """ + Filter annotation by type == CDS and length threshold. + + Warnings + -------- + This method will have empty output, if type is not specified in input file. + + Parameters + ---------- + min_length + Region length threshold. + + Returns + ------- + Return :class:`polars.DataFrame` for downstream usage. + + Examples + -------- + + >>> path = "/path/to/genome.gff" + >>> genome = genome.from_gff(path) + >>> genome.cds(min_length=200) + shape: (81_837, 7) + ┌─────────────┬────────┬────────┬────────┬──────────┬────────────┬─────────────────┐ + │ chr ┆ strand ┆ start ┆ end ┆ upstream ┆ downstream ┆ id │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ str ┆ str ┆ u64 ┆ u64 ┆ u64 ┆ u64 ┆ str │ + ╞═════════════╪════════╪════════╪════════╪══════════╪════════════╪═════════════════╡ + │ NC_003070.9 ┆ + ┆ 3996 ┆ 4276 ┆ 3996 ┆ 4276 ┆ cds-NP_171609.1 │ + │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │ + │ NC_000932.1 ┆ + ┆ 152806 ┆ 153195 ┆ 152806 ┆ 153195 ┆ cds-NP_051123.1 │ + │ NC_000932.1 ┆ + ┆ 153878 ┆ 154312 ┆ 153878 ┆ 154312 ┆ cds-NP_051123.1 │ + └─────────────┴────────┴────────┴────────┴──────────┴────────────┴─────────────────┘ + """ + flank_length = 0 + genes = self.__filter_genes( + self.genome, 'CDS', min_length, flank_length) + genes = self.__trim_genes(genes, flank_length).collect() + return self.__check_empty(genes) + + def near_TSS(self, min_length: int = 4000, flank_length: int = 2000): + """ + Filter annotation by type == gene and calculate positions of near TSS regions. + + Warnings + -------- + This method will have empty output, if type is not specified in input file. + + Use down_windows=0 for Metagene. + + Parameters + ---------- + min_length + Region length threshold. + flank_length + Length of flanking regions. + + Returns + ------- + Return :class:`polars.DataFrame` for downstream usage. + + Examples + -------- + + >>> path = "/path/to/genome.gff" + >>> genome = genome.from_gff(path) + >>> genome.near_TSS(min_length=2000, flank_length=2000) + shape: (14_644, 7) + ┌─────────────┬────────┬────────┬────────┬──────────┬────────────┬────────────────┐ + │ chr ┆ strand ┆ start ┆ end ┆ upstream ┆ downstream ┆ id │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ str ┆ str ┆ u64 ┆ u64 ┆ u64 ┆ u64 ┆ str │ + ╞═════════════╪════════╪════════╪════════╪══════════╪════════════╪════════════════╡ + │ NC_003070.9 ┆ + ┆ 3631 ┆ 5631 ┆ 1631 ┆ 5631 ┆ gene-AT1G01010 │ + │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │ + │ NC_000932.1 ┆ + ┆ 104691 ┆ 106691 ┆ 102691 ┆ 106691 ┆ gene-ArthCr087 │ + │ NC_000932.1 ┆ + ┆ 141485 ┆ 143485 ┆ 139485 ┆ 143485 ┆ gene-ArthCp086 │ + └─────────────┴────────┴────────┴────────┴──────────┴────────────┴────────────────┘ + + + """ + + ''' + upstream_length = ( + # when before length is enough + # we set upstream length to specified + pl.when(pl.col('upstream') >= flank_length).then(flank_length) + # when genes are intersecting (current start < previous end) + # we don't take this as upstream region + .when(pl.col('upstream') < 0).then(0) + # when length between genes is not enough for full specified length + # we divide it into half + .otherwise((pl.col('upstream') - (pl.col('upstream') % 2)) // 2) + ) + ''' + upstream_length = flank_length + + gene_type = "gene" + genes = self.__filter_genes( + self.genome, gene_type, min_length, flank_length) + genes = ( + genes + .groupby(['chr', 'strand'], maintain_order=True).agg([ + pl.col('start'), + # upstream shift + (pl.col('start').shift(-1) - pl.col('end')).shift(1) + .fill_null(flank_length) + .alias('upstream'), + pl.col('id') + ]) + .explode(['start', 'upstream', 'id']) + .with_columns([ + (pl.col('start') - upstream_length).alias('upstream'), + (pl.col("start") + flank_length).alias("end") + ]) + .with_columns(pl.col("end").alias("downstream")) + .select(['chr', 'strand', 'start', 'end', 'upstream', 'downstream', 'id']) + ).collect() + + return self.__check_empty(genes) + + def near_TES(self, min_length: int = 4000, flank_length: int = 2000): + """ + Filter annotation by type == gene and calculate positions of near TES regions. + + Warnings + -------- + This method will have empty output, if type is not specified in input file. + + Use down_windows=0 for Metagene. + + Parameters + ---------- + min_length + Region length threshold. + flank_length + Length of flanking regions. + + Returns + ------- + Return :class:`polars.DataFrame` for downstream usage. + + Examples + -------- + + >>> path = "/path/to/genome.gff" + >>> genome = genome.from_gff(path) + >>> genome.near_TES(min_length=2000, flank_length=2000) + shape: (14_644, 7) + ┌─────────────┬────────┬────────┬────────┬──────────┬────────────┬────────────────┐ + │ chr ┆ strand ┆ start ┆ end ┆ upstream ┆ downstream ┆ id │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ str ┆ str ┆ u64 ┆ u64 ┆ u64 ┆ u64 ┆ str │ + ╞═════════════╪════════╪════════╪════════╪══════════╪════════════╪════════════════╡ + │ NC_003070.9 ┆ + ┆ 3899 ┆ 5899 ┆ 3899 ┆ 7899 ┆ gene-AT1G01010 │ + │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │ + │ NC_000932.1 ┆ + ┆ 105500 ┆ 107500 ┆ 105500 ┆ 109500 ┆ gene-ArthCr087 │ + │ NC_000932.1 ┆ + ┆ 141708 ┆ 143708 ┆ 141708 ┆ 145708 ┆ gene-ArthCp086 │ + └─────────────┴────────┴────────┴────────┴──────────┴────────────┴────────────────┘ + """ + + # decided not to use this + ''' + downstream_length = ( + # when before length is enough + # we set upstream length to specified + pl.when(pl.col('downstream') >= flank_length).then(flank_length) + # when genes are intersecting (current start < previous end) + # we don't take this as upstream region + .when(pl.col('downstream') < 0).then(0) + # when length between genes is not enough for full specified length + # we divide it into half + .otherwise((pl.col('downstream') - pl.col('downstream') % 2) // 2) + ) + ''' + downstream_length = flank_length + + gene_type = "gene" + genes = self.__filter_genes( + self.genome, gene_type, min_length, flank_length) + genes = ( + genes + .groupby(['chr', 'strand'], maintain_order=True).agg([ + pl.col('end'), + # downstream shift + (pl.col('start').shift(-1) - pl.col('end')) + .fill_null(flank_length) + .alias('downstream'), + pl.col('id') + ]) + .explode(['end', 'downstream', 'id']) + .with_columns([ + (pl.col('end') + downstream_length).alias('downstream'), + (pl.col("end") - flank_length).alias("start") + ]) + .with_columns(pl.col("start").alias("upstream")) + .select(['chr', 'strand', 'start', 'end', 'upstream', 'downstream', 'id']) + ).collect() + + return self.__check_empty(genes) + + def other(self, gene_type: str, min_length: int = 1000, flank_length: int = 100) -> pl.DataFrame: + """ + Filter annotation by selected type and calculate positions of nflanking regions. + + Warnings + -------- + This method will have empty output, if type is not specified in input file. + + If no flanking regions are needed – enter flank_length=0. + + Parameters + ---------- + min_length + Region length threshold. + flank_length + Length of flanking regions. + + Returns + ------- + Return :class:`polars.DataFrame` for downstream usage. + + Examples + -------- + + >>> path = "/path/to/genome.gff" + >>> genome = genome.from_gff(path) + >>> genome.other("region") + shape: (45_888, 7) + ┌─────────────┬────────┬────────┬────────┬──────────┬────────────┬─────────────────┐ + │ chr ┆ strand ┆ start ┆ end ┆ upstream ┆ downstream ┆ id │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ str ┆ str ┆ u64 ┆ u64 ┆ u64 ┆ u64 ┆ str │ + ╞═════════════╪════════╪════════╪════════╪══════════╪════════════╪═════════════════╡ + │ NC_003070.9 ┆ + ┆ 3631 ┆ 5899 ┆ 3531 ┆ 5999 ┆ rna-NM_099983.2 │ + │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │ + │ NC_000932.1 ┆ + ┆ 152806 ┆ 154312 ┆ 152706 ┆ 154412 ┆ rna-ArthCp085 │ + │ NC_000932.1 ┆ ? ┆ 69611 ┆ 140650 ┆ 69511 ┆ 140750 ┆ rna-ArthCp047 │ + └─────────────┴────────┴────────┴────────┴──────────┴────────────┴─────────────────┘ + + """ + genes = self.__filter_genes( + self.genome, gene_type, min_length, flank_length) + genes = self.__trim_genes(genes, flank_length).collect() + return self.__check_empty(genes) + + @staticmethod + def __filter_genes(genes, gene_type, min_length, flank_length): + if gene_type is not None: + genes = genes.filter(pl.col('type') == gene_type).drop('type') + else: + genes = genes.drop("type") + + # filter genes, which start < flank_length + if flank_length > 0: + genes = genes.filter(pl.col('start') > flank_length) + # filter genes which don't pass length threshold + if min_length > 0: + genes = genes.filter((pl.col('end') - pl.col('start')) > min_length) + + return genes + + @staticmethod + def __trim_genes(genes, flank_length) -> pl.LazyFrame: + # upstream shift + # calculates length to previous gene on same chr_strand + length_before = (pl.col('start').shift(-1) - pl.col('end')).shift(1).fill_null(flank_length) + # downstream shift + # calculates length to next gene on same chr_strand + length_after = (pl.col('start').shift(-1) - pl.col('end')).fill_null(flank_length) + + # decided not to use this conditions + ''' + upstream_length_conditioned = ( + # when before length is enough + # we set upstream length to specified + pl.when(pl.col('upstream') >= flank_length).then(flank_length) + # when genes are intersecting (current start < previous end) + # we don't take this as upstream region + .when(pl.col('upstream') < 0).then(0) + # when length between genes is not enough for full specified length + # we divide it into half + .otherwise((pl.col('upstream') - (pl.col('upstream') % 2)) // 2) + ) + + downstream_length_conditioned = ( + # when before length is enough + # we set upstream length to specified + pl.when(pl.col('downstream') >= flank_length).then(flank_length) + # when genes are intersecting (current start < previous end) + # we don't take this as upstream region + .when(pl.col('downstream') < 0).then(0) + # when length between genes is not enough for full specified length + # we divide it into half + .otherwise((pl.col('downstream') - pl.col('downstream') % 2) // 2) + ) + ''' + + return ( + genes + .groupby(['chr', 'strand'], maintain_order=True).agg([ + pl.col('start'), + pl.col('end'), + length_before.alias('upstream'), + length_after.alias('downstream'), + pl.col('id') + ]) + .explode(['start', 'end', 'upstream', 'downstream', 'id']) + .with_columns([ + # calculates length of region + (pl.col('start') - flank_length).alias('upstream'), + # calculates length of region + (pl.col('end') + flank_length).alias('downstream') + ]) + ) + + @staticmethod + def __check_empty(genes): + if len(genes) > 0: + return genes + else: + raise Exception( + "Genome DataFrame is empty. Are you sure input file is valid?") diff --git a/src/bismarkplot/MetageneClasses.py b/src/bismarkplot/MetageneClasses.py new file mode 100644 index 0000000..deb7e1a --- /dev/null +++ b/src/bismarkplot/MetageneClasses.py @@ -0,0 +1,1466 @@ +from __future__ import annotations + +import multiprocessing +import os +import typing +from pathlib import Path +from typing import Literal + +import matplotlib.pyplot as plt +import numpy as np +import plotly.express as px +import polars as pl +import pyarrow + +from .Plots import LinePlot, LinePlotFiles, HeatMap, HeatMapFiles +from .ArrowReaders import CsvReader, BismarkOptions, ParquetReader +from .SeqMapper import Mapper, Sequence +from .Base import BismarkBase, BismarkFilesBase +from .Clusters import Clustering +from .utils import MetageneSchema +from .GenomeClass import Genome + +pl.enable_string_cache(True) + + +class Metagene(BismarkBase): + """ + Stores Metagene data. + """ + def __init__(self, bismark_df: pl.DataFrame, **kwargs): + + super().__init__(bismark_df, **kwargs) + + @classmethod + def from_bismark( + cls, + file: str | Path, + genome: pl.DataFrame, + up_windows: int = 0, + body_windows: int = 2000, + down_windows: int = 0, + block_size_mb: int = 100, + use_threads: bool = True, + sumfunc: str = "mean" + ): + """ + Constructor for Metagene class from Bismark ``coverage2cytosine`` report. + + Parameters + ---------- + file + Path to bismark genomeWide report. + genome + ``polars.Dataframe`` with gene ranges (from :class:`Genome`) + up_windows + Number of windows upstream region to split into + body_windows + Number of windows body region to split into + down_windows + Number of windows downstream region to split into + block_size_mb + Block size for reading. (Block size ≠ amount of RAM used. Reader allocates approx. Block size * 20 memory for reading.) + use_threads + Do multi-threaded or single-threaded reading. If multi-threaded option is used, number of threads is defined by `multiprocessing.cpu_count()` + sumfunc + Summary function to calculate density for window with. + + Returns + ------- + Metagene + + Examples + -------- + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> + >>> path = 'path/to/bismark.CX_report.txt' + >>> metagene = Metagene.from_bismark(path, genome, up_windows=500, body_windows=1000, down_windows=500) + """ + + up_windows, body_windows, down_windows = cls.__check_windows(up_windows, body_windows, down_windows) + + file = Path(file).expanduser().absolute() + cls.__check_exists(file) + + print("Initializing CSV reader.") + + pool = pyarrow.default_memory_pool() + block_size = (1024 ** 2) * block_size_mb + reader = CsvReader(file, BismarkOptions(use_threads=use_threads, block_size=block_size), memory_pool=pool) + pool.release_unused() + + print("Reading Bismark report from", file.absolute()) + + file_size = os.stat(file).st_size + read_batches = 0 + + if isinstance(genome, Genome): raise TypeError("Genome class need to be converted into DataFrame (e.g. Genome.gene_body()).") + def mutate(batch): + return ( + pl + .from_arrow(batch) + .filter((pl.col('count_m') + pl.col('count_um') != 0)) + .with_columns( + ((pl.col('count_m')) / (pl.col('count_m') + pl.col('count_um'))).alias('density') + .cast(MetageneSchema.sum) + ) + ) + + bismark_df = None + pl.enable_string_cache() + for batch in reader: + df = cls.__process_batch(batch, genome, mutate, up_windows, body_windows, down_windows, sumfunc) + + if bismark_df is None: bismark_df = df + else: bismark_df = bismark_df.extend(df) + + read_batches += 1 + cls.__print_batch_stat(read_batches * block_size, file_size, bismark_df.estimated_size()) + + cls.__print_batch_stat(file_size, file_size, bismark_df.estimated_size()) + print("\nDONE") + + return cls(bismark_df, + upstream_windows=up_windows, + gene_windows=body_windows, + downstream_windows=down_windows) + + @classmethod + def from_parquet( + cls, + file: str | Path, + genome: pl.DataFrame, + up_windows: int = 0, + body_windows: int = 2000, + down_windows: int = 0, + sumfunc: str = "mean", + use_threads=True + ): + """ + Constructor for Metagene class from converted ``.bedGraph`` or ``.cov`` (via :class:`Mapper`). + + Parameters + ---------- + file + Path to converted ``.parquet`` report. + genome + ``polars.Dataframe`` with gene ranges (from :class:`Genome`) + up_windows + Number of windows upstream region to split into + body_windows + Number of windows body region to split into + down_windows + Number of windows downstream region to split into + use_threads + Do multi-threaded or single-threaded reading. If multi-threaded option is used, number of threads is defined by `multiprocessing.cpu_count()` + sumfunc + Summary function to calculate density for window with. + + Returns + ------- + Metagene + + Warnings + -------- + If ``.parquet`` file is created with :meth:`BinomialData.preprocess` use :meth:`Metagene.from_binom` instead. + + Examples + -------- + + >>> save_name = "preprocessed.parquet" + >>> sequence = Sequence.from_fasta("path/to/sequence.fasta") + >>> Mapper.coverage("/path/to/report.cov", sequence, delete=False, name=save_name) + >>> # Now our converted coverage file saved to preprocessed.parquet + >>> + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> metagene = Metagene.from_parquet(save_name, genome, up_windows=500, body_windows=1000, down_windows=500) + """ + up_windows, body_windows, down_windows = cls.__check_windows(up_windows, body_windows, down_windows) + + file = Path(file).expanduser().absolute() + cls.__check_exists(file) + + bismark_df = None + + # initialize batched reader + reader = ParquetReader(file.absolute(), use_threads=use_threads) + + # batch approximation + file_size = os.stat(file).st_size + num_row_groups = len(reader) + read_row_groups = 0 + + if isinstance(genome, Genome): raise TypeError("Genome class need to be converted into DataFrame (e.g. Genome.gene_body()).") + print(f"Reading from {file}") + + def mutate(batch): + return ( + batch + .from_arrow(df) + .filter(pl.col("count_total") != 0) + .with_columns( + (pl.col('count_m') / pl.col('count_total')).alias('density').cast(MetageneSchema.sum) + ) + .drop("count_total") + ) + + for df in reader: + df = cls.__process_batch(df, genome, mutate, up_windows, body_windows, down_windows, sumfunc) + + if bismark_df is None: bismark_df = df + else: bismark_df = bismark_df.extend(df) + + read_row_groups += 1 + cls.__print_batch_stat((int(read_row_groups / num_row_groups) * file_size), file_size, bismark_df.estimated_size()) + + cls.__print_batch_stat(file_size, file_size, bismark_df.estimated_size()) + print("DONE") + + return cls(bismark_df, + upstream_windows=up_windows, + gene_windows=body_windows, + downstream_windows=down_windows) + + @classmethod + def from_binom( + cls, + file: str | Path, + genome: pl.DataFrame, + up_windows: int = 0, + body_windows: int = 2000, + down_windows: int = 0, + p_value: float = .05, + use_threads=True + ): + """ + Constructor for Metagene class from :meth:`BinomialData.preprocess` ``.parquet`` file. + + Only ``"mean"`` summary function is supported for construction :class:`Metagene` from binom data. + + Parameters + ---------- + p_value + P-value of cytosine methylation for it to be considered methylated. + file + Path to preprocessed `.parquet` file. + genome + ``polars.Dataframe`` with gene ranges (from :class:`Genome`) + up_windows + Number of windows upstream region to split into + body_windows + Number of windows body region to split into + down_windows + Number of windows downstream region to split into + use_threads + Do multi-threaded or single-threaded reading. If multi-threaded option is used, number of threads is defined by `multiprocessing.cpu_count()` + + Returns + ------- + Metagene + + Examples + -------- + >>> save_name = "preprocessed.parquet" + >>> BinomialData.preprocess("path/to/bismark.CX_report.txt", report_type="bismark", name=save_name) + >>> + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> metagene = Metagene.from_binom(save_name, genome, up_windows=500, body_windows=1000, down_windows=500) + """ + up_windows, body_windows, down_windows = cls.__check_windows(up_windows, body_windows, down_windows) + + file = Path(file).expanduser().absolute() + cls.__check_exists(file) + + bismark_df = None + + # initialize batched reader + reader = ParquetReader(file.absolute(), use_threads=use_threads) + + # batch approximation + file_size = file.stat().st_size + num_row_groups = len(reader) + read_row_groups = 0 + + if isinstance(genome, Genome): raise TypeError("Genome class need to be converted into DataFrame (e.g. Genome.gene_body()).") + print(f"Reading from {file}") + + def mutate(batch): + return ( + pl.from_arrow(batch) + .with_columns((pl.col("p_value") < p_value).cast(pl.Float32).alias("density")) + .drop("count_total") + ) + + for df in reader: + df = cls.__process_batch(df, genome, mutate, up_windows, body_windows, down_windows, "mean") + + if bismark_df is None: + bismark_df = df + else: + bismark_df = bismark_df.extend(df) + + read_row_groups += 1 + + cls.__print_batch_stat(file_size, file_size, bismark_df.estimated_size()) + print("DONE") + + return cls(bismark_df, + upstream_windows=up_windows, + gene_windows=body_windows, + downstream_windows=down_windows) + + @classmethod + def from_bedGraph( + cls, + file: str | Path, + genome: pl.DataFrame, + sequence: str | Path, + up_windows: int = 0, + body_windows: int = 2000, + down_windows: int = 0, + sumfunc: str = "mean", + batch_size: int = 10**6, + cpu: int = multiprocessing.cpu_count(), + skip_rows: int = 1, + save_preprocessed: str = None, + temp_dir: str = "./" + ): + """ + Constructor for Metagene class from ``.bedGraph`` file. + + Parameters + ---------- + file + Path to ``.bedGraph`` file. + genome + ``polars.Dataframe`` with gene ranges (from :class:`Genome`) + sequence + Path to FASTA genome sequence file. + batch_size + How many rows to read simultaneously. + up_windows + Number of windows upstream region to split into + body_windows + Number of windows body region to split into + down_windows + Number of windows downstream region to split into + sumfunc + Summary function to calculate density for window with. + temp_dir + Directory for temporary files. + save_preprocessed + Does preprocessed file need to be saved + skip_rows + How many rows to skip from header. + cpu + How many CPU cores to use. + + Returns + ------- + Metagene + + Examples + -------- + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> + >>> path = 'path/to/report.bedGraph' + >>> metagene = Metagene.from_bedGraph(path, genome, up_windows=500, body_windows=1000, down_windows=500) + """ + if isinstance(genome, Genome): raise TypeError("Genome class need to be converted into DataFrame (e.g. Genome.gene_body()).") + + sequence = Sequence.from_fasta(sequence, temp_dir) + mapped = Mapper.bedGraph(file, sequence, temp_dir, + save_preprocessed, True if save_preprocessed is None else False, + batch_size, cpu, skip_rows) + + return cls.from_parquet(mapped.report_file, genome, up_windows, body_windows, down_windows, sumfunc) + + @classmethod + def from_coverage( + cls, + file: str | Path, + genome: pl.DataFrame, + sequence: str | Path, + up_windows: int = 0, + body_windows: int = 2000, + down_windows: int = 0, + sumfunc: str = "mean", + batch_size: int = 10 ** 6, + cpu: int = multiprocessing.cpu_count(), + skip_rows: int = 1, + save_preprocessed: str = None, + temp_dir: str = "./" + ): + """ + Constructor for Metagene class from ``.cov`` file. + + Parameters + ---------- + file + Path to ``.cov`` file. + genome + ``polars.Dataframe`` with gene ranges (from :class:`Genome`) + sequence + Path to FASTA genome sequence file. + batch_size + How many rows to read simultaneously. + up_windows + Number of windows upstream region to split into + body_windows + Number of windows body region to split into + down_windows + Number of windows downstream region to split into + sumfunc + Summary function to calculate density for window with. + temp_dir + Directory for temporary files. + save_preprocessed + Does preprocessed file need to be saved + skip_rows + How many rows to skip from header. + cpu + How many CPU cores to use. + + + Returns + ------- + Metagene + + Examples + -------- + + >>> path = 'path/to/report.cov' + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> + >>> metagene = Metagene.from_coverage(path, genome, up_windows=500, body_windows=1000, down_windows=500) + """ + if isinstance(genome, Genome): raise TypeError("Genome class need to be converted into DataFrame (e.g. Genome.gene_body()).") + + sequence = Sequence.from_fasta(sequence, temp_dir) + mapped = Mapper.coverage(file, sequence, temp_dir, + save_preprocessed, True if save_preprocessed is None else False, + batch_size, cpu, skip_rows) + + return cls.from_parquet(mapped.report_file, genome, up_windows, body_windows, down_windows, sumfunc) + + @staticmethod + def __check_windows(uw, gw, dw): + return uw if uw > 0 else 0, gw if gw > 0 else 0, dw if dw > 0 else 0 + + @staticmethod + def __check_exists(file: Path): + if not file.exists(): + raise FileNotFoundError(f"Specified file: {file.absolute()} – not found!") + + @staticmethod + def __print_batch_stat(read_bytes, total_bytes, ram_bytes): + print("Read {read_mb}/{total_mb}Mb | Metagene RAM usage - {ram_usage}Mb".format( + read_mb=round(read_bytes / 1024 ** 2, 1), + total_mb=round(total_bytes / 1024 ** 2, 1), + ram_usage=round(ram_bytes / 1024 ** 2, 1)), end="\r") + + @staticmethod + def __process_batch(df: pl.DataFrame, genome: pl.DataFrame, mutate_fun, up_win, gene_win, down_win, sumfunc): + # *** POLARS EXPRESSIONS *** + # cast genome columns to type to join + GENE_COLUMNS = [ + pl.col('strand').cast(MetageneSchema.strand), + pl.col('chr').cast(MetageneSchema.chr) + ] + # upstream region position check + UP_REGION = pl.col('position') < pl.col('start') + # body region position check + BODY_REGION = (pl.col('start') <= pl.col('position')) & (pl.col('position') <= pl.col('end')) + # downstream region position check + DOWN_REGION = (pl.col('position') > pl.col('end')) + + UP_FRAGMENT = (((pl.col('position') - pl.col('upstream')) / (pl.col('start') - pl.col('upstream'))) * up_win).floor() + # fragment even for position == end needs to be rounded by floor + # so 1e-10 is added (position is always < end) + BODY_FRAGMENT = (((pl.col('position') - pl.col('start')) / (pl.col('end') - pl.col('start') + 1e-10)) * gene_win).floor() + up_win + DOWN_FRAGMENT = (((pl.col('position') - pl.col('end')) / (pl.col('downstream') - pl.col('end') + 1e-10)) * down_win).floor() + up_win + gene_win + + # Firstly BismarkPlot was written so there were only one sum statistic - mean. + # Sum and count of densities was calculated for further weighted mean analysis in respect to fragment size + # For backwards compatibility, for newly introduces statistics, column names are kept the same. + # Count is set to 1 and "sum" to actual statistics (e.g. median, min, e.t.c) + if sumfunc == "median": + AGG_EXPR = [pl.median("density").alias("sum"), pl.lit(1).alias("count")] + elif sumfunc == "min": + AGG_EXPR = [pl.min("density").alias("sum"), pl.lit(1).alias("count")] + elif sumfunc == "max": + AGG_EXPR = [pl.max("density").alias("sum"), pl.lit(1).alias("count")] + elif sumfunc == "geometric": + AGG_EXPR = [pl.col("density").log().mean().exp().alias("sum"), + pl.lit(1).alias("count")] + elif sumfunc == "1pgeometric": + AGG_EXPR = [(pl.col("density").log1p().mean().exp() - 1).alias("sum"), + pl.lit(1).alias("count")] + else: + AGG_EXPR = [pl.sum('density').alias('sum'), pl.count('density').alias('count')] + + df = mutate_fun(df) + + return ( + df.lazy() + # assign types + # calculate density for each cytosine + .with_columns([ + pl.col('position').cast(MetageneSchema.position), + pl.col('chr').cast(MetageneSchema.chr), + pl.col('strand').cast(MetageneSchema.strand), + pl.col('context').cast(MetageneSchema.context), + ]) + # sort by position for joining + .sort(['chr', 'strand', 'position']) + # join with nearest + .join_asof( + genome.lazy().with_columns(GENE_COLUMNS), + left_on='position', right_on='upstream', by=['chr', 'strand'] + ) + # limit by end of region + .filter(pl.col('position') <= pl.col('downstream')) + # calculate fragment ids + .with_columns([ + pl.when(UP_REGION).then(UP_FRAGMENT) + .when(BODY_REGION).then(BODY_FRAGMENT) + .when(DOWN_REGION).then(DOWN_FRAGMENT) + .alias('fragment'), + pl.concat_str([ + pl.col("chr"), + (pl.concat_str(pl.col("start"), pl.col("end"), separator="-")) + ], separator=":").alias("gene") + ]) + .with_columns([ + pl.col("fragment").cast(MetageneSchema.fragment), + pl.col("gene").cast(MetageneSchema.gene), + pl.col('id').cast(MetageneSchema.id) + ]) + # gather fragment stats + .groupby(by=['chr', 'strand', 'start', 'gene', 'context', 'id', 'fragment']) + .agg(AGG_EXPR) + .drop_nulls(subset=['sum']) + ).collect() + + def filter( + self, + context: Literal["CG", "CHG", "CHH", None] = None, + strand: Literal["+", "-", None] = None, + chr: str = None, + genome: pl.DataFrame = None + ): + """ + Method for filtering metagene. + + Parameters + ---------- + context + Methylation context (CG, CHG, CHH) to filter (only one). + strand + Strand to filter (+ or -). + chr + Chromosome name to filter. + genome + DataFrame with annotation to filter with (e.g. from :class:`Genome`) + + Returns + ------- + Filtered :class:`Metagene`. + + Examples + -------- + >>> metagene + shape: (3, 9) + ┌─────────────┬────────┬───────┬────────────────┬─────────┬───────────────┬──────────┬─────┬───────┐ + │ chr ┆ strand ┆ start ┆ gene ┆ context ┆ id ┆ fragment ┆ sum ┆ count │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ cat ┆ cat ┆ u64 ┆ cat ┆ cat ┆ cat ┆ u32 ┆ f32 ┆ u32 │ + ╞═════════════╪════════╪═══════╪════════════════╪═════════╪═══════════════╪══════════╪═════╪═══════╡ + │ NC_003070.9 ┆ + ┆ 3631 ┆ NC_003070.9:36 ┆ CG ┆ gene-AT1G0101 ┆ 4 ┆ 0.0 ┆ 1 │ + │ ┆ ┆ ┆ 31-5899 ┆ ┆ 0 ┆ ┆ ┆ │ + │ NC_003070.9 ┆ + ┆ 3631 ┆ NC_003070.9:36 ┆ CHH ┆ gene-AT1G0101 ┆ 19 ┆ 0.0 ┆ 2 │ + │ ┆ ┆ ┆ 31-5899 ┆ ┆ 0 ┆ ┆ ┆ │ + │ NC_003070.9 ┆ + ┆ 3631 ┆ NC_003070.9:36 ┆ CHH ┆ gene-AT1G0101 ┆ 20 ┆ 0.0 ┆ 1 │ + │ ┆ ┆ ┆ 31-5899 ┆ ┆ 0 ┆ ┆ ┆ │ + └─────────────┴────────┴───────┴────────────────┴─────────┴───────────────┴──────────┴─────┴───────┘ + >>> metagene.filter(context = "CG", strand = "+") + shape: (3, 9) + ┌─────────────┬────────┬───────┬────────────────┬─────────┬───────────────┬──────────┬─────┬───────┐ + │ chr ┆ strand ┆ start ┆ gene ┆ context ┆ id ┆ fragment ┆ sum ┆ count │ + │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │ + │ cat ┆ cat ┆ u64 ┆ cat ┆ cat ┆ cat ┆ u32 ┆ f32 ┆ u32 │ + ╞═════════════╪════════╪═══════╪════════════════╪═════════╪═══════════════╪══════════╪═════╪═══════╡ + │ NC_003070.9 ┆ + ┆ 3631 ┆ NC_003070.9:36 ┆ CG ┆ gene-AT1G0101 ┆ 4 ┆ 0.0 ┆ 1 │ + │ ┆ ┆ ┆ 31-5899 ┆ ┆ 0 ┆ ┆ ┆ │ + │ NC_003070.9 ┆ + ┆ 3631 ┆ NC_003070.9:36 ┆ CG ┆ gene-AT1G0101 ┆ 166 ┆ 0.0 ┆ 1 │ + │ ┆ ┆ ┆ 31-5899 ┆ ┆ 0 ┆ ┆ ┆ │ + │ NC_003070.9 ┆ + ┆ 3631 ┆ NC_003070.9:36 ┆ CG ┆ gene-AT1G0101 ┆ 264 ┆ 0.0 ┆ 1 │ + │ ┆ ┆ ┆ 31-5899 ┆ ┆ 0 ┆ ┆ ┆ │ + └─────────────┴────────┴───────┴────────────────┴─────────┴───────────────┴──────────┴─────┴───────┘ + + """ + + context_filter = self.bismark["context"] == context if context is not None else True + strand_filter = self.bismark["strand"] == strand if strand is not None else True + chr_filter = self.bismark["chr"] == chr if chr is not None else True + + metadata = self.metadata + metadata["context"] = context + metadata["strand"] = strand + + if genome is not None: + def genome_filter(df: pl.DataFrame): + return df.join(genome.select(["chr", "strand", "start"]), on=["chr", "strand", "start"]) + else: + genome_filter = lambda df: df + + if context_filter is None and strand_filter is None and chr_filter is None: + return self + else: + return self.__class__(genome_filter(self.bismark.filter(context_filter & strand_filter & chr_filter)), + **metadata) + + def resize(self, to_fragments: int = None): + """ + Mutate DataFrame to fewer fragments. + + Parameters + ---------- + to_fragments + Number of TOTAL (including flanking regions) fragments per gene. + + Returns + ------- + Resized :class:`Metagene`. + + Examples + -------- + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> + >>> path = 'path/to/bismark.CX_report.txt' + >>> metagene = Metagene.from_bismark(path, genome, up_windows=500, body_windows=1000, down_windows=500) + >>> metagene + Metagene with 20223666 windows total. + Filtered by None context and None strand. + Upstream windows: 500. + Body windows: 1000. + Downstream windows: 500. + >>> metagene.resize(100) + Metagene with 4946800 windows total. + Filtered by None context and None strand. + Upstream windows: 25. + Body windows: 50. + Downstream windows: 25. + """ + if self.upstream_windows is not None and self.gene_windows is not None and self.downstream_windows is not None: + from_fragments = self.total_windows + else: + from_fragments = self.bismark["fragment"].max() + 1 + + if to_fragments is None or from_fragments <= to_fragments: + return self + + resized = ( + self.bismark.lazy() + .with_columns( + ((pl.col("fragment") / from_fragments) * to_fragments).floor() + .cast(MetageneSchema.fragment) + ) + .group_by( + by=['chr', 'strand', 'start', 'gene', 'id', 'context', 'fragment'] + ).agg([ + pl.sum('sum').alias('sum'), + pl.sum('count').alias('count') + ]) + ).collect() + + metadata = self.metadata + metadata["upstream_windows"] = metadata["upstream_windows"] // (from_fragments // to_fragments) + metadata["downstream_windows"] = metadata["downstream_windows"] // (from_fragments // to_fragments) + metadata["gene_windows"] = metadata["gene_windows"] // (from_fragments // to_fragments) + + return self.__class__(resized, **metadata) + + def trim_flank(self, upstream=True, downstream=True): + """ + Trim Metagene flanking regions. + + Parameters + ---------- + upstream + Trim upstream region? + downstream + Trim downstream region? + + Returns + ------- + Trimmed :class:`Metagene` + + Examples + -------- + >>> metagene + Metagene with 20223666 windows total. + Filtered by None context and None strand. + Upstream windows: 500. + Body windows: 1000. + Downstream windows: 500. + >>> metagene.trim_flank() + Metagene with 7750085 windows total. + Filtered by None context and None strand. + Upstream windows: 0. + Body windows: 1000. + Downstream windows: 0. + + Or if you do not need to trim one of flanking regions (e.g. upstream). + + >>> metagene.trim_flank(upstream=False) + Metagene with 16288550 windows total. + Filtered by None context and None strand. + Upstream windows: 500. + Body windows: 1000. + Downstream windows: 0. + """ + trimmed = self.bismark.lazy() + metadata = self.metadata.copy() + if downstream: + trimmed = ( + trimmed + .filter(pl.col("fragment") < self.upstream_windows + self.gene_windows) + ) + metadata["downstream_windows"] = 0 + + if upstream: + trimmed = ( + trimmed + .filter(pl.col("fragment") > self.upstream_windows - 1) + .with_columns(pl.col("fragment") - self.upstream_windows) + ) + metadata["upstream_windows"] = 0 + + return self.__class__(trimmed.collect(), **metadata) + + # TODO finish annotation + def clustering( + self, + count_threshold: int = 5, + dist_method: str = "euclidean", + clust_method: str = "average"): + """ + Cluster regions with hierarchical clustering, by their methylation pattern. + + Parameters + ---------- + count_threshold + Minimum counts per window + dist_method + Distance method to use. + clust_method + Clustering method to use. + + Returns + ------- + :class:`Clustering` + + Warnings + -------- + Experimental Feature. May run very slow! + + See Also + ------- + Clustering : For possible analysis options + + `scipy.spatial.distance.pdist `_ : For possible distance methods. + + `scipy.cluster.hierarchy.linkage `_ : For possible clustering methods. + """ + + return Clustering(self.bismark, count_threshold, dist_method, clust_method, **self.metadata) + + def line_plot( + self, + resolution: int = None, + stat="wmean", + merge_strands: bool = True + ): + """ + Create :class:`LinePlot` method. + + Parameters + ---------- + resolution + Number of fragments to resize to. Keep None if no resize is needed. + stat + Summary function to use for plot. Possible options: ``mean``, ``wmean``, ``log``, ``wlog``, ``qN`` + merge_strands + Does negative strand need to be reversed + + Returns + ------- + src.bismarkplot.LinePlot + + Notes + ----- + - ``mean`` – Default mean between bins, when count of cytosine residues in bin IS NOT taken into account + + - ``wmean`` – Weighted mean between bins. Cytosine residues in bin IS taken into account + + - ``log`` – NOT weighted geometric mean. + + - ``wlog`` - Weighted geometric mean. + + - ``qN`` – Return quantile by ``N`` percent (e.g. "``q50``") + + Examples + -------- + Firstly we need to initialize Metagene class + + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> + >>> path = 'path/to/bismark.CX_report.txt' + >>> metagene = Metagene.from_bismark(path, genome, up_windows=500, body_windows=1000, down_windows=500) + + Next we can optionally filter metagene by context and strand. + + >>> filtered = metagene.filter(context = "CG", strand = "-") + + And LinePlot can be created + + >>> lp = filtered.line_plot() + >>> figure = lp.draw_mpl() + >>> figure.show() + + .. image:: ../../images/lineplot/lp_ara_mpl.png + + No filtering is suitable too. Then LinePlot will visualize all methylation contexts. + + >>> lp = metagene.line_plot() + >>> figure = lp.draw_mpl() + >>> figure.show() + + .. image:: ../../images/lineplot/ara_multi_mpl.png + + You can use Plotly version for all plots as well. + + >>> figure = lp.draw_ploty() + >>> figure.show() + + .. image:: ../../images/lineplot/ara_multi_plotly.png + + See Also + -------- + LinePlot : For more information about plottling parameters. + """ + bismark = self.resize(resolution) + return LinePlot(bismark.bismark, stat=stat, merge_strands=merge_strands, **bismark.metadata) + + def heat_map( + self, + nrow: int = 100, + ncol: int = 100, + stat="wmean" + ): + """ + Create :class:`HeatMap` method. + + Parameters + ---------- + nrow + Number of fragments to resize to. Keep None if no resize is needed. + ncol + Number of columns in the resulting heat-map. + stat + Summary function to use for plot. Possible options: ``mean``, ``wmean``, ``log``, ``wlog``, ``qN`` + + Returns + ------- + src.bismarkplot.HeatMap + + Examples + -------- + + Firstly we need to initialize Metagene class + + >>> genome = Genome.from_gff("path/to/genome.gff").gene_body() + >>> + >>> path = 'path/to/bismark.CX_report.txt' + >>> metagene = Metagene.from_bismark(path, genome, up_windows=500, body_windows=1000, down_windows=500) + + Next we need to (in contrast with :meth:`Metagene.line_plot`) filter metagene by context and strand. + + >>> filtered = metagene.filter(context = "CG", strand = "-") + + And HeatMap can be created. Let it's width be 200 columns and height – 100 rows. + + >>> hm = filtered.heat_map(nrow=100, ncol=200) + >>> figure = hm.draw_mpl() + >>> figure.show() + + .. image:: ../../images/heatmap/ara_mpl.png + + Plotly version is also available: + + >>> figure = hm.draw_plotly() + >>> figure.show() + + .. image:: ../../images/heatmap/ara_plotly.png + + See Also + -------- + Metagene.line_plot : For more information about `stat` parameter. + HeatMap : For more information about plotting parameters. + """ + + bismark = self.resize(ncol) + return HeatMap(bismark.bismark, nrow, order=None, stat=stat, **bismark.metadata) + + def __str__(self): + representation = (f'Metagene with {len(self.bismark)} windows total.\n' + f'Filtered by {self.context} context and {self.strand} strand.\n' + f'Upstream windows: {self.upstream_windows}.\n' + f'Body windows: {self.gene_windows}.\n' + f'Downstream windows: {self.downstream_windows}.\n') + + return representation + + def __repr__(self): + return self.__str__() + + +# TODO add other type constructors +class MetageneFiles(BismarkFilesBase): + """ + Stores and plots multiple data for :class:`Metagene`. + + If you want to compare Bismark data with different genomes, create this class with a list of :class:`Bismark` classes. + """ + @classmethod + def from_list( + cls, + filenames: list[str | Path], + genomes: pl.DataFrame | list[pl.DataFrame], + labels: list[str] = None, + up_windows: int = 0, + body_windows: int = 2000, + down_windows: int = 0, + report_type: Literal["bismark", "parquet", "binom", "bedGraph", "coverage"] = "bismark", + block_size_mb: int = 50, + use_threads: bool = True + ) -> MetageneFiles: + """ + Create istance of :class:`MetageneFiles` from list of paths. + + Parameters + ---------- + filenames + List of filenames to read from + genomes + Annotation DataFrame or list of DataFrames (may be different annotations) + labels + Labels for plots for Metagenes + up_windows + Number of windows upstream region to split into + body_windows + Number of windows body region to split into + down_windows + Number of windows downstream region to split into + report_type + Type of input report. Possible options: ``bismark``, ``parquet``, ``binom``, ``bedGraph``, ``coverage``. + block_size_mb + Block size for reading. (Block size ≠ amount of RAM used. Reader allocates approx. Block size * 20 memory for reading.) + use_threads + Do multi-threaded or single-threaded reading. If multi-threaded option is used, number of threads is defined by `multiprocessing.cpu_count()` + + Returns + ------- + MetageneFiles + Instance of :class:`MetageneFiles` + + See Also + ________ + Metagene + + Examples + -------- + + Initialization using :meth:`MetageneFiles.from_list` + + >>> ara_genome = Genome.from_gff("/path/to/arath.gff").gene_body(min_length=2000) + >>> brd_genome = Genome.from_gff("/path/to/bradi.gff").gene_body(min_length=2000) + >>> + >>> metagenes = MetageneFiles.from_list( + >>> ["path/to/bradi.txt", "path/to/ara.txt"], + >>> [brd_genome, ara_genome], + >>> ["BraDi", "AraTh"], + >>> report_type="bismark", + >>> up_windows=250, body_windows=500, down_windows=250 + >>> ) + + :class:`MetageneFiles` can be initialized explicitly: + + >>> metagene_ara = Metagene.from_bismark("path/to/ara.txt", ara_genome, up_windows=250, body_windows=500, down_windows=250) + >>> metagene_brd = Metagene.from_bismark("path/to/ara.txt", ara_genome, up_windows=250, body_windows=500, down_windows=250) + >>> metagenes = MetageneFiles(samples=[metagene_brd, metagene_ara], labels=["BraDi", "AraTh"]) + + The resulting objects will be identical. + + Warnings + -------- + When :class:`MetageneFiles` is initialized explicitly, number of windows needs ot be the same in evety sample + """ + read_fnc: dict[str | typing.Callable] = { + "bismark": Metagene.from_bismark, + "parquet": Metagene.from_parquet, + "binom": Metagene.from_binom, + "bedGraph": Metagene.from_bedGraph, + "coverage": Metagene.from_coverage + } + + if not isinstance(genomes, list): + genomes = [genomes] * len(filenames) + else: + if len(genomes) != len(filenames): + raise AttributeError("Number of genomes and filenames provided does not match") + + samples: list[Metagene] = [] + for file, genome in zip(filenames, genomes): + samples.append(read_fnc[report_type](file, genome, up_windows, body_windows, down_windows, block_size_mb, use_threads)) + + return cls(samples, labels) + + def filter(self, context: str = None, strand: str = None, chr: str = None): + """ + :meth:`Metagene.filter` all metagenes. + + Parameters + ---------- + context + Methylation context (CG, CHG, CHH) to filter (only one). + strand + Strand to filter (+ or -). + chr + Chromosome name to filter. + genome + DataFrame with annotation to filter with (e.g. from :class:`Genome`) + + Returns + ------- + Filtered :class:`MetageneFiles`. + + See Also + -------- + Metagene.filter : For examples. + """ + return self.__class__([sample.filter(context, strand, chr) for sample in self.samples], self.labels) + + def trim_flank(self, upstream=True, downstream=True): + """ + :meth:`Metagene.trim_flank` all metagenes. + + Parameters + ---------- + upstream + Trim upstream region? + downstream + Trim downstream region? + + Returns + ------- + Trimmed :class:`Metagene` + + See Also + -------- + Metagene.trim_flank : For examples. + """ + + return self.__class__([sample.trim_flank(upstream, downstream) for sample in self.samples], self.labels) + + def resize(self, to_fragments: int): + """ + :meth:`Metagene.resize` all metagenes. + + Parameters + ---------- + to_fragments + Number of TOTAL (including flanking regions) fragments per gene. + + Returns + ------- + Resized :class:`Metagene`. + + See Also + -------- + Metagene.resize : For examples. + """ + return self.__class__([sample.resize(to_fragments) for sample in self.samples], self.labels) + + def merge(self): + """ + Merge :class:`MetageneFiles` into single :class:`Metagene` + + Warnings + -------- + **ALL** metagenes in :class:`MetageneFiles` need to be aligned to the same annotation. + + Parameters + ---------- + + Returns + ------- + Instance of :class:`Metagene`, with merged replicates. + """ + pl.enable_string_cache() + + metadata = [sample.metadata for sample in self.samples] + upstream_windows = set([md.get("upstream_windows") for md in metadata]) + gene_windows = set([md.get("gene_windows") for md in metadata]) + downstream_windows = set( + [md.get("downstream_windows") for md in metadata]) + + if len(upstream_windows) == len(downstream_windows) == len(gene_windows) == 1: + merged = ( + pl.concat([sample.bismark for sample in self.samples]).lazy() + .group_by(["strand", "context", "chr", "gene", "fragment"]) + .agg([pl.sum("sum").alias("sum"), pl.sum("count").alias("count")]) + ).collect() + + return Metagene(merged, + upstream_windows=list(upstream_windows)[0], + downstream_windows=list(downstream_windows)[0], + gene_windows=list(gene_windows)[0]) + else: + raise Exception("Metadata for merge DataFrames does not match!") + + def line_plot(self, resolution: int = None, stat: str = "wmean", merge_strands: bool = True): + """ + Create :class:`LinePlotFiles` method. + + Parameters + ---------- + resolution + Number of fragments to resize to. Keep None if no resize is needed. + stat + Summary function to use for plot. Possible options: ``mean``, ``wmean``, ``log``, ``wlog``, ``qN`` + merge_strands + Does negative strand need to be reversed + + Returns + ------- + Instance of :class:`LinePlotFiles` + + See Also + -------- + Metagene.line_plot : for more information about `stat` parameter. + + Examples + -------- + + >>> filtered = metagenes.filter("CG") + >>> lp = metagenes.line_plot() + + Matplotlib version: + + >>> figure = lp.draw_mpl() + >>> figure.show() + + .. image:: ../../images/lineplot/ara_bradi_mpl.png + + Plotly version + + >>> figure = lp.draw_plotly() + >>> figure.show() + + Now when we have metagene initlaized + + .. image:: ../../images/lineplot/ara_bradi_plotly.png + """ + return LinePlotFiles([sample.line_plot(resolution, stat, merge_strands) for sample in self.samples], self.labels) + + def heat_map(self, nrow: int = 100, ncol: int = None, stat: str = "wmean"): + """ + Create :class:`HeatMapFiles` method. + + Parameters + ---------- + nrow + Number of fragments to resize to. Keep None if no resize is needed. + ncol + Number of columns in the resulting heat-map. + stat + Summary function to use for plot. Possible options: ``mean``, ``wmean``, ``log``, ``wlog``, ``qN`` + + Returns + ------- + Instance of :class:`HeatMapFiles` + + See Also + -------- + Metagene.line_plot : for more information about `stat` parameter. + + Metagene.heat_map + + Examples + -------- + + >>> filtered = metagenes.filter("CG") + >>> hm = metagenes.heat_map(nrow=100, ncol=100) + + Matplotlib version: + + >>> figure = hm.draw_mpl(major_labels=None) + >>> figure.show() + + .. image:: ../../images/heatmap/ara_bradi_mpl.png + + Plotly version + + >>> figure = hm.draw_plotly(major_labels=None) + >>> figure.show() + + Now when we have metagene initlaized + + .. image:: ../../images/heatmap/ara_bradi_plotly.png + """ + return HeatMapFiles([sample.heat_map(nrow, ncol, stat) for sample in self.samples], self.labels) + + def violin_plot(self, fig_axes: tuple = None, title: str = ""): + """ + Draws violin plot for Metagenes with matplotlib. + + Parameters + ---------- + fig_axes + Tuple of (`matplotlib.pyplot.Figure `_, `matplotlib.axes.Axes `_) (e.g. created by `matplotlib.pyplot.subplot() `_) + title + Title for plot. + + Returns + ------- + `matplotlib.pyplot.Figure `_ + + Examples + -------- + + Assuming we need to compare only gene body methylation, we need to trim flank regions from metagenes (this step is **OPTIONAL**): + + >>> trimmed = metagenes.trim_flank() + >>> + >>> figure = trimmed.violin_plot() + >>> figure.show() + + .. image:: ../../images/boxplot/vp_ara_bradi_mpl.png + """ + data = LinePlotFiles([sample.line_plot() + for sample in self.samples], self.labels) + data = [sample.plot_data.sort( + "fragment")["density"].to_numpy() for sample in data.samples] + + if fig_axes is None: + plt.clf() + fig, axes = plt.subplots() + else: + fig, axes = fig_axes + + axes.violinplot(data, showmeans=False, showmedians=True) + axes.set_xticks(np.arange(1, len(self.labels) + 1), labels=self.labels) + axes.set_title(title) + axes.set_ylabel('Methylation density') + + return fig + + def violin_plot_plotly(self, title="", points=None): + """ + Draws violin plot for Metagenes with plotly. + + Parameters + ---------- + points + How many points should be plotted. For variants see `plotly.express.box `_ + title + Title for plot. + + Returns + ------- + `plotly.graph_objects.Figure `_ + + Examples + -------- + + Assuming we need to compare only gene body methylation, we need to trim flank regions from metagenes (this step is **OPTIONAL**): + + >>> trimmed = metagenes.trim_flank() + >>> + >>> figure = trimmed.violin_plot_plotly() + >>> figure.show() + + .. image:: ../../images/boxplot/vp_ara_bradi_plotly.png + """ + + def sample_convert(sample, label): + return ( + sample + .line_plot() + .plot_data + .with_columns([ + pl.col("density") * 100, # convert to % + pl.lit(label).alias("label") + ]) + ) + + data = pl.concat([sample_convert(sample, label) for sample, label in zip(self.samples, self.labels)]) + data = data.to_pandas() + + labels = dict( + context="Context", + label="", + density="Methylation density, %" + ) + + figure = px.violin(data, x="label", y="density", + color="context", points=points, + labels=labels, title=title) + + return figure + + def box_plot(self, fig_axes: tuple = None, showfliers=False, title: str = None): + """ + Draws box plot for Metagenes with matplotlib. + + Parameters + ---------- + fig_axes + Tuple of (`matplotlib.pyplot.Figure `_, `matplotlib.axes.Axes `_) (e.g. created by `matplotlib.pyplot.subplot() `_) + title + Title for plot. + showfliers + Do fliers need to be shown. + + Returns + ------- + `matplotlib.pyplot.Figure `_ + + Examples + -------- + + Assuming we need to compare only gene body methylation, we need to trim flank regions from metagenes (this step is **OPTIONAL**): + + >>> trimmed = metagenes.trim_flank() + >>> + >>> figure = trimmed.box_plot() + >>> figure.show() + + .. image:: ../../images/boxplot/bp_ara_bradi_mpl.png + """ + data = LinePlotFiles([sample.line_plot() + for sample in self.samples], self.labels) + data = [sample.plot_data.sort( + "fragment")["density"].to_numpy() for sample in data.samples] + + if fig_axes is None: + plt.clf() + fig, axes = plt.subplots() + else: + fig, axes = fig_axes + + axes.boxplot(data, showfliers=showfliers) + axes.set_xticks(np.arange(1, len(self.labels) + 1), labels=self.labels) + axes.set_title(title) + axes.set_ylabel('Methylation density') + + return fig + + def box_plot_plotly(self, title="", points=None): + """ + Draws box plot for Metagenes with plotly. + + Parameters + ---------- + points + How many points should be plotted. For variants see `plotly.express.box `_ + title + Title for plot. + + Returns + ------- + `plotly.graph_objects.Figure `_ + + Examples + -------- + + Assuming we need to compare only gene body methylation, we need to trim flank regions from metagenes (this step is **OPTIONAL**): + + >>> trimmed = metagenes.trim_flank() + >>> + >>> figure = trimmed.box_plot_plotly() + >>> figure.show() + + .. image:: ../../images/boxplot/bp_ara_bradi_plotly.png + """ + def sample_convert(sample, label): + return ( + sample + .line_plot() + .plot_data + .with_columns([ + pl.col("density") * 100, # convert to % + pl.lit(label).alias("label") + ]) + ) + + data = pl.concat([sample_convert(sample, label) for sample, label in zip(self.samples, self.labels)]) + data = data.to_pandas() + + labels = dict( + context="Context", + label="", + density="Methylation density, %" + ) + + figure = px.box(data, x="label", y="density", + color="context", points=points, + labels=labels, title=title) + + return figure + + def __dendrogram(self, stat="mean"): + # get intersecting regions + gene_sets = [set(sample.bismark["gene"].to_list()) for sample in self.samples] + intersecting = list(set.intersection(*gene_sets)) + + if len(intersecting) < 1: + print("No regions with same labels were found. Exiting.") + return + + # TODO check options setter for stat (limited set of options) + # Lazy + def region_levels(bismark: pl.DataFrame, stat="mean"): + if stat == "median": + expr = pl.median("density") + elif stat == "min": + expr = pl.min("density") + elif stat == "max": + expr = pl.max("density") + else: + expr = pl.mean("density") + + levels = ( + bismark.lazy() + .with_columns((pl.col("sum") / pl.col("count")).alias("density")) + .group_by(["gene"]) + .agg(expr.alias("stat")) + .sort("gene") + ) + + return levels + + levels = [region_levels(sample.bismark, stat).rename({"stat": str(label)}) + for sample, label in zip(self.samples, self.labels)] + + data = pl.concat(levels, how="align").collect() + + matrix = data.select(pl.exclude("gene")).to_numpy() + genes = data["gene"].to_numpy() + + # get intersected + matrix = matrix[np.isin(genes, intersecting), :] + + return diff --git a/src/bismarkplot/Plots.py b/src/bismarkplot/Plots.py new file mode 100644 index 0000000..93bb84c --- /dev/null +++ b/src/bismarkplot/Plots.py @@ -0,0 +1,692 @@ +from __future__ import annotations + +import re + +import numpy as np +import polars as pl +from matplotlib import pyplot as plt, colormaps +from matplotlib.axes import Axes +from matplotlib.figure import Figure +from pandas import DataFrame as pdDataFrame +from plotly import graph_objects as go, express as px +from pyreadr import write_rds +from scipy.signal import savgol_filter + +from .Base import PlotBase, BismarkFilesBase +from .utils import MetageneSchema, interval, remove_extension, prepare_labels + + +class LinePlot(PlotBase): + """ + Line-plot single metagene + """ + + def __init__(self, bismark_df: pl.DataFrame, stat="wmean", merge_strands: bool = True, **kwargs): + """ + Calculates plot data for line-plot. + """ + super().__init__(bismark_df, **kwargs) + + self.stat = stat + + if merge_strands: + bismark_df = self.__merge_strands(bismark_df) + plot_data = self.__calculate_plot_data(bismark_df, stat) + + if not merge_strands: + if self.strand == '-': + plot_data = self.__strand_reverse(plot_data) + self.plot_data = plot_data + + @staticmethod + def __calculate_plot_data(df: pl.DataFrame, stat): + if stat == "log": + stat_expr = (pl.col("sum") / pl.col("count")).log1p().mean().exp() - 1 + elif stat == "wlog": + stat_expr = (((pl.col("sum") / pl.col("count")).log1p() * pl.col("count")).sum() / pl.sum("count")).exp() - 1 + elif stat == "mean": + stat_expr = (pl.col("sum") / pl.col("count")).mean() + elif re.search("^q(\d+)", stat): + quantile = re.search("q(\d+)", stat).group(1) + stat_expr = (pl.col("sum") / pl.col("count")).quantile(int(quantile) / 100) + else: + stat_expr = pl.sum("sum") / pl.sum("count") + + res = ( + df + .group_by(["context", "fragment"]).agg([ + pl.col("sum"), + pl.col("count").cast(MetageneSchema.count), + stat_expr.alias("density") + ]) + .sort("fragment") + ) + + # TODO add templating + return res + + @staticmethod + def __strand_reverse(df: pl.DataFrame): + max_fragment = df["fragment"].max() + return df.with_columns((max_fragment - pl.col("fragment")).alias("fragment")).sort("fragment") + + def __merge_strands(self, df: pl.DataFrame): + return df.filter(pl.col("strand") == "+").extend(self.__strand_reverse(df.filter(pl.col("strand") == "-"))) + + + @staticmethod + def __get_x_y(df, smooth, confidence): + if 0 < confidence < 1: + df = ( + df + .with_columns( + pl.struct(["sum", "count"]).map_elements( + lambda x: interval(x["sum"], x["count"], confidence) + ).alias("interval") + ) + .unnest("interval") + .select(["fragment", "lower", "density", "upper"]) + ) + + data = df["density"] + + polyorder = 3 + window = smooth if smooth > polyorder else polyorder + 1 + + if smooth: + data = savgol_filter(data, window, 3, mode='nearest') + + lower, upper = None, None + data = data * 100 # convert to percents + + if 0 < confidence < 1: + upper = df["upper"].to_numpy() * 100 # convert to percents + lower = df["lower"].to_numpy() * 100 # convert to percents + + upper = savgol_filter(upper, window, 3, mode="nearest") if smooth else upper + lower = savgol_filter(lower, window, 3, mode="nearest") if smooth else lower + + return lower, data, upper + + def save_plot_rds(self, path, compress: bool = False): + """ + Saves plot data in a rds DataFrame with columns: + + +----------+---------+ + | fragment | density | + +==========+=========+ + | Int | Float | + +----------+---------+ + + Parameters + ---------- + :param filename: Path for file. + :param compress: Whether to compress to gzip or not. + """ + df = self.bismark.group_by("fragment").agg( + (pl.sum("sum") / pl.sum("count")).alias("density") + ) + write_rds(path, df.to_pandas(), + compress="gzip" if compress else None) + + def draw_mpl( + self, + fig_axes: tuple = None, + smooth: int = 50, + label: str = "", + confidence: int = 0, + linewidth: float = 1.0, + linestyle: str = '-', + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True + ) -> Figure: + """ + Draws line-plot on given axes. + + Parameters + ---------- + fig_axes + Tuple of (`matplotlib.pyplot.Figure `_, `matplotlib.axes.Axes `_). New are created if ``None`` + smooth + Number of windows for `SavGol `_ filter (set 0 for no smoothing) + label + Label of line on line-plot + confidence + Probability for confidence bands (e.g. 95%) + linewidth + Width of the line + linestyle + Style of the line + major_labels + Labels for body region start and end (e.g. TSS, TES). **Exactly 2** need to be provided. Set ``[]`` to disable. + minor_labels + Labels for upstream, body and downstream regions. **Exactly 3** need to be provided. Set ``[]`` to disable. + show_border + Whether to draw dotted vertical line on body region borders or not + + Returns + ------- + `matplotlib.pyplot.Figure `_ + + See Also + -------- + :doc:`LinePlot example<../../markdowns/test>` + + `matplotlib.pyplot.subplot() `_ : To create fig, axes + + `Linestyles `_ : For possible linestyles. + """ + fig, axes = plt.subplots() if fig_axes is None else fig_axes + major_labels = ["TSS", "TES"] if major_labels is None else major_labels + minor_labels = ["Upstream", "Body", "Downstream"] if minor_labels is None else minor_labels + + contexts = self.plot_data["context"].unique().to_list() + + for context in contexts: + df = self.plot_data.filter(pl.col("context") == context) + + lower, data, upper = self.__get_x_y(df, smooth, confidence) + + x = np.arange(len(data)) + + axes.plot(x, data, + label=f"{context}" if not label else f"{label}_{context}", + linestyle=linestyle, linewidth=linewidth) + + if 0 < confidence < 1: + axes.fill_between(x, lower, upper, alpha=.2) + + self.flank_lines(axes, major_labels, minor_labels, show_border) + + axes.legend() + + axes.set_ylabel('Methylation density, %') + axes.set_xlabel('Position') + + return fig + + def draw_plotly( + self, + figure: go.Figure = None, + smooth: int = 50, + label: str = "", + confidence: int = .0, + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True + ): + """ + Draws line-plot on given figure. + + Parameters + ---------- + figure + `plotly.graph_objects.Figure `_. New is created if ``None`` + smooth + Number of windows for `SavGol `_ filter (set 0 for no smoothing) + label + Label of line on line-plot + confidence + Probability for confidence bands (e.g. 95%) + major_labels + Labels for body region start and end (e.g. TSS, TES). **Exactly 2** need to be provided. Set ``[]`` to disable. + minor_labels + Labels for upstream, body and downstream regions. **Exactly 3** need to be provided. Set ``[]`` to disable. + show_border + Whether to draw dotted vertical line on body region borders or not + + Returns + ------- + `plotly.graph_objects.Figure `_ + + """ + + figure = go.Figure() if figure is None else figure + major_labels = ["TSS", "TES"] if major_labels is None else major_labels + minor_labels = ["Upstream", "Body", "Downstream"] if minor_labels is None else minor_labels + + contexts = self.plot_data["context"].unique().to_list() + + for context in contexts: + df = self.plot_data.filter(pl.col("context") == context) + + lower, data, upper = self.__get_x_y(df, smooth, confidence) + + x = np.arange(len(data)) + + traces = [go.Scatter(x=x, y=data, name=f"{context}" if not label else f"{label}_{context}", mode="lines")] + + if 0 < confidence < 1: + traces += [ + go.Scatter(x=x, y=upper, mode="lines", line_color='rgba(0,0,0,0)', showlegend=False, + name=f"{context}_{confidence}CI" if not label else f"{label}_{context}_{confidence}CI"), + go.Scatter(x=x, y=lower, mode="lines", line_color='rgba(0,0,0,0)', showlegend=True, + fill="tonexty", fillcolor='rgba(0, 0, 0, 0.2)', + name=f"{context}_{confidence}CI" if not label else f"{label}_{context}_{confidence}CI"), + ] + + figure.add_traces(data=traces) + + figure.update_layout( + xaxis_title="Position", + yaxis_title="Methylation density, %" + ) + + figure = self.flank_lines_plotly(figure, major_labels, minor_labels, show_border) + + return figure + + +class LinePlotFiles(BismarkFilesBase): + """Line-plot multiple metagenes""" + + def draw_mpl( + self, + smooth: int = 50, + linewidth: float = 1.0, + linestyle: str = '-', + confidence: int = 0, + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True + ): + """ + Draws line-plot for all Metagenes on given axes. + + Parameters + ---------- + smooth + Number of windows for `SavGol `_ filter (set 0 for no smoothing) + confidence + Probability for confidence bands (e.g. 95%) + linewidth + Width of the line + linestyle + Style of the line + major_labels + Labels for body region start and end (e.g. TSS, TES). **Exactly 2** need to be provided. Set ``[]`` to disable. + minor_labels + Labels for upstream, body and downstream regions. **Exactly 3** need to be provided. Set ``[]`` to disable. + show_border + Whether to draw dotted vertical line on body region borders or not + + Returns + ------- + `matplotlib.pyplot.Figure `_ + + See Also + -------- + `matplotlib.pyplot.subplot() `_ : To create fig, axes + + `Linestyles `_ : For possible linestyles. + """ + + major_labels = ["TSS", "TES"] if major_labels is None else major_labels + minor_labels = ["Upstream", "Body", "Downstream"] if minor_labels is None else minor_labels + + plt.clf() + fig, axes = plt.subplots() + for lp, label in zip(self.samples, self.labels): + assert isinstance(lp, LinePlot) + lp.draw_mpl((fig, axes), smooth, label, confidence, linewidth, linestyle, major_labels, minor_labels, show_border) + + return fig + + def draw_plotly(self, + smooth: int = 50, + confidence: int = 0, + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True + ): + """ + Draws line-plot for all Metagenes on given figure. + + Parameters + ---------- + smooth + Number of windows for `SavGol `_ filter (set 0 for no smoothing) + confidence + Probability for confidence bands (e.g. 95%) + major_labels + Labels for body region start and end (e.g. TSS, TES). **Exactly 2** need to be provided. Set ``[]`` to disable. + minor_labels + Labels for upstream, body and downstream regions. **Exactly 3** need to be provided. Set ``[]`` to disable. + show_border + Whether to draw dotted vertical line on body region borders or not + + Returns + ------- + `plotly.graph_objects.Figure `_ + + """ + + major_labels = ["TSS", "TES"] if major_labels is None else major_labels + minor_labels = ["Upstream", "Body", "Downstream"] if minor_labels is None else minor_labels + + figure = go.Figure() + + for lp, label in zip(self.samples, self.labels): + assert isinstance(lp, LinePlot) + lp.draw_plotly(figure, smooth, label, confidence, major_labels, minor_labels, show_border) + + return figure + + def save_plot_rds(self, base_filename, compress: bool = False, merge: bool = False): + if merge: + merged = pl.concat( + [sample.plot_data.lazy().with_columns(pl.lit(label)) + for sample, label in zip(self.samples, self.labels)] + ) + write_rds(base_filename, merged.to_pandas(), + compress="gzip" if compress else None) + if not merge: + for sample, label in zip(self.samples, self.labels): + sample.save_plot_rds(f"{remove_extension(base_filename)}_{label}.rds", + compress="gzip" if compress else None) + + +class HeatMap(PlotBase): + """Heat-map single metagene""" + + def __init__(self, bismark_df: pl.DataFrame, nrow, order=None, stat="wmean", **kwargs): + super().__init__(bismark_df, **kwargs) + + plot_data = self.__calculcate_plot_data(bismark_df, nrow, order, stat) + plot_data = self.__strand_reverse(plot_data) + + self.plot_data = plot_data + + def __calculcate_plot_data(self, df, nrow, order=None, stat="wmean"): + if stat == "log": + stat_expr = (pl.col("sum") / pl.col("count")).log1p().mean().exp() - 1 + elif stat == "wlog": + stat_expr = (((pl.col("sum") / pl.col("count")).log1p() * pl.col("count")).sum() / pl.sum("count")).exp() - 1 + elif stat == "mean": + stat_expr = (pl.col("sum") / pl.col("count")).mean() + elif re.search("^q(\d+)", stat): + quantile = re.search("q(\d+)", stat).group(1) + stat_expr = (pl.col("sum") / pl.col("count")).quantile(int(quantile) / 100) + else: + stat_expr = pl.sum("sum") / pl.sum("count") + + order = ( + df.lazy() + .groupby(['chr', 'strand', "gene"]) + .agg( + stat_expr.alias("order") + ) + ).collect()["order"] if order is None else order + + # sort by rows and add row numbers + hm_data = ( + df.lazy() + .groupby(['chr', 'strand', "gene"]) + .agg([pl.col('fragment'), pl.col('sum'), pl.col('count')]) + .with_columns( + pl.lit(order).alias("order") + ) + .sort('order', descending=True) + # add row count + .with_row_count(name='row') + # round row count + .with_columns( + (pl.col('row') / (pl.col('row').max() + 1) * nrow).floor().alias('row').cast(pl.UInt16) + ) + .explode(['fragment', 'sum', 'count']) + # calc sum count for row|fragment + .groupby(['row', 'fragment']) + .agg( + stat_expr.alias('density') + ) + ) + + # prepare full template + template = ( + pl.LazyFrame(data={"row": list(range(nrow))}) + .with_columns( + pl.lit([list(range(0, self.total_windows))]).alias("fragment") + ) + .explode("fragment") + .with_columns([ + pl.col("fragment").cast(MetageneSchema.fragment), + pl.col("row").cast(pl.UInt16) + ]) + ) + # join template with actual data + hm_data = ( + # template join with orig + template.join(hm_data, on=['row', 'fragment'], how='left') + .fill_null(0) + .sort(['row', 'fragment']) + ).collect() + + # convert to matrix + plot_data = np.array( + hm_data.groupby('row', maintain_order=True).agg( + pl.col('density'))['density'].to_list(), + dtype=np.float32 + ) + + return plot_data + + def __strand_reverse(self, df: np.ndarray): + if self.strand == '-': + return np.fliplr(df) + return df + + def draw_mpl( + self, + fig_axes: tuple = None, + title: str = None, + vmin: float = None, vmax: float = None, + color_scale="Viridis", + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True + ): + + major_labels = ["TSS", "TES"] if major_labels is None else major_labels + minor_labels = ["Upstream", "Body", "Downstream"] if minor_labels is None else minor_labels + + fig, axes = plt.subplots() if fig_axes is None else fig_axes + + vmin = 0 if vmin is None else vmin + vmax = np.max(np.array(self.plot_data)) if vmax is None else vmax + + image = axes.imshow( + self.plot_data, + interpolation="nearest", aspect='auto', + cmap=colormaps[color_scale.lower()], + vmin=vmin, vmax=vmax + ) + + axes.set_title(title) + axes.set_xlabel('Position') + axes.set_ylabel('') + + self.flank_lines(axes, major_labels, minor_labels, show_border) + axes.set_yticks([]) + + plt.colorbar(image, ax=axes, label='Methylation density') + + return fig + + def draw_plotly( + self, + title: str = None, + vmin: float = None, vmax: float = None, + color_scale="Viridis", + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True + ): + + major_labels = ["TSS", "TES"] if major_labels is None else major_labels + minor_labels = ["Upstream", "Body", "Downstream"] if minor_labels is None else minor_labels + + labels = dict( + x="Position", + y="Rank", + color="Methylation density" + ) + + figure = px.imshow( + self.plot_data, + zmin=vmin, zmax=vmax, + labels=labels, + title=title, + aspect="auto", + color_continuous_scale=color_scale + ) + + # disable y ticks + figure.update_layout( + yaxis=dict( + showticklabels=False + ) + ) + + figure = self.flank_lines_plotly(figure, major_labels, minor_labels, show_border) + + return figure + + def save_plot_rds(self, path, compress: bool = False): + """ + Save heat-map data in a matrix (ncol:nrow) + """ + write_rds(path, pdDataFrame(self.plot_data), + compress="gzip" if compress else None) + + +class HeatMapFiles(BismarkFilesBase): + """Heat-map multiple metagenes""" + + def __add_flank_lines_plotly(self, figure: go.Figure, major_labels: list, minor_labels: list, show_border=True): + """ + Add flank lines to the given axis (for line plot) + """ + labels = prepare_labels(major_labels, minor_labels) + + if self.samples[0].downstream_windows < 1: + labels["down_mid"], labels["body_end"] = [""] * 2 + + if self.samples[0].upstream_windows < 1: + labels["up_mid"], labels["body_start"] = [""] * 2 + + ticks = self.samples[0].tick_positions + + names = list(ticks.keys()) + x_ticks = [ticks[key] for key in names] + x_labels = [labels[key] for key in names] + + figure.for_each_xaxis(lambda x: x.update( + tickmode='array', + tickvals=x_ticks, + ticktext=x_labels) + ) + + if show_border: + for tick in [ticks["body_start"], ticks["body_end"]]: + figure.add_vline(x=tick, line_dash="dash", line_color="rgba(0,0,0,0.2)") + + return figure + + def draw_mpl( + self, + title: str = None, + color_scale: str = "Viridis", + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True, + ): + plt.clf() + if len(self.samples) > 3: + subplots_y = 2 + else: + subplots_y = 1 + + if len(self.samples) > 1 and subplots_y > 1: + subplots_x = (len(self.samples) + len(self.samples) % 2) // subplots_y + elif len(self.samples) > 1: + subplots_x = len(self.samples) + else: + subplots_x = 1 + + fig, axes = plt.subplots(subplots_y, subplots_x) + + if not isinstance(axes, np.ndarray): + axes = np.array([axes]) + + vmin = 0 + vmax = np.max(np.array([sample.plot_data for sample in self.samples])) + + for i in range(subplots_y): + for j in range(subplots_x): + number = i * subplots_x + j + if number > len(self.samples) - 1: + break + + if subplots_y > 1: + ax = axes[i, j] + else: + ax = axes[j] + assert isinstance(ax, Axes) + + hm = self.samples[number] + assert isinstance(hm, HeatMap) + hm.draw_mpl((fig, ax), self.labels[number], vmin, vmax, color_scale, major_labels, minor_labels, show_border) + + fig.suptitle(title, fontstyle='italic') + fig.set_size_inches(6 * subplots_x, 5 * subplots_y) + return fig + + def draw_plotly( + self, + title: str = None, + color_scale: str = "Viridis", + major_labels: list[str] = None, + minor_labels: list[str] = None, + show_border: bool = True, + facet_cols: int = 3, + ): + major_labels = ["TSS", "TES"] if major_labels is None else major_labels + minor_labels = ["Upstream", "Body", "Downstream"] if minor_labels is None else minor_labels + samples_matrix = np.stack([sample.plot_data for sample in self.samples]) + + labels = dict( + x="Position", + y="Rank", + color="Methylation density" + ) + + facet_col = 0 + figure = px.imshow( + samples_matrix, + labels=labels, + title=title, + aspect="auto", + color_continuous_scale=color_scale, + facet_col=facet_col, + facet_col_wrap=facet_cols if len(self.samples) > facet_cols else len(self.samples) + ) + + # set facet annotations + figure.for_each_annotation(lambda l: l.update(text=self.labels[int(l.text.split("=")[1])])) + + # disable y ticks + figure.update_layout( + yaxis=dict( + showticklabels=False + ) + ) + + figure = self.__add_flank_lines_plotly(figure, major_labels, minor_labels, show_border) + + return figure + + def save_plot_rds(self, base_filename, compress: bool = False): + for sample, label in zip(self.samples, self.labels): + sample.save_plot_rds(f"{remove_extension(base_filename)}_{label}.rds", + compress="gzip" if compress else None) diff --git a/src/bismarkplot/SeqMapper.py b/src/bismarkplot/SeqMapper.py new file mode 100644 index 0000000..5d3c380 --- /dev/null +++ b/src/bismarkplot/SeqMapper.py @@ -0,0 +1,460 @@ +from __future__ import annotations + +import gc +import gzip +import io +import multiprocessing +import os +import shutil +import tempfile +from pathlib import Path + +import pyarrow as pa +import pyarrow.parquet as pq +from Bio import SeqIO as seqio +from numba import njit + +import polars as pl + + +@njit +def convert_trinuc(trinuc, reverse=False): + """ + Get trinucleotide context from raw trinucleotide + :param trinuc: trinucleotide sequence + :param reverse: is trinucleotide from reversed sequence + :return: trinucleotide context + """ + if reverse: + if trinuc[1] == "C": return "CG" + elif trinuc[0] == "C": return "CHG" + else: return "CHH" + else: + if trinuc[1] == "G": return "CG" + elif trinuc[2] == "G": return "CHG" + else: return "CHH" + + +@njit +def get_trinuc(record_seq: str, reverse=False): + """ + Parse sequence and extract trinucleotide contexts and positions + :param record_seq: sequence + :param reverse: does sequence need to be reversed + :return: tuple(positions, contexts) + """ + positions = [] + trinucs = [] + + record_seq = record_seq.upper() + + nuc = "G" if reverse else "C" + up_shift = 1 if reverse else 3 + down_shift = -2 if reverse else 0 + + for position in range(2 if reverse else 0, len(record_seq) if reverse else len(record_seq) - 2): + if record_seq[position] == nuc: + positions.append(position + 1) + trinuc = record_seq[position + down_shift:position + up_shift] + trinucs.append(convert_trinuc(trinuc, reverse)) + + return positions, trinucs + + +def init_tempfile(temp_dir, name, delete, suffix=".bedGraph.parquet") -> Path: + """ + Init temporary cytosine file + :param temp_dir: directory where file will be created + :param name: filename + :param delete: does file need to be deleted after script completion + :return: temporary file + """ + # temp cytosine file + temp_file = tempfile.NamedTemporaryFile(dir=temp_dir, delete=delete) + + # change name if not None + if name is not None: + new_path = Path(temp_dir) / (Path(name).stem + suffix) + + os.rename(temp_file.name, new_path) + temp_file.name = new_path + + return Path(temp_file.name) + + +class Sequence: + def __init__(self, cytosine_file: str | Path): + """ + Class for extracting cytosine contexts and positions + :param path: path to fasta sequence + :param temp_dir: directory, where temporary file will be created + :param name: filename of temporary file + :param delete: does temporary file need to be deleted after script completion + """ + self.cytosine_file = Path(cytosine_file) + + @classmethod + def from_fasta(cls, path: str | Path, temp_dir: str = "./", name: str = None, delete: bool = True): + """ + :param path: path to fasta sequence + :param temp_dir: directory, where temporary file will be created + :param name: filename of temporary file + :param delete: does temporary file need to be deleted after script completion + """ + cytosine_file = init_tempfile(temp_dir, name, delete, suffix=".fasta.parquet") + sequence = cls(cytosine_file) + + # read sequence into cytosine file + cls.__read_fasta_wrapper(sequence, fasta_path=path) + + return sequence + + @classmethod + def from_preprocessed(cls, path: str | Path): + """ + :param path: path to parquet preprocessed sequence + """ + path = Path(path) + if not path.exists(): + raise FileNotFoundError("Parquet file not found") + try: + pq.read_metadata(path) + + return cls(path) + + except Exception as e: + raise Exception("Failed reading parquet with exception:\n", e) + + @property + def cytosine_file_schema(self): + return pa.schema([ + ("position", pa.int32()), + ("context", pa.dictionary(pa.int8(), pa.utf8())), + ("chr", pa.dictionary(pa.int8(), pa.utf8())), + ("strand", pa.bool_())]) + + def __infer_schema_table(self, handle: io.TextIOBase): + """ + Initialize dummy table with dictionary columns encoded + :param handle: fasta input stream + :return: dummy table + """ + handle.seek(0) + schema = self.cytosine_file_schema + + # get all chromosome names to categorise them + chrom_ids = [record.id for record in seqio.parse(handle, format="fasta")] + # longer list for length be allways greater than chroms or contexts + chrom_ids += [str(chrom_ids[0])] * 3 + + # init other rows of table + contexts = ["CG", "CHG", "CHH"] + contexts += [str(contexts[0])] * (len(chrom_ids) - len(contexts)) + positions = [-1] * len(chrom_ids) + strand = [True] * len(chrom_ids) + + schema_table = pa.Table.from_arrays( + arrays=[positions, contexts, chrom_ids, strand], + schema=schema + ) + + return schema_table + + def __read_fasta(self, handle): + # init arrow parquet writer + arrow_writer = pq.ParquetWriter(self.cytosine_file, self.cytosine_file_schema) + # prepare dummy table with all dictionary columns already mapped + print("Scanning file to get chromosome ids.") + schema_table = self.__infer_schema_table(handle) + + print("Extracting cytosine contexts.") + print("Writing into", self.cytosine_file) + # return to start byte + handle.seek(0) + for record in seqio.parse(handle, "fasta"): + # POSITIVE + # parse sequence and get all trinucleotide positions and contexts + positions, trinuc = get_trinuc(str(record.seq)) + + # convert into arrow table + arrow_table = pa.Table.from_arrays( + arrays=[positions, trinuc, [record.id for _ in positions], [True for _ in positions]], + schema=self.cytosine_file_schema + ) + # unify dictionary keys with dummy table + # and deselect dummy rows + arrow_table = pa.concat_tables([schema_table, arrow_table]).unify_dictionaries()[len(schema_table):] + # write to file + arrow_writer.write(arrow_table) + + print(f"Read chromosome: {record.id}\t+", end="\r") + + # NEGATIVE + positions, trinuc = get_trinuc(str(record.seq), reverse=True) + + arrow_table = pa.Table.from_arrays( + arrays=[positions, trinuc, [record.id] * len(positions), [False for _ in positions]], + schema=schema_table.schema + ) + + arrow_table = pa.concat_tables([schema_table, arrow_table]).unify_dictionaries()[len(schema_table):] + arrow_writer.write(arrow_table) + + print(f"Read chromosome: {record.id}\t+-") + + print("Done reading fasta sequence.\n") + arrow_writer.close() + + def __read_fasta_wrapper(self, fasta_path: str | Path) -> tempfile.TemporaryFile: + fasta_path = Path(fasta_path) + + print("Reading sequence from:", fasta_path) + if fasta_path.suffix == ".gz": + with gzip.open(fasta_path.absolute(), 'rt') as handle: + return self.__read_fasta(handle) + else: + with open(fasta_path.absolute()) as handle: + return self.__read_fasta(handle) + + def get_metadata(self): + return pq.read_metadata(self.cytosine_file) + + +class Mapper: + def __init__(self, path): + self.report_file = path + + @staticmethod + def __map_with_sequence(df_lazy, sequence_df) -> pl.DataFrame: + file_types = [ + pl.col("chr").cast(pl.Categorical), + pl.col("position").cast(pl.Int32) + ] + + # arrow table aligned to genome + chrom_aligned = ( + df_lazy + .with_columns(file_types) + .set_sorted("position") + .join(sequence_df.lazy(), on=["chr", "position"]) + .collect() + ) + + return chrom_aligned + + @staticmethod + def __read_filter_sequence(sequence: Sequence, filter: list) -> pa.Table: + return pq.read_table(sequence.cytosine_file, filters=filter) + + @staticmethod + def __bedGraph_reader(path, batch_size, cpu, skip_rows): + return pl.read_csv_batched( + path, + separator='\t', has_header=False, + new_columns=['chr', 'position', 'count_m'], + columns=[0, 2, 3], + batch_size=batch_size, + n_threads=cpu, + skip_rows=skip_rows, + dtypes=[pl.Utf8, pl.Int64, pl.Float32] + ) + + @staticmethod + def __coverage_reader(path, batch_size, cpu, skip_rows): + return pl.read_csv_batched( + path, + separator='\t', has_header=False, + new_columns=['chr', 'position', 'count_m', 'count_um'], + columns=[0, 2, 4, 5], + batch_size=batch_size, + n_threads=cpu, + skip_rows=skip_rows, + dtypes=[pl.Utf8, pl.Int64, pl.Int32, pl.Int32] + ) + + @classmethod + def __map(cls, where, sequence, batched_reader, cpu, mutations: list[pl.Expr] = None): + pl.enable_string_cache() + genome_metadata = sequence.get_metadata() + genome_rows_read = 0 + + pq_writer = None + + batches = batched_reader.next_batches(cpu) + + while batches: + for batch in batches: + # get batch stats + batch_stats = batch.group_by("chr").agg([ + pl.col("position").max().alias("max"), + pl.col("position").min().alias("min") + ]) + + for chrom in batch_stats["chr"]: + chrom_min, chrom_max = [batch_stats.filter(pl.col("chr") == chrom)[stat][0] for stat in + ["min", "max"]] + + filters = [ + ("chr", "=", chrom), + ("position", ">=", chrom_min), + ("position", "<=", chrom_max) + ] + + chrom_genome = ( + pl.from_arrow(cls.__read_filter_sequence(sequence, filters)) + .with_columns( + pl.when(pl.col("strand") == True).then(pl.lit("+")) + .otherwise(pl.lit("-")) + .cast(pl.Categorical) + .alias("strand") + ) + ) + + + # arrow table aligned to genome + filtered_lazy = batch.lazy().filter(pl.col("chr") == chrom) + filtered_aligned = cls.__map_with_sequence(filtered_lazy, chrom_genome) + + if mutations is not None: + filtered_aligned = filtered_aligned.with_columns(mutations) + + missing_cols = set(["chr", "position", "strand", "context", "count_m", "count_total"]) - set(filtered_aligned.columns) + + for column in missing_cols: + filtered_aligned.with_columns(pl.lit(None).alias(column)) + + filtered_aligned = filtered_aligned.select(["chr", "position", "strand", "context", "count_m", "count_total"]) + + filtered_aligned = filtered_aligned.to_arrow() + if pq_writer is None: + pq_writer = pa.parquet.ParquetWriter( + where, + schema=filtered_aligned.schema + ) + + pq_writer.write(filtered_aligned) + genome_rows_read += len(chrom_genome) + + print("Mapped {rows_read}/{rows_total} ({percent}%) cytosines".format( + rows_read=genome_rows_read, + rows_total=genome_metadata.num_rows, + percent=round(genome_rows_read / genome_metadata.num_rows * 100, 2) + ), end="\r") + + gc.collect() + batches = batched_reader.next_batches(cpu) + + pq_writer.close() + + @staticmethod + def __check_compressed(path: str | Path, temp_dir=None): + path = Path(path) + + if path.suffix == ".gz": + temp_file = tempfile.NamedTemporaryFile(dir=temp_dir) + print(f"Temporarily unpack {path} to {temp_file.name}") + + with gzip.open(path, mode="rb") as file: + shutil.copyfileobj(file, temp_file) + + return temp_file + + else: + return path + + # TODO migrate on Arrow reader + @classmethod + def bedGraph( + cls, + path, + sequence: Sequence, + temp_dir: str = "./", + name: str = None, + delete: bool = True, + batch_size=10 ** 7, + cpu=multiprocessing.cpu_count(), + skip_rows: int = 1 + ): + """ + :param path: path to .bedGraph file + :param sequence: initialized Sequence object + :param temp_dir: directory for temporary files + :param name: temporary file basename + :param delete: save or delete temporary file + :param batch_size: how many rows to process simultaneously + :param cpu: how many cores to use + :param skip_rows: how many rows to keep + """ + path = Path(path) + if not path.exists(): + raise FileNotFoundError() + + file = cls.__check_compressed(path, temp_dir) + path = file.name + + report_file = init_tempfile(temp_dir, name, delete, suffix=".bedGraph.parquet") + mapper = Mapper(report_file) + + path = Path(path) + print(f"Started reading bedGraph file from {path}") + + bedGraph_reader = cls.__bedGraph_reader(path, batch_size, cpu, skip_rows) + + mutations = [ + pl.col("count_m") / 100, + pl.lit(1).alias("count_total") + ] + + cls.__map(mapper.report_file, sequence, bedGraph_reader, cpu, mutations) + + print(f"\nDone reading bedGraph sequence\nTable saved to {mapper.report_file}") + + return mapper + + # TODO migrate on Arrow reader + @classmethod + def coverage( + cls, + path, + sequence: Sequence, + temp_dir: str = "./", + name: str = None, + delete: bool = True, + batch_size=10 ** 7, + cpu=multiprocessing.cpu_count(), + skip_rows: int = 1 + ): + """ + :param path: path to .cov file + :param sequence: initialized Sequence object + :param temp_dir: directory for temporary files + :param name: temporary file basename + :param delete: save or delete temporary file + :param batch_size: how many rows to process simultaneously + :param cpu: how many cores to use + :param skip_rows: how many rows to keep + """ + path = Path(path) + if not path.exists(): + raise FileNotFoundError() + + file = cls.__check_compressed(path, temp_dir) + path = file.name + + report_file = init_tempfile(temp_dir, name, delete, suffix=".cov.parquet") + mapper = Mapper(report_file) + + path = Path(path) + print(f"Started reading coverage file from {path}") + + coverage_reader = cls.__coverage_reader(path, batch_size, cpu, skip_rows) + + mutations = [ + (pl.col("count_m") + pl.col("count_um")).alias("count_total") + ] + + cls.__map(mapper.report_file, sequence, coverage_reader, cpu, mutations) + + print(f"\nDone reading coverage file\nTable saved to {mapper.report_file}") + + return mapper diff --git a/src/bismarkplot/__init__.py b/src/bismarkplot/__init__.py index 46a01a5..1520295 100644 --- a/src/bismarkplot/__init__.py +++ b/src/bismarkplot/__init__.py @@ -1,3 +1,7 @@ -from .BismarkPlot import Metagene, MetageneFiles, Genome, ChrLevels, Clustering +from .MetageneClasses import Metagene, MetageneFiles +from .Plots import LinePlot, LinePlotFiles, HeatMap, HeatMapFiles +from .Binom import BinomialData, RegionStat +from .GenomeClass import Genome +from .ChrLevels import ChrLevels -__version__ = 1.2 +__version__ = '1.4.1' diff --git a/src/bismarkplot/console_chrs.py b/src/bismarkplot/console_chrs.py index d7752cc..24afb12 100644 --- a/src/bismarkplot/console_chrs.py +++ b/src/bismarkplot/console_chrs.py @@ -9,21 +9,24 @@ formatter_class=argparse.ArgumentDefaultsHelpFormatter ) -parser.add_argument('filename', help='path to bismark methylation_extractor file', nargs='+', metavar='path/to/txt') -parser.add_argument('-o', '--out', help='output base name', default=os.path.abspath(os.getcwd()), metavar='DIR') +parser.add_argument('filename', help='path to bismark methylation_extractor file', metavar='path/to/txt') +parser.add_argument('-o', '--out', help='output base name', default="plot", metavar='NAME') +parser.add_argument('-d', '--dir', help='output dir', default=os.path.abspath(os.getcwd()), metavar='DIR') parser.add_argument('-b', '--batch', help='number of rows to be read from bismark file by batch', type=int, default=10**6, metavar='N') parser.add_argument('-c', '--cores', help='number of cores to use', type=int, default=None) -parser.add_argument('-w', '--wlength', help='number of windows for genes', type=int, default=10**5, metavar='N') +parser.add_argument('-w', '--wlength', help='number of windows for chromosome', type=int, default=10**5, metavar='N') parser.add_argument('-m', '--mlength', help='minimum chromosome length', type=int, default=10**6, metavar='N') parser.add_argument('-S', '--smooth', help='windows for smoothing (0 - no smoothing, 1 - straight line', type=float, default=50, metavar='FLOAT') -parser.add_argument('-F', '--format', help='format of output plots', choices=['png', 'pdf', 'svg'], default='pdf', dest='file_format') +parser.add_argument('-F', '--fmt', help='format of output plots', choices=['png', 'pdf', 'svg'], default='pdf', dest='file_format') +parser.add_argument("--dpi", help="dpi of output plot", type=int, default=200) + def main(): args = parser.parse_args() try: - from .BismarkPlot import ChrLevels + from src.bismarkplot import ChrLevels import matplotlib.pyplot as plt chr = ChrLevels.from_file( @@ -38,15 +41,20 @@ def main(): fig, axes = plt.subplots() for context in ["CG", "CHG", "CHH"]: - chr.filter(strand=strand, context=context).draw((fig, axes), smooth=args.smooth, label=context) + chr.filter(strand=strand, context=context).draw_mpl((fig, axes), smooth=args.smooth, label=context) + + save_path = f"{args.dir}/{args.out}_{strand}.{args.file_format}" + + print(f"Saving to: {save_path}") - fig.savefig(f"{args.out}_{strand}.{args.format}", dpi=args.dpi) + fig.savefig(save_path, dpi=args.dpi) except Exception: filename = f'error{datetime.now().strftime("%m_%d_%H:%M")}.txt' - with open(args.out + '/' + filename, 'w') as f: + file_dir = args.dir + '/' + filename + with open(file_dir, 'w') as f: f.write(traceback.format_exc()) - print(f'Error happened. Please open an issue at GitHub with Traceback from file: {f}') + print(f'Error happened. Please open an issue at GitHub with Traceback from file: {file_dir}') if __name__ == "__main__": diff --git a/src/bismarkplot/console_metagene.py b/src/bismarkplot/console_metagene.py index 68ca6d3..2129fd3 100644 --- a/src/bismarkplot/console_metagene.py +++ b/src/bismarkplot/console_metagene.py @@ -2,6 +2,7 @@ import os import traceback from datetime import datetime +from matplotlib.pyplot import close parser = argparse.ArgumentParser( prog='BismarkPlot.', @@ -9,9 +10,10 @@ formatter_class=argparse.ArgumentDefaultsHelpFormatter ) parser.add_argument('filename', help='path to bismark methylation_extractor files', nargs='+') -parser.add_argument('-o', '--out', help='output base name', default=os.path.abspath(os.getcwd())) +parser.add_argument('-o', '--out', help='output base name', default="plot", metavar='NAME') +parser.add_argument('--dir', help='output dir', default=os.path.abspath(os.getcwd()), metavar='DIR') parser.add_argument('-g', '--genome', help='path to GFF genome file') -parser.add_argument('-r', '--region', help='path to GFF genome file', default = "gene", choices=["gene", "exon", "tss", "tes"]) +parser.add_argument('-r', '--region', help='path to GFF genome file', default="gene", choices=["gene", "exon", "tss", "tes"]) parser.add_argument('-b', '--batch', help='number of rows to be read from bismark file by batch', type=int, default=10**6) parser.add_argument('-c', '--cores', help='number of cores to use', type=int, default=None) parser.add_argument('-f', '--flength', help='length in bp of flank regions', type=int, default=2000) @@ -20,16 +22,16 @@ parser.add_argument('-m', '--mlength', help='minimal length in bp of gene', type=int, default=4000) parser.add_argument('-w', '--gwindows', help='number of windows for genes', type=int, default=100) -parser.add_argument('--line', help='line-plot enabled', action='store_true') -parser.add_argument('--heatmap', help='heat-map enabled', action='store_true') -parser.add_argument('--box', help='box-plot enabled', action='store_true') -parser.add_argument('--violin', help='violin-plot enabled', action='store_true') +parser.add_argument('--line', help='line-plot enabled', action='store_true', default=True) +parser.add_argument('--heatmap', help='heat-map enabled', action='store_true', default=True) +parser.add_argument('--box', help='box-plot enabled', action='store_true', default=True) +parser.add_argument('--violin', help='violin-plot enabled', action='store_true', default=True) parser.add_argument('-S', '--smooth', help='windows for smoothing', type=float, default=10) parser.add_argument('-L', '--labels', help='labels for plots', nargs='+') -parser.add_argument('-C', '--confidence', help='probability for confidence bands for line-plot. 0 if disabled', type=float, default=0) -parser.add_argument('-H', help='vertical resolution for heat-map', type=int, default=100) -parser.add_argument('-V', help='vertical resolution for heat-map', type=int, default=100) +parser.add_argument('-C', '--confidence', help='probability for confidence bands for line-plot. 0 if disabled', type=float, default=.95) +parser.add_argument('-H', help='vertical resolution for heat-map', type=int, default=100, dest="vresolution") +parser.add_argument('-V', help='vertical resolution for heat-map', type=int, default=100, dest="hresolution") parser.add_argument("--dpi", help="dpi of output plot", type=int, default=200) parser.add_argument('-F', '--format', help='format of output plots', choices=['png', 'pdf', 'svg'], default='pdf', dest='file_format') @@ -37,52 +39,68 @@ def main(): args = parser.parse_args() + if args.genome is None: + print("You need to specify genome path") + exit() try: - from .BismarkPlot import MetageneFiles, Genome + from .BismarkPlot import MetageneFiles + from src.bismarkplot import Genome genome = Genome.from_gff( file=args.genome ) if args.region == "tss": - genome = genome.near_TSS(min_length = args.mlength, flank_length= args.flength) + genome = genome.near_TSS(min_length=args.mlength, flank_length=args.flength) elif args.region == "tes": - genome = genome.near_TES(min_length = args.mlength, flank_length= args.flength) + genome = genome.near_TES(min_length=args.mlength, flank_length=args.flength) elif args.region == "exon": - genome = genome.exon(min_length = args.mlength) + genome = genome.exon(min_length=args.mlength) else: - genome = genome.gene_body(min_length = args.mlength, flank_length= args.flength) + genome = genome.gene_body(min_length=args.mlength, flank_length=args.flength) bismark = MetageneFiles.from_list( filenames=args.filename, - genome=genome, + genomes=genome, labels=args.labels, - gene_windows=args.gwindows, - upstream_windows=args.uwindows, - downstream_windows=args.dwindows, + body_windows=args.gwindows, + up_windows=args.uwindows, + down_windows=args.dwindows, batch_size=args.batch, cpu=args.cores ) + filename = args.dir + "/" + args.out + print(f"Base name for saving: {filename}_<...>.{args.file_format}") + for context in ["CG", "CHG", "CHH"]: for strand in ["+", "-"]: filtered = bismark.filter(context=context, strand=strand) - base_name = args.out + "_" + context + strand + "_{type}." + args.format + base_name = filename + "_" + context + strand + "_{type}." + args.file_format + + if args.line: + fig = filtered.line_plot().draw_mpl(smooth=args.smooth, confidence=args.confidence) + fig.savefig(base_name.format(type="line-plot"), dpi = args.dpi) + close() + if args.heatmap: + fig = filtered.heat_map(args.hresolution, args.vresolution).draw_mpl() + fig.savefig(base_name.format(type="heat-map"), dpi=args.dpi) + close() + if args.box: + fig = filtered.trim_flank().box_plot() + fig.savefig(base_name.format(type="box-plot"), dpi=args.dpi) + close() + if args.violin: + fig = filtered.trim_flank().violin_plot() + fig.savefig(base_name.format(type="violin-plot"), dpi=args.dpi) + close() - if args.line_plot: - filtered.line_plot().draw(smooth=args.smooth, confidence=args.confidence).savefig(base_name.format(type="line-plot"), dpi = args.dpi) - if args.heat_map: - filtered.heat_map(args.hresolution, args.vresolution).draw().savefig(base_name.format(type="heat-map"), dpi=args.dpi) - if args.box_plot: - filtered.trim_flank().box_plot().savefig(base_name.format(type="box-plot"), dpi=args.dpi) - if args.violin_plot: - filtered.trim_flank().violin_plot().savefig(base_name.format(type="violin-plot"), dpi=args.dpi) except Exception: - filename = f'error{datetime.now().strftime("%m_%d_%H:%M")}.txt' - with open(args.out + '/' + filename, 'w') as f: + filename = args.dir + '/' + f'error{datetime.now().strftime("%m_%d_%H:%M")}.txt' + with open(filename, 'w') as f: f.write(traceback.format_exc()) - print(f'Error happened. Please open an issue at GitHub with Traceback from file: {f}') + print(f'Error happened. Please open an issue at GitHub with Traceback from file: {filename}') if __name__ == "__main__": diff --git a/src/bismarkplot/utils.py b/src/bismarkplot/utils.py new file mode 100644 index 0000000..0037e5d --- /dev/null +++ b/src/bismarkplot/utils.py @@ -0,0 +1,110 @@ +import re +from os.path import getsize + +import numpy as np +from matplotlib.axes import Axes +from scipy import stats +import polars as pl + + +class dotdict(dict): + """dot.notation access to dictionary attributes""" + __getattr__ = dict.get + __setattr__ = dict.__setitem__ + __delattr__ = dict.__delitem__ + + +def remove_extension(path): + re.sub("\.[^./]+$", "", path) + + +def prepare_labels(major_labels: list, minor_labels: list): + labels = dict( + up_mid="Upstream", + body_start="TSS", + body_mid="Body", + body_end="c", + down_mid="Downstream" + ) + + if major_labels and len(major_labels) == 2: + labels["body_start"], labels["body_end"] = major_labels + elif major_labels: + print("Length of major tick labels != 2. Using default.") + else: + labels["body_start"], labels["body_end"] = [""] * 2 + + if minor_labels and len(minor_labels) == 3: + labels["up_mid"], labels["body_mid"], labels["down_mid"] = minor_labels + elif minor_labels: + print("Length of minor tick labels != 3. Using default.") + else: + labels["up_mid"], labels["body_mid"], labels["down_mid"] = [""] * 3 + + return labels + + +def approx_batch_num(path, batch_size, check_lines=1000): + size = getsize(path) + + length = 0 + with open(path, "rb") as file: + for _ in range(check_lines): + length += len(file.readline()) + + return round(np.ceil(size / (length / check_lines * batch_size))) + + +def hm_flank_lines(axes: Axes, upstream_windows: int, gene_windows: int, downstream_windows: int): + """ + Add flank lines to the given axis (for line plot) + """ + x_ticks = [] + x_labels = [] + if upstream_windows > 0: + x_ticks.append(upstream_windows - .5) + x_labels.append('TSS') + if downstream_windows > 0: + x_ticks.append(gene_windows + downstream_windows - .5) + x_labels.append('TES') + + if x_ticks and x_labels: + axes.set_xticks(x_ticks) + axes.set_xticklabels(x_labels) + for tick in x_ticks: + axes.axvline(x=tick, linestyle='--', color='k', alpha=.3) + + +def interval(sum_density: list[int], sum_counts: list[int], alpha=.95): + """ + Evaluate confidence interval for point + + :param sum_density: Sums of methylated counts in fragment + :param sum_counts: Sums of all read cytosines in fragment + :param alpha: Probability for confidence band + """ + sum_density, sum_counts = np.array(sum_density), np.array(sum_counts) + average = sum_density.sum() / sum_counts.sum() + + normalized = np.divide(sum_density, sum_counts) + + variance = np.average((normalized - average) ** 2, weights=sum_counts) + + n = sum(sum_counts) - 1 + + i = stats.t.interval(alpha, df=n, loc=average, scale=np.sqrt(variance / n)) + + return {"lower": i[0], "upper": i[1]} + + +MetageneSchema = dotdict(dict( + chr=pl.Categorical, + strand=pl.Categorical, + position=pl.UInt64, + gene=pl.Categorical, + context=pl.Categorical, + id=pl.Categorical, + fragment=pl.UInt32, + sum=pl.Float32, + count=pl.UInt32, +)) \ No newline at end of file