Glycarbo
A Tool for 2d and 3D building of carbohydrates
Glycarbo vs. Glycano
Glycarbo has been built and refactored through a series of iterations since 2015, with changes made to its two parts – Glycano (2D visualisation) and its 3D builder.
Glycano was originally built in 2015 as a stand-alone project for 2D-visualisation of carbohydrate molecules. The user can use any residue in the SNFG (Symbol Nomenclature for Glycans) convention set to build a residue and Glycano also generates its correspodning Casper string. A round of testing and editing was done on Glycano in 2020 so that it could be used in Glycarbo, to build 3D molecules. The edits made included changing Glycano’s primary convention to SNFG, but many names remained incorrect and some residues were missing. The final codebase was extremely complex and had no documentation.Glycarbo was built in 2020 and generates 3D carbohydrate molecules. Glycano is incorporated into the interface and acts as the 2D builder. The 3D molecules are built using a Casper string (either inputted by the user or automatically taken from the 2D builder) and uses CarbBuilder (a UCT-built software) to generate the image. Also developed in 2020, CarbBuilderWeb is used to connect CarbBuilder to Glycarbo. The naming conventions of the 2D builder (Glycano) remained incorrect and most residues built in 2D could not then be built in 3D.
Documentation
This phase consisted of adding the necessary documentation to Glycano’s code so that it can be maintained and edited as required. At the start of the project the codebase was 0% documented. This was vastly improved upon and each class now contains a description of its use and interactions with other classes. Important methods are preceded with a description of their functionality.
There was also a lack of in-depth build instructions for both Glycano and Glycarbo.More depth was added to the build instructions, as well as development “shortcuts” learned along the way – in order to improve the efficiency of future work on these projects. A guide for future developers was also curated. This includes a list of classes and methods to change based on the desired changes.User-Testing
Expert-Testing
The aim of doing expert testing is to get feedback from actual potential users of the interface. Three domain experts performed unstructured usability testing on Glycano. The results of the expert-testing showed some non-functional issues such as a lack of uniform bond lengths and angles, an inability to remove previously added bonds and a few other minor cosmetic issues.
Task-Based User-Tests
User-tests were conducted prior to a final code edit, in order to incorporate user feedback into the final design. Two non-experts completed a semi-structured task-based test. The test allowed the users freedom to navigate the interface with very general instructions/tasks to complete. The results from these user tests were moslty related to cosmetic issues.
Functional and non-Functional Changes
Code Cleanup and Convention Changes
Some unnecessary classes and functionality were removed to clean-up the codebase of Glycano. Following this, the SNFG naming convention was implemented throughout the system. The use of substituents was removed from all classes but will be easy to reimplement if needed. Functionality related to Residue Types (Aldoses, Ketoses, etc.) remains in the codebase for future use.
Bonding
In previous versions, bonding was done automatically. This feature was largely faulty as not all linkage locations could be reached without overlapping residues. This feature was replaced with manual bonding in order to improve user-freedom and control and address the bonding difficulties experienced during the evaluation.
Some functionality related to improving the accuracy of the chemical properties of the molecules was not in place in Glycano’s previous iterations and was thus added. Additionally, some resides have link locations to which bonds cannot be formed. This functionality was also added and the corresponding link locations were “blocked” to ensure no “illegal” residues were generated or passed into the 3D builder. Below shows the new bond design.
Straighten
During expert testing, the issue arose of bond lengths and angles being different. This unifromity would be required in order for figures generated by Glycano to appear in papers and so a straighten feature was added, which straightens all bond angles and makes all bonds the same length. Below shows before and after the "Straighten" button is pressed.
Stress Testing
Stress testing was done in the form of generating specified glycans using the 2D builder. A list of ten glycans was provided from the database Glycan3DBand used to cover the use cases of Glycano and to generate an in-depth list of issues.
The results from the stress testing showed several minor issues in Glycano’s functionality. Issues such as the bond disappearing and the linkage types not changing were easy to recover from by just re-bonding or by changing the linkage type. Adding the option to use furonose/pyronose and some functionality required to build certain Klebsiella pneumoniae bacteria will be noted for future work.
Conclusions
The main aims for Glycarbo of maintainability, readability, functionality and improved usability have been achieved. The combination of adding documentation to all classes within Glycano’s codebase and providing editing guidance will streamline any future development on Glycano, and contribute to its maintainability and readability. Improving the build instructions by incorporating development tips will also speed up the development process.
In terms of the functionality of Glycarbo, ensuring the naming conventions were correct allowed Glycarbo to operate at its full capacity and render any 3D glycans that can be built from residues within the SNFG set. Thus - the functionality of Glycarbo has been improved.
Improving the bonding functionality to allow better user control and also allow users to reverse bonding errors at any stage have made Glycano a much more usable and intuitive tool. There is room to improve the intuitiveness of the interface and make the flow of control more obvious to the user (such as making the “create bond” and “load from builder” buttons more obvious.