Imperial College Research Software Community Newsletter - August 2024

Hi everyone and welcome to our August 2024 community newsletter. If you’ve been on holiday over the summer, we hope you’ve had an enjoyable and relaxing break. As we move into September and things get going again, one of the main events in the annual research software calendar is just about upon us. Next week, over 300 Research Software Engineers, researchers, academics and a wide range of research and industry professionals in related roles will gather in Newcastle for the annual RSE Conference - RSECon24. They’ll be joined by an online audience for this hybrid conference showcasing a huge range of the technical work, community activities and research that RSEs get involved with. If you’re attending the conference, especially if you’re a first-time attendee and new to the community, do let us know. There will be a number of Imperial attendees at this year’s conference. In addition to the conference, there will be lots going on over the coming months. We’re continuing our monthly Research Software Community Coffee Hour (see dates for your diary below!) and we’ll also be looking to organise more events as we start the new academic year. If you have new PhD students or RAs joining your group in the coming weeks, do let them know about the research software community.

Dates for your diary

Research Computing at Imperial

For our Research Computing at Imperial slot this month, we’re including a profile from Daniel Cummins, Research Software Engineer within Imperial’s RSE team in the Research Computing Service. Dan says:

I’m a research software engineer within Research Computing Services. I completed my undergraduate degree in physics, then spent two years in industry where I worked on software for counter-IED and anti-jam GPS technologies - my first exposure to professional software engineering. I decided I wanted to combine my interests in physics and software engineering, and joined the astrophysics group at Imperial to pursue a PhD. My research was primarily computational, performing simulations of the hydrodynamics and radiation transport in accretion discs around young stars.

I enjoyed being able to solve complex problems numerically, but quickly realised the importance of being able to prove that the numerical methods used were providing accurate solutions, thereby adding credibility to my results. With publishing bodies putting an increasing emphasis on transparency and reproducibility of published results, including making source code available, I gained an appreciation for research software engineering and the value of RSEs in helping to produce open, usable and sustainable research software.

After completing my PhD, I joined RCS in November 2022 through the pilot run of their RSE and HPC Experience Programme. I applied and was accepted for a permanent position within the RSE team, and have since worked on a variety of projects involving GUI development, interfacing with laboratory hardware, writing simulation codes, alongside developing and delivering training material. I have been able to work with research teams across various domains, which also means I’m learning all the time, while helping increase the quality and impact of their research software.

Research Software of the Month

For this month’s Research Software of the Month, we have a project to highlight that is not so much a piece of software in its own right as a template that you can use to enhance your own Python projects.

Our RSotM for this month is the Imperial Research Software Engineering team’s Python Template, a cookiecutter template for creating Python projects that follow a set of software engineering best practices. cookiecutter is a utility for creating new projects based around templates.

Developed originally for use by the team in their own projects, this template provides a range of useful options to enable you to set up your own Python projects that come pre-configured and ready to use various tools and approaches that will help ensure that you produce a more sustainable, maintainable Python project.

So, what’s included? Basic project metadata is captured such as the project name and the resulting package name - useful as and when you decide to make use of support for packaging your code. The lead developer name and contact information is also stored for use in packaging and other project metadata. A range of other useful configuration options and functionality are provided:

Open source licence: You can choose to have your project configured with Imperial’s recommended open source licence (BSD-3-Clause), unless you wish to use a different licence.

Documentation: You can choose to have a skeleton documentation config set up for you based on the widely used MkDocs tool, and have the project set up to automatically deploy your documentation to GitHub Pages. (The “Write the Docs” community’s Docs as Code guide provides some great motivation for using your standard software development tools to write your documentation as well as your code!)

Default-accept bot PRs: You can configure your project to accept GitHub Pull Requests (PRs) submitted by bots such as dependabot by default. Dependabot is a GitHub tool which automatically creates Pull Requests when new versions of projects’ dependencies are released, allowing you to easily incorporate new features and bug fixes without having to manually keep track of version changes and bugs in a project’s dependencies. The template also comes with a dependabot configuration file.

Set up Windows/macOS Actions runners: Do you need GitHub Actions runners set up for Windows and macOS in addition to Linux? You can request this as part of the template configuration.

Code formatting: A range of code formatting options and checks are configured as “pre-commit” hooks - processes that run on your system when you attempt to commit files to the repository. If any of the checks fail, the commit is aborted. The Python template includes checking for merge conflicts, trailing whitespace and common spelling errors in your code or associated text files. It also applies auto-formatting to JSON, YAML and Markdown content to ensure that files in these formats meet a consistent style.

Testing: A standard testing configuration is put in place based on pytest to support automated running via GitHub Actions of tests that you provide for your code.

If you’d like to use the RSE team’s template in your own Python projects, you can install cookiecutter via Python’s pip package manager and then simply point cookiecutter to the template’s GitHub repository by running cookiecutter gh:ImperialCollegeLondon/python-template. Happy coding! 🙂

RSE Bytes

News

Blog posts, tools & more

Some reminders…

RS Community Slack

The Imperial Research Software Community Slack workspace is a place for general community discussion as well as featuring channels for individuals interested in particular tools or topics. If you’re an OpenFOAM user, why not join the #OpenFOAM channel where regular code review sessions are announced (amongst other CFD-related discussions…). Users of the Nextflow workflow tool can find other Imperial Nextflow users in #nextflow. You can find other R developers in #r-users and there is the #DeepLearners channel for AI/ML-related questions and discussion. Take a look at the other available channels by clicking the “+” next to “Channels” in the Slack app and selecting “Browse channels”.

If you want to start your own group around a tool, programming language or topic not currently represented, feel free to create a new channel and advertise it in #general.

Research Software Engineering support

If you need support with your code, seek no more! The Central RSE Team, within the Research Computing Service is here to help. Have a look at the variety of ways the team can work with you:

HPC documentation and tips

All the documentation, tutorials and howtos for using Imperial’s HPC are available in the Imperial RCS User Guide. See also the Research Computing Service’s Research Computing Tips series for a variety of helpful tips for using RCS resources and related tools and services.

Research Software Directory

Imperial’s Research Software Directory provides details of a range of research software and tools developed by groups and individuals at the College. If you’d like to see your software included in the directory, you can open a pull request in the GitHub repository or get in touch with the Research Software Community Committee.

Get in Touch, Get Involved!

Drop us a line with anything you’d like included in the newsletter, ideas about how it could be improved, or even offer to guest-edit a future edition! rse-committee@imperial.ac.uk.

If you’re reading this on the web and would like to receive the next newsletter directly to your inbox then please subscribe to our Research Software Community Mailing List.


This issue of the Research Software Community Newsletter was edited by Jeremy Cohen. All previous newsletters are available in our online archive.