Open standards and best practices
This page describes Ersilia's open standards and best practices principles
Last updated
This page describes Ersilia's open standards and best practices principles
Last updated
Ersilia is recognised as a Digital Public Good by the Digital Public Goods Alliance.
We follow DPG Alliance tips for Open Standards. Below is a summary and proof of adherence to these standards.
Concept | Comment | Proof of Adherence |
---|---|---|
We follow DPG Alliance tips for Best Practices and Principles. Below is a summary and proof of adherence to these principles.
Concept | Comment | Proof of Adherence |
---|---|---|
Accessibility, Security, Authentication and Authorization
Ersilia uses GitHub primarily. Accessibility, security and authentication/authorization is therefore reliant on GitHub solutions. We use DependaBot to monitor package dependencies and identify security liabilities. GitHub Secrets are used intensively in our workflows.
See our GitHub profile for more information. A summary of our GitHub security usage can be found here.
Internationalization
UTF-8 encodings is used in our scripts, most of them written in Python. Code is formatted with Black.
You can see our main codebase here.
Application Programming Interfaces (APIs)
OpenAPI, especially via Swagger UI as facilitated by BentoML.
Check one of our deployed models here.
Data Exchange and Configuration Formats
We primarily use YAML, JSON, CSV and TOML formats.
Setup file in TOML format. Metadata file in JSON. Workflow file in YAML. Data file in CSV.
Standard Content Formats and Multimedia
Content and multimedia are not our main assets. Internally, we store documents and media files with standard formats.
ICT4D
We endorse the Principles for Digital Development.
Signed proof of endorsement available here.
User stories
We share community stories via our blog publication. We are active on social media and use GitHub Issues for the more technical aspects.
Ersilia stories in Medium. Activity in GitHub Issues. Other stories by the community: GDI example.
Change management and version control
We use all version control functionalities of GitHub.
Commit history of our main repository.
Test driven development using automated tests
Extensive and customized tests are performed, both for the main code and the models.
Testing module in the Ersilia CLI. Test workflow.
CI/CD
We use GitHub Actions for our CI/CD workflows, especially for model incorporation.
A subset of GitHub Actions can be found here.
Code review
We operate via pull requests and code reviewing is necessary previous to approval.
As an example, a video showing our model incorporation and reviewing process if found here.
Agile development
We use GitHub projects following the "Epic", "Sprint", etc. logic.
Agile template for defining projects.
Modularity and Maintainability, Reusability and extensibility
The Ersilia Model Hub is highly modular, with each model corresponding to one artifact stored in an isolated environment.
DockerHub model registry of Ersilia.
Component based architecture
By design, our architecture is component based.
Find a high-level diagram here.
Cloud Computing
We have infrastructure as service scripts for AWS. However, the Ersilia Model Hub is designed to be cloud-agnostic.
Example of AWS integration scripts for the Ersilia Model Hub.
AI/ML
We use ONNX format for interoperability as much as possible in our assets.
This in-house library (olinda) is specifically dedicated to distilling and converting models to ONNX.
Data Principles
We follow FAIR data principles in all our projects. Most of our projects are collaborative.
As an example, see our data sharing efforts as part of the Ligand Discovery project. These efforts were led by Ersilia.
User Interface and User Experience (UI/UX)
Graphical user interfaces and a simple command-line interface are available.
Ersilia CLI is our primary tool. For some selected models, we offer online deployment with a GUI.
Coding Styles and Standards
We follow PEP 8 and format with Black.
Black label in our README file.
Open Source
We are a fully open source project and are part of several open source communities.