Installing FastQC
-------------------
FastQC is a java application.  In order to run it needs your system to have a suitable
Java Runtime Environment (JRE) installed.  Before you try to run FastQC you should therefore
ensure that you have a suitable JRE.  There are a number of different JREs available
however the ones we have tested are the v1.6-v1.8 JREs from Oracle.  These are available
for a number of different platforms.

Windows/Linux: Go to java.com - click on Free Java Download - DON'T click the large red button
but choose the smaller link to "See all java downloads".  Find your operating system and select
the appropriate offline installer.  If you are using a 64bit operating system (and nearly 
everyone is these days), then make sure you select the 64bit version of the the installer.

OSX: On newer versions of OSX you need to install the Java Development Kit.  The normal Java
runtime environment IS NOT enough.  To get this go to java.com, click "Free java download",
then IGNORE the big red button, and select "See all java downloads", on the next screen select
"Looking for the JDK?" from the left hand menu and select the link to "JDK downloads" in the
first paragraph.  You can then click the "Download" button underneath JDK in the page you are
taken to.  Sorry this is such a pain!


If you're not sure whether you have java installed then you can test this from a command
prompt.  To get a command prompt try:

Windows: Select Start > Run, and type 'cmd' (no quotes) in the box which appears, press OK

MaxOSX: Run Applications > Utilities > Terminal

Linux: From your applications menu look for an application called 'Terminal' or 'Konsole'.
Either of these will give you a usable shell.

At the command prompt type 'java -version' and press enter.  You should see something like:

java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

If you get an error then you don't have java installed.  If the version listed on the first
line is less than 1.6 then you might have problems running FastQC.

Actually installing FastQC is as simple as unzipping the zip file it comes in into a
suitable location.  That's it.  Once unzipped it's ready to go.

Running FastQC
--------------

You can run FastQC in one of two modes, either as an interactive graphical application
in which you can dynamically load FastQ files and view their results.

Alternatively you can run FastQC in a non-interactive mode where you specify the files
you want to process on the command line and FastQC will generate an HTML report for
each file without launching a user interface.  This would allow FastQC to be run as
part of an analysis pipeline.


Running FastQC Interactively
----------------------------
Windows: Simply double click on the run_fastqc bat file.  If you want to make a pretty 
shortcut then we've included an icon file in the top level directory so you don't have
to use the generic bat file icon.

MacOSX: There is an application bundle for MacOSX which you can use to install and run
FastQC.  Just drag the application from the disk image to your Applications folder (or
wherever you want to install the program).

Linux:  We have included a wrapper script, called 'fastqc' which is the easiest way to 
start the program.  The wrapper is in the top level of the FastQC installation.  You 
may need to make this file executable:

chmod 755 fastqc

..but once you have done that you can run it directly

./fastqc

..or place a link in /usr/local/bin to be able to run the program from any location:

sudo ln -s /path/to/FastQC/fastqc /usr/local/bin/fastqc


Running FastQC as part of a pipeline
------------------------------------
To run FastQC non-interactively you should use the fastqc wrapper script to launch
the program.  You will probably want to use the zipped install file on every platform
(even OSX).

To run non-interactively you simply have to specify a list of files to process
on the commandline

fastqc somefile.txt someotherfile.txt

You can specify as many files to process in a single run as you like.  If you don't
specify any files to process the program will try to open the interactive application
which may result in an error if you're running in a non-graphical environment.

There are a few extra options you can specify when running non-interactively.  Full
details of these can be found by running 

fastqc --help

By default, in non-interactive mode FastQC will create an HTML report with embedded
graphs, but also a zip file containing individual graph files and additional data files
containing the raw data from which plots were drawn.  The zip file will not be extracted
by default but you can enable this by adding:

--extract

To the launch command.

If you want to save your reports in a folder other than the folder which contained
your original FastQ files then you can specify an alternative location by setting a
--outdir value:

--outdir=/some/other/dir/

If you want to run fastqc on a stream of data to be read from standard input then you
can do this by specifing 'stdin' as the name of the file to be processed and then 
streaming uncompressed fastq format data to the program.  For example:

zcat *fastq.gz | fastqc stdin

Customising the report output
-----------------------------

If you want to run FastQC as part of a sequencing pipeline you may wish to change the
formatting of the report to add in your own branding or to include extra information.

In the Templates directory you will find a file called 'header_template.html' which
you can edit to change the look of the report.  This file contains all of the header for
the report file, including the CSS section and you can alter this however you see fit.

Whilst you can make whatever changes you like you should probably leave in place the
<div> structure of the html template since later code will expect to close the main div
which is left open at the end of the header.  There is no facility to change the code in
the main body of the report or the footer (although you can of course change the styling).

The text tags @@FILENAME@@ and @@DATE@@ are placeholders which are filled in when the
report it created.  You can use these placeholders in other parts of the header if you
wish.
