---
title: "Germinate Example"
author: "Khaled Al-Shamaa"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Germinate Example}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

## QBMS
This R package assists breeders in linking data systems with their analytic pipelines, a crucial step in digitizing breeding processes. It supports querying and retrieving phenotypic and genotypic data from systems like [EBS](https://ebs.excellenceinbreeding.org/), [BMS](https://bmspro.io/), [BreedBase](https://breedbase.org), [Germinate](https://germinateplatform.github.io/get-germinate/) and [GIGWA](https://github.com/SouthGreenPlatform/Gigwa2) (using [BrAPI](https://brapi.org/) calls). Extra helper functions support environmental data sources, including [TerraClimate](https://www.climatologylab.org/terraclimate.html) and FAO [HWSDv2](https://gaez.fao.org/pages/hwsd) soil database.

## Germinate
[Germinate](https://germinateplatform.github.io/get-germinate/) is an open source plant database infrastructure and application programming platform on which complex data from genetic resource collections can be stored, queried and visualized using common, reusable, programming components. Germinate utilises modern web and database standards to provide a common architecture and high performance web-based user interface and analytics functionality across a wide variety of data types including: passport, phenotypic, field trial, pedigree, genetic, climatic, geographic location data as well as user-submitted annotations. In addition, it provides links to an expanding variety of external visualization and analysis tools such as [Helium](https://ics.hutton.ac.uk/helium/) for pedigree visualization, [Flapjack](https://ics.hutton.ac.uk/flapjack/) for graphical genotyping and [CurlyWhirly](https://ics.hutton.ac.uk/curlywhirly/) for 3D coordinate data.

## BrAPI
The Breeding API ([BrAPI](https://brapi.org/)) project is an effort to enable interoperability among plant breeding databases. BrAPI is a standardized RESTful web service API specification for communicating plant breeding data. This community driven standard is free to be used by anyone interested in plant breeding data management.

## _Connect to a Germinate server_

```r
# load the QBMS library
library(QBMS)

# configure your Germinate server connection (requires Germinate v4.9.0 or later)
set_qbms_config(url = "https://germinate.hutton.ac.uk/demo/#/home", 
                engine = "germinate", 
                no_auth = TRUE, 
                page_size = 9999)

# login using your account (interactive mode)
# login()
# or pass your username and password as parameters (batch mode)
# login("username", "password")

# list existing crops on the current server
list_crops()

# select a crop by name
set_crop("Cactuar")

# list all breeding programs in the selected crop
list_programs()

# select a breeding program by name
set_program("Germinate")

# list all trials in the selected program
list_trials()

# select a specific trial by name
set_trial("GWAS data")

# list all studies (environments/locations) in the selected trial
list_studies()

```

## _Work with Phenotypic Data_

```r
# select a specific study by name
set_study("Sample Phenotype Data")

# retrieve general information and metadata for the selected study
info <- get_study_info()

# retrieve the germplasm list for the selected study
geno <- get_germplasm_list()

# retrieve attributes for a specified germplasm
attr <- get_germplasm_attributes("CACTUAR-3")

# retrieve study data
data <- get_study_data()

# get observation variable ontology in the selected study/trial
ontology <- get_trial_obs_ontology()

```

## _Work with Genotypic Data_

```r
# select a specific study by name
set_study("Sample Genotype Data Subset 2")

# list all variant sets in the selected study
list_variantsets()

# select a specific active variant set by name
set_variantset("Sample Genotype Data Subset 2")

# retrieve the selected variant set marker matrix
snps <- get_variantset()

# get marker position information
map <- get_marker_map()

```

## _Work with Pedigree Data_

```r
# select a specific study by name
set_trial("Default pedigree experiment")

# get the pedigree table for the selected trial
ped <- get_trial_pedigree()

```