---
# System prepended metadata

title: OBeLiX

---

# OBeLiX


![logo](https://hackmd.io/_uploads/B16Av0VG1e.jpg =500x)



# 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. 
