Skip to content

Instantly share code, notes, and snippets.

@ltwmori
Last active September 24, 2023 11:23
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ltwmori/dab4d1781368d24d7023aca82ef6e205 to your computer and use it in GitHub Desktop.
Save ltwmori/dab4d1781368d24d7023aca82ef6e205 to your computer and use it in GitHub Desktop.
Final report by Assel Abzalova detailing her contributions and experiences during the Google Summer of Code 2023 program.

Final report GSoC project ELIXIR Cloud Components

In the summer of 2023, guided by the expertise of Salihu and Anurag Gupta, I undertook a significant technological challenge. It is with great pride that I present the culmination of my efforts: Web Components for Discovering and Using Scientific Software in the Cloud. Throughout this endeavor, I delved deep into the complexities of TRS and TRS-Filer, crafting and refining their associated Web Components. This project stands as a testament to collaborative effort and the shared vision of advancing scientific discovery through technology.

Click here for proposal submitted.

1. Background

The Global Alliance for Genomics and Health better know as GA4GH is a "policy-framing and technical standards-setting organization, seeking to enable responsible genomic data sharing within a human rights framework."

ELIXIR coordinates and develops life science resources across Europe so that researchers can more easily find, analyse and share data, exchange expertise, and implement best practices.

ELIXIR Cloud & AAI is a cross platform initiative of ELIXIR and a Driver Project of the GA4GH that develops services towards establishing a federated cloud computing network that enables the analysis of population-scale genomic and phenotypic data across participating, international nodes.

ELIXIR Cloud components are the Web Components which are developed & managed by the ELIXIR Cloud & AII Community.

2. Motivation

The motivation behind this project was to bridge the gap between the vast array of tools available in the genomics and health domain and the end-users who could benefit from them.

  • Development of the Generic TRS Specification Client Component: Recognizing the need for a unified platform, I aimed to design a component that would act as a bridge for users to effortlessly discover and delve into tools from any TRS implementation. The component was envisioned to have capabilities such as searching, filtering, and viewing various tools. Users should be able to access detailed information about each tool, including its name, description, aliases, versions, and other intricate details.

  • Creation of the Extended TRS Client Component (TRS-Filer): With the foundational component in place, the next step was to enhance its capabilities. The vision was not just to view but also manage tools and workflows. This would provide users with the autonomy to add, modify, or delete tools, their versions or tool classes on any TRS-Filer instance, making the component a comprehensive tool for both discovery and management.

3. What I Did

Guided by the insights and expertise of my mentors, I settled on using FAST for this project. They underscored the capabilities of this framework, particularly highlighting its exceptional support for Design Tokens and its emphasis on performance and scalability. FAST, equipped with a comprehensive array of APIs and tools, facilitates the creation of Web Components that can be seamlessly styled and adapted with design tokens. This makes it especially advantageous for projects emphasizing on unified branding and sophisticated design. While there are other notable Web Component libraries like Lit and Polymer, it was FAST's distinct support for design tokens and its commitment to performance that made it stand out. My mentors played an instrumental role, not just in the selection of FAST but also in navigating through its intricacies and troubleshooting various challenges.

For a deeper dive and to access all pertinent screenshots and visual depictions, please refer to the ❗️presentation❗️

For an in-depth exploration, please head over to the GitHub repository. You can specifically observe my contributions under the path: cloud-components/packages/. Within this directory, you'll encounter two packages I have developed: ecc-client-ga4gh-trs and ecc-client-elixir-trs-filer.

3.1. Issues Created

  1. TRS Create Package Issue

    • Description: When I first began my journey with the Google Summer of Code program, this issue was created as a foundational step. In the early stages, my mentors and I engaged in numerous discussions to determine the most appropriate name for the package. After many considerations and deliberations, we finally reached an agreement, paving the way for the creation of the package.
  2. TRS Implementation Issue

    • Description: This issue focused on the various steps required to implement the previously discussed TRS package. It served as the roadmap for development and helped in tracking progress.
  3. TRS-filer Create Package and Implementation Issue

    • Description: This issue was focused on the need to create a package and implement a TRS-filer, extending the existing TRS.

3.2. Pull Requests Created

  1. Add Package for TRS

    • Description: In this PR, I added the necessary package configurations, documentation, and base files to create the TRS package.
  2. Implement TRS

    • Description: This PR encapsulated the full-scale implementation of the TRS package. Upon its successful merge, the outcome was a package christened as ecc-client-ga4gh-trs, realizing the goals delineated in the originating issue.
  3. Add Package and Implement TRS-filer

    • Description: In this PR, I augmented the TRS package with the introduction and incorporation of TRS-filer APIs. Apart from the core configurations and documentation, I facilitated management (CRUD operations) for:
      • Tools
      • Tool versions
      • Tool classes

    Following its approval and subsequent merge, the final output was a package named ecc-client-elixir-trs-filer.

3.3. Reporting Bugs

While executing the outlined tasks from the proposal, I also took on the proactive role of identifying and reporting bugs within the TRS API. This involvement contributed significantly to refining and bolstering the service's performance.

  • Pagination Issues: During my work, I pinpointed an anomaly with the TRS's pagination mechanism. Understanding the importance of this feature, I took immediate steps to document and raise the issue within the service's backend repository. Details of the problem can be explored here.

  • Descriptor Type Support: Another crucial observation revolved around the TRS's descriptor types. It appeared that it lacked support for certain descriptors like "PLAIN_CWL", "PLAIN_WDL", "PLAIN_NFL", and "PLAIN_GALAXY". This limitation hindered the tool creation process using these specific descriptors. Upon raising this concern in our public chat forum, an issue was formally instituted to address it. The corresponding issue is accessible here.

My journey emphasized not just the development but also the importance of continuous feedback and rectifications to ensure the system's robustness.

4. Outlook

I successfully achieved all the primary objectives outlined in the proposal. While the project's scope and timeframe did not allow for the full integration into Krini or comprehensive testing for robust performance, these aspects are slated for future development.

Building on the project's foundation, I've also identified advanced features to further refine the user experience, even though they weren't part of the initial proposal:

  • Incorporating pagination in the TRS component to optimize tool display.
  • Introducing intuitive tool sorting mechanisms, both by creation date and alphabetically.
  • Expanding the TRS-filer's tool editing capabilities. While the current version doesn't support editing tool aliases, this functionality is a top priority for subsequent updates.

5. Acknowledgment

I would like to express my special thanks of gratitude to my mentors Alex Kanitz and Anurag Gupta, who gave me the golden opportunity to work on the project "ELIXIR Cloud Components". Also, I would thank Salihu for giving me substantial feedback on my work. The invaluable guidance, feedback, and support of my mentors throughout this journey have been instrumental. Their expertise and insights were pivotal in shaping the direction and outcomes of this project. I also want to extend my appreciation to the GSOC program for providing me with this remarkable opportunity to contribute to a project with such profound implications for the future of genomics and health.

banner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment