Skip to content

Instantly share code, notes, and snippets.

@wd15
Last active March 7, 2022 23:12
Show Gist options
  • Save wd15/c952d7b70c4069484bda5ad603506ae2 to your computer and use it in GitHub Desktop.
Save wd15/c952d7b70c4069484bda5ad603506ae2 to your computer and use it in GitHub Desktop.
Report for CHiMaD 2022

CHiMaD Annular Report - PI Report -- PFHub 2021

Research Accomplishments

Background

PFHub is a community effort spearheaded by the Center for Hierarchical Materials Design at Northwestern University and the National Institute of Standards and Technology in support of phase-field code development. The current PFHub deployment focuses on improving cross-collaboration between phase-field code developers and practitioners by providing a standardized set of benchmark problems and a workflow for uploading and comparing benchmark results from different phase-field codes.

PFHub relies heavily on GitHub infrastructure as well as various third party apps to support its web deployment and upload workflow. PFHub is transitioning away from a Javascript / app based stack to a GitHub Actions / Python based stack. This will reduced the maintenance overhead associated with supporting the PFHub effort and allow broader engagement. Figure 1 below shows a schematic of the current PFHub framework and upload workflow.

Figure1: Schematic overview of the PFHub framework for building scientific research portals, simply.

Accomplishments in 2021

Recent activity has focused on the transition to a more systematic workflow relying on a set of tools that are commonly used in research software. In particular, the infrastructure is being ported to a combination of GitHub Actions, Jupyter Notebooks, Pandas and Plotly. These tools are all widely used across the research software development community and, thus, exploring PFHub data will be more accessible to a wider audience.

The following bullets highlight progress towards the PFHub transition as described in the previous paragraph.

  • Implementation of a Python module that facilitates aggregation of data using Pandas and subsequent plotting with Plotly.

  • Transition the nucleation benchmark aggregation page from using the JavaScript Plotly library to the Python Plotly library from within a Jupyter Notebook. As this process is now complete, subsequent transitions from JavaScript to Ploty with be straightforward.

  • Implement a Cachix service to store the packages and dependencies used by PFHub. This allows for fast deployment on all continuous integration systems.

  • New uploads from two new phase field codes, Symphas and MEUMAPPS. The code developers cited PFHub in their initial publications about the codes. The developers described PFHub as providing considerable assistance in verifying and validating their codes.

  • Moved the data processing app used by PFHub to Heroku from Google App Engine. This facilitated the use of memcache to cache the frontend views of the data making loading data much faster. However, this change will be redundant once the transition from JavaScript to Python is complete.

Plans for 2022

The main work will continue the transition away from JavaScript / App-based stack to Python / GitHub Actions. In particular, GitHub Actions will build all the data views prior to the website generation by Jekyll rather than having the data views being built on the frontend. This makes the service much easier to host and allows others to more easily contribute. Additionally the upload procedure will transition to a GitHub Actions only procedure dispensing with an upload form and the Staticman app.

The following tasks will be completed:

  • Break out the python PFHub module into a separate repository independent from usnistgov/pfhub so it is easily installable. Make it installable with pip install phfub.

  • Update all data aggregation pages on PFHub to be Jupyter notebook based. This is a continuation of the work implement for benchmark 8.

  • Implement the second part of the nucleation paper. This will be benchmark 9.

  • Move the wiki pages on PFHub to the GitHub wiki pages. This will make it much easier for others to contribute.

  • Implement a new straightforward upload procedure involving adding a context data file such as pfhub.yaml or similar to a repository and then prompting the PFHub main site by adding specific text to the GitHub issue tracker to indicate that the repository is ready for contributing to PFHub. As part of this effort implement an example repository to demonstrate the canonical way to create and archive a FAIR data repository on GitHub with results from a benchmark and then ping the PFHub site to collate the results data with other results from the same benchmark.

  • Request uploads for benchmark 8 to test the new upload procedure.

  • Implement a prototype Git LFS file repository to allow PFHub members and associates to deposit large data into their GitHub repositories.

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