GSoC 2023 Projects - aiidateam/aiida-core GitHub Wiki

Getting started with

AiiDA is a python framework for managing computational science workflows, with roots in computational materials science. It helps researchers manage large numbers of simulations (10k, 100k, 1M, ...) and complex workflows involving multiple executables. At the same time, it records the provenance of the entire simulation pipeline with the aim to make it fully reproducible.

AiiDA is used in research projects at universities, research institutes and companies (see SciPy 2020 talk, SciPy 2022 talk, publications, and testimonials).

To be considered as a GSoC student, we ask you to make a small pull request to aiida-core, or any active repositories in aiidateam and aiidalab organizations - could be a simple bug fix, improving the documentation, etc. See e.g. (for aiida-core) GitHub issues by-label

Say hi on our GSOC 2023 discussions page.

Why work on AiiDA?

  • Help accelerate the transition to open (computational) science
  • Help fix the reproducibility crisis. Computational science is a good place to start.
  • Work with a team of computational scientists (mostly physics backgrounds) who are passionate about both science and coding.
    We have an active Slack workspace & biweekly developer meetings.

A background in materials science is not needed, but a basic interest in materials science topics will make things easier for you.

Project 1 - Easy Computer/Code setup with AiiDA code registry

Level intermediate

Expected Size 350h

For beginners and even for the experienced AiiDA user, setting up computers and codes is still a tedious mission. If using the interactive mode, although it is good that options are prompted up and the user can set every option one by one carefully, it requires going through all options even if some are not necessary and time-consuming for a similar setup that have shared options with other code/computer setup.

The computer/code can be set up from a YAML file, and we provide a repository aiida-code-registry to store the YAML files for public computers and codes to share with others. Need to mention that the interactive setup command can accept a URL of a remote YAML file for setup. This makes it possible to not download/clone the aiida-code-registry repo to use the YAML to set up the computer/code.

Expected outcomes

  • Set up the computer/code from the template config file.
  • Redesign the folder structure of aiida-code-registry repository and corresponding registry page for users to upload/change and fetch the computer/code config files.

Skills

We expect you to be familiar with python programming and have experience with the Jinja templating engine. It will be beneficial if students have experience in web development (REST API, HTML etc.)

Mentors

Project 2 - Ranking system for AiiDA plugin registry

Level intermediate

Expected Size 350h

AiiDA has a flexible plugin system that allows extending most aspects of the code, such as adding new calculations, parsers, workflows, data types, verdi commands, schedulers, and even transports (see video). The AiiDA plugin registry is a web page, where developers can register their plugins (via the connected GitHub repo), so others in the community can find them, use them and, collaborate on them.

The registry currently lists the development status, aiida-core compatible version, and information about the extensions (entry points) each plugin provides, and links out to the plugin's source code, documentation, etc.

While this information is useful for finding plugins, it is currently not straightforward to understand what capabilities a plugin provides and how well maintained / popular it is, as plugins are simply listed in alphabetic order.

The long-term goal here is to transform the AiiDA plugin registry from a list of software packages into a list of capabilities (a user should be able to search for "geometry relaxation" and find plugins that provide calculations/workflows for this). In this project, we will take first steps, by taking advantage of existing capabilities in AiiDA to extract additional information about plugin entry points and collecting indicators of development/user activity, such as most recent release, number of downloads, etc.

Expected outcomes

We expect an overhaul of the AiiDA plugin registry web page that provides

  • additional information about calculations, workflows, data types of the plugins
  • a more useful sort order (e.g. based on most recent release / number of downloads / ...)
  • (bonus) a search box to search the entire website, including sub pages

The current registry web page is created from a JSON document containing the plugin metadata via a home-built static HTML generator. We propose switching to the React javascript framework, but are open to alternative routes (to be discussed).

Skills

We expect you to be familiar with programming in python and know how GitHub action works. Some familiarity with web development such as HTML, Javascript and/or React will be helpful.

Mentors

TBD

Project 3 - Explore the AiiDA node graph in the browser

level advanced

Expected Size 350h

AiiDA automatically stores entities in its database and links them forming a directed graph. This directed graph automatically tracks the provenance of all data produced by calculations or returned by workflows. This project plan to provide a more intuitive tool for browsing AiiDA graphs using the interactive browser. We can use an open-source library for node graph (e.g. Rete) or build it from scratch. The node graph viewer will communicate with AiiDA with the REST API.

The current AiiDA Provenance Browser (e.g. the explore website) represents the data nodes with circles, calculation nodes with squares and workflow nodes with diamond shapes. There is not much information the user can get from these nodes. Besides, when the user selects a new node, the page redirects to a new page, thus losing the smooth transition from one node to another. In the new implementation, we will create a new node component with a preview to show the basic information of the node (e.g., label, type, value). And we want only to update the nodes instead of the page when selecting a new node, thus, the user can explore the AiiDA provenance smoothly along the provenance graph.

Expected outcomes

An AiiDA node graph viewer

  • allows the user to explore the AiiDA provenance dynamically, e.g. forward and backward along the provenance graph.
  • shows input and output nodes of a selected node.
  • allows preview of the node

Skills

Python, REST API, HTML, Javascript, React, or Vue.

Mentors

Mentorship

The mentors for GSOC 2023 are

Please use the GSOC 2023 discussion thread to say hi and ask any questions you may have.