Skip to content

Commit

Permalink
Zendro edits
Browse files Browse the repository at this point in the history
  • Loading branch information
BrapiCoordinatorSelby committed Jul 22, 2024
1 parent 26018ab commit 15881d6
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 9 deletions.
4 changes: 0 additions & 4 deletions content/03.01.07.Trait_Selector_BrAPP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,10 @@
<!-- the "BrAPP" description part should better fit at the beginning of the section. -->
<!-- BrAPPs are simple tools developed by the BrAPI community that are entirely reliant on BrAPI for their data requirements. Often, they are JavaScript based applications or visualizations that fit on a single web page. This means a single BrAPP can be easily shared and used by many organizations and systems, as long as those organizations have the standard BrAPI endpoints available. -->

<<<<<<< HEAD
The [Trait Selector BrAPP](https://github.com/solgenomics/BrAPI-Trait-selector) is a JavaScript-based application used to visually search and select traits from an ontology.
The Trait Selector employs a visual aid, an image of a plant, to connect plant anatomy with relevant trait ontology terms.
Instead of scrolling through a long list of possible traits, the user can click on pieces of the image to show the traits associated with specific plant structures.
The Trait Selector BrAPP can be used to quickly find specific traits or to identify accessions that have a specific phenotype of interest.
=======
The [Trait Selector BrAPP](https://github.com/solgenomics/BrAPI-Trait-selector) is used to search and select meaningful traits, with a visual aid to help the user find exactly what they need. Instead of searching through a long list of possible traits, the user is presented with a cartoon image of a species. They can then click on pieces of the image to show traits associated to that part of the plant. For a breeder, they might use it to quickly find specific traits to study. For a genebank user, they might use it to find varieties that have a specific trait they are interested in.
>>>>>>> 0b95ffa (general edits)

The Trait Selector BrAPP has been successfully added to Cassavabase[@doi:10.1093/g3journal/jkac078] and MGIS[@doi:10.1093/database/bax046], and it can be integrated into any website or system with a BrAPI-compatible data source.
A breeding database would need to only implement the BrAPI endpoints for Traits, Observations, and Variables, while a genebank would require only Traits and Germplasm Attributes.
Expand Down
8 changes: 3 additions & 5 deletions content/03.06.03.Zendro.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
#### GraphQL Data-warehouse

<!-- Asis Hallab -->
Using the [Zendro](https://zendro-dev.github.io) set of automatic software code generators, a fully functional, efficient, and cloud-capable BrAPI data-warehouse has been created for the current version of the BrAPI data models. Unlike most BrAPI-compliant data sources, this data-warehouse supports a GraphQL API rather than a RESTful API. This API provides secure access to data read and write functions for all BrAPI data models. It provides create, read, update, and delete (CRUD) functions that are standardized and accept the same parameters for all data models.
Using the [Zendro](https://zendro-dev.github.io) set of automatic software code generators, a fully functional, efficient, and cloud-capable BrAPI data-warehouse has been created for the current version of the BrAPI data models. Unlike most BrAPI-compliant data sources, this data-warehouse supports a GraphQL API rather than a RESTful API. This API provides secure access to data read and write functions for all BrAPI data models. It provides create, read, update, and delete (CRUD) functions that are standardized and accept the same parameters for all data models. Zendro supports a large number of underlying database systems, allowing flexibility during installation and integration.

The GraphQL server is particularly rich in features. Records are paginated using the highly efficient cursor based pagination model as proposed in the GraphQL standard. Logical filters allow for exhaustive search queries, whose structure is highly intuitive and based around logical triplets. A large collection of operators is available and triplets can be combined to logical search trees using "and" or "or" operators. Searches can be extended over relationships between data models, thus enabling a user to query the warehouse for exactly the required data. Access security is implemented with the OAuth2 user authentication standard [@https://datatracker.ietf.org/doc/html/rfc6749]. Authorization is based on user roles and can be configured differently for each single data model read or write function. The generated graphical interface allows for the integration of interactive scientific plots and analysis tools written in JavaScript or WebAssembly.

The Zendro data-warehouse is capable of forming an efficient cloud of data servers. This is achieved simply by linking other Zendro based warehouses that expose the same GraphQL API to the same data models, or a subset of data models. Any network of such Zendro GraphQL servers can be set up using this configuration approach. The code generated then exposes full access to all data records stored on any node of the network, while maintaining full security control at each node. Importantly, the warehouses are programmed in such a way that any number of data servers can be joined without loss of efficiency.
The GraphQL server is particularly rich in features. Logical filters allow for exhaustive search queries, whose structure is highly intuitive and based around logical triplets. A large collection of operators is available and triplets can be combined to logical search trees using "and" or "or" operators. Searches can be extended over relationships between data models, thus enabling a user to query the warehouse for exactly the required data. Authorization is based on user roles and can be configured differently for each single data model read or write function. The generated graphical interface allows for the integration of interactive scientific plots and analysis tools written in JavaScript or WebAssembly.

<!-- Asis Hallab: To Do: (i) provide the link to an example running data warehouse, and (ii) include and describe example scientific plots. -->

We used parts of the public [CassavaBase](https://www.cassavabase.org/) data [@doi:10.1093/nar/gku1195] to create and populate a fully BrAPI compliant example data-warehouse based on Zendro. The warehouse is publically available [@https://brapi-gui.zendro-dev.org] and offers full read access both in the graphical user interface as well as through the GraphQL API. Three interactive scientific example plots comprise a boxplot comparing Cassava harvest indices measured for four different experiments. An interactive raincloud plot provides an alternative visualization of the same data. Finally, a scatterplot shows how Cassava fresh root yield and plant height are correlated based on data from a single study.
An [example data warehouse](https://brapi-gui.zendro-dev.org) is publicly available and offers full read access in the graphical user interface and through the GraphQL API. The example warehouse is populated with public [CassavaBase](https://www.cassavabase.org/) data [@doi:10.1093/nar/gku1195] to create fully BrAPI compliant example based on Zendro. Three interactive scientific example plots are available to explore the data. The first is a boxplot comparing Cassava harvest indices measured for four different experiments. Next, an interactive raincloud plot provides an alternative visualization of the same data. Finally, a scatterplot shows how Cassava fresh root yield and plant height are correlated based on data from a single study.

0 comments on commit 15881d6

Please sign in to comment.