---
title: "Getting Started with pepr"
author: "Nathan Sheffield"
date: "`r Sys.Date()`"
output: 
  rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Getting Started with pepr}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

# Introduction to `pepr`

`pepr` is the official R package for the [pepkit](https://pep.databio.org/) suite, a collection of tools that interface with *portable encapsulated projects*, or PEPs. [PEP format](https://pep.databio.org/) defines a structure for organizing project metadata using a `yaml` file. `pepr` allows you to read any PEP-formatted project metadata (and potentially even actual sample data) into R, providing you a convenient user interface to interact with and share project metadata. 

## Installing `pepr`

You can install `pepr` in the usual way. Currently from GitHub (but we target a CRAN release at some point).

```
devtools::install_github('pepkit/pepr')
```

## Loading an example project

Load `pepr` and read in your project. We have provided a basic example to show you how it works. You can use this to get the file path to a built-in example project configuration `yaml` file:


```{r,collapse=TRUE}
library('pepr')
NOT_CRAN <- identical(tolower(Sys.getenv("NOT_CRAN")), "true")
branch = "master"
projectConfigFile = system.file("extdata",
	paste0("example_peps-", branch),
	"example_basic",
	"project_config.yaml",
	package="pepr")
```

Loading your project metadata into R is a single line of code:

```{r}
p = pepr::Project(file=projectConfigFile)
```

That's it! You now have a `Project` object, *p*, to interact with in `R`. You can also use PEPhub registry paths to fetch them online:

```{r, eval=NOT_CRAN}
p2 = pepr::pullProject(registryPath='databio/example:default')
```

To fetch private PEPs, use PEPhub Client to login and generate an authentication token. Or, login to PEPhub and generate a new key to save it locally:

```{r, eval=FALSE}
pepr::saveJWT('*your authetication token goes here*')
```

You should then be able to fetch your private PEPs by registry path.

## Interfacing with your `pepr::Project` object in R

Now you can interface with that project object to grab both sample-level and project-level metadata. Here's how you can access the metadata. If you just run the `show()` function on your object, you'll get a simple report telling you a few basic stats, like where the project came from and how many samples it has:

```{r}
p
```

To get the sample table out of the project, you use the `samples()` function:

```{r,collapse=TRUE}
sampleTable(p)
```

And you can also access the project configuration metadata with the `config()` function:

```{r}
config(p)
```

If you would like to save your project to a new directory, use the `saveProject()` function:

```{r, eval=NOT_CRAN}
saveProject(p2, outputDir=tempdir())
```

Follow the other vignettes for more advanced capabilities of `pepr`.
