--- title: "BMS Example" author: "Khaled Al-Shamaa" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{BMS 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), 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. ## Breeding Management System Breeding Management System ([BMS](https://bmspro.io/)) is an information management system developed by the Integrated Breeding Platform to help breeders manage the breeding process, from programme planning to decision-making. The BMS is customizable for most crop breeding programs, and comes pre-loaded with curated ontology terms for many crops (bean, cassava, chickpea, cowpea, groundnut, maize, rice, sorghum, soybean, wheat, and others). The BMS is available as a cloud application, which can be installed on local or remote servers and accessed by multiple users. ## 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. > _From BMS version 25 onward, users must possess the necessary permissions to utilize the BrAPI services. [This table](https://ibplatform.atlassian.net/wiki/spaces/BMS/pages/2870968321/v25+BMS+permissions+required+for+using+BrAPI+services) outlines the permissions needed for accessing specific services._ ## _Example_ ```r # load the QBMS library library(QBMS) # config your BMS connection (by providing your BMS login page URL) set_qbms_config("https://bms.icarda.org/ibpworkbench/controller/auth/login") # login using your BMS account (interactive mode) # or pass your BMS username and password as parameters (batch mode) login_bms() # list supported crops in the current bms server list_crops() # select a crop by name set_crop("wheat") # list all breeding programs in the selected crop list_programs() # select a breeding program by name set_program("Wheat International Nurseries") # list all studies/trials in the selected program list_trials() # filtered by year of starting date list_trials(2022) # select a specific study/trial by name set_trial("IDYT39") # list all environments/locations information in the selected study/trial list_studies() # select a specific environment/location by name set_study("IDYT39 Environment Number 9") # select a specific study by location name (first match) studies <- list_studies() set_study(studies[studies$locationName == "Amlaha", "studyName"][1]) # retrieve data, general information, and germplasm list # of the selected environment/location data <- get_study_data() info <- get_study_info() germplasm <- get_germplasm_list() # get observation variable ontology in the selected study/trial ontology <- get_trial_obs_ontology() # get the pedigree table pedigree_table <- get_pedigree_table(germplasm, "germplasmName", "pedigree") # retrieve multi-environment trial data of the selected study/trial MET <- get_trial_data() # retrieve all environments/locations information in the selected program program_studies <- get_program_studies() # retrieve observations data of given germplasm aggregated from all trials # in the selected program # e.g., https://www.croptrust.org/news-events/campaigns/jabal-durum-wheat-variety/ germplasm_observations <- get_germplasm_data("Jabal") # retrieve germplasm attributes for a given germplasm in a crop germplasm_attributes <- get_germplasm_attributes("Jabal") ```