Author: Khaled Al-Shamaa
Date: 2025-07-31

# BMS Example

#### Khaled Al-Shamaa

#### 2025-07-31

# 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, BMS, BreedBase, and GIGWA (using BrAPI calls). Extra helper functions support environmental data sources, including TerraClimate and FAO HWSDv2 soil database.

## Breeding Management System

Breeding Management System (BMS) 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) 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 outlines the permissions needed for accessing specific services.

## Example

    # 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()

    # 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")