GSoC Project Idea 12: Improve automated testing suite for the LORIS neuroinformatics platform


#1

Neuroscientific research involves collecting large amounts of data of different kinds to study the relationship between the brain, genes, and behaviour. These data collections must be carefully curated and cross-linked before being analyzed, to help ensure any findings are verifiable and reproducible.

The neuroinformatics challenges involved in databasing and organizing these workflows for neuroimaging, genetic and clinical/neuro-psychological data require sophisticated storage and sharing platforms, which accelerate and increase confidence in research results.

The goal of this project is to extend and enhance the unit test suite for the LORIS neuroinformatics data platform (github.com/aces/loris). Improving the code coverage and increasing the maintainability of unit tests will be key targets for this project.

Tool presentation:

LORIS is a research data platform (www.LORIS.ca) used by many multi-site longitudinal neuroscience studies around the world. Its web-facing front-end provides researchers with powerful customizable tools to handle, curate, visualize and export any format of data within a single platform.

LORIS’ automated workflows support diverse data types, including neuroimaging (MRI, EEG, PET), genetic, and clinical/neuro-psychological data collection. Data sharing tools and cross-platform interoperability via its RESTful API are also key design pillars of LORIS’ increasing engagement with Open Science initiatives.

Aims

The project will consist of the following stages/activity types:

  1. Familiarization with the LORIS software: Navigating the LORIS User Interface to get familiar with this research data management system and codebase.
  2. Review of existing testing architecture: Study the existing implementations of unit tests and integration tests to assess current coverage of the LORIS codebase, and map potential gaps in the coverage that can be patched.
  3. Quality improvements on existing tests: Expand existing tests by adding edge cases, and improve performance testing by adding test data cases to the testing database.
  4. Incrementation of unit tests and code coverage: Design and implement new tests that increase overall code coverage and improve automated testing cases in both performance and quality.
  5. Documentation: Build on existing documentation to help with understandability of tests. Simplify testing infrastructure when possible to encourage new developers to get involved in testing.

Skills

Javascript, Python, Databasing (knowledge of SQL and noSQL), Web development, LAMP stack experience, PHP, React. Understanding RESTful APIs and experience with Selenium is an asset. Basic knowledge of git and GitHub and software validation principles is expected. Technical writing and background in neuroinformatics or neuroimaging is an asset.

Understanding of testing is an asset, including: types of test (unit, integration, regression, performance), black/white box testing, test automation, web application test implications, software quality metrics (quantitative and qualitative). Individual dedication, resourcefulness and collegiality are key success factors for any internship.

Mentors

Samir Das, Christine Rogers and Rida Abou-Haidar, McGill University, Canada