Commit 6b6d34fd authored by Davis McCarthy's avatar Davis McCarthy
Browse files

Adding course material

parent 87672532
Pipeline #78 failed with stages
# EMBO-SingleCellOmics-Methylation_2019-05_Heidelberg
# Single Cell 'Omics: Analysis of single-cell methylation data
Single Cell 'Omics: Analysis of single-cell methylation data
\ No newline at end of file
The final session of the course will cover pre-processing and basic analysis of
single-cell bisulfite sequencing data. We will assay two cell types, probably 16
cells in total.
## Goals
Two main goals:
1. Methylation profiles define cell type (i.e. cells will cluster apart by e.g. PCA)
2. Context specificity of methylation variance. E.g. in mouse ES cells, CGIs are homogenous (and low in methylation), repeat elements are homogenously high and active enhancer elements are heterogeneous. This is interesting because the enhancer elements are cell type specific and thus some variation in the methylation levels here implies plasticity in cell identity which could be important for lineage formation.
## First step
Clone or download this repository so that you have the necessary code, data and materials to hand.
If you're familiar with `git`:
```
git clone https://github.com/davismcc/SingleCellOmics_Heidelberg_Apr2017.git
```
If not, you can download a zip file of the repository by clicking the green "Clone or download" button above.
## Outline:
We have two 1.5 hour sessions to work on single-cell methylation. Broadly, we will spend the first session on processing the raw sequence files to get summarized, annotated methylation results for genomic features of interest. In the second session we will analyze and plot these results to fulfill the goals above.
1. We will use `BISMARK` for alignments and methylation calling. For details, see this [protocol paper](http://www.nature.com/nprot/journal/v12/n3/full/nprot.2016.187.html).
2. QC (also see protocol paper)
1. Negative controls should not align
1. bisulfite conversion efficiency (assessed using CHH methylation from bismark reports) should be >95%
1. mapping efficiency (from bismark reports) >10% (30-40% is normal here but may end up lower in these practicals)
1. number of CpG sites covered (I use 1M unique positions but this will depend on seq depth so maybe just exclude outliers)
3. Preprocessing and annotation
* Quantify methylation over regions of interest (promoters, gene bodies, enhancers, repeats, CpG islands).
1. mean methylation rate (each covered position counts once – i.e. do not give extra weight to positions with >1 read)
2. also record the coverage (number of CpG sites that were covered in the that cell at that locus) for the purpose of assigning weights to each cell in downstream analyses
4. Analysis
1. Mean methylation by feature / cell type
1. Variation by feature / cell type
1. Dimension reduction
1. Clustering
We will manage the data processing and analysis "pipeline" using [snakemake](http://snakemake.readthedocs.io/en/stable/). We will analyze our results in RStudio, using an [R Markdown](http://rmarkdown.rstudio.com) Notebook (see the `notebooks` folder in this repository for an example.)
## Data
The aim will be for you to analyze the data you generate during the course in Heidelberg.
However, in case that data is unavailable for any reason and to have an alternative dataset that is processed and ready for analysis, we also have access to a small dataset from Stephen Clark and colleagues at the Babraham Institute, Cambridge. This dataset consists of 15 cells from mouse embryos.
1. Raw `fastq` files are available at this [link](https://www.dropbox.com/sh/1wy3gw7fpil73dd/AADIOGvbsYNdt45KnaHahmqqa?dl=0) (6GB; password required, which will be shared on the course Slack channel). Only if you want to work from raw `fastq` files (substantial computation needed) and have a high-bandwidth connection, download the files at the link and save to `data/fastq`.
1. Raw `fastq` files for a "test" dataset (sampling 500,000 reads from each of
the above `fastq` files), smaller in size so a little more convenient, are
available at this [link](https://www.dropbox.com/sh/s0dmlgg0cmxak9y/AAAC4NK_Bz2rSN7kYJfJcloRa?dl=0)
(210MB; password required).
1. Merged `Bismark` files are available at this [link](https://www.dropbox.com/sh/b3v55pdkkimo13s/AAA4gH-6uCxMqFSbFM72rwLna?dl=0) (76MB; password required). Download and copy these to `data/bismark/merged`.
1. Summarized, annotated methylation results that we will use for analysis are
available in the results folder of this repository (we will generate these
ourselves during the course). A version of this file, `results/all.tsv.gz` that
has already been computed is available at this [link](https://www.dropbox.com/s/dq7x4ohu5zxw5n9/all.tsv.gz?dl=0) (3.5MB)
in case you wish to use it for the second part of the analysis.
## Software requirements:
* `R` >=3.5.0 with packages:
* From CRAN: `tidyverse`, `data.table`, `docopt`, `ggthemes`, `ggforce`
* From Bioconductor: `scater`, `scran`, `GenomicRanges`, `iSEE`, `SC3`, `pcaMethods`
* `RStudio`
* `Python` >=3.6 with packages: `snakemake`
* [`Trim Galore!`](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/), which requires [Cutadapt](https://github.com/marcelm/cutadapt/)
* [`Bowtie2`](http://bowtie-bio.sourceforge.net/bowtie2/index.shtml)
* [`Bismark`](https://www.bioinformatics.babraham.ac.uk/projects/bismark/)
* [`FastQC`](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/)
* [`MultiQC`](http://multiqc.info/)
* [`MethylQA`](http://methylqa.sourceforge.net/index.php)
* [`Singularity`][https://www.sylabs.io/docs/]
## Acknowledgements
Many thanks to Stephen Clark and Ricard Argeluet for help and advice. Stephen
advised on the course aims and structure and directed generation of raw data.
Ricard provided advice on analysis and provided data processing scripts and
processed datasets for use.
"""
Snakefile for single-cell methylation analysis
Davis McCarthy
EMBL-EBI
April 2017
Run on a cluster with a command like:
snakemake --jobs 1000 --latency-wait 30 --cluster 'bsub -R "rusage[mem=32000]" -M 32000 -o ./snake_logs -e ./snake_logs'
"""
import glob
import os
#from subprocess import run
import pandas as pd
import re
TEST = True
if TEST:
SAMPLES_LONG = glob.glob('data/fastq/test/*.fastq.gz')
SAMPLES = [os.path.basename(w).replace('lane[123]+_', '') for w in SAMPLES_LONG]
SAMPLES = [w.replace('.fastq.gz', '') for w in SAMPLES]
SAMPLES_LONG = [os.path.basename(w).replace('.fastq.gz', '') for w in SAMPLES_LONG]
SAMPLES_MERGE = [w.replace('_R1', '').replace('_R2', '') for w in SAMPLES]
else:
SAMPLES_LONG = glob.glob('data/fastq/*.fastq.gz')
SAMPLES = [w.replace('lane[123]+_', '') for w in SAMPLES_LONG]
SAMPLES = [w.replace('_[ATCG]+_.*.fastq.gz', '') for w in SAMPLES]
SAMPLES_LONG = [os.path.basename(w).replace('.fastq.gz', '') for w in SAMPLES_LONG]
SAMPLES_MERGE = [w.replace('_R1', '').replace('_R2', '') for w in SAMPLES]
fastqc_html_reports = expand('reports/fastqc/{sample}_fastqc.html', sample = SAMPLES_LONG)
rule all:
input:
'results/all.tsv.gz',
'reports/multiqc/multiqc_report.html',
#expand('data/bismark/methyl/{sample}_trimmed_bismark_bt2.deduplicated.bismark.cov.gz', sample = SAMPLES)
rule fastqc_reports:
input:
'data/fastq/test/{sample}.fastq.gz'
## if test = False, remove test/ from path above
output:
'reports/fastqc/{sample}_fastqc.html'
params:
output_dir="reports/fastqc/"
shell:
'/Users/davis/src/FastQC.app/Contents/MacOS/fastqc -o {params.output_dir} {input}'
rule trim_fastq:
input:
'data/fastq/test/{sample}.fastq.gz'
## if test = False, remove test/ from path above
output:
temp('{sample}_trimmed.fq.gz'),
temp('{sample}.fastq.gz_trimming_report.txt')
log:
"logs/trim_fastq/{sample}.log"
shell:
'trim_galore --gzip --non_directional --rrbs '
'{input} '
rule fastqc_reports_trimmed:
input:
'{sample}_trimmed.fq.gz'
output:
temp('reports/fastqc/{sample}_trimmed_fastqc.html')
params:
output_dir="reports/fastqc/"
shell:
'/Users/davis/src/FastQC.app/Contents/MacOS/fastqc -o {params.output_dir} {input}'
rule bismark_prepare_genome:
input:
'genome'
output:
'genome/Bisulfite_Genome'
shell:
'bismark_genome_preparation {input}'
rule bismark:
input:
'{sample}_trimmed.fq.gz',
'genome/Bisulfite_Genome'
output:
temp('data/bismark/raw/{sample}_trimmed_bismark_bt2.bam') ## CHECK BISMARK OUTPUT
shell:
'bismark --non_directional --genome genome -o data/bismark/raw '
'{input}'
rule bismark_dedup:
input:
'data/bismark/raw/{sample}_trimmed_bismark_bt2.bam'
output:
temp('data/bismark/raw/{sample}_trimmed_bismark_bt2.deduplicated.bam') ## CHECK BISMARK OUTPUT
shell:
'deduplicate_bismark --bam {input}'
rule bismark_methylation:
input:
'data/bismark/raw/{sample}_trimmed_bismark_bt2.deduplicated.bam'
output:
'data/bismark/methyl/{sample}_trimmed_bismark_bt2.deduplicated.bismark.cov.gz'
shell:
'bismark_methylation_extractor --gzip --bedGraph '
'-o data/bismark/methyl {input}'
rule multiqc:
input:
fastqc_html_reports,
expand('data/bismark/methyl/{sample}_trimmed_bismark_bt2.deduplicated.bismark.cov.gz', sample = SAMPLES),
expand('{sample}_trimmed.fq.gz', sample = SAMPLES),
expand('{sample}.fastq.gz_trimming_report.txt', sample = SAMPLES)
output:
'reports/multiqc/multiqc_report.html'
shell:
'multiqc --force --filename {output} '
'reports/fastqc ./ '
'data/bismark/methyl data/bismark/raw '
rule merge_methylation:
input:
expand('data/bismark/methyl/{sample}_R1_trimmed_bismark_bt2.deduplicated.bismark.cov.gz', sample = SAMPLES_MERGE),
expand('data/bismark/methyl/{sample}_R2_trimmed_bismark_bt2.deduplicated.bismark.cov.gz', sample = SAMPLES_MERGE)
output:
expand('data/bismark/merged/{sample}.tsv.gz', sample = SAMPLES_MERGE)
params:
indir = 'data/bismark/methyl',
outdir = 'data/bismark/merged'
shell:
'RScript scripts/merge.R -i {params.indir} -o {params.outdir}'
rule annotate_methylation:
input:
expand('data/bismark/merged/{sample}.tsv.gz', sample = SAMPLES_MERGE)
output:
'results/all.tsv.gz'
params:
indir = 'data/bismark/merged',
annodir = 'annotation',
outdir = 'results'
shell:
'RScript scripts/annotate.R -i {params.indir} -a {params.annodir} -o {params.outdir}'
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
digraph snakemake_dag {
graph[bgcolor=white, margin=0];
node[shape=box, style=rounded, fontname=sans, fontsize=10, penwidth=2];
edge[penwidth=2, color=grey];
0[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
1[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
2[label = "trim_fastq\nsample: sample03_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
3[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
4[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
5[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
6[label = "fastqc_reports\nsample: sample02_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
7[label = "trim_fastq\nsample: sample09_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
8[label = "trim_fastq\nsample: sample06_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
9[label = "trim_fastq\nsample: sample02_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
10[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
11[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
12[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
13[label = "trim_fastq\nsample: sample13_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
14[label = "trim_fastq\nsample: sample01_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
15[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
16[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
17[label = "trim_fastq\nsample: sample02_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
18[label = "trim_fastq\nsample: sample03_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
19[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
20[label = "fastqc_reports\nsample: sample07_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
21[label = "fastqc_reports\nsample: sample12_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
22[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
23[label = "trim_fastq\nsample: sample01_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
24[label = "trim_fastq\nsample: sample08_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
25[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
26[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
27[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
28[label = "trim_fastq\nsample: sample08_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
29[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
30[label = "bismark_prepare_genome", color = "0.00 0.6 0.85", style="rounded,dashed"];
31[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
32[label = "trim_fastq\nsample: sample05_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
33[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
34[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
35[label = "trim_fastq\nsample: sample10_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
36[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
37[label = "trim_fastq\nsample: sample11_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
38[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
39[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
40[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
41[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
42[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
43[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
44[label = "fastqc_reports\nsample: sample06_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
45[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
46[label = "fastqc_reports\nsample: sample04_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
47[label = "all", color = "0.48 0.6 0.85", style="rounded,dashed"];
48[label = "trim_fastq\nsample: sample07_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
49[label = "fastqc_reports\nsample: sample10_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
50[label = "fastqc_reports\nsample: sample01_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
51[label = "trim_fastq\nsample: sample10_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
52[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
53[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
54[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
55[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
56[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
57[label = "trim_fastq\nsample: sample14_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
58[label = "fastqc_reports\nsample: sample05_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
59[label = "trim_fastq\nsample: sample12_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
60[label = "trim_fastq\nsample: sample15_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
61[label = "fastqc_reports\nsample: sample01_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
62[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
63[label = "trim_fastq\nsample: sample07_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
64[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
65[label = "trim_fastq\nsample: sample14_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
66[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
67[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
68[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
69[label = "fastqc_reports\nsample: sample15_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
70[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
71[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
72[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
73[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
74[label = "fastqc_reports\nsample: sample08_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
75[label = "fastqc_reports\nsample: sample13_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
76[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
77[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
78[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
79[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
80[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
81[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
82[label = "trim_fastq\nsample: sample09_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
83[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
84[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
85[label = "fastqc_reports\nsample: sample08_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
86[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
87[label = "fastqc_reports\nsample: sample03_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
88[label = "trim_fastq\nsample: sample11_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
89[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
90[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
91[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
92[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
93[label = "fastqc_reports\nsample: sample14_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
94[label = "trim_fastq\nsample: sample05_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
95[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
96[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
97[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
98[label = "trim_fastq\nsample: sample12_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
99[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
100[label = "fastqc_reports\nsample: sample05_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
101[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
102[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
103[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
104[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
105[label = "trim_fastq\nsample: sample06_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
106[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
107[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
108[label = "fastqc_reports\nsample: sample09_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
109[label = "annotate_methylation", color = "0.61 0.6 0.85", style="rounded,dashed"];
110[label = "fastqc_reports\nsample: sample07_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
111[label = "fastqc_reports\nsample: sample02_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
112[label = "fastqc_reports\nsample: sample11_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
113[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
114[label = "trim_fastq\nsample: sample04_R1", color = "0.06 0.6 0.85", style="rounded,dashed"];
115[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
116[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
117[label = "trim_fastq\nsample: sample13_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
118[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
119[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
120[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
121[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
122[label = "fastqc_reports\nsample: sample10_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
123[label = "merge_methylation", color = "0.30 0.6 0.85", style="rounded,dashed"];
124[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
125[label = "fastqc_reports\nsample: sample09_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
126[label = "fastqc_reports\nsample: sample13_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
127[label = "fastqc_reports\nsample: sample11_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
128[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
129[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
130[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
131[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
132[label = "fastqc_reports\nsample: sample12_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
133[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
134[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
135[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
136[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
137[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
138[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
139[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
140[label = "fastqc_reports\nsample: sample15_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
141[label = "trim_fastq\nsample: sample04_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
142[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
143[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
144[label = "fastqc_reports\nsample: sample14_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
145[label = "fastqc_reports\nsample: sample06_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
146[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
147[label = "bismark_dedup", color = "0.55 0.6 0.85", style="rounded,dashed"];
148[label = "fastqc_reports\nsample: sample04_R1", color = "0.36 0.6 0.85", style="rounded,dashed"];
149[label = "fastqc_reports\nsample: sample03_R2", color = "0.36 0.6 0.85", style="rounded,dashed"];
150[label = "multiqc", color = "0.24 0.6 0.85", style="rounded,dashed"];
151[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
152[label = "bismark_methylation", color = "0.12 0.6 0.85", style="rounded,dashed"];
153[label = "trim_fastq\nsample: sample15_R2", color = "0.06 0.6 0.85", style="rounded,dashed"];
154[label = "bismark", color = "0.42 0.6 0.85", style="rounded,dashed"];
114 -> 0
30 -> 0
84 -> 1
118 -> 3
63 -> 4
30 -> 4
134 -> 5
62 -> 10
30 -> 11
82 -> 11
31 -> 12
64 -> 15
52 -> 16
76 -> 19
137 -> 22
33 -> 25
56 -> 26
24 -> 27
30 -> 27
80 -> 29
14 -> 31
30 -> 31
83 -> 33
141 -> 34
30 -> 34
146 -> 36
124 -> 38
129 -> 39
115 -> 40
4 -> 41
71 -> 42
86 -> 43
2 -> 45
30 -> 45
109 -> 47
150 -> 47
94 -> 52
30 -> 52
41 -> 53
32 -> 54
30 -> 54
96 -> 55
102 -> 56
99 -> 62
78 -> 64
5 -> 66
60 -> 67
30 -> 67
90 -> 68
89 -> 70
35 -> 71
30 -> 71
39 -> 72
135 -> 73
81 -> 76
30 -> 77
28 -> 77
57 -> 78
30 -> 78
130 -> 79
154 -> 80
37 -> 81
30 -> 81
30 -> 83
8 -> 83
0 -> 84
34 -> 86
91 -> 89
30 -> 90
13 -> 90
65 -> 91
30 -> 91
128 -> 92
68 -> 95
67 -> 96
147 -> 97
59 -> 99
30 -> 99
153 -> 101
30 -> 101
23 -> 102
30 -> 102
131 -> 103
51 -> 104
30 -> 104
36 -> 106
119 -> 107
123 -> 109
116 -> 113
7 -> 115
30 -> 115
27 -> 116
151 -> 118
143 -> 119
12 -> 120
22 -> 121
1 -> 123
38 -> 123
3 -> 123
120 -> 123
121 -> 123
79 -> 123
97 -> 123
107 -> 123
15 -> 123
19 -> 123
95 -> 123
53 -> 123
10 -> 123
55 -> 123
72 -> 123
136 -> 123
29 -> 123
25 -> 123
26 -> 123
142 -> 123
92 -> 123
139 -> 123
103 -> 123
106 -> 123
152 -> 123
70 -> 123
66 -> 123
73 -> 123
43 -> 123
113 -> 123
104 -> 124
54 -> 128
9 -> 129
30 -> 129
11 -> 130
45 -> 131
138 -> 133
98 -> 134
30 -> 134
77 -> 135
133 -> 136
117 -> 137
30 -> 137
48 -> 138
30 -> 138
42 -> 139
40 -> 142
17 -> 143
30 -> 143
88 -> 146
30 -> 146
101 -> 147
1 -> 150
2 -> 150
3 -> 150
6 -> 150
7 -> 150
8 -> 150
9 -> 150
10 -> 150
13 -> 150
88 -> 150
15 -> 150
100 -> 150
17 -> 150
132 -> 150
20 -> 150
21 -> 150
23 -> 150
24 -> 150
25 -> 150
26 -> 150
28 -> 150
29 -> 150
32 -> 150
37 -> 150
38 -> 150
43 -> 150
44 -> 150
142 -> 150
46 -> 150
103 -> 150
48 -> 150
49 -> 150
107 -> 150
51 -> 150
53 -> 150
55 -> 150
58 -> 150
59 -> 150
60 -> 150
61 -> 150
63 -> 150
94 -> 150
66 -> 150
126 -> 150
70 -> 150