Research Software Engineering

Overview

The goal of the Research Software Engineering (RSE) effort at the University of Alabama is to support the growing need to develop high-quality research software, ranging from small scripts to complex modeling software, that are now an important part of research in many domains. We work with researchers from any domain where software plays an important role in the development, execution, or analysis of research. We are currently supporting researchers from Engineering, Arts & Sciences, Communication & Information Sciences, and the School of Social Work. Our RSE team is made up of professional software developers that work in line with academic aims, partnering with the supported research teams and taking on as large or small a role in software development as is appropriate for each situation, working alongside graduate students and/or postdocs.

Capabilities

Our team can work with researchers on any of the following tasks:

  • Development of new software – Research software can help answer a range of questions from a wide variety of research domains. This software can range from software focused on data collection to software for data analysis to software for complex computational modeling, and everything in between. We can work with researchers and/or their students to build readable, reliable, and efficient code. 
  • Testing and troubleshooting existing software – Once an initial version of the software exists, these activities are critical to helping ensure the software works properly. Testing helps to ensure that the software works correctly. Troubleshooting helps identify and fix aspects of the software that do not work correctly. We can work with researchers to write tests or troubleshoot software.
  • Preparing software for public release – At some point in the research process, researchers may want to make their software available to the larger research community. Researchers can share their software via open-source platforms such as GitHub or its competitors. We can help researchers ensure their software is properly documented and ready to share publicly.  We can also provide support with the software release process itself.
  • Artificial Intelligence / Machine learning – With the tremendous growth in data in recent years, artificial intelligence, data science, and machine learning have become integral to the research process. These powerful tools use data to identify patterns, make decisions and provide insights to researchers. We can work with researchers to design appropriate artificial intelligence or machine learning solutions for their research problems.
  • Deep learning – With increasing computational power and the popularity of GPUs, deep learning has become another very popular tool for researchers in many domains. Deep learning employs multiple layers of an artificial neural network architecture to detect patterns and identify underlying structure in data. It has been applied to fields including image recognition, computer vision, natural language processing, object detection, medical image analysis, and recommendation systems. We can help in developing deep learning models for a range of applications.

Working With Us

There are two primary ways to make use of the research software expertise at UA. First, as researchers develop proposals that involve software, we will partner with you to include time for research software engineering in your budget and the text of your proposal (to strengthen the overall quality of your proposed work). Second, when a small amount of money remains at the end of a grant that is not sufficient to hire a new graduate student, researchers can spend this money to purchase research software engineering expertise. 

For a list of current and past projects, see the list of project descriptions below. We are interested in learning more about and working with research groups across UA that use or develop software as part of their research. If you are interested in any of these services, please contact Dr. Jeffrey Carver or Dr. Karnesh Jain for more information and to set up a meeting.

Current and Prior Projects at UA

  • Downscaled ML-based Soil Moisture Data Visualization – We are working with Prof. Hamid Moradkhani, director of the Center for Complex Hydrosystems Research, to visualize interactive maps of ML-based downscaled soil moisture product at 1 km spatial resolution on a daily basis. This project is generated from NASA Remotely Sensed Soil Moisture Active and Passive (SMAP) Microwave data. The web GIS app uses a random forest machine learning model. We are using JavaScript, HTML, CSS, Geoserver, and Leaflet for developing the web application. The final website is available here.
  • Materials Database Update – We are working with Drs. Andreas Piepke and Raymond Tsang to update a materials database and all the associated software with it. This project deals with updating a CouchDB database. In addition, the database needs to be configured using software such as Elasticsearch, Logstash, NGINX, and custom-developed Python libraries.
  • Image classification for 2D materials – In this project, working with Dr. Kasra Momeni, we have developed a deep learning (convolutional neural network) model for multi-label image classification of 2D materials. The model classifies pressure and flow velocity from an image database (comprising of 8156 images) obtained from performing multiscale simulations of 2D materials. The developed CNN model demonstrated excellent performance with a classification accuracy of 86% and hamming loss of 15%. The sample input images and schematic of the CNN model u sed in this project can be seen here.
  • Software development for the Alabama Water Institute – We are working with the Alabama Water Institute to develop software for data analytics, water modeling, and machine learning. We are using Django and the Tethys platform for this work.
  • Basic app development – We have worked with the School of Social Work to build mobile apps in support of various research projects. Available apps include:
    • TreatmentFinder (Android, iOS) – helps people locate substance use and mental health treatment anywhere in Alabama
    • GROW-AL (under development) – a web app that uses geolocation and user preferences to provide tailored information to health care providers and community members about Opioid Use Disorder
    • RideShare (under development) – a web app to help people in rural communities find transportation to medical appointments

Prior Projects by RSE Team (as part of PhD and Postdoc outside of UA)

  • Machine learning for biomedical applications – In this project, Dr. Jain used deep learning (convolutional neural network) combined with transfer learning techniques for tumor prediction in breast cancer diagnosis. The CNN model (DenseNet-201) is used to classify high-quality histopathological images (Breakhis dataset). The model achieved a classification accuracy of 97.9%.
  • Software development for Monte Carlo Simulation – This project involved developing a novel high-performance parallel Monte Carlo simulation package ‘GChybrid’. It is used to determine the phase and interfacial behavior of complex fluids. The package is developed using FORTRAN and is parallelized using MPI.
  • Python package – I developed an object-oriented Python package ‘coex’ to analyze the data obtained from molecular simulations. The software is used to determine thermodynamic properties such as coexistence and wetting properties.
  • MonteCarloLJ – Coded a Python library that enables researchers to perform Monte Carlo Simulations.