| August 8, 2024
Progress is continuing to be made in {riskassessment}
. We wanted to share some of the enhancements and updates included in the most recent release of the application. There have been multiple releases, both minor and major, since our last post, so we have a lot of new content to cover!
But before we get into too much detail, if you are new to what we are doing in {riskassessment}
, we would like to encourage you to check out our README
. There you can find information regarding what {riskassessment}
is seeking to accomplish and how you can install and deploy an instance of it for your personal or organizational use.
We are also excited to announce a collaborative deployment of the application! Our friends at ProCogia are hosting an instance of the app with persistent storage. We encourage you you to test it out.
Latest Features Recap
Lots of enhancements have been integrated since our last post on v2.0.0
, so we will take a bird’s eye view of the following major changes:
- Expanded decision automation to include individual
{riskmetric}
assessment values - New
'Function Explorer'
module and faster exploration of source code - An expanded view of a package’s dependencies
- Miscellaneous items
'About'
tab- non-
shinymanager
deployment
As always, we invite all who have suggestions or contributions to visit our Github repository. If you come across a bug or have a feature request, please visit our open list of issues and add a comment or open a new issue if it is a new bug/feature.
Decision Automation Rules
Previously, the application would allow rules to be created based upon the overall risk score of the package. This feature is now expanded to include the {riskmetric}
assessments. The process follows these basic steps:
- Choose a
{riskmetric}
assessment for which you would like to create a rule. - Construct a function taking the assessment value as an argument and return a logical (
TRUE
/FALSE
). - Choose the decision category to assign if the test returns
TRUE
.
When constructing rules, it is important to know the structure of the assessment. All {riskmetric}
assessments can be found in the assessment function catalog on their website. Additionally, all helper functions from {riskmetric}
are available for use when constructing the rules allowing a lot of flexibility in how the assessment can be parsed.
The rules can easily be re-ordered and will be read in a linear fashion. If no rules result in assigning a decision to the package, the ELSE
option can be used to assign a decision but defaults to “No Decision”.
New 'Function Explorer'
Module
Our friends at GSK have contributed a major addition that warranted a brand new page under the 'Source Explorer'
tab. Previously, a user could browse all the source code using the 'File Explorer'
. Now users can investigate the details of individual functions exported from the package. More specifically, users have curated access to the source code, help documentation, and test files that reference the function of interest. This page extends the value of the application for organizations with a hands-on review process, giving users the ability to explore the package contents at a more granular level.
Below, you will see a selection inputs panel on the left and a viewer pane on the right. To get started, simply choose a function name and file type you want to further explore. As previously mentioned, the type of files include the following:
- Testing Files: All discovered test files in the
tests/
folder containing the function will be displayed. - R Source Code: All R files in the
R/
folder containing the function will be displayed. This includes all usages of the function, not just where it was defined. - Help Documentation: The
.Rd
file containing the function will be rendered in HTML.
Some additional features:
- If multiple lines containing the function call are found, navigation arrows will appear below the viewer pane, enabling the user to quickly jump to each instance.
- User comment sections are available for both the Function Explorer and the Package Browser.
- The
{archive}
package is being used to read these files into memory which greatly increases the speed for the'Source Explorer'
tab overall.
Expanded Dependency Exploration
Summary cards are now displayed to provide a macro view of the package’s dependencies!
- Dependencies Uploaded: the number of package dependencies that have been uploaded to the app
- Type Summary: a breakdown of the dependency types (
Depends
,Imports
, andLinkingTo
) - Decision summary: a breakdown of the decisions applied to the dependency packages
- Base-R packages: a summary of which dependencies are considered part of base R (i.e.
{utils}
,{stats}
,{methods}
, etc.)
Optionally the non-required packages from the ‘Suggests’ fields can also be included to give a more holistic view of a package’s dependency structure. This can be helpful for organizations that require suggested packages to also be qualified in their GxP environment.
A new table has been added, which is populated with the reverse dependency packages that were previously uploaded to the application. Now, in the event that a package is being re-assessed/re-evaluated, a user can quickly look at the downstream packages effected by a change in classification.
Miscellaneous Items
Expanded 'About'
Tab
- Contact Us: a page that directs users to report issues, ask questions, reach out to contribute, learn more about the R Validation Hub
- Contributors and Companies: get to know contributors, past and present
Non-shinymanager
Deployment
If deploying the application to an environment like POSIT Connect, the usage of shinymanager
can be turned off. The user will then be assigned by session$user
and the role by session$groups
. This will allow organizations to manage application privileges using the roles assigned to the user(s) on Connect.
In Closing
Thank you for checking out our newest release! We hope you are as excited about the development as we are.
Interested in supporting package development? We could always use extra help / feedback! Please consider one of the following options:
- Propose a feature for us to consider
- Join the dev team - extra hands make light work
- Fill out our survey so we can learn how you use
{riskmetric}
and{riskassessment}