152 lines
6.4 KiB
Markdown
152 lines
6.4 KiB
Markdown
# wf-isoforms
|
|
|
|
|
|
This repository contains a [nextflow](https://www.nextflow.io/) workflow
|
|
for assembly and annotation of transcripts from Oxford Nanopore cDNA or direct RNA reads. <br>
|
|
It has been adapted from two existing Snakemake pipelines:
|
|
* https://github.com/nanoporetech/pipeline-nanopore-ref-isoforms
|
|
* https://github.com/nanoporetech/pipeline-nanopore-denovo-isoforms
|
|
---
|
|
## Overview
|
|
* cDNA or direct RNA reads are initially and optionally preprocessed by [pychopper](https://github.com/nanoporetech/pychopper)
|
|
for identification of full-length reads, as well as trimming and orientation correction. <br>
|
|
|
|
|
|
Reference-based approach
|
|
* Full length reads are mapped to a supplied reference genome using [minimap2](https://github.com/lh3/minimap2) <br>
|
|
* Transcripts are assembled by [stringtie](http://ccb.jhu.edu/software/stringtie)
|
|
in long read mode (with or without a guide reference annotation) to generate the GFF annotation.
|
|
* The annotation generated by the pipeline is compared to the reference annotation
|
|
using [gffcompare](http://ccb.jhu.edu/software/stringtie/gffcompare.shtml)
|
|
|
|
de novo-based approach (experimental!)
|
|
* Sequence clusters are generated using [isONclust2](https://github.com/nanoporetech/isONclust2)
|
|
* If a reference genome is supplied, cluster quality metrics are determined by comparing
|
|
with clusters generated from a minimap2 alignment
|
|
* A consensus sequence for each cluster is generated using [spoa](https://github.com/rvaser/spoa)
|
|
* Three rounds of polishing using racon and minimap2 to give a final polished CDS for each gene.
|
|
* Full-length reads are then mapped to these polished CDS
|
|
* Transcripts are assembled by stringtie as for the reference-based approach
|
|
|
|
|
|
For both approaches:
|
|
* An html report is generated, which contains various summary statistics and plots of the data.
|
|
---
|
|
## Quickstart
|
|
|
|
|
|
The workflow uses [nextflow](https://www.nextflow.io/) to manage compute and
|
|
software resources, as such nextflow will need to be installed before attempting
|
|
to run the workflow.
|
|
|
|
The workflow can currently be run using either
|
|
[Docker](https://www.docker.com/products/docker-desktop),
|
|
[Singularity](https://sylabs.io/singularity/) or
|
|
[conda](https://docs.conda.io/en/latest/miniconda.html) to provide isolation of
|
|
the required software. Each method is automated out-of-the-box provided
|
|
either docker, singularity or conda is installed.
|
|
|
|
It is not required to clone or download the git repository in order to run the workflow.
|
|
For more information on running EPI2ME Labs workflows [visit out website](https://labs.epi2me.io/wfindex).
|
|
|
|
|
|
### Workflow options
|
|
|
|
To obtain the workflow, having installed `nextflow`, users can run:
|
|
|
|
```
|
|
nextflow run epi2me-labs/wf-isoforms --help
|
|
```
|
|
|
|
to see the options for the workflow.
|
|
|
|
**Workflow inputs**
|
|
- Directory containing cDNA/direct RNA reads. Or a directory containing subdirectories each with reads from different samples
|
|
(in fastq/fastq.gz format)
|
|
- Reference genome in fasta format (required for reference-based assembly)
|
|
- Optional reference annotation in GFF2/3 format
|
|
|
|
**Example execution of a workflow for reference-based transcript assembly**
|
|
This uses a synthetic SIRV dataset so we need to tell minimap2 about the non-canonical spplice junctions with
|
|
--minimap2_opts '-uf --splice-flank=no'
|
|
```
|
|
OUTPUT=~/output;
|
|
nextflow run wf-isoforms/ --fastq test_data/fastq --ref_genome test_data/SIRV_150601a.fasta --ref_annotation test_data/SIRV_isofroms.gtf
|
|
--minimap2_opts '-uf --splice-flank=no' --out_dir outdir -w workspace_dir -profile conda -resume
|
|
```
|
|
|
|
```
|
|
# To evaluate the workflow on a larger Drosophila dataset
|
|
./evaluation/run_evaluation_dmel.sh outdir
|
|
```
|
|
|
|
**Example workflow for denovo transcript assembly**
|
|
```
|
|
OUTPUT=~/output
|
|
nextflow run . --fastq test_data/fastq --denovo --ref_genome test_data/SIRV_150601a.fasta -profile local --out_dir ${OUTPUT} -w ${OUTPUT}/workspace \
|
|
--sample sample_id -resume
|
|
```
|
|
A full list of options can be seen in nextflow_schema.json. Below are some commonly used ones.
|
|
They can be set in the config like this: <br>
|
|
opt = 50<br>
|
|
or at the command line:<br>
|
|
--opt 50
|
|
|
|
- Threshold for including isoforms into interactive table `transcript_table_cov_thresh = 50`
|
|
- Run the denovo pipeline `denovo = true` (default false)
|
|
|
|
Pychopper and minimap2 can take options via `minimap2_opts` and `pychopper_opts`
|
|
<br>
|
|
|
|
For example:
|
|
- When using the SIRV synthetic test data
|
|
- `minimap2_opts = '-uf --splice-flank=no'`
|
|
- pychopper needs to know which cDNA synthesis kit used
|
|
- SQK-PCS109: use `pychopper_opts = '-k PCS109'` (default)
|
|
- SQK-PCS110: use `pychopper_opts = '-k PCS110'`
|
|
- pychopper can use one of two available backends for identifying primers in the raw reads
|
|
- nhmmscan `pychopper opts = '-m phmm'`
|
|
- edlib `pychopper opts = '-m edlib'`
|
|
<br>Note: edlib is used in the configs as it's quite a lot faster. However it may be less sensitive than nhmmscan.
|
|
|
|
---
|
|
## Workflow outputs
|
|
|
|
* wf-isoforms-report.html
|
|
- Summary and plots of reads, alignments and the transcript assembly and annotation
|
|
- One file per run with results from each sample merged
|
|
|
|
####Transcript isoform table
|
|
Note: Currently only available for the reference-guilded assembly
|
|
The report includes a searchable filterable table of transcript isoforms<br>
|
|
Note: If using a large dataset with 10s of thousands of predicted isoforms, to speed up searching, the table can be limited
|
|
by read coverage, which can be set with `transcript_table_cov_thresh = 50` (default 50x)
|
|
|
|
Each sample will also have it's own directory containing the following (dependent on assembly approach and input options)
|
|
* {sampleid}_gffcompare
|
|
* Directory containing all output from gffcompare
|
|
* transcripts_{sample_id}.gff
|
|
* Annotation of query transcripts
|
|
* {sample_id}_transcriptome.fas
|
|
- A transcriptome derived from the query reads
|
|
* {sample_id}_merged_transcriptome.fas
|
|
- A transcriptome derived from the query reads + reference annotation
|
|
* merged_transcriptome.fas
|
|
-A transcriptome made from the combined query reads and reference annotation
|
|
* final_polished_cds.fas (de novo only)
|
|
* CDS sequences derived from reads
|
|
|
|
|
|
|
|
## Useful links
|
|
|
|
* [nextflow](https://www.nextflow.io/)
|
|
* [docker](https://www.docker.com/products/docker-desktop)
|
|
* [Singularity](https://sylabs.io/singularity/)
|
|
* [conda](https://docs.conda.io/en/latest/miniconda.html)
|
|
* [racon](https://github.com/isovic/racon)
|
|
* [spoa](https://github.com/rvaser/spoa)
|
|
* [inONclust](https://github.com/ksahlin/isONclust)
|
|
* [isONclust2](https://github.com/nanoporetech/isONclust2)
|
|
|