The 2018 project ideas list is still available here: 2018 project ideas list

Table of Contents:

Ideas list:

Upgrade im-tables and imjs

Description: imjs is a node.js library for accessing InterMine APIs, and im-tables is a browser-based data table displayer for InterMine data that uses imjs to communicate with the server. Both are written in CoffeeScript. Your task would be to update the dependencies (last seriously updated in 2015) and add additional upgrades and bugfixes for these libraries. This would include adding methods to communicate with the InterMine registry, adding displayers to the column summary features, and migrating the im-tables tests to use mocked communication rather than the InterMine Test Model. More details about the im-tables & imjs upgrade project.

Required skills:

  • JavaScript
  • Node

Possible mentors:

  • Yo Yehudi
  • Aman Dwivedi

You can find the mentors in the InterMine chat.

Expected outcome: Updated versions of im-tables and imjs with the new features.
How could this integrate with existing InterMine tools? This could be rolled out immediately on all JSP pages for InterMine Server / the legacy InterMine UI.
Difficulty level: Hard if student is unfamiliar with coffeescript, medium otherwise.


Javascript Data Visualisations

Title: Create a suite of javascript-based biological data visualisations. These visualisations would be designed to work with BlueGenes, InterMine’s ClojureScript based user interface, and would need to conform to the Bluegenes Tool API. Clojure knowledge is not required. More details about the data vis project

Required skills:

  • CSS
  • HTML
  • Javascript
  • DOM manipulation

Possible mentors:

  • Yo Yehudi.
  • Aman Dwivedi
  • Adrián Rodríguez-Bazaga

You can find the mentors in the InterMine chat.

Expected outcome: A suite of 2-5 javascript based tools that can be used in production BlueGenes.
How could this integrate with existing InterMine tools? This will be used directly within BlueGenes.
Difficulty level: Medium if student is familiar with javascript visualisation techniques, Hard if not.


Dataset Versioning tool

Description: InterMine integrates data from many different sources. We have existing Perl scripts that download the data, which we would like to extend to automatically scrape the version details from each data source. This information would be added to the InterMine data model, and be made available via webservice.

See project requirements for details.

Required skills:

  • Java
  • Perl

Possible mentors:

  • Julie Sullivan
  • Rachel Lyne

You can find the mentors in the InterMine chat.

Expected outcome: Updated InterMine code that makes recording the data set version automatic. How could this integrate with existing InterMine tools? This would be used directly by InterMine Server. Difficulty level: Easy, slightly harder if you aren’t familiar with Perl or Java.


InterMine data modeller tool

Description: When someone adds a data type to their InterMine, their first step is to look around at other InterMine instances to see how everyone else modelled that data type. With so many InterMines (over 30!) this is hard to do. We’d like a tool that can automate this. For example, this tool should answer the questions: “Does anyone have ‘pathway’ data in their InterMine? If so, how did they model it?”

See project requirements for details.

Required skills:

Possible mentors:

  • Julie Sullivan
  • Rachel Lyne

You can find the mentors in the InterMine chat.

Expected outcome: A production ready tool that interrogates the data models of InterMines, and presents the information to users in an easy to digest way.
How could this integrate with existing InterMine tools? This would probably be a standalone tool that is intended for InterMine admins, or could become part of an InterMine Admin Portal.
Difficulty level: Easy


InterMine Schema Validator

Description: There are many different biological file formats in use, and people do not always comply with the standards correctly, which can make parsing the files a challenge. We would like to create a modular library that accepts certain file formats as input and reports the validity of the file, with details of any errors encountered.

See project requirements for details.

Required skills:

  • Java

Possible mentors:

  • Julie Sullivan
  • Yo Yehudi
  • Adrián Rodríguez-Bazaga

You can find the mentors in the InterMine chat.

Expected outcome: A library that will validate biological data file formats like GFF and FASTA, designed in a modular manner so further file formats can be added.
How could this integrate with existing InterMine tools? This would be a standalone library that can be used by InterMine as a dependency.
Difficulty level: Easy.


Migrate RESTful web services from Struts to Spring

Description: InterMine was created in 2002, and uses an end-of-life version of Struts which is no longer supported. InterMine provides RESTful web services to access the integrated data programmatically: they allow to execute custom or templated queries, search keywords, manage lists, discover metadata, perform enrichment statistics and manage user profiles. We would like to migrate all InterMine RESTful webservices to Spring and document the APIs with Swagger, compliant with the Open API Specifications. There is a robust test suite in-place which should make it easier to migrate without introducing errors, and students are encouraged to add tests to any areas lacking coverage.

See project requirements for details.

Required skills:

  • Java
  • Spring
  • Web services

Possible mentors:

  • primary mentor: Daniela Butano - daniela@intermine.org
  • Julie Sullivan
  • Aman Dwivedi

You can find the other mentors in the InterMine chat.

Expected outcome: Spring integrated with the existing InterMine webservices, with some or all of the webservices migrated from Struts to Spring, and tests passing for all migrated services. APIs documented with Swagger. How could this integrate with existing InterMine tools? This will be part of InterMine Server. Difficulty level: Medium, but could be easier if a student is familiar with Spring.


InterMineR, a client library for R

Description: InterMine is an open source biological data warehouse. InterMine has several client libraries which allow users to write scripts to access InterMine data directly via the command line. We have an R client that is popular but would like to add more features.

See project requirements for details.

Required skills:

Possible mentors:

  • primary mentor: Rachel Lyne
  • Julie Sullivan

You can find the mentors in the InterMine chat.

Expected outcome: An upgraded InterMineR client that is released on BioConductor
How could this integrate with existing InterMine tools? This client will be used to query the InterMine API.
Difficulty level: Medium.


InterMine Similarity Explorer

Description: InterMine instances contain large amounts of biological data. We would like to provide an explorative interface that would allow scientists to visualise and explore different ways that genes (or other biological entites) might be related. This interface would be highly configurable and probably based on cytoscape.js. Read more about the similarity project

Required skills:

  • Javascript
  • Browser skills, e.g. DOM manipulation, CSS, UX / HCI

Possible mentors:

  • Yo Yehudi
  • Rachel Lyne

You can find the mentors in the InterMine chat.

Expected outcome: A javascript-powered user interfacethat directly integrates into BlueGenes using the BlueGenes tool API
How could this integrate with existing InterMine tools? This would be a standalone javascript package, directly embedded in BlueGenes.
Difficulty level: Medium, or easier if the student is already familiar with Cytoscape.js.


Unit test suite for Clojure application

Description: BlueGenes (GitHub, Demo) is a ClojureScript browser-based UI for InterMine that doesn’t have many tests. Currently, before merging a pull request, reviewers need to manually validate certain pages work correctly using a checklist. Ideally many of these checks could be automated into a test suite to save reviewers time and making it harder to miss errors! See our possible testcase list (this list is still growing!). More info on the project available here.

Required skills:

  • Clojurescript / Clojure
  • Advantageous: ability to examine software and identify+implement useful test cases.

Possible mentors:

  • Yo Yehudi
  • Nadia Yudina

You can find the mentors in the InterMine chat.

Expected outcome: A UI test suite using a mock server for http requests. This could be using cypress, phantomjs or similar.
How could this integrate with existing InterMine tools? e.g. BlueGenes, InterMine Server.
Difficulty level: Hard, or medium if students know both Clojure and have written tests before.


Implementing a graph or tuple-based backing database for InterMine

Description: InterMine is an open source integration system that uses PostgreSQL to store complex biological data. The InterMine Neo4j project attempts to replace the current relational database with a Neo4j graph database; it includes the data loaders for an InterMine Neo4j database and the RESTful API from which you can query an InterMine Neo4j database using PathQuery.

This project might be extended in 2109 by implementing a MongoDB based datastore, instead of Neo4J. You can read more about the project and how to get started in the project specifications.

Required skills:

  • Good understanding of Java
  • Good understanding of RESTful APIs
  • Basic understanding of graph and/or tuple (NoSQL) databases
  • Git or other version control
  • No biology skills needed

Possible mentors:

  • primary mentor: Sam Hokin - shokin@ncgr.org **
  • secondary mentor: Daniela Butano - daniela@intermine.org **

** Please email both mentors for all communications. Sam and Daniela don’t usually hang out in the InterMine chat, but you’re welcome to come say hi and meet the other students anyway :)

Expected outcome: Fully functional InterMine running from a Neo4J or MongoDB backend rather than from PostgreSQL.
How could this integrate with existing InterMine tools? This would integrate directly with the InterMine server package.
Difficulty level: Hard, but slightly easier if students are familiar with Neo4J or Mongo.


Description: InterMine’s primary mission statement emphasises interoperation both between InterMines and between InterMine and third party tools and websites. InterMine has outbound links to additional data sources and tools now but this system can be improved.

We want an easy way to configure and maintain links from InterMine to other tools and websites.

See project requirements for details.

Required skills:

  • JavaScript
  • Good understanding of RESTful APIs
  • Git or other version control
  • No biology skills needed

Possible mentors:

  • Julie Sullivan
  • Yo Yehudi

You can find the mentors in the InterMine chat.

Expected outcome: An automated way to check for invalid links in InterMine. How could this integrate with existing InterMine tools? This would integrate directly with the InterMine server package. The tool to display links would be written using InterMine’s tool API.
Difficulty level: Easy


Authorisation and Authentication in InterMine

Description: We are writing an InterMine-Wizard, a small JavaScript tool that allows a user to upload a few data files and create an InterMine on the local workstation. We want to extend this to have the option to create an InterMine instance and save it to the cloud.

See project requirements for details.

Required skills:

  • Good understanding of RESTful APIs
  • Git or other version control
  • No biology skills needed

Possible mentors:

  • Julie Sullivan
  • ???

You can find the mentors in the InterMine chat.

Expected outcome: An app that handles authentication for InterMines in the cloud. How could this integrate with existing InterMine tools? This would be a layer on top of our new InterMine import wizard. Difficulty level: Hard


Single Sign-in for InterMine

Description:

Currently users login to each mine separately, we want to become an oAuth2 provider and have a single InterMine login.

See project requirements for details.

Required skills:

  • Understanding of OAuth2 protocol
  • Git or other version control
  • No biology skills needed

Possible mentors:

  • primary mentor: Daniela Butano - daniela@intermine.org
  • Arunan Sugunakumar - arunans.14@cse.mrt.ac.lk

Please email both mentors for all communications. Daniela doesn’t usually hang out in the InterMine chat, but you’re welcome to come say hi and meet the other students anyway :)

Expected outcome: A prototype of for a single sign-in application for InterMine How could this integrate with existing InterMine tools? This app would authenticate every user for every InterMine Difficulty level: Hard