GSoC Interview: Laksh Singla on imjs and imtables upgrades

This is our blog series interviewing our 2019 Google Summer of Code students, who will be working remotely for InterMine for 3 months on a variety of projects. We’ve interviewed Laksh Singla, who will be working on upgrading imjs and imtables.

Hi Laksh! We’re really excited to have you on board as part of the team this summer. Can you introduce yourself?

pic

Hi, I am excited to be a part of the team too!! I am a Computer Science undergraduate student studying at BITS Pilani, India. I will be entering my third year in August. I was originally passionate about web development, but after entering my sophomore year, I was exposed to a wide variety of fields in computer science, and hence my current interest is primarily divided between exploring new web technologies, understanding internals of computer systems and a little bit of data science (read above as I am confused :/ ).

I listen to rock music a lot and my favorite band at the moment (and maybe forever) is Queen. I used to play Basketball too but left it soon after entering college. I am constantly looking to diversify my interests.

What interested you about GSoC with InterMine?

After getting to know about open source, I was determined to actively take part in GSoC. One of the primary reasons why I was interested in InterMine was the friendly and helpful community of mentors and volunteers who enthusiastically answered all my doubts. Moreover, bioinformatics is a field that I have never explored and I thought it would be fun to gain some insight into it without getting much out of my comfort zone.

Tell us about the project you’re planning to do for InterMine this summer.

My project over this summer has multifold tasks, all towards a single goal – maintenance of the im-tables and imjs libraries. Following are the major tasks which I plan to complete over the summers:

  • Upgrade current dependencies of the libraries
  • Improving the test suite of imjs libraries
  • Updating current docs to be more newcomer friendly (user side for imjs, developer side for im-tables
  • Adding a few helper functions to query the intermine-registry data

Are there any challenges you anticipate for your project? How do you plan to overcome them?

One of the serious challenges that I will face would be fully upgrading dependencies of both of the libraries, as it has been a pretty long time since they were last updated and the Javascript/Web ecosystem moves fairly quickly. Mocha (for imjs) and CoffeeScript (for im-tables) on being upgraded broke the library. Although the errors encountered during upgrading Mocha were decent in number (approximately 200 total errors, 5-6 distinct errors), I was able to debug some of them down giving me a little bit of confidence that they could be overcome.

For CoffeeScript however, the whole grunt system has gone obsolete and the error messages are esoteric and non-informative. I am not certain that all of the dependencies for im-tables would be able to get updated, and might require a rehaul of the library, something that is not possible during the timeline stipulated by GSoC. If such a case occurs, I will make sure to create a doc highlighting issues faced, long term goals regarding those pending upgrades and hopefully vulnerabilities present in the old (i.e. currently used) versions of those libraries.

Share a meme or gif that represents your project

unnamed

Advertisements

GSoC’18- Cross InterMine Search Tool (Progress so far)


It has been three weeks since the commencement of the GSoC’18 Coding Phase and a lot of progress has been made till now. The project has been deployed here.

This week has been really very productive. I have worked upon several parts of the application this week. My main focus for this week was to add filters into the application. But I ended up with some more cool stuff here 😉
Let’s have a look at all of them one by one.

  1. Search Rating/Relevance Score
The application knows what you are searching for 😉

Relevance score is a value which is calculated by the InterMine QuickSearch API endpoint for every keyword which is searched. This rating determines how much relevant is the result item with the search keyword. The QuickSearch API response provides a floating value of ‘relevance’ parameter. InterMine uses a formula for determining the Search score in the specific InterMine Search Portals. I have used the same formula to convert the floating relevance score into a score out of 5. The formula is here:
=> Math.round(Math.max(0.1, Math.min(1, relevance)) * 5)

2. Different colors for different Categories in Results

The world is colorful and hence our app too 😉

This was a feedback received from the InterMine community. Having different category results shaded in different colors helps in exploring the results easily. At times, there may be a long list of result items returned by the application. Then having separate colors for separate categories helps us to explore faster. Our eyes are meant to perceive colors more quickly than text.

3. External links to reports

Every result item has a link which opens the result report on its particular InterMine portal. This report page contains more detailed information about the result item. On clicking the icon, a new tab with the given result report opens in the browser. The result link is generated dynamically:

4. Metadata about search results

Metadata for BMAP mine (search: ‘brca1′)

Having metadata about the results returned is always handy at work. Every tab in the application loads a set of metadata as attached above. This can certainly help in understanding the presence of a search term in the mine in a unified way.

5. Search/Relevance Score Filter

Score filter on sidebar of the application

With addition of score/relevance in the application, it was very much necessary to add an option to filter the results based on that. This section provides radio buttons to filter out the results based on the relevance score of the result item. I hope this feature will be extremely beneficial for the community members out there. 🙂

6. Category Filter

Every mine contains data from various diverse categories. So, this feature too was a necessary requirement of a full fledged searching tool. This section is loaded dynamically based on the types of categories returned by the API. The application uses the search result metadata received from the API to generate these category checkboxes dynamically. So, we need not worry about hard-coding any of these.


So, this was all about progress so far. Almost everything in the application is mobile optimized and ready to use. Most probably, I will also be extending the scope of this project and add a REST API service for searching multiple mines. So, the project will be a full fledged Cross InterMine Search Tool in future, i.e. a package of, a client driven search interface & a back-end REST API service. You can find the project repository here. Please have a look at the application here. I would love to have more feedback from the community. (For providing your feedback/suggestions, kindly email me at dwivedi.aman96@gmail.com) Thanks for reading. Happy Coding! 🙂