---
output: github_document

---

<!-- README.md is generated from README.Rmd. Please edit that file -->


[![](http://www.r-pkg.org/badges/version/repo)](https://cran.r-project.org/package=repo)


## Repo

Repo is a data-centered data flow manager. It allows to store R data
files in a central local repository, together with tags, annotations,
provenance and dependence information. Any saved object can then be
easily located and loaded through the repo interface.

A [paper about Repo](https://doi.org/10.1186/s12859-017-1510-6) has been published in BMC
Bioinformatics.

Latest news are found in the NEWS.md file of the "Untested" branch.


## Minimal example

Creating a dummy repository under the R temporary folder (skipping
confirmation):


``` r
library(repo)
rp <- repo_open(tempdir(), force=T)
#> Repo created.
```

Storing data. In this case, just item values and names are specified:


``` r
God <- Inf
rp$put(God)          ## item name inferred from variable name
rp$put(0, "user")    ## item name specified
```

More data with specified dependencies:


``` r
rp$put(pi, "The Pi costant", depends="God")
rp$put(1:10, "r", depends="user")
```

Loading items from the repository on the fly using names:


``` r
diam <- 2 * rp$get("r")
circum <- 2 * rp$get("The Pi costant") * rp$get("r")
area <- rp$get("The Pi costant") * rp$get("r") ^ 2
```

Storing more data with verbose descriptions:


``` r
rp$put(diam, "diameters", "These are the diameters", depends = "r")
rp$put(circum, "circumferences", "These are the circumferences",
       depends = c("The Pi costant", "r"))
rp$put(area, "areas", "These are the areas",
       depends = c("The Pi costant", "r"))
```

Showing repository contents:


``` r
print(rp)
#>              ID Dims  Size
#>             God    1  51 B
#>            user    1  49 B
#>  The Pi costant    1  55 B
#>               r   10  99 B
#>       diameters   10  75 B
#>  circumferences   10 103 B
#>           areas   10 103 B
```

``` r
rp$info()
#> Root:            /private/var/folders/9p/3xvkrqpn37nb1hfwnznx05pc0000gn/T/Rtmpl2BLaS 
#> Number of items: 7 
#> Total size:      535 B
```

``` r
rp$info("areas")
#> ID:           areas
#> Description:  These are the areas
#> Tags:         
#> Dimensions:   10
#> Timestamp:    2026-06-08 00:35:08.349265
#> Size on disk: 103 B
#> Provenance:   
#> Attached to:  -
#> Stored in:    /private/var/folders/9p/3xvkrqpn37nb1hfwnznx05pc0000gn/T/Rtmpl2BLaS/a/areas
#> MD5 checksum: 51059bc2427b4d738b45e7cd6a932ff7
#> URL:          -
```

Visualizing dependencies:


``` r
rp$dependencies()
```

![plot of chunk depgraph](inst/README-depgraph-1.png)

Manual acces to stored data:


``` r
fpath <- rp$attr("r", "path")
readRDS(fpath)
#>  [1]  1  2  3  4  5  6  7  8  9 10
```

## Development branches

+ [Master](https://github.com/franapoli/repo/tree/master): stable major
releases, usually in sync with lastest CRAN version.

+ [Dev](https://github.com/franapoli/repo/tree/dev): minor releases
passing automatic checks.

+ [Untested](https://github.com/franapoli/repo/tree/untested): in
progress versions and prototype code, not necessarily working.


## Manuals

Besides inline help, two documents are available as introductory
material:

+ [A paper published on BMC Bioinformatics](https://doi.org/10.1186/s12859-017-1510-6)

+ [An introductory vignette](https://CRAN.R-project.org/package=repo).


## Download and Installation

Repo is on CRAN and can be installed from within R as follows:


``` r
install.packages("repo")
```
    
Latest stable release can be downloaded from Github at
[https://github.com/franapoli/repo](https://github.com/franapoli/repo).
Repo can then be installed from the downloaded sources as follows:


``` r
install.packages("path-to-downloaded-source", repos=NULL)
```

`devtools` users can install Repo directly from github as follows:


``` r
install_github("franapoli/repo", ref="dev")
```

