---
title: "Bio Pipeline Usage"
author: "Dario Righelli"
date: "`r Sys.Date()`"
output: 
  BiocStyle::html_document:
    toc: true
vignette: >
  %\VignetteEncoding{UTF-8}
editor_options: 
  chunk_output_type: console
---

<!--
%\VignetteEngine{knitr::rmarkdown}
%\VignetteIndexEntry{Bio Pipeline Usage}
-->

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = FALSE,
  comment = "#>",
  eval=TRUE
)
```

# Description

This vignettes will guide you throught a tipycal usage of the **easyreporting**
package, while performing a simplified bioinformatics analysis workflow. 

# Requirements 

For the usage you just need to load the **easyreporting** package, which will 
load the **rmarkdown** and **tools** packages.

```{r, eval=FALSE}
if(!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("easyreporting")
```


```{r}
library("easyreporting")
```

# easyreporting instance creation

For simplicity we setup a project directory path starting from the working 
directory for our report, but you can just enter any path.
The **filenamepath** and the **title** parameters are mandatory, while the 
**author** paramenter is optional.

Once created the **easyreporting** class instance, we can use it into our 
further code to make other operations.
It stores some variables for us, in order to not be called again during next 
opreations.
For example the name and the path of the report, the type of report
and the general rmarkdown options of the document.

```{r}
proj.path <- file.path(tempdir(), "bioinfo_report")
bioEr <- easyreporting(filenamePath=proj.path, title="bioinfo_report",
                        author=c(
                      person(given="Dario", family="Righelli", 
                          email="fake_email@gmail.com",
                          comment=c(ORCID="ORCIDNUMBER", 
                                    url="www.fakepersonalurl.com",
                                    affiliation="Institute of Applied Mathematics, CNR, Naples, IT", 
                                    affiliation_url="www.fakeurl.com")),
                    person(given="Claudia", family="Angelini",
                    comment=c(ORCID="ORCIDNUMBER",
                              url="www.fakepersonalurl.com",
                              affiliation="Institute of Applied Mathematics, CNR, Naples, IT",
                              affiliation_url="www.fakeurl.com"))
                    )
                  )
```


# Loading Data

For this vignette we previously downloaded an xlsx table from GEO with accession
number [*GSE134118*](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE134118).

For importing the xls file, we prepared an ad-hoc function called *importData*
stored in the *importFunctions.R* file.

```{r}
mkdTitle(bioEr, title="Loading Counts Data")
mkdCodeChunkComplete(object=bioEr, code=quote(geneCounts <- importData(
      system.file("extdata/GSE134118_Table_S3.xlsx", package="easyreporting"))), 
      sourceFilesList=system.file("script/importFunctions.R", package="easyreporting"))

```

# Counts exploration 
In order to explore the counts we can perform a PCA with *plotPCA* function 
within the *EDASeq* package.
To trace this step we again use a *mkdCodeChunkComplete* function, inserting the
function call as the message to track.

```{r}
mkdTitle(bioEr, title="Plot PCA on count data", level=2)
mkdCodeChunkComplete(bioEr, 
                        code=quote(EDASeq::plotPCA(as.matrix(geneCounts))))
```

# Differential expression

Let's suppose we stored a function for applying edgeR on our counts in an R file.
We called the file *geneFunctions.R* and the function *applyEdgeRExample*.

It will be easy for us to source the file and to call the function with a single
call of easyreporting package.
By aid of the *mkdCodeChunkCommented* function we can add a comment preceeding 
the code chunk.


```{r}
mkdTitle(bioEr, "Differential Expression Analysis")
mkdCodeChunkCommented(bioEr, 
    code="degList <- applyEdgeRExample(counts=geneCounts, 
                    samples=colnames(geneCounts), contrast='Pleura - Broth')", 
    comment=paste0("As we saw from the PCA, the groups are well separated",
        ", so we can perform a Differential Expression analysis with edgeR."),
    sourceFilesList=system.file("script/geneFunctions.R", 
                                package="easyreporting"))
```

## Inspecting DEGs

Usually to have a graphical representation of the obtained results we can plot an 
MD plot by using the *plotMD* function of the *limma* package.

Also in this case, we create a new title and a new chunk within the function to call.

```{r}
mkdTitle(bioEr, "MD Plot of DEGs", level=2)
mkdCodeChunkComplete(bioEr, code="limma::plotMD(degList$test)")
```


# Compiling the report

Once finished our analysis it is possible to compile the produced rmarkdown report  simply by using the *compile* method.
The compile method appends a sessionInfo() to the report to trace all the packages and versions used for the analysis.

```{r, eval=FALSE}
compile(bioEr)
```

# Session Info

```{r, tidy=TRUE}
sessionInfo()
```


