# OBeLiX

# Project details:
**Applicant:** Adarsh Kalikadien
**Faculty:** Applied Sciences
**DCC members** Niket Agrawal, Selin Kubilay
**Support period** February 2024 - November 2024
**Repository/Archive:** [GitHub Repository](https://github.com/EPiCs-group/obelix)
**Research Background**:
*OBeLiX (The Open Bidentate Ligand eXplorer) is a software workflow designed to simplify and automate the generation and analysis of transition-metal-based catalyst structures. Its goal is to make the process of building catalyst structures and calculating chemical properties more efficient, reproducible and accessible.*
### Project Description
The project focuses on improving Obelix repository following fair principles and selecting and implementing a data managment solution for its output data, having the future data requirements in mind.
## Project Results
**FAIR Software Practices**
- Implementation of integration tests to test the different workflows in the software package.
- Setup Continuous Integration using GitHub Actions to run the integration tests automatically on new incoming code changes.
**Scalable Data Infrastructure**
- Designed and deployed a scalable data management solution using AWS.
- Automated processes for storing, organizing, and linking research data with metadata, ensuring efficient and error-free data management.
### Lessons learned
- Working on a database solution without a clear list of requirements may be more challanging and result in a more complex solution than necessary.
- When writing integration tests for software packages that take file(s) as input and produce file(s) as output, identify 'scenarios' and 'testcases'. A scenario is the input configuration or starting state of the system for a particular experiemnt. A test case is a check that verifies that a behavior or action was performed as expected, for example, a file is created and it has the expected data.
- Print the pass/fail status of test cases for each scenario on the console output of the test. This is visually informative to both users and developers.
- Drafting the test output on the console before writing the code for the test will result in a code that is modular, i.e., easy to add/update test cases and aid debugging in failed cases.