NanoPlot
========

Plotting tool for Oxford Nanopore sequencing data and alignments.

|Twitter URL| |conda badge| |Build Status| |Code Health|

.. figure:: https://github.com/wdecoster/NanoPlot/blob/master/examples/scaled_Log_Downsampled_LengthvsQualityScatterPlot_kde.png
   :alt: Example plot

   Example plot

The example plot above shows a bivariate plot comparing log transformed
read length with average basecall Phred quality score. More examples can
be found in the `gallery on my blog 'Gigabase Or
Gigabyte'. <https://gigabaseorgigabyte.wordpress.com/2017/06/01/example-gallery-of-nanoplot/>`__

In addition to various plots also a NanoStats file is created
summarizing key features of the dataset.

| This script performs data extraction from Oxford Nanopore sequencing
  data in the following formats:
| - fastq files
| (can be bgzip, bzip2 or gzip compressed)
| - fastq files generated by albacore or MinKNOW containing additional
  information
| (can be bgzip, bzip2 or gzip compressed)
| - sorted bam files
| - sequencing\_summary.txt output table generated by albacore

INSTALLATION
~~~~~~~~~~~~

``pip install NanoPlot``

| Upgrade to a newer version using:
| ``pip install NanoPlot --upgrade``

or

| |conda badge|
| ``conda install -c bioconda nanoplot``

STATUS
~~~~~~

|Build Status| |Code Health|

The script is written for python3.

USAGE
~~~~~

\`\`\` NanoPlot [-h] [-v] [-t THREADS] [--verbose] [-o OUTDIR] [-p
PREFIX] [--maxlength N] [--drop\_outliers] [--downsample N][--loglength]
[--alength] [--minqual N] [--readtype {1D,2D,1D2}] [--barcoded] [-c
COLOR][-f {eps,jpeg,jpg,pdf,pgf,png,ps,raw,rgba,svg,svgz,tif,tiff}]
[--plots [{kde,hex,dot,pauvre} [{kde,hex,dot,pauvre}
...]]][--listcolors] (--fastq file [file ...] \| --fastq\_rich file
[file ...] \| --fastq\_minimal file [file ...] \| --summary file [file
...] \| --bam file [file ...])

General options: -h, --help show the help and exit -v, --version Print
version and exit. -t, --threads THREADS Set the allowed number of
threads to be used by the script --verbose Write log messages also to
terminal. -o, --outdir OUTDIR Specify directory in which output has to
be created. -p, --prefix PREFIX Specify an optional prefix to be used
for the output files.

Input data sources, one of these is required.: --fastq file [file ...]
Data is in one or more default fastq file(s). --fastq\_rich file [file
...] Data is in one or more fastq file(s) generated by albacore or
MinKNOW with additional information concerning channel and time.
--fastq\_minimal file [file ...] Data is in one or more fastq file(s)
generated by albacore or MinKNOW with additional information concerning
channel and time. Minimal data is extracted swiftly without elaborate
checks. --summary file [file ...] Data is in one or more summary file(s)
generated by albacore. --bam file [file ...] Data is in one or more
sorted bam file(s).

Each of these options can take one or multiple files e.g. --summary
summary1.txt summary2.txt summary3.txt --bam bam1.txt bam2.txt

Options for filtering or transforming input prior to plotting:
--maxlength N Drop reads longer than length specified. --drop\_outliers
Drop outlier reads with extreme long length. --downsample N Reduce
dataset to N reads by random sampling. --loglength Logarithmic scaling
of lengths in plots. --alength Use aligned read lengths rather than
sequenced length (bam mode) --minqual N Drop reads with an average
quality lower than specified. --readtype {1D,2D,1D2} Which read type to
extract information about from summary. Options are 1D, 2D, 1D2
--barcoded Use if you want to split the summary file by barcode

Options for customizing the plots created: -c, --color COLOR Specify a
color for the plots, must be a valid matplotlib color -f, --format
{eps,jpeg,jpg,pdf,pgf,png,ps,raw,rgba,svg,svgz,tif,tiff} Specify the
output format of the plots. --plots [{kde,hex,dot,pauvre}
[{kde,hex,dot,pauvre} ...]] Specify which bivariate plots have to be
made. --listcolors List the colors which are available for plotting and
exit.\`\`\`

EXAMPLES
~~~~~~~~

``bash Nanoplot --summary sequencing_summary.txt --loglength -o summary-plots-log-transformed   NanoPlot -t 2 --fastq reads1.fastq.gz reads2.fastq.gz --maxlength 40000 --plots hex dot NanoPlot -t 12 --color yellow --bam alignment1.bam alignment2.bam alignment3.bam --downsample 10000 -o bamplots_downsampled``

This script now also provides read length vs mean quality plots in the
'`pauvre <https://github.com/conchoecia/pauvre>`__'-style from
[@conchoecia](https://github.com/conchoecia).

`ACKNOWLEDGMENTS <https://github.com/wdecoster/NanoPlot/blob/master/ACKNOWLEDGMENTS.MD>`__
------------------------------------------------------------------------------------------

I welcome all suggestions, bug reports, feature requests and
contributions. Please leave an
`issue <https://github.com/wdecoster/NanoPlot/issues>`__ or open a pull
request. I will usually respond within a day, or rarely within a few
days.

COMPANION SCRIPTS
-----------------

-  `NanoComp <https://github.com/wdecoster/nanocomp>`__: comparing
   multiple runs
-  `NanoStat <https://github.com/wdecoster/nanostat>`__: statistic
   summary report of reads or alignments
-  `NanoFilt <https://github.com/wdecoster/nanofilt>`__: filtering and
   trimming of reads
-  `NanoLyse <https://github.com/wdecoster/nanolyse>`__: removing
   contaminant reads (e.g. lambda control DNA) from fastq

.. |Twitter URL| image:: https://img.shields.io/twitter/url/https/twitter.com/wouter_decoster.svg?style=social&label=Follow%20%40wouter_decoster
   :target: https://twitter.com/wouter_decoster
.. |conda badge| image:: https://anaconda.org/bioconda/nanoplot/badges/installer/conda.svg
   :target: https://anaconda.org/bioconda/nanoplot
.. |Build Status| image:: https://travis-ci.org/wdecoster/NanoPlot.svg?branch=master
   :target: https://travis-ci.org/wdecoster/NanoPlot
.. |Code Health| image:: https://landscape.io/github/wdecoster/NanoPlot/master/landscape.svg?style=flat
   :target: https://landscape.io/github/wdecoster/NanoPlot/master
